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+] Evênement depuis une lib


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut [GTK+] Evênement depuis une lib
    Bonjour,
    Je suis débutant en GTK+, j'ai fait quelques magnifiques interfaces graphiques ces derniers jours et cela me plais bien. Avant de me lancer dans un super gros projets, je voulais avoir quelques confirmations histoire de me rassurer.

    Voilà ce que je compte faire:
    Un projet qui gère une IHM et qui fait appelle à une lib (qu'il faut que je code)
    Cette lib servirai à contrôler une caméra.

    Mes questions sont:
    • -Peut-on créer des lib en GTK+ (ca parait peut être con, la réponse sera sans doute GTK+ est fait pour l'interface graphique, ta lib devra être basée sur Glib mais je ne distincte pas encore bien la différence)
    • -Est ce que ma lib peut m'envoyer un signal (du genre: "hey il y a du mouvement!!!") et que ce signal peut être interprété par mon projet qui gère l'IHM (du genre: mise à jour d'un label: "détection: mouvement !")
    • -Quelle fonction me permettrai d'envoyer et d'attendre ce signal? (suis je forcé de faire un thread?)


    Pour info je suis sous Fedora core 11
    Merci à ceux qui prendront le temps de me lire

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Par défaut
    Bonjour,

    Désolé, mais je n'ai pas de réponse pour toi, cela fait 2 jours que j'essaie de faire une application avec le même principe et l'avancé est laborieuse.

    Mais si quelqu'un annonce qu'il n'est pas possible qu'une librairie (ou une fonction "non-gtk") modifie l'affichage d'une fenêtre gtk. Je serais plutôt pas content.
    Et si quelqu'un à la solution. "ça va être bien"
    Vivement la fin du suspens.

    salutation

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu peux faire des libs qui utilisent gtk+ pour faire de l'affichage graphique, http://www.chipx86.com/w/index.php/Libsexy par exemple me vient en tête. Et tu peux aussi faire des libs sans interface graphique qui utilise cette fois ci la glib et les gobjects pour bien s'intégrer à des applis gtk+ (ie utilisation de la mainloop, utilisation des signaux, ...), la libgudev serait un exemple, y a la libgnet, ...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut
    Bonjour Teuf et merci pour ta réponse,
    Je suis aussi content de voir que ma question intéresse d'autre personne

    Alors, ma librairie n'a pas pour objectif de modifier l'IHM directement ni d'avoir quoi que se soit de graphique, je peux donc oublier GTK+ pour mes lib et me rabattre sur la Glib si j'ai bien compris.

    Du coup est-il possible que ma lib (est-ce bien un .so?) envoie un signal à mon application GTK+ afin que celle ci modifie un de mes label (par exemple)
    Je pense bien que oui mais comment une lib peut générer se signal et comment l'application peut-elle l'attraper?

    Quand je suis dans le cas
    Appli appelle fonction d'init de la lib
    Lib répond que tout est ok,
    cela ne pose pas de soucis vu que l'appli attend la réponse de la fonction d'init

    Mais quand je suis dans le cas:
    Lib me signal qu'elle voit du mouvement
    Comment envoyer cette info à l'appli pour qu'elle le gère?
    Merci encore pour votre aide

  5. #5
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Citation Envoyé par Skarsnick Voir le message
    Je pense bien que oui mais comment une lib peut générer se signal et comment l'application peut-elle l'attraper?
    Dans ta lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    record_callback(function f)
    {
     callback = f;
    }
     
    send_signal(signal s)
    {
     callback(s);
    }
    Dans ton programme principal :
    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
     
    process_signal(signal s)
    {
     switch(s)
     {
       case machin:
         blabla
       ...
     }
    }
     
    main()
    {
     blabla
     record_callbakc(process_signal);
     blabla
    }
    Pour plus de précisions, tu peux aller voir des tutos traitant des fonctions de callback et des pointeurs de fonctions.

    Si tu veux voir un peu plus en détails comment on peut "s'abonner" à des messages, regarde du côté du pattern observer (qui ne te servira probablement pas dans le cas présent, mais c'est toujours bon pour la culture )

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Moui, gtk+ propose tout un framework pour gérer ce genre de choses, c'est pas forcément la peine de réinventer la roue. C'est plus complexe à faire, mais ça s'intégrera mieux à gtk+ (ie tu te connectes à tes signaux via g_signal_connect comme les signaux gtk+ standard). Je t'invite à lire http://nicolasj.developpez.com/gobject/classe/ et http://franckh.developpez.com/tutori...ation-signaux/ en espérant que ça ne te décourage pas

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2010, 14h04
  2. Lancer une application depuis une fenêtre gtk
    Par cyrilleG dans le forum GTK+ avec Python
    Réponses: 11
    Dernier message: 29/09/2007, 22h03
  3. [Débutant] - Accès à GTK depuis une classe
    Par Leobaillard dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 03/06/2007, 13h09
  4. Réponses: 2
    Dernier message: 26/02/2003, 11h47
  5. Réponses: 1
    Dernier message: 22/08/2002, 17h00

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