Programmation.autre : pygtk (ou gtk tout court)
Posté par thor_tue () le 29 avril 2008Salut.
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.
> Lire le message (4 commentaires, moyenne: 1,5).
Vous avez demandé le commentaire #927178.



Les docs ne parlent pas d'oganisation générale
...tout simplement parce que c'est de l'ordre de la conception. Je te conseille donc fortement de te renseigner sur le design pattern MVC (Mod%C3%A8le-Vue-Contr%C3%B4leur).
[^]Re: Les docs ne parlent pas d'oganisation générale
Merci. C'est exactement ce que je recherchais (MVC)... je vais fouiller tout ça.
[^]Re: Les docs ne parlent pas d'oganisation générale
Merci, MVC est exactement ce que je cherchais. Je vais fouiller tout ça.