superbe doc ! J'ai posté un message sur alt.fr.comp.lang.gtk+ qui montre quelques lignes de codes ruby (pompé dans alexandria, http://alexandria.rubyforge.org/(...)) sur l'utilisation de la libglade, si ça peut t'aider pour ta doc :
Message-ID: <pan.2004年05月14日.23.31.08.763187@taonix.net>
Je colle ici le code pour ceux qui ne peuvent accéder à alt* :
Une classe de chargement du fichier Glade que voici :
class GladeBase
def initialize(filename, root)
file = File.join(Geekast::Config::DATA_DIR, 'glade', filename)
glade = GladeXML.new(file, root) { |handler| method(handler) }
glade.widget_names.each do |name|
begin
instance_variable_set("@#{name}".intern, glade[name])
rescue
end
end
end
end
Ensuite tu créés une classe qui hérite de GladeBase ou tu vas lire ton
fichier glade, exemple :
class CallbackPref < GladeBase
def initialize
super("geekast.glade", "geekast_setting")
end
def on_pref_cancelbutton_clicked(widget)
@geekast_seeting.destroy
end
end
"super" transfère les paramètres donnés à la méthode de la classe
mère, donc ici la méthode initialize de GladeBase. Le 2ème paramètre
est le widget racine (une GtkDialog ici).
L'astuce de la classe GladeBase c'est qu'elle extrait chaque widget du
fichier glade (à partir du noeud racine) via glade.widget_names.each et
quelle instancie chaque widget ensuite via instance_variable_set.
Donc le widget nommé toto sera accessible dans ton prog Ruby via @toto.
D'ailleurs tu le vois dans ma méthode on_pref_cancelbutton_clicked qui
détruit la dialog geekast_seeting via la méthode destroy.
Très simple et très efficace. Par rapport au code de alexandria j'ai
juste ajouté le paramètre root, car le Laurent, le dev, créé un projet
glade par fenêtre ! (perso j'aime pas trop ça).
# glade
Posté par fredix . En réponse au journal Tutoriel Ruby/GTK. Évalué à 4.
superbe doc ! J'ai posté un message sur alt.fr.comp.lang.gtk+ qui montre quelques lignes de codes ruby (pompé dans alexandria, http://alexandria.rubyforge.org/(...)) sur l'utilisation de la libglade, si ça peut t'aider pour ta doc :
Message-ID: <pan.2004年05月14日.23.31.08.763187@taonix.net>
Je colle ici le code pour ceux qui ne peuvent accéder à alt* :
Une classe de chargement du fichier Glade que voici :
class GladeBase
def initialize(filename, root)
file = File.join(Geekast::Config::DATA_DIR, 'glade', filename)
glade = GladeXML.new(file, root) { |handler| method(handler) }
glade.widget_names.each do |name|
begin
instance_variable_set("@#{name}".intern, glade[name])
rescue
end
end
end
end
Ensuite tu créés une classe qui hérite de GladeBase ou tu vas lire ton
fichier glade, exemple :
class CallbackPref < GladeBase
def initialize
super("geekast.glade", "geekast_setting")
end
def on_pref_cancelbutton_clicked(widget)
@geekast_seeting.destroy
end
end
"super" transfère les paramètres donnés à la méthode de la classe
mère, donc ici la méthode initialize de GladeBase. Le 2ème paramètre
est le widget racine (une GtkDialog ici).
L'astuce de la classe GladeBase c'est qu'elle extrait chaque widget du
fichier glade (à partir du noeud racine) via glade.widget_names.each et
quelle instancie chaque widget ensuite via instance_variable_set.
Donc le widget nommé toto sera accessible dans ton prog Ruby via @toto.
D'ailleurs tu le vois dans ma méthode on_pref_cancelbutton_clicked qui
détruit la dialog geekast_seeting via la méthode destroy.
Très simple et très efficace. Par rapport au code de alexandria j'ai
juste ajouté le paramètre root, car le Laurent, le dev, créé un projet
glade par fenêtre ! (perso j'aime pas trop ça).