Salome HOME
ajout pour accepter les accents sous python 2.3
[tools/eficas.git] / Extensions / etape_niveau.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 """
22     Ce module contient la classe ETAPE_NIVEAU qui sert à 
23     concrétiser les niveaux au sein d'un JDC
24 """
25 import traceback
26
27 from Noyau import N_OBJECT
28 import prefs
29
30 class ETAPE_NIVEAU(N_OBJECT.OBJECT):
31
32   def __init__(self,niveau,parent):
33     self.parent = parent
34     self.jdc = self.parent.get_jdc_root()
35     self.niveau = self
36     self.definition = niveau
37     self.etapes=[]
38     self.etapes_niveaux = []
39     self.dict_niveaux={}
40     self.editmode = 0
41     self.state="undetermined"
42     self.build_niveaux()
43
44   def build_niveaux(self):
45     for niveau in self.definition.l_niveaux:
46       etape_niveau = ETAPE_NIVEAU(niveau,self)
47       self.etapes_niveaux.append(etape_niveau)
48       self.dict_niveaux[niveau.nom]=etape_niveau
49
50   def register(self,etape):
51     """ 
52           Enregistre la commande étape :
53           - si editmode = 0 : on est en mode relecture d'un fichier de commandes
54           auquel cas on ajoute etape à la fin de la liste self.etapes
55           - si editmode = 1 : on est en mode ajout d'étape depuis eficas auquel cas
56           cette méthode ne fait rien, c'est addentité qui enregistre etape
57           à la bonne place dans self.etapes 
58     """
59     if self.editmode : return
60     self.etapes.append(etape)
61
62   def unregister(self,etape):
63     """
64         Desenregistre l'etape du niveau
65     """
66     self.etapes.remove(etape)
67
68   def ident(self):
69     return self.definition.label
70
71   def isactif(self):
72     #print 'Niveau : ',self.definition.nom
73     #print '\tactif =',self.definition.actif
74     if self.definition.actif == 1 :
75       return 1
76     else :
77       # self.actif est une condition à évaluer dans un certain contexte ...
78       d = self.cree_dict_valeurs()
79       try:
80         t=eval(self.definition.actif,d)
81         return t
82       except:
83         traceback.print_exc()
84         return 0
85
86   def cree_dict_valeurs(self):
87     """
88     Retourne le dictionnaire des frères aînés de self composé des couples :
89     {nom_frère isvalid()}
90     """
91     d={}
92     for niveau in self.parent.etapes_niveaux:
93       if niveau is self : break
94       d[niveau.definition.nom]=niveau.isvalid()
95     return d
96
97   def isvalid(self):
98     """ Méthode booléenne qui retourne 0 si le niveau est invalide, 1 sinon """
99     if self.etapes_niveaux == []:
100       if len(self.etapes) == 0:
101         return self.definition.valide_vide
102       else:
103         for etape in self.etapes :
104           if not etape.isvalid() : return 0
105         return 1
106     else:
107       for etape_niveau in self.etapes_niveaux :
108         if not etape_niveau.isvalid() : return 0
109       return 1
110
111   def accept(self,visitor):
112     visitor.visitETAPE_NIVEAU(self)
113
114   def addentite(self,name,pos_rel):
115     self.editmode = 1
116     try :
117       pos_abs=self.jdc.get_nb_etapes_avant(self)+pos_rel
118       cmd = self.jdc.addentite(name,pos_abs)
119       self.etapes.insert(pos_rel,cmd)
120       self.editmode = 0
121       return cmd
122     except:
123       traceback.print_exc()
124       self.editmode = 0
125       return None
126
127   def suppentite(self,etape) :
128     """ Classe ETAPE_NIVEAU
129         Supprime une étape 
130     """
131     self.jdc.suppentite(etape)
132
133
134   def get_fr(self):
135      """
136         Retourne le texte d'aide dans la langue choisie
137      """
138      try :
139         return getattr(self.definition,prefs.lang)
140      except:
141         return ''
142