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 :

zip et GTK : comment faire ?


Sujet :

GTK+ avec C & C++

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut zip et GTK : comment faire ?
    Bonjour

    Je viens de voir que gtk gère les fichiers zip :
    http://developer.gnome.org/gsf/stable/gsf-Zip.html

    J'avoue que j'aimerai bien trouver une doc ! Ou a défaut, un exemple commenté. Je veux bien en faire une en français si ça n'existe pas. Mais, là, je ne sais dans quelle direction tester !

    nb : on dirait que gtk fait 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...

  2. #2
    Modérateur

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    gsf et gtk cela n'a rien à voir... gsf dépend de glib et libxml, mais gsf ne fait pas partie de gtk, et gtk ne dépend pas de gsf.

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Pourtant, j'ai trouvé ça dans http://developer.gnome.org que j'identifiais à gtk...

    Ceci dit, je suis toujours intéressé par des exemple !

    Est-ce que gsf est porté sous windows ?
    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
    Par défaut
    Developer.gnome.org c'est pour GNOME, donc ça centralise toutes les technologies utilisées par GNOME. GTK n'est qu'une d'entre elles, comme la GLib, comme cairo, etc.

    Aucune idée, mais les dépendances minimales sont sur libxml2 et la glib, qui existent sous Windows, donc ça me semble jouable si tu penses à désactiver lors de l'appel au script configure tout ce qui ne te sert pas (dépendances comme gio, gnome-vfs, libbonobo, etc.).

    Mais je persiste à penser qui tu n'as besoin que de la libzip vu l'utilisation que tu fais...

  5. #5
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    En tous tout cas, j'ai jamais vu une doc aussi mal foutue, je cite:
    gsf_infile_stdio_new ()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GsfInfile *         gsf_infile_stdio_new                (char const *root,
                                                             GError **err);
    • root : in locale dependent encoding
    • err : optionally NULL.
    • Returns : a new file or NULL.
    Magnifique, on a aucune idée de ce que fait cette fonction

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Mais je persiste à penser qui tu n'as besoin que de la libzip vu l'utilisation que tu fais...
    http://www.nih.at/libzip/libzip.html...
    Je n'ai pas trouvé d'exemple non plus et je ne suis pas arrivé à la faire tourner sous windows !
    Cette fois, j'aimerais décompresser un fichier, je suis déjà arrivé à compresser !

    artificier59 : j'ai trouvé très peu de choses avec google code
    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
    Invité
    Invité(e)
    Par défaut
    Cette source ne peut pas t'aider ???

    https://www.google.com/codesearch#2j...&type=cs&l=232

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Je crois que je vais m'empresser de regarder !
    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 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    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
    Modérateur

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Bon... j'ai fini par te prendre en pitié .

    J'ai donc regardé comment faire fonctionner la libzip sous Windows. Alors pour commencer elle dépend de la zlib. J'ai tenté la compiler à partir des sources, mais tu as aussi des binaires pré-générés pour Windows sur le site officiel (mais c'est moins drôle). Au final, c'est pas vraiment utile pour ma plate-forme: MinGW, via mingw-get inclut déjà la zlib, et il n'y a donc pas besoin de se casser la nénette à la compiler. Un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mingw-get install mingw32-libz
    ...installe ce qu'il faut (oui, je sais le nom est bizarre, mais c'est bien la zlib).

    Ensuite, je suis allé sur le site officiel de libzip et j'ai téléchargé le source de libzip-0.10.

    Tu décompresses cela. Ensuite dans le dossier de sources de libzip, tu lances:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./configure && make && make install
    Le fait d'avoir installé la zlib via MinGW fait qu'elle est installée au bon endroit pour être automatiquement détectée, rien à faire.

    Si tu as installée la zlib par un autre biais, il te faudra indiquer au script configure où elle se trouve avec l'option --with-zlib.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./configure --with-zlib=/opt/zlib-1.2.5 && make && make install
    Personnellement, j'installe dans un sous dossier de /opt plutôt que dans /usr/local pour m'y retrouver, j'utilise donc pour cela l'option prefix...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./configure --prefix=/opt/libzip-0.10 && make && make install
    libzip a le bon goût d'être fourni avec un fichier .pc qui sert à pkg-config. pkg-config est (entre autres) fourni avec gtk, il suffit juste de s'assurer de le rajouter dans le PATH s'il n'y est pas déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH="$PATH:/opt/gtk-2.22/bin"
    Une fois cela fait, on peut vérifier si pkg-config est capable de retrouver le fichier libzip.pc qu'on a installé en même temps libzip. La commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg-config --list-all | grep zip
    ... devrait retourner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libzip                libzip - library for handling zip archives
    Si ce n'est pas le cas (c'est ce qui est mon cas, vu que j'installe dans /opt), c'est que libzip.pc n'est pas dans un dossier où pkg-config cherche ses fichiers *.pc. Il faut alors lui dire explicitement où le trouver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PKG_CONFIG_PATH="/opt/libzip-0.10/lib/pkgconfig"
    Et roule ma poule. A présent la commande pkg-config plus haut devrait fonctionner, et il devrait pouvoir nous confirmer qu'on utilise libzip 0.10.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pkg-config --modversion libzip
    0.10
    A présent, tout est prêt pour la compilation. La détection de libzip se fera de la même manière que pour tout composant utilisant pkg-config (comme gtk, glib, cairo, etc.). Je me suis créé un petit projet CMake pour cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    cmake_minimum_required (VERSION 2.4)
    project (LIBZIP_TEST)
    find_package (PkgConfig REQUIRED)
    pkg_check_modules (LIBZIP REQUIRED libzip)
     
    include_directories (${LIBZIP_INCLUDE_DIRS})
    link_directories (${LIBZIP_LIBRARY_DIRS})
    add_executable (libzip-test main.c)
    add_definitions (${LIBZIP_CFLAGS_OTHER} -Wall)
    target_link_libraries (libzip-test ${LIBZIP_LIBRARIES})
     
    install (TARGETS libzip-test 
            RUNTIME DESTINATION bin)
    Il n'y a qu'un fichier main.c:
    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
    #include <zip.h>
     
    int main (void)
    {
        struct zip *zfile = NULL;
        struct zip_source *zsource = NULL;
        int error = 0;
     
        /* Creation de test.zip */
        zfile = zip_open("test.zip", ZIP_CREATE, &error);
     
        if (zfile == NULL)
            return error;
     
        /* Allons chercher test.txt */
        zsource = zip_source_file (zfile, "test.txt", 0, 0);
        if (zsource == NULL)
            return -1;
     
        /* On l'ajoute dans test.zip */
        if (zip_add (zfile, "test.txt", zsource) == -1)
            return -2;
     
        /* On referme test.zip */
        zip_close (zfile);
     
        return 0;
    }
    On compile le bazar, qui crée un fichier libzip-test.exe. Dans le même dossier que cet exécutable, on crée un fichier test.txt (avec ce qu'on veut dedans).

    Au moment d'exécuter libzip-test.exe, Windows risque de se plaindre de ne pas trouver la DLL de libzip. Il faut alors la rajouter dans le PATH:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH="$PATH:/opt/libzip-0.10/bin"
    En exécutant libzip-test.exe, celui ci devrait créer une archive test.zip, y ajouter test.txt, et quitter.

    Bon, j'espère que tu en as assez pour faire du multi-plateforme ce coup ci !

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Mais j'avoue être assez débordé en ce moment. J'aurais le temps de tester mardi !
    Par conte, j'ai déjà la librairie installée !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # urpmi lib64zip-devel
    Le paquetage lib64zip-devel-0.10-1.mga2.x86_64 est déjà installé
    Et l'autre aussi maintenant !

    Et pour la décompression ? Faire en C, l'équivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unzip ranger.odc content.xml
    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
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    je viens de trouver : http://coder.tuxfamily.org/index.php...id=6&Itemid=67

    Je vais regarder ça à fond et je réfléchirais peut-être à faire des entrées pour notre FAQ à nous !
    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
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par troumad Voir le message
    je viens de trouver : http://coder.tuxfamily.org/index.php...id=6&Itemid=67

    Je vais regarder ça à fond et je réfléchirais peut-être à faire des entrées pour notre FAQ à nous !
    tu l'avais déjà là : http://www.developpez.net/forums/d10...sation-libzip/

  14. #14
    Modérateur

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par troumad Voir le message
    Et pour la décompression ? Faire en C, l'équivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unzip ranger.odc content.xml
    Bin en lisant la doc on voir rapidement de quoi on a besoin:
    zip_open pour ouvrir le fichier ranger.odc
    zip_fopen pour ouvrir le fichier content.xml
    zip_fread pour lire le fichier content.xml dans un buffer
    zip_fclose pour fermer le fichier content.xml
    zip_close pour fermer le fichier ranger.odc

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Citation Envoyé par _-Slash-_ Voir le message
    J'avais déjà vu et oublié que j'avais vu ce tutoriel...
    Il devrait passer en article non ?

    La question que j'avais posé là-bas en janvier n'est pas résolue... Comment installer et utiliser cette bibliothèque sous Windows ?
    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
    Modérateur

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par troumad Voir le message
    La question que j'avais posé là-bas en janvier n'est pas résolue... Comment installer et utiliser cette bibliothèque sous Windows ?
    Et il y a quoi qui ne te plaît pas dans ma méthode ? Je l'utilise sous Windows !

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    En janvier, quand j'avais essayé, ça n'était pas passé sous windows... J'avais du rater l'installation de cette bibliothèque !
    Comment faire pour bien l'installer ?
    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
    Modérateur

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

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Et si tu me disais comment tu as fait ou comment tu veux faire plutôt ? Parce que là j'ai déjà fait un guide pour MinGW, je ne veux pas perdre mon temps une seconde fois...

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Pour windows, je compile sous windows et ton aide est pour compiler sous Linux ! Non ?
    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
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Citation Envoyé par _-Slash-_ Voir le message
    Je suis arrivé sous windows à récupérer mon fichier content.xml d'un fichier ods
    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...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. comment faire une condition ou une instruction avec gtk
    Par Invité dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 31/05/2009, 16h06
  2. GtK StatusIcon avec menu OU comment faire un menu en gtk
    Par lauben dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 03/12/2008, 15h38
  3. [GTK] Comment faire défiler du texte dans un label ou autre container
    Par dupuyyann dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 24/02/2008, 23h25
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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