GnrWidget

La classe GnrWidget rappresenta un layer logico, nella definizione di un'interfaccia grafica con sistema GenRo?, che siamo soliti chiamare ricetta. GnrWidget fornisce infatti una serie di metodi che imperativamente aggiungono elementi di interfaccia, configurandoli rapidamente e sinteticamente, ma senza perdere potenzialità espressiva.

Ciascuno di questi metodi aggiunge come child un il nuovo widget del tipo indicato ritornando il widget corrente. Dunque ogni widget contiene al suo interno i widget di cui si compone a sua volta, e questo permette la creazione dal cosìddetto albero di ricetta.

Come anticipato GnrWidget offre un'API molto comoda ed espressiva per la generazione veloce di interfacce.

  • Esistono dei parametri comuni a tutti i widget come il name
  • Parametri opzionali legati alla gestione degli eventi
  • Parametri opzionali legati agli stili, dimensione, impaginazione, posizione e altre caratteristiche grafiche
  • Parametri opzionali legati ai dati e alla generazione dinamica del widget, come il parametro datasource

Ciascun GnrWidget contiene al suo interno il riferimento al corrispettivo GnrWxWidget, ovvero un ulteriore livello logico che rimappa gli originali widget wx. Questo riferimento è fornito dal metodo getWxObj()

Il parametro name è comune a tutti i widget, così come il parametro id. Se non viene specificato un particolare id, il valore di default è '*' ovvero l'assegnamento del name come id. Un altro parametro particolare è datasource che indica la struttura dati dalla quale il widget deve caricare il suo contenuto. Il parametro datasource è un GnrBagNode?, indicato o come path, oppure può valere ":*" In questo caso significa "bag_corrente.name" e questo è il datasource di default per tutti i widget con datasource. Gli attributi di un widget possono essere anche dinamici ovvero della callback a funzioni che calcolano a run-time il valore del parametro DynAttr.