Salut.
Je poursuis ma découverte de pygtk et je suis confronté
au problème suivant ; comment faire communiquer des widgets
entre-eux ?
Considérez l'exemple suivant, pour fixer les idées :
widget1 : une "drawingarea" dessinant un segment de droite, grâce à
la souris
widget2 : une boîte avec 4 "entry" (les coordonnées des extrémités du segment)
widget3 : un "label" affichant la longueur du segment
les widget{1,2,3} dans une fenêtre.
Illustration :
...widget1......widget2..........widget3
######################
#.............#...................#..................#
#.............#...................#..................#
#.............#.x1.=.|10|...#..................#
#.......+...#.y1.=.|20.|..#..................#
#......+....#.x2.=.|15.|..#.long.=.47.#
#.....+.....#.y2.=.|23.|..#..................#
#....+......#..................#..................#
#...+.......#..................#..................#
#.............#..................#..................#
######################
Ce que je veux :
1) lorsque l'utilisateur modifie le widget1 (w1),
les widget w2 et w3 sont mis à jour en "temps réel"
(coordonnées modifiés, long. recalculée)
2) lorsque l'utilisateur édite les "entry" de w2 alors w1 et w3
sont mis à jour en temps réel (segment redessiné, long. recalculée)
Bref, en schématisant (la flèche signifiant ordre de mise à jour) :
w1 -> w2, w1 -> w3
w2 -> w1, w2 -> w3
w3 -> aucun
Comment peut-on architecturer tout cela "sainement" ?
Faut-il créer une classe "gestionnaire de signaux" centrale, qui
à chaque widget (variable) donné associe une liste des widgets
à modifier ? Ou le simple emploi d'"EventBox" suffira ?
Bien évidemment, en pratique je vais avoir beaucoup plus
de widgets et de variables, c'est juste un exemple artificiel
pour illustrer. Je voudrais juste le PRINCIPE GÉNÉRAL à utiliser pour
ne pas m'embarquer dans une solution foireuse, les docs que j'ai
trouvées expliquent *comment* manipuler les widgets, mais parlent
peu d'organisation générale.
Merci.
# kefir
Posté par B16F4RV4RD1N . Évalué à 2.
http://www.gnomefiles.org/app.php/tepache
son successeur est kefir je crois (mais cela n'a pas l'air d'avoir bougé depuis 2 ans) :
http://kefir.sourceforge.net/index.php
c'est pas mal car cela permet de relier facilement une interface créée avec Glade, et d'ajouter ton code sur les widgets qui sont ainsi repérés grâce à kefir.
Cela ne répond peut être pas vraiment à ta question, surtout sur la fin, pas cela peut peut-être aider pour la partie "comment faire communiquer des widgets entre-eux ?"
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
# Les docs ne parlent pas d'oganisation générale
Posté par liberforce (site web personnel) . Évalué à 2.
[^] # Re: Les docs ne parlent pas d'oganisation générale
Posté par thor_tue . Évalué à 2.
[^] # Re: Les docs ne parlent pas d'oganisation générale
Posté par thor_tue . Évalué à 0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.