]> SALOME platform Git repositories - tools/eficas.git/blob - Extensions/etape_niveau.py
Salome HOME
F.R: Plusieurs bugs corrigés pour arriver à écrire la première moitié
[tools/eficas.git] / Extensions / etape_niveau.py
1 """
2     Ce module contient la classe ETAPE_NIVEAU qui sert à 
3     concrétiser les niveaux au sein d'un JDC
4 """
5 import traceback
6
7 from Noyau import N_OBJECT
8
9 class ETAPE_NIVEAU(N_OBJECT.OBJECT):
10
11   def __init__(self,niveau,parent):
12     self.parent = parent
13     self.jdc = self.parent.get_jdc_root()
14     self.niveau = self
15     self.definition = niveau
16     self.etapes=[]
17     self.etapes_niveaux = []
18     self.dict_niveaux={}
19     self.editmode = 0
20     self.build_niveaux()
21
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
27
28   def register(self,etape):
29     """ 
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 
36     """
37     if self.editmode : return
38     self.etapes.append(etape)
39
40   def unregister(self,etape):
41     """
42         Desenregistre l'etape du niveau
43     """
44     self.etapes.remove(etape)
45
46   def ident(self):
47     return self.definition.label
48
49   def isactif(self):
50     #print 'Niveau : ',self.definition.nom
51     #print '\tactif =',self.definition.actif
52     if self.definition.actif == 1 :
53       return 1
54     else :
55       # self.actif est une condition à évaluer dans un certain contexte ...
56       d = self.cree_dict_valeurs()
57       try:
58         t=eval(self.definition.actif,d)
59         return t
60       except:
61         traceback.print_exc()
62         return 0
63
64   def cree_dict_valeurs(self):
65     """
66     Retourne le dictionnaire des frères aînés de self composé des couples :
67     {nom_frère isvalid()}
68     """
69     d={}
70     for niveau in self.parent.etapes_niveaux:
71       if niveau is self : break
72       d[niveau.definition.nom]=niveau.isvalid()
73     return d
74
75   def isvalid(self):
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
80       else:
81         for etape in self.etapes :
82           if not etape.isvalid() : return 0
83         return 1
84     else:
85       for etape_niveau in self.etapes_niveaux :
86         if not etape_niveau.isvalid() : return 0
87       return 1
88
89   def accept(self,visitor):
90     visitor.visitETAPE_NIVEAU(self)
91
92   def addentite(self,name,pos_rel):
93     self.editmode = 1
94     try :
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)
98       self.editmode = 0
99       return cmd
100     except:
101       traceback.print_exc()
102       self.editmode = 0
103       return None
104
105   def suppentite(self,etape) :
106     """ Classe ETAPE_NIVEAU
107         Supprime une étape 
108     """
109     self.jdc.suppentite(etape)
110
111