domenica 15 maggio 2011

Concetti utili php-gtk

 

  • Widget: widget è semplicemente un nome comune tramite il quale vengono indicati i componenti che compongono (scusate il gioco di parole) un'interfaccia grafica, più comunemente chiamata GUI (Graphical User Interface). Un bottone, una finestra, una barra di scorrimento, sono tutti esempi di widget. Essendo un widget qualcosa di generico, indicheremo con widget anche quei componenti (non visibili direttamente) atti a contenere altri widget. Questi componenti sono più comunemente chiamati Containers e vengono spesso sfruttati per raggruppare tra loro più widget al fine di disporli correttamente sullo schermo.
  • Signal (Segnale): un segnale è una notifica effettuata da un widget, è un modo tramite il quale un componente indica al GUIengine che il suo status è stato modificato in qualche modo. Quando clicchiamo su un bottone, quando chiudiamo o ridimensioniamo una finestra il widget modificato ci informerà delle modifiche avvenute tramite un segnale. GTK+ differenzia molto i segnali dagli eventi : un evento è una notifica utilizzata tra i widget ed il GUIengine per comunicare. Gli eventi e la loro gestione verranno approfonditi in futuro.
  • Callback: ogni qualvolta un widget emette un segnale, viene eseguita, se presente, una funzione connessagli precedentemente. Questa funzione, scelta e connessa dal programmatore, è detta callback. Per fare un esempio concreto, potremmo associare al segnale evocato in caso di click su un bottone, una funzione che ci permetta di visualizzare un messaggio. Le callback funzionano in modo simile agli handler di una state-machine.
Come già anticipato per programmare in PHP-GTK è fondamentale conoscere il funzionamento della programmazione ad oggeti. Difatti, come in tutti i GUIengine, anche i wrapper di PHP-GTK fa largo uso di ereditarietà e polimorfismo per permettere una gestione più agevolata dei widget. Un piccolo esempio: ogni widget, sia esso finestra, bottone o altro, eredita da una classe base, chiamata GtkWidget che contiene tutte le proprietà ed i metodi comuni ad ogni componente. In questo modo, sia che si lavori su un'istanza di GtkWindow, sia che si lavori su un'istanza di GtkButton, sarà sempre possibile richiamare il metodo GtkWidget::hide() per nascondere il componente. Molte classi base, come GtkWidget, sono di tipo astratto, e quindi non possono essere istanziate direttamente, ma solo ereditate. Come potete vedere il concetto di ereditarietà risulta qui fondamentale, ed è necessario averne compreso appieno il funzionamento.

Nessun commento:

Posta un commento