Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / Ihm / I_ENTITE.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 from __future__ import absolute_import
21 _no=0
22
23 import Accas
24 def numberEntite(entite):
25     """
26        Fonction qui attribue un numero unique a tous les objets du catalogue
27        Ce numero permet de conserver l'ordre des objets
28     """
29     global _no
30     _no=_no+1
31     entite._no=_no
32
33 class ENTITE:
34     def __init__(self):
35         numberEntite(self)
36
37     def getDocu(self):
38         if hasattr(self,'docu') :
39             if self.docu != "" : return self.docu
40             else:
41                 if hasattr(self,'pere'):
42                     return self.pere.getDocu()
43                 else:
44                     return None
45         else:
46             return None
47
48     def getSug(self):
49         if hasattr(self,'sug') :
50             if self.sug != "" : return self.sug
51         return None
52
53     def checkDefinition(self, parent):
54         """Verifie la definition d'un objet composite (commande, fact, bloc)."""
55         args = self.entites.copy()
56         mcs = set()
57         for nom, val in args.items():
58             if val.label == 'SIMP':
59                 mcs.add(nom)
60                 #if val.max != 1 and val.type == 'TXM':
61                     #print "#CMD", parent, nom
62             elif val.label == 'FACT':
63                 val.checkDefinition(parent)
64             else:
65                 continue
66             del args[nom]
67         # seuls les blocs peuvent entrer en conflit avec les mcs du plus haut niveau
68         for nom, val in args.items():
69             if val.label == 'BLOC':
70                 mcbloc = val.checkDefinition(parent)
71                 #print "#BLOC", parent, re.sub('\s+', ' ', val.condition)
72                 #assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \
73                 #   % (parent, tuple(mcs.intersection(mcbloc)))
74         return mcs
75
76 #
77     def UQPossible(self):
78         return True