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 :

Transformer son application gtk en widget


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut Transformer son application gtk en widget
    Bonjour,

    J'ai developpé rapidement une "application" en gtk+: Il s'agit d'une fenetre contenant une frame avec à l'intérieur un bouton et une scale dont on peut faire varier la valeur avec deux boutons sur les cotés (voir pièce jointe).

    J'aimerais faire de cette application un widget pour pouvoir l'utiliser comme bon me semble dans tout autre projet.

    Si qqn a une idée pour effectuer cela rapidement.

    Merci d'avance
    Images attachées Images attachées  

  2. #2
    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
    Sans aller jusqu'à faire un vrai widget (ce qui peut etre complique), tu peux faire une fonction qui insere ton bout d'interface dans un container gtk+ passé en argument je pense ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Sans aller jusqu'à faire un vrai widget (ce qui peut etre complique), tu peux faire une fonction qui insere ton bout d'interface dans un container gtk+ passé en argument je pense ?
    Je veux vraiment créer un widget pour ne plus avoir à gérer les fonctions de callbacks entre les éléments de mon application (par exemple qd je clique sur le bouton de gauche ou de droite je déplace la scalebar).

    Par exemple, je fais juste ça:
    GtkTmp = Gtk_Tmp_new(nom_frame, nom_bouton, scale_step_increment, scale_page_increment, scale_page_size, scale_value);

    et après je peux jouer (faire varier la scalebar notamment) avec mon "bout d'interface" sans rien rajouter d'autre comme code.

    Mon idée de départ était plutot dans ce genre: http://franckh.developpez.com/tutori...eation-widget/ mais même si ce tutoriel est très bien fait il est pour moi pas assez poussé.

    J'espère avoir été plus clair !!

  4. #4
    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
    SI tu ne souhaites pas emettre de signaux ou quoi que ce soit, mon approche doit etre viable...
    add_bout_d_interface_to_UI (GtkContainer *container, ....); et puis voila, la fonction connecte tout ce qu'il est necessaire de connecter et tu 'as plus besoin d'y penser.
    Y a quoi qui ne convient pas la dedans ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    SI tu ne souhaites pas emettre de signaux ou quoi que ce soit, mon approche doit etre viable...
    add_bout_d_interface_to_UI (GtkContainer *container, ....); et puis voila, la fonction connecte tout ce qu'il est necessaire de connecter et tu 'as plus besoin d'y penser.
    Y a quoi qui ne convient pas la dedans ?
    Justement je dois emettre des signaux : faut bien emettre un signal pour dire que j'ai cliqué sur l'un des boutons et modifier la valeur de la scalebar en conséquence.
    Et cette partie là, si je dois intégrer mon petit projet dans un autre je souhaiterais ne pas avoir à la réécrire ou faire un copier coller. Pour aller plus loin, prenons un exemple:
    Dans un autre projet, je souhaite ouvrir une popup contenant deux fois mon projet:
    - un pour régler le focus
    - le second pour le contraste
    J'aimerais ne pas avoir à tout réécrire mais juste faire appel à une fonction qui ajoutera mes deux parties et j'arriverais à modifier la valeur de leur scalebar respective sans ajouter des fonctions de callbacks.

    Si ton approche fait cela alors c bon. je vais regarder cela. De toute façon, ça fait pas mal de se cultiver un peu

  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
    Citation Envoyé par kenshi240683 Voir le message
    Justement je dois emettre des signaux : faut bien emettre un signal pour dire que j'ai cliqué sur l'un des boutons et modifier la valeur de la scalebar en conséquence.
    Ouais non, ça ça poserait plus de pb, mais t'en as pas parlé au début :p J'imagine que le tutorial que tu as mentionné serait un bon premier pas, il te suffira des questions au fur et à mesure que tu avances et que tu rencontres des soucis.

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Salut,

    T'as démarche est très bonne, n'en change surtout pas

    Dis nous sur quel point tu coince et on peut t'aider à construire ton widget

    Comme en C, cela s'avère vite laborieux (beaucoup de copier/coller), je te conseille de te tourner vers vala, qui propose une syntaxe proche du C# et la convertie en C, donc tu garde la compatibilité avec tes anciens projets

    Mais pour commencer, je pense que comprendre comment ça fonctionne en C, n'est pas une perte de temps !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Finalement j'y suis arrivé. Je suis passé par le C++
    J'ai créé une classe et j'ai implementé les fonctions qui vont bien.
    Cela fonctionne très bien.

    Vous trouverez en pièce jointe les deux fichiers de ma classe ainsi qu'un extrait de code pour insérer le widget ainsi créer.

    Voilà si cela peut aider qqn!!

    a+
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. distribuer son application gtk+
    Par Hakenaton dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 08/04/2008, 17h30
  2. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  3. Réponses: 1
    Dernier message: 30/03/2007, 11h46
  4. Protection de son application
    Par FFF dans le forum Sécurité
    Réponses: 14
    Dernier message: 22/11/2005, 14h55
  5. Comment protéger efficacement son application ?
    Par RamDevTeam dans le forum EDI
    Réponses: 3
    Dernier message: 15/11/2005, 09h41

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