[ruby-gnome2-doc-cvs] [Hiki] create - tut-gtk-helloworld-details

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2003年 10月 20日 (月) 19:54:00 JST


-------------------------
REMOTE_ADDR = 62.10.96.29
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/it?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.

#!/usr/bin/env ruby
  =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'
  Gtk.init

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" sareseguito 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 percieseguiril segnale "destroy".

* "destroy" sareseguito appena dopo "delete_event".
In questo gestore chiudiamo l'applicazione chiamando Gtk.main.quit.

2 messaggi saranno stampati quando l'utente chiuderla 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 pucontenere dentro altri widget.
La nostra finestra mostrerun 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.

Cospotremmo 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 chiamerGtk::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 dormircosfino a un evento X Window.
Da notare che Gtk.main non ritorneril chiamante.

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

  Gtk.main  






ruby-gnome2-cvs メーリングリストの案内
Back to archive index