]> SALOME platform Git repositories - tools/eficas.git/blob - Extensions/etape_niveau.py
Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / Extensions / etape_niveau.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21     Ce module contient la classe ETAPE_NIVEAU qui sert a
22     concretiser les niveaux au sein d'un JDC
23 """
24 from __future__ import absolute_import
25 import traceback
26
27 from Noyau import N_OBJECT
28
29 class ETAPE_NIVEAU(N_OBJECT.OBJECT):
30
31     def __init__(self,niveau,parent):
32         self.parent = parent
33         self.jdc = self.parent.getJdcRoot()
34         self.niveau = self
35         self.definition = niveau
36         self.etapes=[]
37         self.etapes_niveaux = []
38         self.dict_niveaux={}
39         self.editmode = 0
40         self.state="undetermined"
41         self.buildNiveaux()
42
43     def buildNiveaux(self):
44         for niveau in self.definition.l_niveaux:
45             etape_niveau = ETAPE_NIVEAU(niveau,self)
46             self.etapes_niveaux.append(etape_niveau)
47             self.dict_niveaux[niveau.nom]=etape_niveau
48
49     def register(self,etape):
50         """
51               Enregistre la commande etape :
52               - si editmode = 0 : on est en mode relecture d'un fichier de commandes
53               auquel cas on ajoute etape a la fin de la liste self.etapes
54               - si editmode = 1 : on est en mode ajout d'etape depuis eficas auquel cas
55               cette methode ne fait rien, c'est addEntite qui enregistre etape
56               a la bonne place dans self.etapes
57         """
58         if self.editmode : return
59         self.etapes.append(etape)
60
61     def unregister(self,etape):
62         """
63             Desenregistre l'etape du niveau
64         """
65         self.etapes.remove(etape)
66
67     def ident(self):
68         return self.definition.label
69
70     def isActif(self):
71         #print 'Niveau : ',self.definition.nom
72         #print '\tactif =',self.definition.actif
73         if self.definition.actif == 1 :
74             return 1
75         else :
76             # self.actif est une condition a evaluer dans un certain contexte ...
77             d = self.creeDictValeurs()
78             try:
79                 t=eval(self.definition.actif,d)
80                 return t
81             except:
82                 traceback.print_exc()
83                 return 0
84
85     def creeDictValeurs(self):
86         """
87         Retourne le dictionnaire des freres aines de self compose des couples :
88         {nom_frere isValid()}
89         """
90         d={}
91         for niveau in self.parent.etapes_niveaux:
92             if niveau is self : break
93             d[niveau.definition.nom]=niveau.isValid()
94         return d
95
96     def isValid(self):
97         """ Methode booleenne qui retourne 0 si le niveau est invalide, 1 sinon """
98         if self.etapes_niveaux == []:
99             if len(self.etapes) == 0:
100                 return self.definition.valide_vide
101             else:
102                 for etape in self.etapes :
103                     if not etape.isValid() : return 0
104                 return 1
105         else:
106             for etape_niveau in self.etapes_niveaux :
107                 if not etape_niveau.isValid() : return 0
108             return 1
109
110     def accept(self,visitor):
111         visitor.visitETAPE_NIVEAU(self)
112
113     def addEntite(self,name,pos_rel):
114         self.editmode = 1
115         try :
116             pos_abs=self.jdc.getNbEtapesAvant(self)+pos_rel
117             cmd = self.jdc.addEntite(name,pos_abs)
118             self.etapes.insert(pos_rel,cmd)
119             self.editmode = 0
120             return cmd
121         except:
122             traceback.print_exc()
123             self.editmode = 0
124             return None
125
126     def suppEntite(self,etape) :
127         """ Classe ETAPE_NIVEAU
128             Supprime une etape
129         """
130         self.jdc.suppEntite(etape)
131
132
133     def getFr(self):
134         """
135            Retourne le texte d'aide dans la langue choisie
136         """
137         try :
138             return getattr(self.definition,self.jdc.lang)
139         except:
140             return ''