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 :

Tour de fenêtre (et gtk 3.22.24 ?)


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut Tour de fenêtre (et gtk 3.22.24 ?)
    Bonjour

    Je travaille à nouveau mon programme que j'avais laissé quelques temps. Il y a une grosse modification au niveau de la première fenêtre qu'il ouvre : elle n'a pas de bord.
    Sous linux xfce4, j'ai juste perdu le bandeau du haut avec entre autre le bouton "fermer". Sous windows (7 ou 10, pas testé ailleurs), comme le haut de la fenêtre (l'élément du haut de la vbox) est un menu, il est en transparent et pas facilement accessible (je n'ai pas l'habitude de windows).
    C'est une nouveauté heureuse ? Ou un problème ? Sous Linux, ce n'est pas trop gênant car j'avais mis un gros bouton [fermer] (élément du bas de la vbox principale), mais sous windows, je trouve que ça complique l'accès au menu.

    J'avoue que j'aimerai bien virer cette option (c'est peut-être que je suis un vieux ringard linuxien). C'est d'autant plus surprenant que les autres fenêtre qui s'ouvrent ensuite sont complètes.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  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
    Pour Windows, il y a un changement dans MSYS2 pour utiliser les décorations de fenêtre Windows par défaut.
    Regarde si en mettant la variable d'environnement GTK_CSD à 0 ou 1 te ramène la présentation que tu veux. Je ne sais pas si le CSD (client side decorations) est activé par défaut sous Xfce... Je t'avoue que des captures d'écran ne seraient pas de trop non plus...
    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
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Première image sous windows 10
    Nom : gkt3_20171019_win10.png
Affichages : 407
Taille : 19,0 Ko

    Seconde sous windows7 (pratiquement comme sous xfce4)
    Nom : gkt3_20171019_win7.png
Affichages : 407
Taille : 99,5 Ko

    Alors, le travail des variables d'environnement, déjà que sous Linux, je ne sais pas trop faire, sous windows je 'en sais rien du tout. En plus, mon programme est compilé avec mingw sous Linux et je récupère tout (dll y compris) sous Windows. Donc, je ne pense pas que c'est l'environnement msys.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  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
    Ok, je parlais de MSYS2 parce que c'est la manière officielle de récupérer GTK+ pour Windows. Tu donc fais la compilation croisée de toute la pile GTK+ sous Linux avec MinGW ?

    Pour les variable d'environnement, ce n'est pas compliqué. Si tu es sous Linux, tu peux en positionner à partir d'un terminal si c'est juste pour faire un test.

    Par exemple sans variable d'environnement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rm toto
    rm: impossible de supprimer «toto»: Aucun fichier ou dossier de ce type
    Ensuite, la variable LC_ALL contrôle de tous les paramètres de localisation: langue, séparateur numérique, etc. cf man locale. En la positionnant à la langue 'C', celui indique de ne pas faire de traduction, mais d'utiliser directement le texte qui se trouve dans le code sans appel à gettext. En le plaçant au début de la ligne, la valeur n'est valable que pour la command qui se trouve sur la même ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    LC_ALL=C rm toto
    rm: cannot remove 'toto': No such file or directory
    Si c'est pour du long terme tu peux les définir dans ton $HOME/.profile (il faudra cependant te déloguer puis te reloguer pour prendre en compte les modifications). Dans le fichier tu ajoutes juste une ligne:
    ou
    Pour changer une variable d'environnement sous Windows, c'est un peu pareil. Le plus simple pour tester, c'est de positionner la variable dans un fichier .bat dans le même dossier que ta commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set GTK_CSD=0
    ton-executable-gtk.exe
    Tu peux aussi naviguer avec l'interpréteur de commande cmd.exe et taper les mêmes commandes.
    Pour du plus long terme, tu as dans les paramètres Windows une section pour les varaibles d'environnement. Cela permet par exemple de changer la variable PATH dont tu peux avoir parfois besoin quand tu installes des choses dans des emplacements non-standard.
    http://www.developper-jeux-video.com...nt-windows-10/

    Pour ce qui est des variables d'environnement qui influencent GTK 3, ça se passe ici:
    https://developer.gnome.org/gtk3/sta...k-running.html

    Le CSD c'est le client-side-decoration. C'est la décoration des fenêtres (bare de titre, contour) qui était autrefois dessiné par le gestionnaire de fenêtres. Au passage à Wayland, GTK+ a fait le choix de dessiner cela lui même, pour des raisons techniques inhérentes au fonctionnement même de Wayland. C'est ça qu'on appelle le CSD.
    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
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    je viens de tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      979  set GTK_CSD=0
      980  ./perso
      981  set GTK_CSD=1
      982  ./perso
      983  GTK_CSD=1 ./perso
      984  GTK_CSD=0 ./perso
      985  history
    Aucun changement sur l'affichage.

    Ceci dit, j'aurais été surpris car seule la première fenêtre est impactée, pas les autres. Mais, je ne suis pas sûr d'avoir bien compris...
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Bonjour

    Je viens de tester sous windows : rien non plus.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  7. #7
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2017
    Messages : 43
    Points : 64
    Points
    64
    Par défaut Au pif
    Bonsoir à toutes et à tous,

    troumad, as tu bien initialisé Gtk+ avec gtk_init ?

    PS: Sous linux essayez avec export et non pas set.
    export GTK_CSD=0 && progname

  8. #8
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Oui, avec gtk_init :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_init(&argc, &argv);
    On peut faire autrement ?

    Je testerai sous Linux (KDE) dès que j'ai le temps (pas ce matin, je dois partir au boulot et je suis sous xfce4).
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  9. #9
    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 troumad Voir le message
    On peut faire autrement ?
    Oui, si tu utilises GtkApplication c'est fait pour toi.
    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)

  10. #10
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Oui, si tu utilises GtkApplication c'est fait pour toi.
    En plus, ça marche avec libunique... Il va falloir que je regarde de plus près. Mais, le soir en rentrant du boulot, je ne peux ps regarder de l'anglais
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  11. #11
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Citation Envoyé par aeiou Voir le message
    PS: Sous linux essayez avec export et non pas set.
    export GTK_CSD=0 && progname
    Avec xfce4, je n'ai toujours pas de quoi prendre la fenêtre et la déplacer.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  12. #12
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2017
    Messages : 43
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Peut-être une solution : https://www.maketecheasier.com/disab...ations-ubuntu/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    apt-get install gtk3-nocsd
    export GTK_CSD=0
    export LD_PRELOAD="/usr/lib/libgtk3-nocsd.so.0:${LD_PRELOAD}"
    progname

  13. #13
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Aucun rpm avec nocsd dans le nom avec mageia. Je pose la question sur le forum français officiel de mageia. : https://www.mageialinux-online.org/f...opic-24353.php

    Je me demande si une option lors de la compilation ne résoudrait pas tout.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  14. #14
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2017
    Messages : 43
    Points : 64
    Points
    64
    Par défaut
    Même en ajoutant le repository ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sudo add-apt-repository ppa:nilarimogard/webupd8
    sudo apt-get update
    sudo apt-get install gtk3-nocsd
    export GTK_CSD=0
    export LD_PRELOAD="/usr/lib/libgtk3-nocsd.so.0:${LD_PRELOAD}"
    progname

  15. #15
    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
    Il n'est pas sous ubuntu, il est sous Mageia. Il n'y a pas de ppa, et pas de package gtk3-nocsd.
    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)

  16. #16
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    C'est la présence dans le fichier de l'lélément titlebar qui génère cette absence de tour de fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <child type="titlebar">
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  17. #17
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    En travaillant avec glade et en modifiant le code du fichier glade à la main (indispensable pour maintenir ses icônes), j'y suis arrivé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      <object class="GtkWindow" id="window">
    [...]
        <child>
          <object class="GtkBox" id="box1">
    [...]
            <child>
              <object class="GtkPaned">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <child>
                  <object class="GtkMenuBar" id="menubar1">
    Il m'a fallu rajouter au parent de mon menu une "boite à volet" et mettre ma boite à volet avec le menu dedans en haut de ma fenêtre.

    Ceci dit, l'autre présentation était jolie, mais il manquait en haut de la fenêtre les boutons de réduire, passer en grand écran ou fermer la fenêtre. J'aimerai bien garder l'ancienne configuration en rajoutant juste ces boutons. Ça fait plus moderne.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2013, 02h19
  2. Mettre un titre à une fenêtre en GTK
    Par sasssah dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 22/06/2010, 11h03
  3. Problème GTK++ fenêtre MS-DOS
    Par Vestigo dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 30/08/2007, 13h59
  4. Commander des fenêtres GTK avec le shell
    Par clebig dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 31/07/2006, 11h58
  5. [GTK#] Fenêtre transparente ?
    Par nicolas.pied dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 15/05/2006, 22h54

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