]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
pour partage eric
authorpascale.noyret <pascale.noyret@edf.fr>
Wed, 3 Apr 2019 12:31:08 +0000 (14:31 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Wed, 3 Apr 2019 12:31:08 +0000 (14:31 +0200)
Efi2Xsd/AccasXsd.py
Efi2Xsd/MCAccasXsd.py
Efi2Xsd/balises.py
InterfaceQT4/browser.py
InterfaceQT4/editor.py
InterfaceQT4/readercata.py
JP/cata_Vimmp.py
Noyau/N_OBJECT.py
Noyau/N_SIMP.py

index c276eec61df9f1d9b57c3bdc299fce92390f4859..95c2ff58f1a004c18b07777febde26dd08abdfe9 100755 (executable)
@@ -3,6 +3,7 @@
 import sys,os
 import types
 import Accas
+import inspect
 
 # CONTEXT est accessible (__init__.py de Noyau)
 
@@ -111,7 +112,7 @@ class X_definitionComposee (X_definition):
           self.texteComplexe = debutTypeCompo.format(self.nomDuTypePyxb)
           texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
           self.texteComplexe  = texteComplexeVenantDesFils + self.texteComplexe
-          self.texteComplexe += finTypeCompo
+          if not isinstance(self,X_OPER ) : self.texteComplexe += finTypeCompo
        else :
           self.texteComplexe = ""
 
@@ -150,7 +151,13 @@ class X_FACT (X_definitionComposee):
 # ---------------------------------
 class X_OPER (X_definitionComposee):
 # ---------------------------------
-    pass
+   def dumpXsd(self):
+       X_definitionComposee.dumpXsd(self)
+       self.texteComplexe += operAttributeName
+       self.texteComplexe += attributeTypeForASSD
+       self.texteComplexe += attributeTypeUtilisateurName.format(self.sd_prod.__name__)
+       self.texteComplexe += finTypeCompo
+     
 
 # ----------------------------------
 class X_PROC (X_definitionComposee):
@@ -309,6 +316,13 @@ class X_JDC_CATA :
 
     def dumpXsd(self):
        
+        #for name, obj in inspect.getmembers(self.module):
+        #  if inspect.isclass(obj):
+        #    if issubclass(obj,Accas.UserASSD) :
+        #        source  = inspect.getsourcefile(obj)
+        #        if source.split('/')[-1] != "A_ASSD.py" :
+        #            typeASSD= 'UserASSD'
+        #            textDeclaration += debutAccasClass.format('T_'+obj.__name__,typeASSD)
         self.texteSimple   = ""
         self.texteComplexe = ""
         self.nomDuTypePyxb='T_'+self.code
@@ -323,6 +337,7 @@ class X_JDC_CATA :
         self.texteElt=eltCata.format(self.code,self.code, self.nomDuTypePyxb)
 
         self.texteXSD  = texteDebut.format(self.code,self.code,self.code)
+        #self.texteXSD += textDeclaration
         self.texteXSD += self.texteSimple
         self.texteXSD += self.texteCata
         self.texteXSD += self.texteElt
index 68dce819551bd9e63c3ac8db20a83aef4e2dc020..ff7a8dab9c6097c5d782ab7720080a8d9a9166a1 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 import sys,os
+import inspect
 import traceback
 def trace():
   traceback.print_stack()
@@ -17,6 +18,8 @@ try :
   #import pyxb.utils.domutils
 except : pass
 
+from Accas import A_ASSD
+
 class X_OBJECT:
 # -------------
 
@@ -173,15 +176,17 @@ class X_MCSIMP(X_OBJECT):
         if self.objPyxb : self.objPyxb.objAccas=self
       #print ('X_MCSIMP', self.nom, self.objPyxb, )
       #print ('fin X_MCSIMP', self.objPyxb, self.nom,self)
-      if self.nom=="species_pair_parameters_potential_type" : print ('X_MCSIMP buildObjPyxb', self.nom )
 
 
    def setValeurObjPyxb(self,newVal):
        if not self.cata.modeleMetier : return
        print ('------------------------------------------------------------------')
        print ('dans setValeurObjPyxb MCSIMP ', self.nom)
+       if inspect.isclass(newVal) and issubclass(newVal,A_ASSD)  : newVal = newVal.nom
+       print (newVal)
        
        #print (self.nom , ' a pour pere', self.perePyxb, self.perePyxb.nom, self.perePyxb.objPyxb)
+       
        if newVal != None : nvlObj=self.maClasseModeleMetier(newVal)
        #else              : nvlObj=self.maClasseModeleMetier()
        # a priori impossible mais ?
@@ -409,11 +414,11 @@ class X_JDC (X_MCCOMPO):
      # OK seulement si sequence (choice ? ...)
      # 01 11 2018
      # ne fonctionne pas : a reecrire avec les fonctions addObjPyxb et ReconstruitPerePyxb
-      print ( 'hhhhhhhhhhhhhhh enregistreEtapePyxb hhhhhhhhhhhhhhhhhhhhhhhhh')
-      print ('enregistre ds ',self, etape.nom, 'indice = ', indice)
+      #print ( 'hhhhhhhhhhhhhhh enregistreEtapePyxb hhhhhhhhhhhhhhhhhhhhhhhhh')
+      #print ('enregistre ds ',self, etape.nom, 'indice = ', indice)
       if not self.cata.modeleMetier : return
-      import traceback
-      traceback.print_stack()
+      #import traceback
+      #traceback.print_stack()
       self.objPyxb.append(etape.objPyxb)
       etape.perePyxb=self
       #print (self.objPyxb.orderedContent())
index 74896ac7d3de578b2a76933a799db3719da79f01..73e6b82e5e50ffbc188162c58be24e5d3ec2bbf7 100644 (file)
@@ -34,6 +34,13 @@ finTypeSubst   = '\t\t</sequence>\n\t</group>\n'
 substDsSequence = '\t\t\t<group ref="{}:{}"  minOccurs="{}" maxOccurs="{}"/>\n'
 
 
+# User OR ASSD
+
+operAttributeName    = '\t\t<attribute name="nom" type="string"/>\n'
+attributeTypeForASSD = '\t\t<attribute name="acassType" type="string" fixed="ASSD"/>\n'
+attributeTypeUtilisateurName = '\t\t<attribute name="typeUtilisateur" type="string" fixed="{}"/>\n'
+#keyRefDeclaration ='\n\t<xs:keyref name="{}_Name_ref" refer="Key_Name_In_{}"> \n\t\t<xs:selector xpath="{}:{}_Name"/>\n\t\t<xs:field xpath="."/>\n\t</xs:keyref>\n'
+
 # CATA
 debutTypeCata = '\t<complexType name="{}">\n\t\t<choice minOccurs="0" maxOccurs="unbounded">\n'
 finTypeCata   = '\t\t</choice>\n\t</complexType> '
@@ -41,60 +48,5 @@ eltCata = '\t<element name="{}" type="{}:{}"/>\n'
 
 
 if __name__ == '__main__' :
-   nomElt='Simple'
-   nomDuType='T_Simple'
-   nomDuTypeBase='int'
-   nomDuComplexe='T_Complexe'
-   nomDuCode='monCode'
-   minOccurs=1
-   maxOccurs=1
-   nomDuTypePyxb = "T_simulation_title"
-   nomDuTypeDeBase = 'string'
-   into=None
-
-   isListe=False
-   if isListe : texteSimple = debutTypeSimpleListe.format(nomDuTypePyxb,  nomDuTypeDeBase)
-   else       : texteSimple = debutTypeSimple.format (nomDuTypePyxb, nomDuTypeDeBase)
-   if into != None:
-      texteSimple   =  self.texteSimple + ">\n"
-      for val in into :
-          texteSimple += withInto.format(val)
-      texteSimple  += finWithInto
-   else :
-      texteSimple  += fermeBalise
-   texteSimple  += finTypeSimple
-
-   #print texteSimple
-   #exit()
-
-   isListe=True
-   if isListe : texteSimple = debutTypeSimpleListe.format(nomDuTypePyxb,  nomDuTypeDeBase)
-   else       : texteSimple = debutTypeSimple.format (nomDuTypePyxb, nomDuTypeDeBase)
-   if into != None:
-      texteSimple   =  self.texteSimple + ">\n"
-      for val in into :
-          texteSimple += withInto.format(val)
-      texteSimple  += finWithInto
-   else :
-      texteSimple  += fermeBalise
-   texteSimple  += finTypeSimple
-
-   print texteSimple
-   exit()
-
-   texteSimple=typeSimple.format(nomDuType, nomDuTypeBase)
-   texteElt=eltDsSequence.format(nomElt,nomDuCode,nomDuType,minOccurs,maxOccurs)
-
-   minOccurs=0
-   texteComplexe=debutTypeComplexe.format(nomDuComplexe)
-   texteComplexe+=texteElt
-   texteComplexe+=finTypeComplexe
-   texteEltComplexe=eltDsSequence.format(nomElt,nomDuCode,nomDuType,minOccurs,maxOccurs)
-
-   texteCata=debutTypeCata.format(nomDuCode)
-   texteCata+=texteEltComplexe
-   texteCata+=finTypeCata
-
-   eltRacine=eltCata.format(nomDuCode, 'T_'+nomDuCode)
-   print (texteSimple+texteComplexe+texteCata+eltRacine)
+    print ('ne fait rien')
 
index d1bbb1465ec3f5af6a3fd12b05b6d5b9b4e7a06a..6cefdc790ee79d1c85ad9aafd84be7f28e483e9c 100644 (file)
@@ -292,7 +292,6 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         self.item.connect("valid",self.onValid,())
         self.item.connect("supp" ,self.onSupp,())
         self.item.connect("add"  ,self.onAdd,())
-        self.item.connect("reconstruit"  ,self.onReconstruit,())
 
         self.state=""
         self.fenetre=None
@@ -685,7 +684,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
 #    #------------------------------------------------------------------
     def onValid(self):        
 
-        print ("onValid pour ", self.item.nom)
+        #print ("onValid pour ", self.item.nom)
         if self.JESUISOFF==1 : return
         if hasattr(self,'fenetre') and self.fenetre: 
            try :
index a389926cc027f5b3709d9baee4ffd881e68a51a3..f7babdf89cbe119c026411534a031daafa2e05cf 100755 (executable)
@@ -1002,7 +1002,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     #-----------------------------------------
        #print ("je passe ds initSplitterSizes", nbWidget)
 
-       if   self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,150]
+       if   self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,300]
        #elif self.code in [ 'MAP']            : self.splitterSizes3=[700,300]
        else                                  : self.splitterSizes3=[150,1000,300]
 
@@ -1020,6 +1020,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
       if nbWidget==2  : newSizes=self.splitterSizes2
       if nbWidget==3  : newSizes=self.splitterSizes3
       #self.inhibeSplitter = 1
+      #print (newSizes)
       self.splitter.setSizes(newSizes)
       #self.inhibeSplitter = 0
       QApplication.processEvents()
index 272a1ef8a6b44e81933811b43fc41eed3e6b1032..ee4760713745c22b0055d0e5efdc2983baf312a8 100644 (file)
@@ -204,9 +204,10 @@ class ReaderCata (ReaderCataCommun):
          try :
            nomCataXsd = os.path.splitext(os.path.basename(self.fic_cata))[0]+'_genere'
            pathCata = os.path.dirname(self.fic_cata)+'/raw/'+nomCataXsd+'.py'
-           modeleMetier=__import__('raw.cata_DPD_genere',fromlist=[''])
-#           import imp
-#           modeleMetier= imp.load_source(nomCataXsd,pathCata)
+#           modeleMetier=__import__('raw.cata_DPD_genere',fromlist=[''])
+           import imp
+           modeleMetier= imp.load_source(nomCataXsd,pathCata)
+           #print ('_________________________', modeleMetier)
          except :
            print ('______________ poum import cata_genere ')
            modeleMetier = None
@@ -214,6 +215,8 @@ class ReaderCata (ReaderCataCommun):
            modeleMetier = None
 
       self.cata = self.importCata(self.fic_cata)
+      # pointeur pour le dumpXSD
+      self.cata.JdC.module=self.cata
       self.cata.modeleMetier = modeleMetier
       if not self.cata :
           try:
index 78e46006a1837a6cd4950d2afe746622b7732b66..404a0284534c8879d978b6594d9a088b7fee6eb3 100755 (executable)
@@ -34,11 +34,7 @@ class Tuple:
   def info(self):
     return "Tuple de %s elements" % self.ntuple
 
-#liste_Objets_Surface_Elementaire = []
-class Surface_Elementaire (UserASSD):
-    def __init__(self, nom):
-       ASSD.__init__(self)
-       self.setName(nom)
+class Surface_Elementaire (UserASSD): pass
 
 def champ (nomDelaContante, labels ,nbReels ) :
 # ajouter les extensions pour le fichier et les blocs associes
@@ -138,7 +134,7 @@ Etude = PROC (nom = 'Etude',
             ),
     ),# fin b_CAO 
     surface_Elementaire=SIMP(statut= 'o',typ= 'TXM',max='**', siValide=creeSurfaceElementaire),
-    essai=SIMP(statut = 'ee', typ = Surface_Elementaire),
+    essai=SIMP(statut= 'o',typ= Surface_Elementaire),
 
    ), # fin Domaine_Geometrique
 
index 25228f5a26c6b125a1efaf4c3c990ac12be3020e..b10ae922d2f4d17cb11fae989134b311ce34f4ee 100644 (file)
@@ -119,19 +119,26 @@ class OBJECT(object):
       newlisteNomsObjsCrees = []
       listeSupprimees = []
       change=False
-      for v in self.valeur:
+      if not isinstance(self.valeur,(list, tuple)) : valTraitee =  (self.valeur,)
+      else : valTraitee = self.valeur
+
+      for v in valTraitee:
        if not (v in self.listeNomsObjsCrees):
-          newObj=classeACreer(v)
           change=True
+          newObj=classeACreer(v)
           if v in list(self.jdc.sds_dict.keys()):
              if not isinstance (self.jdc.sds_dict[v], classeACreer):
-                self.valeur.remove(v)
-                continue
+                if not type(self.valeur) in (list, tuple) :self.Valeur=None
+                else : self.valeur.remove(v)
+                self.valeur=None
+                self.state = 'undetermined'
+                self.isValid()
+                return
           self.jdc.sds_dict[v] = newObj
           newObj.sdnom = v
           newlisteNomsObjsCrees.append(v)
       for oldv in  self.listeNomsObjsCrees :
-          if oldv not in self.valeur :
+          if oldv not in valTraitee :
               change=True
               listeSupprimees.append(self.jdc.sds_dict[oldv])
               self.jdc.sds_dict.pop(oldv)
@@ -141,10 +148,22 @@ class OBJECT(object):
       if not change : return
       if classeACreer in list(self.jdc.utilise_un_sds_dict.keys()):
         for MC in self.jdc.utilise_un_sds_dict[classeACreer] :
-           if isinstance(MC.valeur, str) and MC.valeur in list(self.jdc.sds_dict.keys()): 
-              MC.valeur=self.jdc.sds_dict[MC.valeur]
-           if MC.valeur  in listeSupprimees:
-              MC.valeur=None
+           if MC.definition.max == 1 :
+              if isinstance(MC.valeur, str) and MC.valeur in list(self.jdc.sds_dict.keys()): 
+                 MC.valeur=self.jdc.sds_dict[MC.valeur]
+           else :
+              for val in MC.valeur : 
+                 newVal=[]
+                 if isinstance(val, str) and val in list(self.jdc.sds_dict.keys()): 
+                    newVal.append(self.jdc.sds_dict[MC.valeur])
+              MC.valeur=newVal
+           if MC.definition.max == 1 :
+              if MC.valeur  in listeSupprimees:
+                 MC.valeur=None
+           else : 
+              for val in MC.valeur : 
+                 if val  in listeSupprimees:
+                    MC.valeur=remove(val)
            MC.state = 'undetermined'
            MC.isValid()
 
index 49306e708e8ec0975612f5ecd2dbc60c7d40198a..2f5db69b6ad2486972bad3150e7a4dd9c493c807 100644 (file)
@@ -50,7 +50,7 @@ class SIMP(N_ENTITE.ENTITE):
     def __init__(self, typ,ang="", fr="", statut='f', into=None, intoSug = None,siValide = None, defaut=None,
                  min=1, max=1, homo=1, position='local',
                  val_min=float('-inf'), val_max=float('inf'), docu="", validators=None,
-                 sug=None,fenetreIhm=None, attribut=False):
+                 sug=None,fenetreIhm=None, attribut=False, creeDesObjetsDeType = None):
         """
             Un mot-clé simple est caractérisé par les attributs suivants :
             - type : cet attribut est obligatoire et indique le type de valeur attendue
@@ -70,6 +70,7 @@ class SIMP(N_ENTITE.ENTITE):
             - sug : valeur suggere
             - fenetreIhm : si widget particulier
             - attribut : si projection XSD sur attribut
+            - creeDesObjetsDeType : type des UserASSD si siValide en cree
         """
         #print (self)
         #import traceback
@@ -105,6 +106,7 @@ class SIMP(N_ENTITE.ENTITE):
         if self.val_min == '**' : self.val_min = float('-inf')
         self.fenetreIhm=fenetreIhm
         self.attribut = attribut
+        self.creeDesObjetsDeType = creeDesObjetsDeType
 
     def verifCata(self):
         """