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 :

bouton + surbrillance


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 bouton + surbrillance
    Bonjour je recherche une methode me permettant de mettre en surbrillance un bouton après lui avoir donné le focus par le biais de gtk_widget_grab_focus () dans le même style que si l'on avait le pointeur de la souris dessus.

    Merci

  2. #2
    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
    Bon malheureusement pour moi, ce sujet ne semble pas inspirer beaucoup de monde.
    Ne me laissant pas abattre dans mon malheur , j'ai avancé: J'arrive à mettre un petit liseré de couleur sur mes boutons lorsque ces derniers sont sélectionnés (= focus).
    Par contre j'aimerais aller plus loin en augmentant l'espaisseur de ce liseré et sa couleur.
    J'ai vu qu'il fallait passer par le fichier gtkrc mais cela ne semble pas fonctionner dans mon cas. Si quelqu'un peut m'indiquer où se trouve mon erreur:
    // Fichier gtkrc
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    gtk-icon-sizes = "gtk-menu=13,13:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24:gtk-dnd=32,32"
    gtk-toolbar-icon-size = small-toolbar
     
    # disable images in buttons. i've only seen ugly delphi apps use this feature.
    gtk-button-images = 0
     
    # enable/disable images in menus. most "stock" microsoft apps don't use these, except sparingly.
    # the office apps use them heavily, though.
    gtk-menu-images = 1
     
    # use the win32 button ordering instead of the GNOME HIG one, where applicable
    gtk-alternative-button-order = 1
     
    style "msw-test"
    {
      GtkRange::slider_width = 30
    }
    class "GtkScrollbar" style "msw-test"
     
    style "msw-button"="msw-test"
    {
       fg[PRELIGHT]    = { 0.0, 0.0, 0.0 }
       bg[PRELIGHT] = { 0.0, 0.0, 0.0 }
       text[PRELIGHT]= "#e56225"
     
    }
    widget_class "*.GtkButton.*" style "msw-button"
     
    style "msw-button"="msw-test"
    {
       fg[PRELIGHT]    = { 0.0, 0.0, 0.0 }
       bg[PRELIGHT] = { 0.0, 0.0, 0.0 }
       text[PRELIGHT]= "#e56225"
    }
    class "GtkButton" style "msw-button"
     
    style "msw-button"="msw-test"
    {
       fg[PRELIGHT]    = "#333366"
       bg[PRELIGHT] = "#333366"
       text[PRELIGHT]= "#333366"
    }
    class "GtkWidget" style "msw-widget"


    // Fichier main (on passe le fichier gtkrc au programme)
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    ................
    #ifdef ENABLE_NLS
      bindtextdomain (GETTEXT_PACKAGE, package_locale_dir);
      bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
      textdomain (GETTEXT_PACKAGE);
    #endif
     
      gtk_rc_add_default_file ("../style/gtkrc");
      gtk_set_locale ();
      gtk_init (&argc, &argv);
     
      pixmap_dir = g_build_filename (package_data_dir, PACKAGE, "pixmaps", NULL);
      add_pixmap_directory (pixmap_dir);
      g_free (pixmap_dir);
     
     
      /*
       * The following code was added by Glade to create one of each component
       * (except popup menus), just so that you see something after building
       * the project. Delete any components that you don't want shown initially.
       */
      window1 = create_window1 ();
       g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK(gtk_main_quit),
                        NULL);
      gtk_widget_show (window1);
     
      gtk_main ();
    ..........


    quelques callbacks
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    void
    on_button_clicked                      (GtkButton       *button,
                                            gpointer         user_data)
    {
    	// Declaration 
    	const gchar * sText="";
     
    	GtkWidget * bouton1 = lookup_widget(GTK_WIDGET(button),"button4");
    	sText=gtk_button_get_label(button);
    	//sText=gtk_widget_get_name(GTK_WIDGET(button));
    	if (strcmp(sText,"button1")==0 || strcmp(sText,"button2")==0 ||strcmp(sText,"button3")==0){
    		gtk_widget_grab_focus (bouton1);
    	}
    }
     
    gboolean
    on_btn_focus_in_event                  (GtkWidget       *widget,
                                            GdkEventFocus   *event,
                                            gpointer         user_data)
    {
     
      /*GdkColor color;
     
      color.pixel = 32;
      color.red = 65535;
      color.green = 0;
      color.blue = 0;
     
      gtk_widget_modify_bg (widget, GTK_STATE_PRELIGHT, &color);	*/
      gtk_widget_set_state(widget,GTK_STATE_PRELIGHT);
      return FALSE;
    }
     
     
    gboolean
    on_btn_focus_out_event                 (GtkWidget       *widget,
                                            GdkEventFocus   *event,
                                            gpointer         user_data)
    {
      /*GdkColor color;
     
      color.pixel = 32;
      color.red = 65535;
      color.green = 0;
      color.blue = 0;
     
      gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &color);*/
      gtk_widget_set_state(widget,GTK_STATE_NORMAL);
      return FALSE;
    }

  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
    J'ai trouvé !

    Pour afficher un bouton comme si la souris était dessus, il faut changer l'état de ce dernier à l'aide de la fonction gtk_widget_set_state(...).
    La couleur qui s'affiche n'est par contre pas paramétrable par défaut. Elle dépend de l'engine que l'on a choisi d'utiliser (par défaut c'est windows qui gère l'affichage des boutons donc un petit liseré orange apparait)

    Voilà

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

Discussions similaires

  1. [AC-2010] Mettre un bouton du ruban en surbrillance
    Par Guy FALESSE dans le forum IHM
    Réponses: 6
    Dernier message: 29/04/2013, 15h20
  2. Surbrillance d'un bouton
    Par Hanz Peter Mariol dans le forum VB.NET
    Réponses: 7
    Dernier message: 31/07/2008, 08h45
  3. Spry - menubar - bouton en surbrillance pour page active
    Par marcolem dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/06/2008, 20h58
  4. Contour en surbrillance d'un Bouton (style Xp) avec DELPHI
    Par kerotan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 25/12/2007, 11h59
  5. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32

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