Skip to content
Browse files

In widget `Champ`, method .evt_valider() is called immediately when l…

…abel change.
  • Loading branch information...
1 parent b0a754e commit b5e5b14abf4ae0ca286a2a62c7137ee29173d1c0 @wxgeo committed May 7, 2012
Showing with 35 additions and 16 deletions.
  1. +3 −1 wxgeometrie/geolib/textes.py
  2. +32 −15 wxgeometrie/geolib/widgets.py
View
4 wxgeometrie/geolib/textes.py
@@ -177,7 +177,7 @@ class Texte(Texte_generique, Objet_avec_coordonnees_modifiables):
Un texte à afficher"""
def _set_texte(self, value):
- if isinstance(value, basestring) and value != "" and hasattr(self, "_style"):
+ if isinstance(value, basestring) and value != '' and hasattr(self, "_style"):
self.style(label=uu(value))
return value
@@ -204,6 +204,7 @@ def __init__(self, texte = "", x = None, y = None, **styles):
Objet_avec_coordonnees_modifiables.__init__(self, x, y, **styles)
+
def style(self, *args, **kw):
if kw.get("legende") == RIEN:
kw["legende"] = TEXTE
@@ -244,6 +245,7 @@ def _set_feuille(self):
# self._valeurs_par_defaut.discard("_Point__x")
Objet._set_feuille(self)
+
def _en_gras(self, booleen):
figure = self.figure
if figure:
View
47 wxgeometrie/geolib/widgets.py
@@ -22,7 +22,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-from sympy import S
+##from sympy import S
+from random import normalvariate
from .objet import Objet_avec_coordonnees_modifiables, Argument, Ref
from .textes import Texte_generique, Texte
@@ -207,14 +208,18 @@ class Champ(Texte):
On peut aussi associer une action à la validation.
- >>> def action(self, **kw):
+ >>> def action(**kw):
if kw['correct']:
print('Bravo !')
else:
print('Essaie encore...')
>>> c.evt_valider = action
+ >>> c.texte = "2"
+ Bravo !
+ >>> c.texte = "3"
+ Essaie encore...
- Cet action sera effectuée au moment de l'affichage de l'objet, si
+ Cet action sera effectuée lorsque le texte du champ est modifié, si
celui-ci passe le test de validation.
Enfin, une liste des propositions peut être passée via le mot-clef `choix`.
@@ -246,8 +251,8 @@ def __init__(self, texte="", x=None, y=None, **styles):
# Lorsque l'utilisateur entre un nouveau résultat, on peut ainsi
# savoir si celui-ci était déjà correct, ou si le résultat est
# devenu correct (il peut y avoir plusieurs résultats corrects).
- self.__correct_old = self.correct
- self.__label_old = self.style('label')
+ self._correct_old = self.correct = self._test_correct()
+ ##self.__label_old = self.style('label')
def label(self, *args, **kw):
@@ -258,6 +263,19 @@ def label(self, *args, **kw):
suffixe = self.style('suffixe')
return (prefixe or '') + txt + (suffixe or '')
+
+ def style(self, *args, **kw):
+ label_change = ('label' in kw and kw['label'] != self._style['label'])
+ val = Texte.style(self, *args, **kw)
+ if label_change and getattr(self, 'evt_valider', None) is not None:
+ self._correct_old = self.correct
+ self.correct = self._test_correct()
+ self.evt_valider(champ=self, correct=self.correct,
+ correct_old=self._correct_old)
+ return val
+
+
+
def _creer_figure(self):
##print 'champ-label::', self.label()
if not self._representation:
@@ -274,19 +292,18 @@ def _creer_figure(self):
txt.set(visible=False)
else:
txt.set(visible=True, x=x, y=y, va='top', ha='left')
- correct = self.correct
- if correct:
+ if self.correct:
txt.set(text=u'\u2713', color='g') # 263A 00D8
else:
txt.set(text=u'\u2639', color='r') #u'\u26A0'
- if getattr(self, 'evt_valider', None) is not None and lbl != self.__label_old:
- self.evt_valider(champ=self, correct=correct,
- correct_old=self.__correct_old)
- self.__correct_old = correct
- self.__label_old = lbl
-
- @property
- def correct(self):
+ ##if getattr(self, 'evt_valider', None) is not None and lbl != self.__label_old:
+ ##self.evt_valider(champ=self, correct=correct,
+ ##correct_old=self.__correct_old)
+ ##self.__correct_old = correct
+ ##self.__label_old = lbl
+
+
+ def _test_correct(self):
attendu = self.style('attendu')
if attendu is None:
return

0 comments on commit b5e5b14

Please sign in to comment.
Something went wrong with that request. Please try again.