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 :

Comment changer le thème/style de Gtk+


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut Comment changer le thème/style de Gtk+
    Bonjour,


    Je m'esquinte depuis peu à essayer d' utiliser Gtk+.

    Je ne suis pas maso... quoi que, mais c'est intéressant.

    Je suis sous W10, j'utilise Code:Block et tourne avec Gtk 3.6.4.

    Or, je suis assez ( voir beaucoup ) déçu par la qualité du rendu.

    C'est franchement pas terrible, pour ne pas dire complètement dég*** .

    Bref!


    Y aurait-il une possibilité de changer le thème de Gtk+ ? ( Bien évidement sous Windows )

    J'ai trouvé sur ce site, un document de 2008... qui explique comment changer le thème.

    Mais malheureusement, les dites informations sont assez anciennes et concernent Gtk2. ( gtk2-themes-2008-01-21-ash.exe )

    Et je n'ai rien trouvé sur le site officiel de gtk.org

    J'ai quand même essayé, ( je suis téméraire ) et bien évidement, ça a planté.

    Le système m'indiquant qu'il manque des *.dll.

    Téméraire, mais pas suicidaire, j'ai donc laissé tomber.

    C'est la seul bibliothèque graphique que je connaisse, qui permet de programmer en C.

    wxWidget que je connais un peu ( via wxLua ) m'attire, mais c'est en C++, et j'ai quelques difficultés ( au pluriel ) à digérer les " subtilités " de ce langage... idem bien évidement pour Java.


    Merci d'avoir pris le temps de me lire.

    J'espère que vous pourrez apporter une réponse favorable à ma requête.

    En attendant, je vous souhaite une bonne journée.

    Bien à vous.

    Claude.

  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
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour,

    Il faut savoir que le fonctionnement des thèmes a complètement changé entre GTK 2 et GTK 3. De ce que je sais, GTK 2 utilisait des fichiers gtkrc avec sa syntaxe spécifique pour la gestion des thèmes. GTK 3 a migré vers l'utilisation du (plus répandu) CSS. Ensuite, pendant les différentes versions de GTK 3 il y a eu plusieurs modifications de la gestion du CSS pour coller le plus possible au comportement attendu. Cela signifie qu'en GTK 3, la version pour laquelle tu veux modifier le thème est TRÈS importante (d'où une grogne des développeurs de thèmes). Il va par exemple y avoir des changement en GTK 3.20, version encore en gestation. Il suffit de regarder les notes de publication: https://en.wikipedia.org/wiki/GTK%2B#Releases tu verras des changement côté CSS dans plusieurs versions. Les développeurs ont privilégié l'amélioration au détriment de la stabilité de l'API. C'est un mal pour un bien dirons nous, mais cela rend l'écriture de thèmes plus compliquée, toutes les versions de GTK 3 n'interprétant pas ton CSS de la même manière.

    Si tu n'es pas découragé, tu trouveras des infos sur le développement de thèmes pour GTK 3 ici (attention, ça date de 2012, mais ça correspond à l'époque de ta version de GTK):
    http://worldofgnome.org/making-gtk3-...part-1-basics/
    http://worldofgnome.org/making-gtk3-...ets-css-files/
    http://worldofgnome.org/making-gtk3-...the-dark-side/
    http://worldofgnome.org/making-gtk3-...g-gtk2-themes/

    Les différents thèmes officiels (donc le thème win32 pour windows) se trouvent dans le code de GTK : https://git.gnome.org/browse/gtk+/tree/gtk/theme

    Tu as des outils comme gtk-inspector (ex-gtk-parasite) qui te permettent de modifier le thème à la volée, pour expérimenter des modification : http://www.bani.com.br/2013/12/parasite/

    Tu as aussi The Widget Factory, une application GTK qui montre tous les widgets disponible afin d'aider les développeurs de thèmes à voir les impacts de leurs modifications.

    Voilà, avec tout cela, arme toi d'une bonne dose de courage, tu peux retrousser tes manches ;-)
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    Tout d'abord un grand merci pour ces explications.

    Un peu prise de tête il est vrai , mais passionnantes et indispensables pour essayer d'y voir un peu plus clair.

    En fait, je suis un peu ( beaucoup même ) novice en la matière...

    Car si j'ai bien compris, GTK c'est plus le monde " merveilleux... " de LINUX.

    Et pour moi, LINUX, c'est plutôt du chinois.

    Bref!

    J'ai donc suivi avec un grand intérêt tes explications et les différents liens.

    Texte et liens dans lesquels je me replongerai prochainement, histoire de bien assimiler tout ça.

    J'ai donc trouvé les 2 css pour Windows. ( gtk.css et gtk-win32-base.css )

    Je les ai mis dans: GTK/share/themes/Default/gtk-3.0/ ... à la place de celui qui y était.

    ( un " gtk-keys.css ", qui du reste est vide, avec simplement une explication du pourquoi il est vide... )

    Seulement après, je ne sais pas comment faire pour les faire reconnaître par le système ?

    Car rien ne se passe de différent par rapport à avant.

    J'ai du louper quelque chose ?

    Si tu peux m'accorder encore un peu de ton temps, afin de m'aider à résoudre cette énigme.

    D'avance merci.

    Claude


    Je continu à chercher...

  4. #4
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    Peut-être que ce n'est pas le bon dossier ? Essaie de faire une modification évidente (genre changer une couleur de fond par du rouge) pour voir si ton thème est bien pris en compte. S'il ne l'est pas, l'application va sans doute chercher dans un autre endroit.

    http://stackoverflow.com/questions/2...css-on-windows

    Désolé mais je n'ai pas de Windows pour tester...
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  5. #5
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    Bonsoir,

    Merci pour ta réponse qui m'a quand même permis d'explorer un certain nombre de choses.

    Bien!

    J'ai pas mal galéré. Je dirai même, ÉNORMÉMENT galéré.

    Pour finalement arriver à rien, ou pas grand chose, en tout cas pas à ce que je recherchais, si ce n'est la conclusion suivante.

    Les fichiers *.css, on peut les mettre où l'on veut, puisque de toute façon, il faudra indiquer au programme que l'on est en train de faire où aller les chercher.

    Et oui, ce n'est pas automatique! .... Mais restons Zen...


    La formule magique est la suivante:

    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
     
    //Initialisation des nouvelles couleurs. ( nouveau thème. )
     
        GtkCssProvider *pCssProvider = NULL;
     
        pCssProvider = gtk_css_provider_new();
     
        GError *error = NULL;
     
        gtk_css_provider_load_from_path(pCssProvider, "Themes/gtk_essai.css", &error);
     
        if (!gtk_css_provider_load_from_path (pCssProvider, "Themes/gtk_essai.css", &error))
        {
          g_error("%s\n", error->message); 
     
          exit (error->code);
        }
     
        gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),<div style="margin-left:160px">                                GTK_STYLE_PROVIDER(pCssProvider),</div><div style="margin-left:160px">                                GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);</div>
     
        g_object_unref(pCssProvider);
    J'ai essayé plusieurs thèmes: celui par "default", "Adwaita", "Raleight" et bien sûr le "win32-base..."

    TOUS plantent !

    En fait, on ne peut pas les charger.

    Pour tous, des messages d'erreur annoncent que le fichier ne pourra pas se charger.

    Ça ne plante pas le programme, mais ça ne fait rien.

    Après avoir pas mal tourné, encore et encore à la recherche d'une solution, j'ai, dans les mêmes conditions d'emplacement fini par faire mon propre fichier css. ( petit fichier, quelques lignes, seulement pour voir. ( ça, je sais faire. ))

    Et là, ça fonctionne...

    Ça fait ce que je veux. Changement de couleur, arrondi, font etc...Reste à peaufiner bien sûr, mais c'est un bon début.

    J'en ai donc conclu que:

    Les fichiers mis à disposition sont des fichiers POUR LINUX et pas pour Windows.

    Y compris le gtk-win32-base.css... Il serait, semble-t-il, utilisé par et pour les Linuxiens ( je crois que c'est comme cela que l'on dit ? ) qui souhaitent avoir sous Linux un look Windows. ( Et oui, pourquoi pas... )

    Après avoir encore et encore refouillé le web à la recherche d'un fichier *.css existant et fonctionnant sous Windows, en vain, j'en suis arrivé à la conclusion que si je veux changer quelque chose, j'ai qu'à me le faire moi même...

    Help yourself ! ( En français dans le texte. )

    Ce n'est pas une critique, mais une constatation.

    Ce n'est que le résultat de mes recherches. C'est faisable, c'est déjà bien.

    La question que je me pose maintenant est: Ai-je raison ?


    Merci à ceux qui sont habitué et/ou au courant de ce genre de chose de bien vouloir me confirmer si ce que je viens de relater est exacte.

    Ou éventuellement de m'indiquer un site où je pourrais trouver ce que je recherche. Un fichier complet pour un nouveau look Gtk3 sous Windows.

    Maintenant que je sais où le mettre et comment faire pour pouvoir l'utiliser...


    Merci à vous tous et bon Weekend.

    Claude


    PS: Sinon, je sais ce qu'il me reste à faire. ...............

  6. #6
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    Citation Envoyé par Claude URBAN Voir le message
    J'en ai donc conclu que:

    Les fichiers mis à disposition sont des fichiers POUR LINUX et pas pour Windows.

    Y compris le gtk-win32-base.css... Il serait, semble-t-il, utilisé par et pour les Linuxiens ( je crois que c'est comme cela que l'on dit ? ) qui souhaitent avoir sous Linux un look Windows. ( Et oui, pourquoi pas... )
    GTK est multi-plateforme, le but des thèmes Windows est justement qu'une application GTK s'intègre mieux au système d'exploitation.
    L'intégration est importante, et il y a par exemple eu du travail de fait pour utiliser le sélecteur de fichiers natif de l'OS: https://blogs.gnome.org/alexl/2015/1...oosers-in-gtk/

    Pour ce qui est des thèmes, oui c'est censé marcher sous Windows, et non, tu n'es pas censé avoir à tout réécrire: https://blogs.gnome.org/alexl/2012/0...indows-themes/
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  7. #7
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    Bonjour,


    Merci pour ce complément d'information.

    Je vais en approfondir la lecture et ne manquerai pas de revenir dessus, si j'ai quelques incompréhensions.

    Je suis comme tu as pu voir TRÈS novice en la matière et gourmand de ce qui peut me permettre de compléter mes connaissances.


    Bonne journée.

    Claude

  8. #8
    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
    Points : 2 002
    Points
    2 002
    Par défaut
    Autre chose: dans ton exemple de code, tu appelles 2 fois gtk_css_provider_load_from_path. Supprime donc la ligne 10 de ton code exemple (où de toute façons tu ne vérifiais pas les erreurs).
    Commence aussi par tester le chargement d'un fichier avec un chemin absolu pour être sûr que le fichier est bien trouvé, et que c'est le bon fichier. Et si tu as un message d'erreur, copie/colle-le ici, pour être sûr du sens de l'erreur (et ne pas être tributaires de ta propre interprétation de l'erreur).

    Ensuite, lis la documentation de gtk_css_provider_load_from_path. Déjà en GTK 3.6, il est indiqué que les erreurs de parsing s'obtiennent en se connectant au signal GtkCssProvider::parsing-error. La valeur de retour et le GError à l'appel de gtk_css_provider_load_from_path ne te diront que des choses basiques, comme te prévenir si le fichier indiqué n'existe pas par exemple. Le débogage de ton CSS passera par le signal parsing-error.

    Mais je serais toi, je redonnerai un chance aux css livrés de base, il n'y a pas de raison qu'ils ne fonctionnement pas.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  9. #9
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    Bonjour,

    Merci pour ce complément d'informations fort instructif.

    J'ai supprimé la ligne 10, que je n'avais pas vu.

    Je te confirme que je lis très attentivement les messages d'erreur que peut me sortir le système.

    Mais dans ce cas précis, il n'y avait rien... (Ni dans Code:Block que j'utilise, ni dans la console qui est affiché en cas de besoin.)

    J'ai bien pris note aussi du "chemin absolu" en cas de nécessité et du reste de tes recommandations.

    Beaucoup de lecture en perspective... et pas mal de prise de tête je suppose.



    Mais je serais toi, je redonnerai un chance aux css livrés de base, il n'y a pas de raison qu'ils ne fonctionnement pas.
    C'était bien dans mes intentions, dès que j'aurai maîtrisé un peu plus le "bouzin"... pas évident au départ.


    Merci à toi et bonne journée.

    Claude.

  10. #10
    Membre confirmé Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par Claude URBAN Voir le message
    La formule magique est la suivante:
    Ajouter/Modifier la variable d'environnement
    Et créer un thème dans $datadir/share/themes/$GTK_THEME/gtk-3.0/gtk.css


    Si tu veux essayer des thème en téléchargement, vérifie que le moteur de rendu utilisé (ex: murrine, Aurora, Pixbuf, xfce, unico) est installé sur ton système.

  11. #11
    Membre averti
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Points : 327
    Points
    327
    Par défaut
    @Gaulouis

    Bonjour et merci pour ton intervention.

    Je prends bonne note de tes commentaires.

    Une interrogation quand même: murrine, Aurora, Pixbuf, xfce et unico sont, me semble-t-il des moteurs de rendu pour Linux... or j'utilise Windows (W10) ?

    Bonne journée et bon WE.

    Claude.

Discussions similaires

  1. Comment changer la balise style d'un element?
    Par designrf dans le forum jQuery
    Réponses: 6
    Dernier message: 26/03/2011, 15h20
  2. Comment changer le thème de mon site
    Par nkkin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/04/2010, 22h54
  3. [Konqueror] Comment changer le thême des icones ?
    Par mchk0123 dans le forum SUSE
    Réponses: 4
    Dernier message: 20/08/2008, 12h59
  4. Comment changer le thème et l'apparence de Windows ?
    Par QAYS dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 01/10/2007, 11h20
  5. Réponses: 2
    Dernier message: 18/12/2005, 21h10

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