2 Ce module contient la classe ETAPE_NIVEAU qui sert à
3 concrétiser les niveaux au sein d'un JDC
7 from Noyau import N_OBJECT
9 class ETAPE_NIVEAU(N_OBJECT.OBJECT):
11 def __init__(self,niveau,parent):
13 self.jdc = self.parent.get_jdc_root()
15 self.definition = niveau
17 self.etapes_niveaux = []
22 def build_niveaux(self):
23 for niveau in self.definition.l_niveaux:
24 etape_niveau = ETAPE_NIVEAU(niveau,self)
25 self.etapes_niveaux.append(etape_niveau)
26 self.dict_niveaux[niveau.nom]=etape_niveau
28 def register(self,etape):
30 Enregistre la commande étape :
31 - si editmode = 0 : on est en mode relecture d'un fichier de commandes
32 auquel cas on ajoute etape à la fin de la liste self.etapes
33 - si editmode = 1 : on est en mode ajout d'étape depuis eficas auquel cas
34 cette méthode ne fait rien, c'est addentité qui enregistre etape
35 à la bonne place dans self.etapes
37 if self.editmode : return
38 self.etapes.append(etape)
40 def unregister(self,etape):
42 Desenregistre l'etape du niveau
44 self.etapes.remove(etape)
47 return self.definition.label
50 #print 'Niveau : ',self.definition.nom
51 #print '\tactif =',self.definition.actif
52 if self.definition.actif == 1 :
55 # self.actif est une condition à évaluer dans un certain contexte ...
56 d = self.cree_dict_valeurs()
58 t=eval(self.definition.actif,d)
64 def cree_dict_valeurs(self):
66 Retourne le dictionnaire des frères aînés de self composé des couples :
70 for niveau in self.parent.etapes_niveaux:
71 if niveau is self : break
72 d[niveau.definition.nom]=niveau.isvalid()
76 """ Méthode booléenne qui retourne 0 si le niveau est invalide, 1 sinon """
77 if self.etapes_niveaux == []:
78 if len(self.etapes) == 0:
79 return self.definition.valide_vide
81 for etape in self.etapes :
82 if not etape.isvalid() : return 0
85 for etape_niveau in self.etapes_niveaux :
86 if not etape_niveau.isvalid() : return 0
89 def accept(self,visitor):
90 visitor.visitETAPE_NIVEAU(self)
92 def addentite(self,name,pos_rel):
95 pos_abs=self.jdc.get_nb_etapes_avant(self)+pos_rel
96 cmd = self.jdc.addentite(name,pos_abs)
97 self.etapes.insert(pos_rel,cmd)
101 traceback.print_exc()
105 def suppentite(self,etape) :
106 """ Classe ETAPE_NIVEAU
109 self.jdc.suppentite(etape)