Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.autre

Programmation.autre : pygtk (ou gtk tout court)

Posté par thor_tue () le 29 avril 2008
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.

> Lire le message (4 commentaires, moyenne: 1,5).  

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

kefir

Posté par Farvardin (page perso, ) le 29/04/2008 à 19:22. (lien). Évalué à 2.

Il existait tepache, mais le projet semble mort :
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 ?"

--
No troll found in this incoming post.
Checked by ATG.
Version: 7.4.821 / Trollifiante Database: 247.13.2/1101 - Release Date: 30/04/2008 12:29

[ Répondre ]

Les docs ne parlent pas d'oganisation générale

Posté par liberforce (Jabber id, page perso, ) le 30/04/2008 à 11:55. (lien). Évalué à 2.

...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).

[ Répondre ]

  • [^]Re: Les docs ne parlent pas d'oganisation générale

    Posté par thor_tue () le 01/05/2008 à 09:04. (lien). Évalué à 2.

    Merci. C'est exactement ce que je recherchais (MVC)... je vais fouiller tout ça.

    [ Répondre ]

  • [^]Re: Les docs ne parlent pas d'oganisation générale

    Posté par thor_tue () le 01/05/2008 à 09:32. (lien). Évalué à 0.

    Merci, MVC est exactement ce que je cherchais. Je vais fouiller tout ça.

    [ Répondre ]

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

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.autre