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 :

[Gtk_File_Chooser] [Windows]refuse de s'ouvrir


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 [Gtk_File_Chooser] [Windows]refuse de s'ouvrir
    Bonjour

    J'ai un problème lors de l'ouverture d'une fenêtre GtkFileChooserDialog. Voici le message d'erreur que j'ai lors de son ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\bookmarks"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\D:\\Documents\\add\\perso\\trash:"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\servers"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\bookmarks"
    GLib-GIO-Message: watch thread: could not watch /org/gtk/settings/file-chooser/: E/S avec chevauchement en cours.
    Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
     
    (perso.exe:8): GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'date-format'
    Le code pour ouvrir les fichiers glade a été pris ici :
    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
    void get_widgets(struct widgets *widgets)
    {
      widgets->window = GTK_WIDGET(gtk_builder_get_object(widgets->builder,"window"));
    }
     
    struct widgets * ouverture_glade_retour(char * _nom, unsigned short connect)
    {
      GError *error = NULL;
      struct widgets * widgets=NULL;
      char *chemin, * ici=chemin_exe();
     
      widgets=(struct widgets *)malloc(sizeof(struct widgets));
     
      widgets->builder = gtk_builder_new();
      chemin=g_build_path (G_DIR_SEPARATOR_S,ici,"fichiers","glade",_nom,NULL);
      if (!gtk_builder_add_from_file(widgets->builder, chemin, &error))
      {
          g_warning("%s", error->message);
          g_error_free(error);
          printf("Fichier %s inexistant à l'emplacement %s\n",_nom,chemin);
          widgets=NULL;
      }
      else
      {
          get_widgets(widgets);
          if ((connect&GLADE_CONNECT)!=0)
          {
              gtk_builder_connect_signals(widgets->builder, widgets);
          }
     
          gtk_widget_show(widgets->window);
      }
      g_free(chemin);
      g_free(ici);
     
      return widgets;
    }
    Bien sûr sous Linux, je n'ai pas de problème...
    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
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    En traduisant simplement les warnings les quatre premières lignes te disent que les noms de tes chemins sont beaucoup trop longs.

    La ligne 6 t'indique qu'il n'est pas conseillé d'utiliser une boite de dialogue sans lui spécifier sa fenêtre parente.

    Enfin, et le problème vient sûrement de là, il y a une clef "date-format" dans le fichier xml inconnu pour Gtk+ !

  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
    Citation Envoyé par gerald3d Voir le message
    En traduisant simplement les warnings les quatre premières lignes te disent que les noms de tes chemins sont beaucoup trop longs.
    Je ne sais pas d'où peuvent venir ces chemins. C'est surement dans les fichiers de configuration de wine.

    Citation Envoyé par gerald3d Voir le message
    La ligne 6 t'indique qu'il n'est pas conseillé d'utiliser une boite de dialogue sans lui spécifier sa fenêtre parente.
    Ça vient du code que j'ai passé, je ne vois pas comment spécifier une fenêtre parente à une autre fenêtre.

    Citation Envoyé par gerald3d Voir le message
    Enfin, et le problème vient sûrement de là, il y a une clef "date-format" dans le fichier xml inconnu pour Gtk+ !
    Cette entrée de mon fichier Linux n'était pas présente dans les fichiers correspondants de wine. Je l'ai rajouté :
    J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <key name="date-format" enum="org.gtk.Settings.FileChooser.DateFormat">
          <default>'regular'</default>
          <summary>Date format</summary>
          <description>
                  The amount of detail to show in the Modified column.
          </description>
        </key>
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [troumad@localhost drive_c]$ find -iname org.gtk.Settings.FileChooser*
    ./Program Files/perso/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
    ./Program Files/perso/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml~
    ./GTK/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
    ./GTK/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml~
    Et rien n'a changé.
    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
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par troumad Voir le message
    Ça vient du code que j'ai passé, je ne vois pas comment spécifier une fenêtre parente à une autre fenêtre.
    Tu peux utiliser cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void gtk_window_set_transient_for (GtkWindow *window, GtkWindow *parent);

  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
    Ça marche peut-être, mais comme on réalise l’affiliation après la création, le message est toujours là.
    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
    Mon filechooser est créé à partir de glade. Le passage du fichier glade à la fenêtre se fait par l"intermédiaire de 2 fonctions : gtk_builder_get_object et gtk_builder_add_from_file .
    Je ne sais laquelle exactement génère la fenêtre.

    Si dans la fonction qui génère la fenêtre je donne un parent avec la fonction : [CODELINE]gtk_widget_set_parent_window ((widgets->window),GTK_WINDOW(_widgets->window));[/CODELINE], je n'ai plus ce problème. Enfin, le programme ne plante plus lors de cet appel, je n'ai plus le message avec l'erreur, mais la fenêtre ne s'ouvre pas (même sous Linux). Il y a peut-être quelque chose à voir à ce niveau.
    Le problème est surtout à la compilation cette fois :
    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
    ouverture.c: In function 'ouverture':
    /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkwindow.h:40:27: warning: passing argument 2 of 'gtk_widget_set_parent_window' from incompatible pointer type [-Wincompatible-pointer-types]
     #define GTK_WINDOW(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_WINDOW, GtkWindow))
                               ^
    ouverture.c:53:55: note: in expansion of macro 'GTK_WINDOW'
           gtk_widget_set_parent_window ((widgets->window),GTK_WINDOW(_widgets->window));
                                                           ^
    In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkapplication.h:27:0,
                     from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkwindow.h:33,
                     from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkdialog.h:32,
                     from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                     from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtk.h:31,
                     from include.h:16,
                     from ouverture.c:22:
    /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gtk/gtkwidget.h:899:23: note: expected 'GdkWindow * {aka struct _GdkWindow *}' but argument is of type 'GtkWindow * {aka struct _GtkWindow *}'
     void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    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
    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
    Toujours rien... J'ai essayé de nouveaux tests : je ne passe plus par glade. Le problème est le même.

    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
            GSList * noms_de_fichier=NULL;
            GtkFileFilter *filtre=NULL;
            GtkWidget * choix=NULL;
            guint rep=0;
     
    printf("1\n");
            choix=gtk_file_chooser_dialog_new("Ouvrir un groupe de personnages", GTK_WINDOW(_widgets->window),
                                              GTK_FILE_CHOOSER_ACTION_OPEN,
                                              GTK_STOCK_NEW, GTK_RESPONSE_CANCEL,
                                              GTK_STOCK_OPEN, GTK_RESPONSE_YES,
                                              NULL);
     
            gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(choix),TRUE);
            gtk_file_chooser_set_show_hidden (GTK_FILE_CHOOSER(choix),FALSE);
            filtre=gtk_file_filter_new();
            gtk_file_filter_add_pattern (filtre, "*.pers");
            gtk_file_filter_add_pattern (filtre, "*.grp");
            gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(choix),filtre);
            noms_de_fichier = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER(choix));
    printf("2\n");
            rep=gtk_dialog_run (GTK_DIALOG (choix));
            free(noms_de_fichier);
    Toujours la même réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\bookmarks"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\D:\\Documents\\add\\perso\\trash:"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\servers"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\bookmarks"
    2
    GLib-GIO-Message: watch thread: could not watch /org/gtk/settings/file-chooser/: E/S avec chevauchement en cours.
     
    (perso.exe:8): GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'date-format'
    Peut-être qu'en cherchant du côté des chemins trop longs ? Mais, ils sont définis où ?
    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...

  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
    Si quelqu'un me passer un exemple qui marche sus windows avec gtk3, je jette l’éponge
    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
    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 mettre à jour le compilateur C en même temps que code::blocks.

    L'erreur n'est plus la même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\C:\\users\\troumad\\Local Settings\\Application Data\\gtk-3.0\\bookmarks"
    fixme:file:GetLongPathNameW UNC pathname L"\\\\?\\D:\\Documents\\add\\perso\\trash:"
    **
    Gtk:ERROR:../../gtk/gtkiconhelper.c:493:ensure_surface_for_gicon: assertion failed: (destination)
     
    abnormal program termination
    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...

  10. #10
    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 troumad,

    comme je te l'ai expliquer lors d'échanges privée, il faut utiliser le gtk_file_chooser_native qui est le sélecteur de fichiers natif de Windows et qui est comme tu l'a remarquer soumis a quelques restrictions:

    Je viens de regarder https://developer.gnome.org/gtk3/sta...serNative.html
    Il me semble que je vais beaucoup perdre car :
    1) Je ne peux pas sélectionner plusieurs fichiers.
    2) Mon application affichais sur la fenêtre de choix des informations sur le fichier sélectionné.
    1) Je ne peux pas sélectionner plusieurs fichiers.
    Non mais ton client peut aisément sélectionner plusieurs fichiers en se servant des raccourcis clavier Ctrl et Shift (Maj) il suffit de lui indiquer l'information.

    2) Mon application affichais sur la fenêtre de choix des informations sur le fichier sélectionné.
    Tu ne peut te servir de gtk_file_chooser_set_extra_widget() mais je pense que tu peut "peut-être" te servir du gtk_file_chooser_set_preview_widget()... A toi de voir.

    Sinon le natif est compatible avec la plupart des fonctionnalités du gtk_file_chooser.

    Mais je ne suis pas un fervent défenseur de Windows comme tu le sais, mais il est bien que GTK+-3.0 implémente une alternative pour le sélecteur de fichier concernant Windows.

    De toute façon tu n'a pas tellement le choix si tu désire faire une version Windows, qui est de toute façon par nature soumis a quelques restrictions concernant la programmation en général...

    ---

    J'essaierai, a ta place, la solution que je t'ai proposer: utiliser MSYS2 au lieu de Wine.

    Mais copie quand même les *.dll requises et le binaire en dehors de l'arborescence de MSYS2 comme cela (de tête):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ldd ./my_prg | grep mingw32 | cp $(gawk { ' print $3 ' }) destdir
     
    cp ./my_prg destdir
    Car le comportement peut être différents que a l'intérieur de l'arborescence de MSYS2 comme j'en ai fait la triste expérience.

    ---

    Me concernant j'ai dû remplacer la sélection de dossiers par une sélection de fichiers la faute a un BUG dans l'implémentation,

    et j'ai mis 3 semaines a comprendre d'ou venait le problème (Oufff),

    lors de la mise au point de la version Windows de mmp-2.1 ou Micro Music Player Pour Windows.

    Bon courage et que Windows se fasse v.... me concernant.
    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 !!!

  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
    Je n'ai pas trop le temps de tester en ce moment...

    Je viens de regarder pour ça :
    Citation Envoyé par Luke spywoker Voir le message
    Non mais ton client peut aisément sélectionner plusieurs fichiers en se servant des raccourcis clavier Ctrl et Shift (Maj) il suffit de lui indiquer l'information.
    Le premier exemple donné dans la feuille https://developer.gnome.org/gtk3/sta...serNative.html permet de récupérer le nom d'un fichier avec l'utilisation de gtk_file_chooser_get_filename. Tu penses que si je mets gtk_file_chooser_get_filenames (avec le s à la fin) je peux récupérer plusieurs nom ?

    Pour le reste, je regarde plus tard.
    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 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
    Oui car j'utilise:

    gtk_file_chooser_get_filenames

    Dans mmp-2.1 version Windows.
    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 !!!

  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
    Bonjour

    je viens de faire un essai. Voici mon code :
    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
        GtkFileChooserNative *native;
        GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
        gint res;
        GSList * liste, * tmp;
        native = gtk_file_chooser_native_new ("Open File",
                                              NULL /*parent_window*/,
                                              action,
                                              "_Open",
                                              "_Cancel");
        res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
        if (res == GTK_RESPONSE_ACCEPT)
          {
            GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
            liste = gtk_file_chooser_get_filenames (chooser);
            for (tmp=liste;tmp!=NULL;tmp=tmp->next)
            {
                ouvre_perso((char *)tmp->data);
            }
          }
     
        g_object_unref (native);
    Sous Linux, la compilation est passée, mais je ne peux sélectionner qu'un seul fichier (c'est peut-être à cause de XFCE4). L'exécution semble bonne.

    Sous windows, j'ai ce problème dès la compilation :
    D:\Documents\add\perso\ouverture.c|35|error: unknown type name 'GtkFileChooserNative'|
    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
    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
    j'avais des interférences entre différentes versions de librairies et de compilateur. La compilation est passée, mais je reste avec un problème

    J'ouvre bien l'explorateur pour choisir un fichier, mais
    - je ne peux en sélectionner qu'un
    - une fois sélectionné, quand je valide, j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GLib-GIO-Message: watch thread: could not watch /org/gtk/settings/file-chooser/: E/S avec chevauchement en cours.
    La suite après une bonne nuit....
    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
    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
    Comme la compilation était une histoire de mise à jour entre les .h et le compilateur, je me suis demandé si les fichiers de configuration locale avait aussi un problème de mise à jour. Voici ce que j'avais fait pour que ça marche et ce que j'ai du faire pour réparer le tout :
    A) Mise en route au début
    1) Copier le répertoire share de mingw dans le répertoire de lancement de mon .exe ( je le lance avec wine perso.exe )
    2) faire le trie pour ne garder que le français dans les locales
    B) réparation
    1) supprimer le répertoire share de mon répertoire perso
    2) refaire la manip du A avec la dernière version

    Maintenant, ça marche avec ma version originale (avec glade), le gtk_file_chooser_native_new a toujours son problème de E/S. J'ai donc une version qui marche sous windows, enfin, sous wine... Il faut trouver un testeur sous windows !

    Par contre, j'aimerai bien comprendre le problème avec gtk_file_chooser_native_new. Et pourquoi chez moi, je ne peux sélectionner qu'un seul fichier.

    Autre point, je compile maintenant avec un makefile et rien que des paquets Mageia :
    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
    #CC=gcc
    CC=i686-w64-mingw32-gcc
     
     CFLAGS= -Wshadow  -Winit-self  -Wredundant-decls  -Wcast-align  -Wundef  -Wfloat-equal  -Winline  -Wunreachable-code  -Wmissing-declarations  -Wmissing-include-dirs  -Wswitch-enum  -Wswitch-default  -Wmain  -Wall  `i686-w64-mingw32-pkg-config gtk+-3.0 --cflags` -export-dynamic -mwindows  
     
      LDFLAGS=`i686-w64-mingw32-pkg-config gtk+-3.0 --libs` -lzip -mwindows -Wl,--export-all-symbols
     
       EXEC=perso.exe
       SRC= $(wildcard *.c)
    OBJ= $(SRC:.c=.o)
     
    all: $(EXEC)
     
    $(EXEC) : $(OBJ)
    		$(CC) -o $@ $^ $(LDFLAGS)
     
    %.o: %.c
    		$(CC) -o $@ -c $< $(CFLAGS)
    clean:
    		rm *.o
     
    mrproper: clean
    		rm $(EXEC)
    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...

  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
    Je te recommande vivement d'utiliser MSYS2 sous Windows, car autant compiler en natif pour du Windows pour du Windows.

    Sinon pas besoin de copier tout le dossier des *.dll de mingw(32|64). Mon petit script copie tout le nécessaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ldd ./my_prg | grep mingw32 | cp $(gawk { ' print $3 ' }) destdir
     
    cp ./my_prg destdir
    Avec MSYS2 tu peut utiliser beaucoup de commandes Linux et y a pas mal de paquetages intéressant pour les Linux que nous sommes: comme les "manpages POSIX", etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pacman -Ss search-term
     
    pacman -S package-to-download
    Et je te conseille aussi de compiler en 64 bits car plus personne ne tourne en 32 bits sous Windows (heu je pense).
    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 !!!

  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
    Citation Envoyé par Luke spywoker Voir le message
    Je te recommande vivement d'utiliser MSYS2 sous Windows, car autant compiler en natif pour du Windows pour du Windows.
    Il faudrait que j'ouvre un windows... Trop lourd !

    Citation Envoyé par Luke spywoker Voir le message
    Sinon pas besoin de copier tout le dossier des *.dll de mingw(32|64). Mon petit script copie tout le nécessaire:
    Je compte essayer de compiler en static.

    Citation Envoyé par Luke spywoker Voir le message
    Et je te conseille aussi de compiler en 64 bits car plus personne ne tourne en 32 bits sous Windows (heu je pense).
    C'est comme pour Linux. Il y a sûrement des gens qui tournent avec de vieilles bécanes. Bien que sous windows, ce n'est plus sécurisé à mon avis...
    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...

  18. #18
    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
    Ha tu ne target pas pas un système Windows ???

    Je veut dire que tu ne compte pas installer ton programme sur un système Windows ?
    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 !!!

  19. #19
    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 l'installe sous Linux et d'autres testeront sous Windows. Ce n'est pas ma faute s'ils n'ont pas Linux
    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...

  20. #20
    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
    Hééééééééééé,

    c'est pas ton rôle de programmeur de vérifier si ton programme fonctionne correctement sur la plateforme host ?

    Je te fait ce reproche car ton approche manque sérieusement de professionnalisme et comment tu va le packager, fichier *.exe auto-extractible pour Windows mission impossible pour Linux et cross-compilation.

    Ce pourquoi je te réoriente une dernière fois vers MSYS2, mais après tout la liberté du programmeur et aussi de créer ce que il veut !
    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. Delphi 2007 refuse de s'ouvrir
    Par supersnail dans le forum EDI
    Réponses: 6
    Dernier message: 13/02/2009, 20h05
  2. windows refuse de se reparer
    Par jadey dans le forum Windows XP
    Réponses: 9
    Dernier message: 28/03/2008, 11h07
  3. windows refuse les drivers de mon calibrateur
    Par ugorichard dans le forum Windows Vista
    Réponses: 1
    Dernier message: 15/10/2007, 22h08
  4. Les Comptes d'utilisateurs refusent de s'ouvrir
    Par scorplayer dans le forum Windows XP
    Réponses: 13
    Dernier message: 15/09/2007, 13h42
  5. IE7 refuse de s'ouvrir
    Par doudoustephane dans le forum Windows Vista
    Réponses: 7
    Dernier message: 05/06/2007, 01h02

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