import sys,os
import types
import Accas
+import inspect
# CONTEXT est accessible (__init__.py de Noyau)
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 = ""
# ---------------------------------
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):
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
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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys,os
+import inspect
import traceback
def trace():
traceback.print_stack()
#import pyxb.utils.domutils
except : pass
+from Accas import A_ASSD
+
class 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 ?
# 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())
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> '
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')
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
# #------------------------------------------------------------------
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 :
#-----------------------------------------
#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]
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()
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
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:
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
),
),# 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
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)
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()
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
- 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
if self.val_min == '**' : self.val_min = float('-inf')
self.fenetreIhm=fenetreIhm
self.attribut = attribut
+ self.creeDesObjetsDeType = creeDesObjetsDeType
def verifCata(self):
"""