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 :

Installer un environnement de dev pour GTK sur Windows


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Installer un environnement de dev pour GTK sur Windows
    Bonjour,

    Voila 3 bonnes soirées que je passe à chercher la meilleure façon (propre) d'installer un environnement pour un projet (light) avec GTK...
    et whoua, entre les difficultés à trouver les dernières libs à jour (pre-compilées) et les packages de tous style (MSYS2, MYS, PyGI, PyGTK, etc...) pas toujours aux dernières versions, je me retrouve avec une 10en de "packs" dont je ne sais plus vraiment lequel je vais "essayer" sans être sur d'avoir fais le bon choix

    Bref j'en perd mon latin, raison de ce besoin de clarification que je me décide a faire auprès de vous.

    Je développe principalement des applies consoles (C, C++, VB, Python etc...) que ce soit sur Linux et/ou Windows et de temps à autre de simples GUI via Visual Studio 2010.

    La, je dois faire une GUI pour Windows et pour Linux desktop, d'ou le GTK (il y a plus simple ? ), c'est un "tools" et pas une application "lourde".
    Je ne sais pas encore vraiment quel langage je vais utiliser pour ça, déjà je voudrai déja les tester avec GTK...

    Ma question va être simple: ou récupérer le Pack de développement Windows (libs, frameworks) pour GTK (3, visiblement le 2 est out maintenant)

    Pour info ( si nécessaire), j'utilise principalement Code::Block, VisualStudio 2010, Eclipse (+ rare) comme IDE, et Notepad++ pour Python 2.7.x

    Subsidiaire: A par Glade, existe t'il d'autre RAD pour GTK ? (suivant vos expériences)

    Allez, une de plus !: en dehors de GTK, pour des GUI (app tres light) (Multi-plateformes) vous conseilleriez autre chose ?

    Merci beaucoup par avance de m'aider a dégrossir la chose, car depuis mes recherches, pas mal de choses se mélangent

    Alain

    (add à la loi de murphy: Tu passeras plus de temps a installer ton environnement de Dev qu'a coder)

  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,

    ça fait beaucoup de questions tout ça

    Pour la méthode d'installation, elle est indiquée sur le site officiel : c'est via MSYS2.
    https://www.gtk.org/download/windows.php

    Seul bémol : les bibliothèques fournies sont compilées avec gcc, et pas compatibles avec les symboles de debug générés par visual studio. Du coup l'expérience développeur est clairement pas optimale, mais ça marche.

    Ensuite, je ne comprends pas ce que tu veux dire par:

    c'est un "tools" et pas une application "lourde".
    Ensuite, pour répondre à tes autres questions:
    A par Glade, existe t'il d'autre RAD pour GTK ? (suivant vos expériences)
    Il y avait Gazpacho il y a quelques années, un projet écrit en python, mais il n'est plus maintenu. Je te conseille Glade (et le tutoriel d'installation GTK+ t'indique comment l'installer aussi).

    en dehors de GTK, pour des GUI (app tres light) (Multi-plateformes) vous conseilleriez autre chose ?
    Qt a globalement un meilleur support multi-plateforme. Après côté légèreté, je ne sais pas trop...

    Pour les langages, tu as des bindings de GTK vers plein de langages différents. Python (avec pyGObject) et C++ (avec GTKmm) sont les mieux gérés. Tu peux aussi directement en C aussi, et tu as plein d'autres langages disponibles (Rust, Perl, Ada, etc.).
    Tutoriel officiel pour GTK+ 3 en python: https://python-gtk-3-tutorial.readth...est/index.html

    Surtout n'utilise pas PyGTK (c'est pour GTK 2, vieux de 6 ans). PyGi c'est un ancien nom pour parler des versions de PyGObject qui ont des capacités d'introspection. C'est dans PyGObject depuis plusieurs années. Pour faire du GTK+3, c'est donc PyGObject qu'il te faut.
    Plus d'infos dans ma réponse ici: https://stackoverflow.com/a/9672426/518853
    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 expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut MSYS2 est une solution.
    Salut le GThacKtivist Windows,

    Personnellement j'ai mis des années a trouver le moyen de porter mes applications GTK vers Windows !

    Et la solution que j'ai trouver s'appelle MSYS2.

    Après l'installation de l'exécutable MSYS2.

    Tu a un package manager a disposition: pacman

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ pacman -Ss toolchain | grep x86_64 | grep gcc # Chercher le compilateur natif.
    $ pacman -S gcc # Installation de gcc GNU CC
    Sinon tu a plein de packages pré-compiler a disposition: glade3, Python 2.7.x, etc...

    Malgré que le GtkFileChooserNative (avec l'action *_SAVE) bug hors de l'environnement MSYS2.

    A part cela (qui est génant quand même) Ca va.

    P.S: Un peu de prérequis de GNU sont nécessaire étant donnée que tu n'a qu'un terminal avec bash pour te débrouiller (Personnellement j'utilise un Makefile).

    Sinon tu peu essayer cygwin la tu aura une interface graphique...

    ---

    Sinon côté G.U.I light tu a FLTK.

    ----

    A moi de poser une question: est-ce-que Qt est mieux que GTK+-3.0 coté portabilité et maintenance ou est ce le même calvaire qu'avec GTK+-3.0.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  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
    Comme je l'ai indiqué, MSYS2 est la solution officiellement conseillée par l'équipe GTK+.
    J'ai moi même rédigé la page https://www.gtk.org/download/windows.php pour la simplifier et donner plus de détails spécifique sur les paquets à installer avec pacman, et ce, suite aux nombreuses questions sur différents forums (en gros, ici et sur stackoverflow.com).
    Je déconseille d'utiliser cygwin, tu ne fais plus du natif dès que tu touches à cygwin car tu ajoutes une dépendance à la bibliothèque cygwin, que tu dois alors distribuer avec ton application. Avec MSYS2 tu fais du pur natif Windows.

    Malgré que le GtkFileChooserNative (avec l'action *_SAVE) bug hors de l'environnement MSYS2.
    Je ne suis pas au courant... Tu as regardé si un bug était ouvert à ce sujet sur le bugzilla GTK+ ?

    est-ce-que Qt est mieux que GTK+-3.0 coté portabilité et maintenance ou est ce le même calvaire qu'avec GTK+-3.0.
    Qt est meilleur côté portabilité, parce que Qt est beaucoup plus maintenu, a plus de backends. Ce n'est juste pas la même taille de projets.
    Pour ce qui est de FLTK, si tu trouves GTK+ difficilement maintenu, l'historique de FLTK semble largement pire (cf wikipédia).

    Pour GTK+ 3, côté maintenance, il y a eu des soucis de compatibilté surtout avec la stabilisation du moteur de thèmes CSS, dont l'API a longtemps été instable, avec des comportements changeant de version en version. Cela fait toutefois plus d'un an (de mémoire) que l'API est stable.
    Tu as eu quels soucis de maintenance en particulier ?

    Et bien sûr, il y a GTK+ 4 qui est en préparation
    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 expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Bonjours merci pour la réponse,

    J'aimerai savoir comment je signale mon BUG a bugzilla ca fait une demie heure que je me bat avec l'interface sans pouvoir écrire une ligne.

    A tu une idée comment ont fait pour faire un BUG-REPORT sur bugzilla, sachant qu'il n'y a personne sur cette mailing list: gtk-app-devel-list@gnome.org.

    ---

    Je commence sérieusement a dire de me mettre a Qt,

    5 années de savoir GTK gâcher par des main-teneurs incompétent, je explique.

    Ils ont décidé à Manchester de casser l'API a toutes les futures changements de version mineures, si c'est pas de l'hérésie en terme de maintenance.

    ---

    Puis il nous mentent dans la doc,

    enfin pour moi car a part GTK_FILE_CHOOSER_ACTION_OPEN aucune autre action

    ne marche sur du Windows Native et ils ont le toupet de mettre

    GTK_FILE_CHOOSER_ACTION_SAVE dans la doc
    ces incompétents.

    ---

    Peut tu me dire si l'action GTK_FILE_CHOOSER_ACTION_SAVE fonctionne en NATIVE chez toi ?

    Je veut dire construire ton programme avec MSYS2

    puis

    de copier toutes les libraries requises ainsi que le binaire dans un dossier autre que dans l'environnement MSYS2.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  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
    Cher Luke Spywalker,

    je pense que tu vas devoir apprendre quelques bricoles sur comment fonctionne le monde du logiciel libre...

    Tu me dis qu'il n'y a personne sur la mailing list (que je fréquente moi même à l'occasion), et là je tombe sur un message délicatement appelé incompetent heretic GTK+ maintainers !.
    Comment dire... aller dire à des gens qui bossent gratos pour toi, certains extrêmement commpétents (en gros, ce sont des grosses brutes du développement logiciel, certains salariés chez les plus grosses boites comme RedHat, Intel, etc), que ce sont des branques qui n'ont rien compris... Sachant que sur ton profil tu mets que tu es "étudiant informatique autodidacte", je t'invite à un peu plus d'humilté. Ne t'étonne pas de ne pas avoir de réponse, personne ne répondra à un message hargneux, et peu iront plus loin que le titre. Si je vais chez toi, que je t'insulte, puis que je te demande un service, tu réagis comment toi ?

    Citation Envoyé par Luke spywoker Voir le message
    Ils ont décidé à Manchester de casser l'API a toutes les futures changements de version mineures, si c'est pas de l'hérésie en terme de maintenance.
    As tu lu https://blog.gtk.org/2016/09/01/vers...romise-in-gtk/ ?
    On y lit:
    While the GTK+ team reserves the right to change API during development series, this does not mean that the whole GTK+ API will constantly break each release; only specific, and hopefully rarely used parts of the API may change, and if the changes are too extensive they will very likely be delayed to the next major development cycle. We’ll ensure that these changes are well-communicated in advance.
    Ça ne ressemble pas trop à ce que tu dis. En gros le plan, c'est d'éviter les soucis qu'il y a eu sur GTK+ 3 où le comportement du moteur de thème a changé au cours des version, au fil de l'avancement de l'implémentation. L'auteur souhaitait une réelle compatibilité CSS, au prix de changements qui faisaient que c'était difficile pour un développeur d'application de savoir à quoi allait ressembler son application car il ne savait pas forcément avec quelle version de GTK+ les distributions la livreraient. La solution trouvée par l'équipe GTK+ n'a rien d'hérétique. Ils vont faire plus de version majeures où ils se permettront de casser la compatibilité et enlever tout ce qui est obsolète, et maintenir en parallèle la version stable, qui sera encore plus stable: seul ce qui est jugé vraiment important y sera ajouté. Le reste des développements se fera sur la version de développement (le futur GTK+ 4 ici). Ils feront des itérations successives de ce qui donnera GTK+ 4 (3.90, 3.92, 3.94, etc.) avant de la figer en GTK 4.0 qui deviendra la nouvelle version stable.

    Donc pour les développeurs d'application qui se foutent d'avoir la toute dernière version de GTK, mais qui veulent un comportement prédictible, ils choisiront la version stable (GTK+3 actuellement), qui n'aura plus de changement brutal. Pour ceux qui veulent coller aux dernières nouveautés, ils pourront suivre les versions de développement des GTK+ 4 (3.90, 3.92, etc.), mais où les développeurs GTK ne garantissent pas de ne pas casser l'API (ce qui me parait raisonnable, vu que c'est une version de développement). Cela leur demande moins de travail, compensé par le fait qu'il faut plus de travail pour maintenir plusieurs versions en parallèle (GTK+ 3.x). Sachant que les ressources (nombre de mainteneurs et développeurs) sont faibles, ils ne peuvent pas proposer plus de choses sans sacrifier autre chose, d'où le fait qu'ils ne garantissent pas la stabilité de l'API sur les versions préparatoires à GTK+ 4 (3.90, 3.92, etc.).

    C'est donc plutôt une bonne nouvelle pour les développeurs tiers qui n'auront pas à s'arracher les cheveux à essayer de prédire un comportement selon la version mineure de GTK comme cela a été le cas avec ces soucis de CSS sur GTK+ 3. Et pour les développeurs GNOME, on attend d'eux qu'ils suivent le développement de GTK+ d'un peu plus prêt et suivent les versions préparatoires. Avec une version majeure tous les 2-3 ans, cela permet de simplifier le casse-tête de la maintenance de GTK+, parce que garder la rétro compatibilité sur plusieurs années, ça a un coût en ressources humaines.

    Citation Envoyé par Luke spywoker Voir le message
    Puis il nous mentent dans la doc
    Ce à quoi je te réponds:
    Assume people mean well:

    Remember that decisions are often a difficult choice between competing priorities. If you disagree, please do so politely.
    If something seems outrageous, check that you did not misinterpret it. Ask for clarification, but do not assume the worst.
    Source: https://wiki.gnome.org/Foundation/CodeOfConduct

    En gros, cela peut être un bug, une mauvaise compréhension du fonctionnement, mais ne pars pas du principe qu'on te ment volontairement, sinon tu auras du mal à collaborer avec les gens.

    Si tu m'envoies un bout de code exemple qui met en évidence le bug chez toi, je peux essayer de reproduire le bug, j'ai une install MSYS2 mise à jour hier soir.
    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 expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci de m'avoir botter les fesses,

    je suis de nature battantes contre les injustices et je souffre de incompréhension, c'est peut-être dû a ma maladie:

    Je suis handicapé mentale, mais programmeur, en faite je écrivais des programmes en pseudo code sur du papier a l'hôpital traitant de physique, chimie et neurologie.

    avant d'avoir un ordinateur.

    Et l'on m'a répondus sur la mailling-list que tu cite : et je suis excuser pour mon comportement.

    Si tu m'envoies un bout de code exemple qui met en évidence le bug chez toi, je peux essayer de reproduire le bug, j'ai une install MSYS2 mise à jour hier soir.
    je n'ai pas mon code sur ma machine inet pour des raison de sécurité mais tu peut essayer quelque chose ressemblant a ceux-ci:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    #include <gtk/gtk.h>
     
    static void create_win32_native_file_chooser(GtkWidget *widget, gpointer user_data)  ;
     
    static void create_win32_native_file_chooser(GtkWidget *widget, gpointer user_data) {
     
      GtkWidget *window = gtk_widget_get_toplevel(widget) ;
     
      GtkFileChooserNative *win32_native_file_chooser = gtk_file_chooser_native_new("title", 
                                                       GTK_WINDOW(window), 
                                                      GTK_FILE_CHOOSER_ACTION_SAVE, // C'est ça qui bug.
                                                      "accept label",
                                                      "cancel label") ; 
     
      gtk_native_dialog_show(GTK_NATIVE_DIALOG(win32_native_file_chooser)) ;
     
      gtk_native_dialog_destroy(GTK_NATIVE_DIALOG(win32_native_file_chooser)) ;
     
      return ;
     
    }
     
     
    int main (int argc, char *argv[]) {
     
      gtk_init(&argc, &argv) ;
     
      GtkWidget *window, *button ;
     
      window = gtk_window_new(GTK_WINDOW_TOPLEVEL) ;
     
      button= gtk_button_new_with_label("test") ;
     
      g_signal_connect(button, "clicked", G_CALLBACK(create_win32_native_file_chooser) , NULL);
     
      gtk_container_add(GTK_CONTAINER(window), button) ;
     
      gtk_main() ;
     
      return 0 ;
    }
    Et voila cela fonctionne dans l'environnement MSYS2, parfait ?

    Mais doit je demander a mes client d'installer MSYS2 et de faire une croix sur un exécutable auto-extractible avec inno-setup.

    En faîte pour tester et arriver a mon but je crée un dossier en dehors de l'environnement MSYS2 et j'y copie les bibliothèques requise ainsi que l'exécutable avec un petit script bash

    qui se retrouveront dans l'exécutable auto-extractible.

    :note: J'ai récupérer le script:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #! /bin/bash
     
    ###########################################
    #                                         #
    # A script for mingw distributing copying #
    # every needed *.dll to destination given #
    # as argument ($2),                       #
    # from binary given as argument ($1)      #
    #                                         #
    ###########################################
     
    function usage {
     
      echo "a script to copy all required dll files from a binary to a destdir."
      echo "usage: $0 pathtobin destdir"
     
      exit 1
     
    }
     
    if [[ ! -f $1 ]] || [[ ! -d $2 ]] ; then
     
      usage ;
     
    else
     
      ldd $1 | grep /mingw64/bin/ | cp $(gawk '{print $3}' ) $2
     
      ldd $1 | grep /mingw64/bin/ | echo "$(gawk '{print $3}' )"
     
      # A try for cygwin:
      #
      #objdump -p $1 | grep "DLL Name" | cp $(printf "%s%s" "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/" $(gawk '{print $3}')) $2
     
      #objdump -p $1 | grep "DLL Name" | echo $(printf "%s%s" "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/" $(gawk '{print $3}'))
     
      echo "copy to $2"
     
      cp $1 $2
     
      echo "copy $1 to $2"
     
      exit 0 ;
     
    fi
    :note: En faîte j'ai un problème de compréhension car j'arrive pas a bien me concentrer sur ma machine inet, du coup je comprends les choses de travers malheureusement !

    Surtout avec l'anglais pourtant j'ai lu des bouquin entier en Anglais sans mal-comprendre un mot de travers.

    Ça doit être l'anglais sur l'ordinateur avec lequel je me méprends.

    Merci d'être si compréhensif avec un être (une dégénérescence de la nature) si vils que moi.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  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
    Ce n'est pas ce dont on parle ici : https://www.developpez.net/forums/d1...s/#post9593898
    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
    Salut,

    désolé, ça m'a pris plus de temps que prévu pour pouvoir faire les tests.

    Citation Envoyé par Luke spywoker Voir le message
    Et voila cela fonctionne dans l'environnement MSYS2, parfait ?
    Ton code ne fonctionnait pas, je suppose que tu as dû édulcorer un peu trop ton exemple.
    Voilà une version qui ouvre les dialogues en mode ouverture ou en mode sauvegarde.

    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
    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
    #include <gtk/gtk.h>
     
    static void on_save (GtkWidget *widget, gpointer user_data) {
        GtkWidget *window = gtk_widget_get_toplevel(widget);
        GtkFileChooserNative *win32_native_file_chooser = \
            gtk_file_chooser_native_new("Enregistrer",
            GTK_WINDOW(window),
            GTK_FILE_CHOOSER_ACTION_SAVE,
            "Enregistrer",
            "Annuler");
     
        gtk_native_dialog_show(GTK_NATIVE_DIALOG(win32_native_file_chooser));
    }
     
    static void on_open (GtkWidget *widget, gpointer user_data) {
        GtkWidget *window = gtk_widget_get_toplevel(widget);
        GtkFileChooserNative *win32_native_file_chooser = \
            gtk_file_chooser_native_new("Ouvrir",
            GTK_WINDOW(window),
            GTK_FILE_CHOOSER_ACTION_SAVE,
            "Ouvrir",
            "Annuler");
     
        gtk_native_dialog_show(GTK_NATIVE_DIALOG(win32_native_file_chooser));
    }
     
     
    int main (int argc, char *argv[]) {
        gtk_init(&argc, &argv);
     
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        GtkWidget *grid = gtk_grid_new();
        GtkWidget *save_button = gtk_button_new_with_label("Enregistrer");
        GtkWidget *open_button = gtk_button_new_with_label("Ouvrir");
     
        gtk_grid_attach(GTK_GRID(grid), save_button, 0, 0, 1, 1);
        gtk_grid_attach(GTK_GRID(grid), open_button, 1, 0, 1, 1);
     
        g_signal_connect(save_button, "clicked", G_CALLBACK(on_save), NULL);
        g_signal_connect(open_button, "clicked", G_CALLBACK(on_open), NULL);
        g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        gtk_container_add(GTK_CONTAINER(window), grid);
        gtk_widget_show_all(window);
        gtk_main();
     
        return 0;
    }
    Mais doit je demander a mes client d'installer MSYS2 et de faire une croix sur un exécutable auto-extractible avec inno-setup.
    Non, l'installateur est toujours la solution recommandé (idem, c'est sur la page de téléchargement de GTK pour Windows sur le site de GTK+).

    En faîte pour tester et arriver a mon but je crée un dossier en dehors de l'environnement MSYS2 et j'y copie les bibliothèques requise ainsi que l'exécutable avec un petit script bash qui se retrouveront dans l'exécutable auto-extractible.
    J'admets volontiers que la situation est loin d'être idéale. Une des solutions possible (utilisée par l'application gedit) est la création d'un paquet pacman pour l'application (comme ça elle est facilement installable pour les gens qui ont un environnement MSYS2), puis quelques scripts qui génèrent un installateur wix (une alternative à inno-setup j'imagine) à partir du paquet pacman.
    Plus d'infos sur le post de blog:
    https://blogs.gnome.org/nacho/2014/0...on-on-windows/
    Mais tu peux aussi effectivement générer un installateur inno-setup en retrouvant les dépendances nécessaires, c'est aussi une solution valable.
    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
    Si tu fais un paquet avec innosetup, il doit être gros : il y a beaucoup d'icônes. À moins qu'il y ait une solution de trouver les bonnes dans le paquet composé.
    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
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Salut les GThacKtivist,

    Je me suis tromper sur la compatibilté avec Windows fr Gtk-3,

    surtout concernant le GtkFileChooserNative.

    J'ai résolus le problème, grâce a l'équipe de gnome-bugzilla.


    Et me suis sincèrement excuser sur la mailing-list de gtk-devel-app.


    En faîtes en plus de copier les *.dll dans le dossier hors de l'environnement MSYS2.

    Il faut copier les gschema aussi et accessoirement les icônes Adwaita et hicolor.

    En faîtes le présumer bug vient de mon ignorance, mais personne n'est parfait nie ne peut tout savoir.

    J'espère que mes excuses seront acceptés.


    Il faut dire que quand le programme bug et que,

    1. Que l'on pense que l'on a tout fait correctement (car cela marchait très bien avec Micro Music Player).

    2. Que le problème vient de bibliothèque sous-jacente (Ce qui est faux.).

    3. La dernière fois que vous avez fait la même chose utilisant mon script de copie des *.dll tout fonctionnait.

    Et bien l'on se laisse emporter malheureusement.

    Le programme en question s'appelle gfast-copy.

    Que je dois encore tester, concernant les performances:

    1. Operating system: hdd to external.

    2. Operating system external to hdd.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  12. #12
    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 Luke spywoker Voir le message
    Il faut copier les gschema aussi et accessoirement les icônes Adwaita et hicolor.
    Les deux ? Tu es sûr ?
    C'est très gros tout ça !
    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...

  13. #13
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    En faite,

    hicolor est le fallback de Adwaita.

    Mais comme dit sur gnome-bugzilla, c'est uniquement pour les décorations, sinon j'ai pas besoin de ces icons set.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  14. #14
    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
    Les icônes sont importantes, sinon, on ferrait de la ligne de commande
    Ceci dit, je ne comprends pas :
    hicolor est le fallback de Adwaita
    Ça veut dire quoi ?
    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...

  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
    La solution de replis. Il dit que si Adwaita n'est pas trouvé, c'est hicolor qui est cherché.
    Bon, ce fil ne correspond plus du tout à la question initiale, je vous propose d'en rester là.
    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
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    C'est de ma faute si le poste ne correspond plus a la question initiale.

    Alors pour revenir dessus.

    Pour mes versions Windows de mes programmes j'utilise MSYS2.

    Et pour copier les bibliothèques dépendantes dans un dossier extérieur a l'environement de MSYS2, j'utilise ce script:

    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
    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
     
     
    #! /bin/bash
     
    ###########################################
    #                                         #
    # A script for mingw distributing copying #
    # every needed *.dll to destination given #
    # as argument ($2),                       #
    # from binary given as argument ($1)      #
    #                                         #
    ###########################################
     
    function usage {
     
       echo "a script to copy all required dll files from a binary to a 
    destdir."
       echo "usage: $0 pathtobin destdir"
     
       exit 1
     
    }
     
    if [[ ! -f $1 ]] || [[ ! -d $2 ]] ; then
     
       usage ;
     
    else
     
       ldd $1 | grep /mingw64/bin/ | cp $(gawk '{print $3}' ) $2
     
       ldd $1 | grep /mingw64/bin/ | echo "$(gawk '{print $3}' )"
     
       # A try for cygwin:
       #
       #objdump -p $1 | grep "DLL Name" | cp $(printf "%s%s" 
    "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/" $(gawk '{print $3}'))
    $2
     
       #objdump -p $1 | grep "DLL Name" | echo $(printf "%s%s" 
    "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/" $(gawk '{print $3}'))
     
       echo "copy to $2"
     
       cp $1 $2
     
       echo "copy $1 to $2"
     
       exit 0 ;
     
    fi
    Mais il faut copier aussi les gschemas comme dit auparavant.

    Voila une solution de GNU pour Windows (une de plus).
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

Discussions similaires

  1. Installation de Glade, PyGtk et GTK + sur windows *64 et Python 3.5
    Par robinou00 dans le forum Déploiement/Installation
    Réponses: 2
    Dernier message: 19/07/2018, 09h08
  2. Installer GTK+ sur windows
    Par Soporythmique dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/06/2012, 10h41
  3. [Zend Core/Platform/Studio] Environnement de dev pour le ZF
    Par Jonathan.b dans le forum Zend Studio
    Réponses: 1
    Dernier message: 27/10/2009, 16h05
  4. Réponses: 4
    Dernier message: 19/05/2009, 15h48

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