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 :

GTkButton + etat + popup


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut GTkButton + etat + popup
    Bonjour à tous !!

    J'ai un bouton qui permet d'ouvrir une popup. (jusqu'ici rien d'extraordinaire)
    J'aimerais que ce bouton (GTKButton) reste enfoncé tant que je n'ai pas fermer la popup.

    Voici le code qui ouvre la popup
    Code C : 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
    void
    on_Fen_OPS_Menu3_btn_Point_clicked            (GtkButton       *button,
                                            gpointer         user_data)
    {
    	// On grise les autres boutons
    	gtk_widget_set_sensitive(Menu_Point_btn_PCO,FALSE);
    	gtk_widget_set_sensitive(Menu_Point_btn_LG,FALSE);
    	gtk_widget_set_sensitive(Menu_Point_btn_LD,FALSE);
    
    	//on met le bouton reponsable de la popup à l'etat activé
    	gtk_widget_set_state(Menu_Point_btn_Pt,GTK_STATE_ACTIVE);
    
    	// On créé la POPUP et on l'affiche
    	popup_Clavier=create_Popup_Clavier();
    	gtk_window_set_position(GTK_WINDOW(popup_Clavier),GTK_WIN_POS_CENTER);
    	gtk_window_set_transient_for (GTK_WINDOW(popup_Clavier),GTK_WINDOW(button));
    	gtk_widget_show (popup_Clavier);	
    }

    le code qui est appelé quand je clique sur le bouton "Annuler" de cette popup pour la fermer
    Code C : 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
    void
    on_Pop_Cla_btn_Annuler_clicked         (GtkButton       *button,
                                            gpointer         user_data)
    {
    	// On détruit la POPUP
    	gtk_widget_destroy (GTK_WIDGET(button));
    
    	// On dégrise les boutons
    	gtk_widget_set_sensitive(Menu_Point_btn_PCO,TRUE);
    	gtk_widget_set_sensitive(Menu_Point_btn_LG,TRUE);
    	gtk_widget_set_sensitive(Menu_Point_btn_LD,TRUE);
    
    	//on met le bouton reponsable de la popup à l'etat activable
    	gtk_widget_set_state(Menu_Point_btn_Pt,GTK_STATE_NORMAL);
    }

    La solution en gras dans les deux codes ne semblent pas fonctionné. J'aimerais eviter d'utiliser des toggles buttons (dans ce cas là je connais la solution car je j'utilise dans une autre partie de mon programme final) .

    Par avance merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    essaye d'appeler la fonction on_Fen_OPS_Menu3_btn_Point_clicked comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect_after(Menu_Point_btn_Pt, "released", G_CALLBACK(on_Fen_OPS_Menu3_btn_Point_clicked), NULL);
    le _after à la fin de g_signal_connect devrait permettre d'appeler la callback après le comportement normal du bouton quand tu relâche ton clic (qui est de le remettre en état normal).

    Ca devrait fonctionner

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par Kicker Voir le message
    essaye d'appeler la fonction on_Fen_OPS_Menu3_btn_Point_clicked comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect_after(Menu_Point_btn_Pt, "released", G_CALLBACK(on_Fen_OPS_Menu3_btn_Point_clicked), NULL);
    le _after à la fin de g_signal_connect devrait permettre d'appeler la callback après le comportement normal du bouton quand tu relâche ton clic (qui est de le remettre en état normal).

    Ca devrait fonctionner
    Finalement je suis passé par des toggles boutons. J'ai besoin d'un certain type de conportement que je n'avais pas identifié au départ.

    Mais pour répondre tout de même à ce topic vu que l'on récupère la main que lorsque la callback est terminée, le bouton simple reste visuellement enfoncée. (gtk ne mettant à jour l'interface que lorsqu'il récupère la main)

    Désolé pour le retard dans la réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre un popup menu invisible ??
    Par Alberto dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 09h02
  2. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42
  3. [Datareport] Etat plus large que le papier
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/09/2002, 11h45
  4. bare d'etat
    Par parasito16211 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/07/2002, 08h02
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

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