-
Widget et Goocanvas
Bonjour à tous :)
Voilà, je souhaite réaliser un widget composé d'une sorte de "box" portant un certain nom et un certain nombre de "boutons". Ce nombre n'est pas connu à l'avance, il sera défini au moment de la création du widget dans le programme. De plus, chaque bouton sera géré indépendamment pour les évènements.
Au début, j'ai pensé que je pouvais faire en pur Gtk, j'ai vite déchanté, en effet, il me faudra changer entièrement l'apparence du widget, et je crois qu'il me faut m'attaquer à la base de la création d'un widget, chose où j'ai peur de m'y empêtrer. J'ai cherché une bibliothèque qui corresponde à mes besoins et mes compétences (éléments cliquables et dessinables, le tout en C), Goocanvas semblerait être la plus appropriée.
Malheureusement, la documentation est assez légère, j'y vais plus à tâtons qu'à coup de lecture. Je fais des tests avec la démo du paquet goocanvas, et j'ai récupéré le code qui correspond à la création d'un widget type goocanvas, à savoir demo-item.c et demo-item.h. Je m'en suis largement inspiré de cette démo.
J'ai plusieurs questions :
1. L'utilisation de goocanvas est-elle approprié pour ce que je veux en faire ?
2. Je n'ai pas tout compris sur le principe de création goocanvas, quelle est la différence entre un "model" et un "item" ? Comment les manipuler ?
Merci d'avance pour vos réponses.
-
Tu te fourvoies, un widget est un élément graphique seul. Là tu utilises plusieurs widgets ensemble. Tu n'as donc pas à créer un nouveau type de widget. Le fait que le nombre de boutons ne soit pas connu au démarrage n'a pas d'importace : GTK+ te permet d'ajouter ou retirer dynamiquement des widgets de ton IHM.
-
J'ai peut-être mal exprimé mes attentes et mon objectif.
Oui je sais bien qu'à la base la création de widget et fait pour cela.
Oui, mon widget sera composé de plusieurs éléments cliquables.
Oui, l'interface et la conception de Gtk se fait à la base à l'aide de Cairo.
Avec tout cela Ok, pas besoin d'une autre bibliothèque.
Sauf que j'ai estimé que cela serait plus simple pour moi de passer par une bibliothèque qui simplifierait les appels de widget et qui correspondrait à ce que je veux. J'ai besoin notamment que le widget soit déplaçable dans un container, qu'il y en a plusieurs instance et qu'une sorte d'"underlying" entre les widget soit géré. GooCanvas permet justement tout cela sauf que c'est encore un peu trop simple pour ce que je veux en faire. J'ai trouvé une autre bibliothèque qui répond exactement à ce que je veux, malheureusement elle n'existe qu'en C++, c'est FlowCanvas.
Je vais donc rester avec goocanvas, malheureusement je trouve la documentation pas très clair, je n'ai pas compris les choses que j'ai exposé au premier post (notamment la différence entre un item et un model).