ruby-****@sourc*****
ruby-****@sourc*****
2003年 8月 16日 (土) 04:17:05 JST
------------------------- REMOTE_ADDR = 217.117.54.155 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/fr?tut-gtk2-bonjourmonde-details ------------------------- = Ruby/GTK2 Bonjour Monde (version comment馥) Maintenant que nous venons de voir la th駮rie des signaux et des 騅駭ements, nous sommes enfin pr黎s regarder en d騁ail le programme "Bonjour Monde". Premi鑽ement, il initialise Ruby/GTK2. Ce code est requis pour tous les programmes Ruby/GTK2. #!/usr/bin/env ruby =begin helloworld.rb - Ruby/GTK first sample script. Copyright (c) 2002,2003 Ruby-GNOME2 Project Team This program is licenced under the same licence as Ruby-GNOME2. $Id: helloworld.rb,v 1.4 2003/02/01 16:46:22 mutoh Exp $ =end require 'gtk2' Gtk.init Ici nous cr駮ns un bouton "Bonjour Monde". Gtk::Button#new cr馥 un nouveau bouton GTK et ajuste son 騁iquette avec la cha〓e de caract鑽es que nous lui donnons. A ce moment, le bouton ne fait pas encore partie d'une fen黎re GTK, et il n'est pas encore visible l'馗ran. button = Gtk::Button.new("Bonjour Monde") Le code suivant affichera l'馗ran le message "Bonjour Monde" chaque fois que le bouton est actionn Ce comportement est produit en connectant un bloc de code qui affiche notre message au signal "clicked" du bouton. button.signal_connect("clicked") { puts "Bonjour Monde" } Maintenant il est temps de cr馥r la fen黎re. Comme le bouton, elle n'est pas encore visible l'馗ran. window = Gtk::Window.new Nous d馗idons ici de connecter plusieurs gestionnaire de signaux sur notre fen黎re: * "delete_event" sera envoylorsque la fen黎re sera tu馥 par le gestionnaire de fen黎re((-En anglais, ((*window manager*)).-)) (en g駭駻al, quand l'utilisateur la fermera manuellement). Notez que nous retournons une valeur ((*false*)) dans le bloc de code; 軋 signifie que le traitement de l'騅駭ement n'est pas encore termin GTK enverra alors un autre signal, "destroy". * "destroy" sera 駑it juste apr鑚 "delete_event". Dans ce bloc de code, nous fermons l'application en appelant Gtk#main_quit. Deux messages seront affich駸 lorsque l'utilisateur fermera la fen黎re: (1)"Ev駭ement 'delete' produit." (2)"Ev駭ement 'destroy' produit." window.signal_connect("delete_event") { puts "Ev駭ement 'delete' produit." #true false } window.signal_connect("destroy") { puts "Ev駭ement 'destroy' produit." Gtk.main_quit } Ici nous ajustons la largeur de la bordure de 10 pixels. Qu'est-ce que cela signifie? Les fen黎res GTK sont en fait des conteneurs. Un conteneur est un composant qui peut h饕erger un ou plusieurs autres composants. Notre fen黎re affichera ici une bordure de 10 pixels autour du composant h饕erg window.border_width = 10 C'est le moment d'emballer le bouton dans la fen黎re. window.add(button) La prochaine 騁ape consiste afficher notre travail l'馗ran. Nous avons besoin d'afficher deux composants: le bouton et la fen黎re. Nous aurions pu 馗rire ceci: button.show window.show Mais comme le bouton est ajoutdans la fen黎re, nous pouvons alors appeler Gtk::Widget#show_all sur cette derni鑽e. Cette m騁hode appelera Gtk::Widget#show sur la fen黎re et sur chaque composant interne (ici il n'y en a qu'un seul: le bouton). window.show_all Finalement, il ne reste plus qu'entrer dans la boucle principale, en appelant Gtk#main. Le programme va ce moment dormir jursqu'ce qu'un 騅駭ement se produira. Notez que l'appel Gtk#main ne retournera jamais. Le code 馗rit apr鑚 cet appel ne se produira donc jamais non plus. Mais l'utilisateur sera toujours capable de fermer le programme, parce que nous appelons Gtk#main_quit lors de la r馗eption du signal "destroy". Gtk.main