IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

poo notebook [ vala ou autre langage )


Sujet :

GTK+

  1. #1
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut poo notebook [ vala ou autre langage )
    bonjour à tou[te]s

    exemple utilisation notebook ( avec le langage vala )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    // valac -X -w --pkg gtk+-3.0 n.vala
    using Gtk;
    public class ong {
        public Gtk.Button    btn { get; set; }
        public Gtk.Label    lab { get; set; }
        public string        str { get; set; }
        public void cre(int valeur,Gtk.Notebook ou) {
            this.str=valeur.to_string();
            this.btn=new Gtk.Button.with_label("button "+this.str);
            this.btn.clicked.connect( (b)=> { print(b.get_label()+"\n"); } );
            this.lab=new Gtk.Label("page "+str);
            ou.append_page(this.btn,this.lab);
        }
        public void aff(Gtk.Notebook ou) {
            print(    "page "+ou.get_current_page().to_string()+
                    " "+this.btn.get_label()+
                    " "+btn.get_label()+
                    " str "+this.str+"\n" );
        }
    }
    int main(string[] args) {
        Gtk.init(ref args);
        Gtk.Window win=new Gtk.Window();
        win.set_default_size(640,320);
        win.destroy.connect(() => { Gtk.main_quit(); });
        Gtk.Grid grid=new Gtk.Grid();
        Gtk.Notebook ntb=new Gtk.Notebook();
        ntb.switch_page.connect( ( w,np ) => {
            print(    "page "+np.to_string()+
                    " from "+ntb.get_current_page().to_string()+"\n" );
        });
        ong ntab=new ong();
        for ( int n=0;n<3;n++ ) { ntab.cre(n,ntb); }
        grid.attach(ntb,0,0,1,1);
        Gtk.Button cde=new Gtk.Button.with_label("view");
        cde.clicked.connect( () => { ntab.aff(ntb); });
        grid.attach(cde,0,1,1,1);
        win.add(grid);
        win.show_all();
        Gtk.main();
        return 0;
    }
    comment "retrouver" les éléments de la page courante
    ( bouton, titre, variables ... ) dans la fonction "aff" ?
    tel que c'est fait ici, bien entendu, on a toujours le dernier onglet créé
    edit : j'aimerais éviter de mémoriser ces infos dans un quelconque array
    question avec vala, mais même chose quel que soit le langage

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 307
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Je ne programme pas en Vala mais en C. Je donnerai donc ici les fonctions utilisables version C. C'est sûrement transposable en Vala.

    Depuis le pointeur du Notebook il existe entre autres les fonctions suivantes :
    • int gtk_notebook_get_current_page(GtkNotebook* notebook)
    • int int gtk_notebook_get_n_pages (GtkNotebook* notebook)
    • GtkWidget* gtk_notebook_get_nth_page (GtkNotebook* notebook, int page_num)


    Il en existe d'autres.

    La dernière fonction te permet de récupérer le widget parent d'une page du Notebook. En partant de ce pointeur du peut obtenir le premier widget enfant par exemple avec la fonction [CODELINE]GtkWidget* gtk_widget_get_first_child (GtkWidget* widget)[/CODEINLINE].

    Tout en restant dans les fonctions du GtkNoteBook tu peux récupérer le label de la page choisie avec son widget grâce à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GtkWidget*
    gtk_notebook_get_tab_label (GtkNotebook* notebook,  GtkWidget* child)
    En espérant t'aider un peu.

  3. #3
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    merci de votre réponse

    certes tout cela permet de retrouver les infos sur les pages
    celle courante, le nombre, les titres...
    mais pas le "string str associé" à cette page courante
    ou alors pas compris comment faire
    en désespoir de cause, je vais passer
    par des array, "mais" dans ce cas, je
    ne vois plus trop l'intérêt de la classe "ong"

    néanmoins, patientons pour d'autres pistes...
    @+

Discussions similaires

  1. [Plateforme.NET]Comment ajouter un autre langage ?
    Par reggae dans le forum Framework .NET
    Réponses: 4
    Dernier message: 14/12/2005, 22h16
  2. Passage de Access à un autre langage mais lequel ?
    Par beletteroi dans le forum Access
    Réponses: 10
    Dernier message: 18/10/2005, 19h58
  3. Passage de Access à un autre langage mais lequel ?
    Par beletteroi dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 16/10/2005, 00h17
  4. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2002, 00h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo