#include <gtk/gtk.h> /* Questa è una funzione di callback. Gli argomenti da riga di comando * vengono ignorati in questo esempio. Se ne parlerà più avanti di queste funzioni. */ static void print_hello (GtkWidget *widget, gpointer data){ g_print ("Hello World\n"); } static gboolean on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer data){ /* Se il valore di ritorno è FALSE nel segnale "delete_event", * GTK lancierà il segnale "destroy". Ritornare TRUE vuol dire che * non vuoi che la finestra venga distrutta. * * Ciò è utile per chiedere all'utente 'sei sicuro di volere uscire?' */ g_print ("Si è verificato l'evento \"delete\"\n"); return TRUE; } int main (int argc, char *argv[]){ /* GtkWidget è il tipo base per tutti i widgets */ GtkWidget *window; GtkWidget *button; /* Questa viene chiamata in tutti i programmi GTK. Gli argomenti * vengono presi dalla linea di comando e resi disponibile per l'applicazione */ gtk_init (&argc, &argv); /* Crea una nuova finestra, e imposta il titolo */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hello"); /* Quando la finestra lancia il segnale "delete-event"(emesso * dal GTK+ in risposta a un evento proveniente dal window manager, * solitamente cliccando il tasto "chiudi" della finestra), * chiediamo a essa di eseguire la funzione on_delete_event() definita sopra. * * I dati passati alla funzione di callback sono NULL e sono ignorati * dalla funzione di callback. */ g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), NULL); /* Qui colleghiamo l'evento "destroy" alla funzone gtk_main_quit(). * * Questo segnale viene emesso quando chiamiamo gtk_widget_destroy() sulla * finestra, o se ritorniamo FALSE nella funzione callback "delete_event". */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Imposta i bordi della finestra. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); /* Crea un tasto con la scritta "Hello World". */ button = gtk_button_new_with_label ("Hello World"); /* Quando il tasto riceve il segnale "clicked", esso chiamerà la * funzione print_hello() passando NULL come argomento. * * La funzione print_hello() è definita sopra. */ g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); /* La funzione g_signal_connect_swapped() collegherà il segnale "clicked" * del tasto alla funzione gtk_widget_destroy(); invece di chiamarla * direttamente usando il tasto come suo argomento, questa funzione manderà * a essa gli argomenti user_data. Questo causerà la distruszione della * finestra chiamando gtk_widget_destroy() sulla finestra. */ g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); /* Questo "impacchetterà" il tasto nella finestra. GtkWindow eredita da GtkBin, * il quale è uno speciale contenitore avente solamente un figlio */ gtk_container_add (GTK_CONTAINER (window), button); /* Il passo finale è mostrare il widget appena creato... */ gtk_widget_show (button); /* ...e la finestra */ gtk_widget_show (window); /* Tutte le applicazioni GTK+ devono avere un gtk_main(). Il controllo finisce qui * e rimane in attesa di un qualche evento (come la pressione di un tasto * o un evento del mouse) fintantoché gtk_main_quit() viene invocato. */ gtk_main (); return 0; }
sabato 9 novembre 2013
Tutorial GTK+ 3.0 - Parte 2 - Hello World!
Nella lunga tradizione dei linguaggi di programmazione e librerie, ecco a voi il famoso Hello World in GTK+:
Iscriviti a:
Commenti sul post (Atom)
GRANDE Alberto! Grazie!
RispondiElimina