Crea  Modifica  FrontPage  Indici  Cerca  Ultime modifiche  History  RSS  Login

tut-gtk-helloworld-details

Ciao mondo! in Ruby/GTK2 (commentato)

Ora che abbiamo visto la teoria dei segnali e degli eventi, siamo pronti per vedere in dettaglio il programma "Ciao mondo!".

Prima di tutto si inizializza Ruby/GTK2. Questo codice è richiesto per tutti i programmi in Ruby/GTK2.

=begin
  ciaomondo.rb - Primo codice d'esempio in Ruby/GTK.

  Copyright (c) 2002,2003 Ruby-GNOME2 Project Team
  Questo programma è rilasciato con la stessa licenza di Ruby-GNOME2.

  $Id: ciaomondo.rb,v 1.4 2003/02/01 16:46:22 mutoh Exp $
=end

require 'gtk2'

Qui creiamo un pulsante chiamato "Ciao mondo". Gtk::Button.new crea un nuovo pulsante GTK e imposta la sua etichetta al parametro della stringa che forniamo. Attualmente, il pulsante non è parte della finestra GTK e non è ancora visibile.

button = Gtk::Button.new("Ciao mondo")

Il codice seguente scriverà "Ciao mondo!" sul teminale ogni volta che il pulsante è schiacciato.

Questo è fatto connettendo un codice di blocco che mette il nostro messaggio al segnale "clicked" del pulsante.

button.signal_connect("clicked") {
  puts "Ciao mondo!"
}

Ora è tempo di creare la finestra. Il pulsante non è ancora visibile sullo schermo.

window = Gtk::Window.new

Decidiamo di collegare dei gestori di segnali alla finestra:

  • "delete_event" sarà eseguito quando la finestra è uccisa dal gestore di finestre (di solito quando l'utente la chiude manualmente). Nota che ritorniamo un valore falso in questo gestore: significa che l'esecuzione non è ancora finita. GTK perciò eseguirà il segnale "destroy".
  • "destroy" sarà eseguito appena dopo "delete_event".

In questo gestore chiudiamo l'applicazione chiamando Gtk.main.quit.

2 messaggi saranno stampati quando l'utente chiuderà la finestra: prima di tutto "delete event occured" e poi "destroy event occured".

window.signal_connect("delete_event") {
  puts "delete event occurred"
  #true
  false
}

window.signal_connect("destroy") {
  puts "destroy event occurred"
  Gtk.main_quit
}

Impostiamo qui la larghezza del bordo della finstra a 10 pixel. Cosa significa?

Le finestre GTK sono di fatto contenitori. Un contenitore è un widget che può contenere dentro altri widget. La nostra finestra mostrerà un bordo di 10 pixel attorno il widget contenuto.

window.border_width = 10

E' il momento di associare il nostro pulsante con la nostra finestra. Questo è fatto impacchettando il pulsante dentro la finestra.

window.add(button)

Il prossimo passo è mostrare il nostro lavoro sullo schermo. Ci occorre mostrare due widget: il pulsante e la finestra.

Così potremmo scrivere questo:

button.show
window.show

Ma da quando il pulsante è impacchettato nella finestra, noi possiamo chiamare Gtk::Widget#show_all sulla finestra.

Questo metodo chiamerà Gtk::Widget#show sulla finestra per ogni widget contenuto (qui c'è ne solo uno impacchettato: il pulsante).

window.show_all

Finalmente, entriamo mel ciclo principale chiamando Gtk.main. Il programma dormirà così fino a un evento X Window. Da notare che Gtk.main non ritornerà il chiamante.

Ma l'utente sarà ancora in grado di uscire dal programma da quando chiamiamo Gtk.main_quit a quando il signale "destroy" è ricevuto.

Gtk.main  
Ultima modifica:2006/07/02 15:06:23
Parola chiave:
Referenze:[tut-gtk]