Journal Tutoriel Ruby/GTK

Posté par  (Mastodon) .
Étiquettes : aucune
0
16
mai
2004
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  . Évalué à 1.

    Super, je cherchais une doc de ce style en français, tout d'abord pour python mais je pense pas qu'il y ai bcp de différences entre ces deux langages.

    J'espère que tu le metteras à jour comme tu le dis.
  • # Glade

    Posté par  . Évalué à 5.

    Premier point: il est bien ton article, bravo, et vivement la suite :)

    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  (Mastodon) . Évalué à 5.

      En fait je n'ai pas parlé de Glade parce qu'il ne gère pas de code Ruby... et je n'avais pas pensé à libglade, bêtement :-)

      Je vais regarder ça, quand j'aurai couvert les sujets dont je parle dans le journal, merci.
  • # glade

    Posté par  . Évalué à 4.

    Salut,

    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.