2 # Copyright (C) 2007-2021 EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 from __future__ import absolute_import
25 from __future__ import print_function
27 from builtins import object
32 from .N_ASSD import ASSD
36 Classe de base pour definir des types de structures de donnees definie par
38 equivalent d un concept ASSD pour un SIMP ou un FACT
39 Attention : le parent est a None au debut et non le MC createur que l on ne connait pas
40 Lorsqu on ecrit le jdc, n ecrit nom=UserASSD()
41 le parent est le SIMP qui cree l objet
42 a la lecture si la classe commence par un majuscule on fait le boulot dans MCSIMP, sinon dans
43 l init de parametre car le parsing considere qu on a un parametre
46 def __init__(self,nom='sansNom'):
48 self.jdc = CONTEXT.getCurrentJdC()
50 self.initialiseValeur()
51 self.utilisePar = set()
52 if self.nom != 'sansNom' : self.id = self.jdc.regSD(self)
57 def initialiseParent(self, parent):
58 #print ('je passe initialiseParent pour : ', self, parent)
61 def initialiseNom(self,nom):
62 #print ('je passe initialiseNom pour : ', self, nom)
63 for (i,j) in self.jdc.sdsDict.items() :
65 del(self.jdc.sdsDict[i])
66 self.jdc.sdsDict[nom]=self
68 if self.nom != 'sansNom' and self.id ==None : self.id = self.jdc.regSD(self)
70 def initialiseValeur(self,valeur=None):
73 def ajoutUtilisePar(self,mc):
74 self.utilisePar.add(mc)
76 def enleveUtilisePar(self,mc):
77 try : self.utilisePar.remove(mc)
80 def renomme(self,nouveauNom):
81 self.jdc.delConcept(self.nom)
82 self.jdc.sdsDict[nouveauNom] = self
83 self.setName(nouveauNom)
84 #print ('je suis dans renomme',nouveauNom, self.nom)
85 #print (self.utilisePar)
86 for mc in (self.utilisePar):
90 def deleteReference(self):
91 print ('dans deleteReference')
92 for MC in self.utilisePar :
93 # le delete est appele en cascade par toute la hierachie
94 # du mcsimp (au cas ou on detruise le fact ou le proc)
97 if type(MC.valeur) in (list,tuple):
98 MC.valeur=list(MC.valeur)
99 while MC in MC.valeur: MC.valeur.remove(self)
100 if MC.valeur == [] : MC.Valeur = None
101 else : MC.valeur=None
104 #MC.demandeRedessine()
105 self.jdc.delConcept(self.nom)
109 def getEficasAttribut(self, attribut):
110 #print ('je suis dans getEficasAttr', attribut)
111 if self.parent == None : return None
113 # parent est le SIMP donc c est bien parent.parent
115 valeur = self.parent.parent.getMocle(attribut)
123 self.deleteReference()