Salut,
Un jour on m'a demandé des "cours" de programmation en Ruby, et en particulier comment faire des interfaces graphiques. Alors, pendant que j'y suis, je les tape et je les met sur mon site, en espérant que ça serve à des gens.
La première partie est ici, si vous avez des commentaires ou suggestions:
http://yusei.ragondux.com/informatique_documentation_ruby-gtk.html(...)
Ça n'apprendra rien à ceux qui connaissent déjà GTK pour d'autres langages, mais ça donne un aperçu de la manière de faire "à la Ruby", et ça réunit des informations que j'ai parfois dû aller chercher dans le code source, ou par tests successifs.
La première partie présente juste les bases, et par la suite je pense traiter les autres widgets fondamentaux (panneaux à onglets, barres d'outils et de menu...), puis l'ensemble de classes pour faire des arbres/listes, et enfin l'accessibilité. D'autres idées ?
# Ce que je cherchais..
Posté par Atson . Évalué à 1.
J'espère que tu le metteras à jour comme tu le dis.
[^] # Re: Ce que je cherchais..
Posté par Bader Lejmi (site web personnel, Mastodon) . Évalué à 0.
Pour PyGTk y a:
http://philoulaloutre.free.fr/tutorielpygtk/index.html(...) [fr]
http://www.daa.com.au/~james/software/pygtk/(...) [en]
Sinon pour faire des interfaces rapides et assez simple y a l'excellent:
zenity
# Glade
Posté par tgl . Évalué à 5.
Deuxième point: tu n'abordes pas du tout l'utilisation de glade pour la création de l'interface. Comptes-tu le faire par la suite ? Parceque c'est vraiment pas mal du tout, plus simple et plus léger en code. Sur le sujet, j'avais vu ce tutoriel au fosdem qui était sympa : http://ruby-gnome2.sourceforge.jp/hiki.cgi?FOSDEM_2004(...)
(les slides sont un peu courts parceque tout était fait en direct live pour de vrai, autant les clics clics dans glade que l'écriture du code, mais l'archive du source final est dispo)
[^] # Re: Glade
Posté par Yusei (Mastodon) . Évalué à 5.
Je vais regarder ça, quand j'aurai couvert les sujets dont je parle dans le journal, merci.
[^] # Re: Glade
Posté par tgl . Évalué à 6.
http://tdegreni.free.fr/ruby/convertisseur-glade.rb(...)
http://tdegreni.free.fr/ruby/convertisseur.glade(...)
(Je n'ai gladisé que la fenêtre principale. Pour le dialogue de résultat, je trouve plus simple la création manuelle, vu que c'est de toute façon un dialogue standard.)
[^] # Re: Glade
Posté par Laurent Sansonetti . Évalué à 1.
Bravo pour ton tutoriel!
# glade
Posté par fredix . É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).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.