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 :

Ubuntu, button, label, image et réseau


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut Ubuntu, button, label, image et réseau
    Merci à tous pour la solution rapide du problème avec gdk_pixmap_create_from_data (), mais je viens de me heurter à un nouveau problème plus bizarre.

    Dans mon programme, j'utilise des GtkButton avec côte à côte, un label et une image.
    Je dispose de deux ordinateurs, l'un avec la Debian Lenny , l'autre avec UIbuntu_10.04.
    Pas de problème avec la Debian, de même qu'avec Ubuntu si j'accède à l'ordinateur sous Ubuntu via le réseau par ssh, mais curieusement, cela ne fonctionne pas en local sous Ubuntu: le programme refuse d'afficher simultanément l'image et le label.
    Quand on affiche l'image seule, pas de pb, mais quand on met les deux, seul le label est affiché. Ce qui me semble bizarre, c'est que tout fonctionne quand j'accède à travers le réseau.

    Je joins le petit programme qui me sert de test
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Bonjour,
    pour commencer, nous donner les versions de GTK+ utilisées par ces distributions nous aiderait déjà. Ensuite, j'ai testé sous Mandriva 2010.1 (GTK+ 2.20) et cela fonctionne chez moi (j'ai bien l'image + le texte).

    Néanmoins, j'ai remarqué que tu utilisais pas mal de choses qui vont dégager prochainement de GTK+. Pour voir quoi, il te suffit de compiler avec les options -DG_DISABLE_DEPRECATED et -DGTK_DISABLE_DEPRECATED. La première fait apparaître l'utilisation de symboles qui vont disparaitre de la GLib, la seconde ceux qui vont disparaître de GTK+. Ça n'a sans doute aucun rapport avec ton soucis, mais autant utiliser des bons symboles pour que tes applications soient compatibles avec GTK2 et GTK3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    test.c: In function ‘main’:
    test.c:94: attention : implicit declaration of function ‘gtk_signal_connect’
    test.c:95: attention : implicit declaration of function ‘GTK_SIGNAL_FUNC’
    test.c:96: attention : implicit declaration of function ‘gtk_container_border_width’

  3. #3
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut
    Bonjour liberforce,

    Les version utilisées par Ubuntu-10.0.4 pour les principales bibliothèques sont:
    libgtk: 2.20-1-0ubuntu2
    libglib2: 2.24-1.0ubuntu1
    libcairo:2 : 1.8.10-2ubuntu1

    C'est parce que mon programme de test est une copie d'un vieux programme trouvé sur l'internet qu'il comporte des vieilleries. J'ai utilisé les options que tu ma indiquées et mis à jour le code, ce qui ne change pas sont comportement.

    Je joins le code révisé.

    Merci de ton aide.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    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 308
    Billets dans le blog
    5
    Par défaut
    La réponse est dans la documentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set the image of button to the given widget. Note that it depends on the
    "gtk-button-images" setting whether the image will be displayed or not,
    you don't have to call gtk_widget_show() on image yourself.
    Il suffit donc de vérifier que le drapeau "gtk-button-images" soit à TRUE. Si ce n'est pas le cas tu le bascules.

    En C cela donne :
    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
       /* Création d'un bouton pour contenir le widget pixmap */
     
        button = gtk_button_new ();
     
        /*******************************************************
         *  Sous Ubuntu-10.04 en local, l'affichage simultané
         *  du label et de l'image ne marche pas
         *  Alors que via le réseau on voit les deux sous Debian!
         ******************************************************/
        GtkSettings *settings = gtk_settings_get_default();
        gboolean show_image_ok=FALSE;
        g_object_get(settings, "gtk-button-images", &show_image_ok, NULL);
        if (!show_image_ok)
        {
           g_object_set (settings, "gtk-button-images", TRUE, NULL);
        }
     
        gtk_button_set_label (GTK_BUTTON(button) ,"Essai");
        gtk_button_set_image (GTK_BUTTON(button) ,pixmapwid);
     
     
        /**********************************/

  5. #5
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut
    Ca marche.
    Merci encore
    P. Vincent

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    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 308
    Billets dans le blog
    5
    Par défaut
    Une dernière remarque. Ce petit code est à placer en début de programme après initialisation de la librairie Gtk+. Il est inutile de faire le test à chaque création de bouton.

    Bonne prog...

  7. #7
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Arf, c'est dans un bouton, j'ai pas fait gaffe. C'est un changement de comportement qui a été fait dans GTK+ (2.18?). Il avait d'ailleurs été assez décrié à l'époque. Les images "inutiles" ne sont pas affichées.

    En revanche, je te déconseille la méthode proposée par gerald3d: elle modifie à la volée les options utilisateur pour la configuration du bureau, et les applications ne devraient pas faire ça. L'application est supposée suivre les préférences de l'utilisateur sans lui imposer quoi que ce soit. Si l'utilisateur veut des images dans les boutons, il n'a qu'à les activer directement dans sa session.

    Applications can override system-wide settings with gtk_settings_set_string_property(), gtk_settings_set_long_property(), etc. This should be restricted to special cases though; GtkSettings are not meant as an application configuration facility.
    Donc si tu veux activer les images dans les boutons et menus, fais le globalement en activant la clé gconf /apps/desktop/gnome/interface/buttons_have_icons avec gconf-editor, et vis avec le fait que ton icône dans ton boutton n'est pas si importante et que certains utilisateurs ne la verront pas.

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

Discussions similaires

  1. alignement label, images etc.
    Par Shatter dans le forum ASP.NET
    Réponses: 3
    Dernier message: 14/01/2009, 17h13
  2. pb <html:button> <html:image>
    Par ayoub2010 dans le forum Struts 1
    Réponses: 2
    Dernier message: 27/04/2007, 12h40
  3. Tkinter: Button sur Image
    Par xEndLe dans le forum Tkinter
    Réponses: 1
    Dernier message: 04/04/2007, 19h39
  4. [C#] [2.0] Hello World, textbox, button, label
    Par shako95 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/12/2006, 15h33
  5. Gestionnaire d'image en réseau
    Par Myogtha dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 21/02/2006, 22h38

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