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+ avec C & C++ Discussion :

ecrire des gtkentry d'une boite de dialogue vers une textview dans fenetre principale


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut ecrire des gtkentry d'une boite de dialogue vers une textview dans fenetre principale
    bonjours , j'aimerai récupérer des données contenues dans des gtkentry dans une boite de dialogue , et les réecrire dans un gtkview dans ma fenetre principale ?!!

    j'ai essayé de faire une structure dans le signal de la boite et envoyer le gtk view avec mais ca ne va pas ?!!!


    merci a tous

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Sans doute la meilleure solution si tu n'utilises pas de variables globales pour les widgets (j'espère que non car ce n'est pas une bonne pratique), tu peux créer un callback (ou fonction) qui affiche la boîte de dialogue (si ce n'est déjà fait) et lors de la connection du signal avec "g_signal_connect", tu passes en dernier argument le pointeur vers le GtkTextView et tu fait toutes les manipulations directement dans la fonction qui gère ta boîte de dialogue !

    Il faudra bien entendu récupérer le paramètre "data" du callback vers le bon type soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GtkWidget * p_textview = data;
    Ensuite et bien la méthode habituelle, tu récupères d'abord le GtkTextBuffer du GtkTextView avec la fonction gtk_text_view_get_buffer puis tu le remplis !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    le probleme c'est que j'utilise un signal pour lancer la boite de dialogue pour remplir les donnée ,et apres les avoir validé , je les réafiche a nouveau dans la GtkTextView de ma fenetre principale .

    fonction main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /*.....*/
     pMenu = gtk_menu_new();
     
        /* ETAPE 3 */
        pMenuItem = gtk_menu_item_new_with_label("Configuration");
            /* Connexion du signal "clicked" pour ouvrir la boite de dialogue */
        g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(lancer_boite),&p);
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
    /*.....*/
    callback:
    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
     
    void lancer_boite(GtkWidget* widget, gpointer data)
    {
     
        GtkWidget* pBoite;
        GtkWidget* pEntry[4];
        GtkWidget* pCombo;
        const gchar* sNom;
        gchar* sUtf8;
        GtkWidget *pVBoxFrame;
        GtkWidget *pHBox[5];
        GtkWidget *pRadio1;
        GtkWidget *pRadio2;
        GtkWidget *pRadio3;
        GtkWidget *pFrame,*pLabel;
         const gchar *sText,*schoix;
        GSList *pList;
        guint n=0;
     
        ///* Creation de la boite de dialogue
        //* 1 bouton Valider
        //* 1 bouton Annuler
        pBoite = gtk_dialog_new_with_buttons("CONFIGURATIOIN PROCESS",
            GTK_WINDOW(data),
            GTK_DIALOG_MODAL,
            GTK_STOCK_OK,GTK_RESPONSE_OK,
            GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
            NULL);
     
     
     
    /*...  creation des gtkentry pour la saisie   ...*/
     
     
    /*
    ici j'aimerai récupérer ces valeurs entrées , pour les réafficher dans
    la gtktextview de ma fenetre principale
    */

  4. #4
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    dans le deuxieme parametre de la fonction callback , j'ai utilisé un pointeur vers le widget de la fenetre principale afin de créer la boite de dialogue fille .


    mais pour accéder aussi au widget gtktxtview depuis ma boite de dialogue j'ai pensé a envoyé une struct qui contiens la fenetre et le gtktext view , mais ca ne march pas

    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
     
    struct parametres
    {
        GtkWidget * p_wid;
        GtkWidget * p_wid2;
     
    };
     
    /*....*/
    void lancer_boite(GtkWidget* widget, gpointer p)
    {
     
     
     
        ///* Creation de la boite de dialogue
        //* 1 bouton Valider
        //* 1 bouton Annuler
        pBoite = gtk_dialog_new_with_buttons("CONFIGURATIOIN PROCESS",
    /*--------->*/     GTK_WINDOW(p->p_wid),/*<-----------*/
            GTK_DIALOG_MODAL,
            GTK_STOCK_OK,GTK_RESPONSE_OK,
            GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
            NULL);

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bin comme je te l'ai expliqué plus haut, c'est tout à fait faisable par le biais de ton callback et c'est même recommandé pour t'embêter le moins possible !

    Lorsque tu lances ta boîte avec gtk_dialog_run, tu ne quittes pas directement mais tu récupère dans une variable le retour de la fonction ce qui te permet de faire du traitement avant l'arrêt définitif du Thread de la boîte de dialogue soit un truc dans ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /*
    ici j'aimerai récupérer ces valeurs entrées , pour les réafficher dans
    la gtktextview de ma fenetre principale
    */
    switch (choix)
    {
       case GTK_RESPONSE_OK:
       {
          /* Ici tu recupere le GtkTextBuffer de ton GtkTextView...
              et tu le rempli avec le contenu de tes GtkEntry !
          */
       }
       break;
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. [XL-2010] Ouvrir une boite de dialogue vers un chemin spécifique
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2013, 17h36
  2. Sélectionner une image à l'aide d'une boite de dialogue
    Par morfussine dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 19/09/2008, 11h37
  3. Réponses: 6
    Dernier message: 12/12/2007, 16h10
  4. Lire une image IRM en utilisant une boite de dialogue
    Par larimoise dans le forum Images
    Réponses: 2
    Dernier message: 20/11/2007, 21h16
  5. Appel d'une boite de dialogue depuis une dll
    Par fumidu dans le forum Visual C++
    Réponses: 11
    Dernier message: 25/09/2007, 10h28

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