Forum Programmation.c C et GTK

Posté par (page perso) .
Tags : aucun
1
6
fév.
2011
Bonjour,

je suis en train d'écrire un logiciel en GTK, j'ai le "cœur" en C (pour le moment tout se lance avec les **argv), et et la partie GTK à part.
C'est la première fois que je développe un truc avec une partie graphique, et je ne sais pas trop comment fusionner les deux. En mélangeant tout ça devient vide assez bordélique, et je doute qu'il s'agisse de la bonne manière de faire.

Pourriez vous m'aider ?

Je suis aussi en train de chercher des sites expliquant comment bien structurer un projet, mais je trouve pas grand chose.

Je n'ai pas vraiment de raison pour avoir choisi GTK, pensez vous que Qt soit plus abordable pour un programme en C ?

Merci pour vos réponses.
  • # Modèle-Vue-Controleur

    Posté par (page perso) . Évalué à 6.

    La méthode classique de structure est la méthode modèle-vue-controleur.
    En principe c'est pour de l'objet, mais ça s'applique aussi à du GTK+.
    Le principe est d'avoir un objet modèle, qui se contrefout de l'interface (ce que tu as déjà fait donc), un objet vue, qui contient en gros la liste des widgets (en fait c'est pas forcement un objet en C, cf glade/libglade), et enfin un contrôleur qui relie les deux.
    • [^] # Re: Modèle-Vue-Controleur

      Posté par (page perso) . Évalué à 1.

      Merci pour ta réponse, je vais essayer de fouiller dans ce coin (tout ce qui est objet n'est pas ma tasse de thé, le C est le langage de plus haut niveau que je connaisse (le reste c'est de l'assembleur, du vhdl, ce genre de chose)).

      Quand du dit un objet vue et un objet modèle, c'est un faisant des gros struct ?

      Pour le contrôleur, si j'ai bien compris, ils s'agit du main.
      • [^] # Re: Modèle-Vue-Controleur

        Posté par (page perso) . Évalué à 3.

        Bof, pas besoin de struct, juste des fichiers différents :p
        Mais le principe c'est juste d'avoir d'un côté le code utile (qui se contrefout de l'interface), de l'autre l'interface (qui se fout du code utile, 'fin faut quand meme pouvoir representer ce qu'on veut, mais c'est tout), et après un truc qui relie tout ça.
        Après dans un main ou pas en fonction de si on est crade ou pas.
        Mais cherche des exemples d'utilisation de libglade, je pense que ça correspondrait pas mal à ce principe.
        • [^] # Re: Modèle-Vue-Controleur

          Posté par (page perso) . Évalué à 1.

          Pour tout ce qui est Glade je mets de coté pour l'instant, ça mâche une partie du travail, c'est pas comme ça que je vais apprendre des trucs, j'ai fouillé quelques applis GTK pour voir comment c'était fait, c'est pas facile de lire du code de quelqu'un d'autre.
          Bon j'ai plus qu'à me lancer.

          Merci pour tes conseils.
          • [^] # Re: Modèle-Vue-Controleur

            Posté par (page perso) . Évalué à 2.

            J'ai bien dit ***lib***glade
            C'est pas pour rien, c'est parce que ça fait vraiment partie du M/V/C:
            La vue est défini dans un .xml, et sera un objet (bon à la mode GLib hein.) à part entière,
            ce qui est à peu près la méthode la plus propre de faire.
          • [^] # Re: Modèle-Vue-Controleur

            Posté par (page perso) . Évalué à 1.

            Vous pourriez peut-être profiter de l'occasion pour toucher à du C++ en regardant du côté de Gtkmm. L'avantage du C++ dans l'interface graphique c'est que du code orienté objet colle bien avec la logique d'une interface graphique. Éventuellement cela facilite la lecture du code. Et Gtkmm (qui est juste une interface C++ avec Gtk) est très bien documenté et facile d'accès.
            Je peux bien entendu me tromper, mais je crois qu'il est peut-être plus simple d'apprendre les éléments de C++ nécessaires à faire du Gtkmm et Gtkmm, que d'apprendre à manier Gtk.
  • # Mélanger

    Posté par (page perso) . Évalué à 4.

    Qt est en C++, tu ne pourras pas donc faire du Qt en restant uniquement au C.

    Pour ce qui est de GTK+, il faut juste que tu sépares le fond de la forme. C'est à dire que tes données doivent être stockées dans les structures de ton programme non-graphique existant, et ta partie graphique doit juste permettre d'y écrire et lire les infos. Tout le comportement fonctionnel doit être en dehors du code dédié à l'interface graphique.

    En gros, il faut dissocier le fond (ton coeur en C) et la forme (ton interface GTK+).

    Tu as aussi un forum assez actif ici où tu peux poser des questions:
    http://www.developpez.net/forums/f336/general-developpement/(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.