from __future__ import absolute_import
from Noyau import N_BLOC
from Ihm import I_ENTITE
-from . import A_MCBLOC
+from Accas import A_MCBLOC
+from Efi2Xsd.AccasXsd import X_BLOC
-class BLOC(N_BLOC.BLOC,I_ENTITE.ENTITE):
+
+class BLOC(N_BLOC.BLOC,X_BLOC,I_ENTITE.ENTITE):
class_instance=A_MCBLOC.MCBLOC
def __init__(self,*tup,**args):
I_ENTITE.ENTITE.__init__(self)
from Noyau import N_ETAPE
from Validation import V_ETAPE
from Ihm import I_ETAPE
+from Efi2Xsd.MCAccasXsd import X_MCCOMPO
-class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE,
- N_ETAPE.ETAPE):
+class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE,X_MCCOMPO,N_ETAPE.ETAPE):
def __init__(self,oper=None,reuse=None,args={}):
- # Pas de constructeur pour B_ETAPE.ETAPE
+ print ('------------- ETAPE accas', oper.nom, args)
N_ETAPE.ETAPE.__init__(self,oper,reuse,args)
V_ETAPE.ETAPE.__init__(self)
from __future__ import absolute_import
from Noyau import N_FACT
from Ihm import I_ENTITE
-from . import A_MCFACT
-from . import A_MCLIST
+from Accas import A_MCFACT
+from Accas import A_MCLIST
+from Efi2Xsd.AccasXsd import X_FACT
-class FACT(N_FACT.FACT,I_ENTITE.ENTITE):
+
+class FACT(N_FACT.FACT,X_FACT,I_ENTITE.ENTITE):
class_instance=A_MCFACT.MCFACT
list_instance=A_MCLIST.MCList
def __init__(self,*tup,**args):
from Validation import V_JDC
from Extensions import jdc
from Ihm import I_JDC
+from Efi2Xsd.MCAccasXsd import X_JDC
-class JDC(jdc.JDC,I_JDC.JDC,V_JDC.JDC,N_JDC.JDC):
+class JDC(jdc.JDC,I_JDC.JDC,X_JDC,V_JDC.JDC,N_JDC.JDC):
from .A_ASSD import CO,assd
def __init__(self,*pos,**args):
N_JDC.JDC.__init__(self,*pos,**args)
+ X_JDC.__init__(self)
V_JDC.JDC.__init__(self)
I_JDC.JDC.__init__(self)
jdc.JDC.__init__(self)
from . import A_JDC
from Noyau import N_JDC_CATA
from Ihm import I_JDC_CATA
+from Efi2Xsd.AccasXsd import X_JDC_CATA
-class JDC_CATA(I_JDC_CATA.JDC_CATA,N_JDC_CATA.JDC_CATA):
+class JDC_CATA(I_JDC_CATA.JDC_CATA,N_JDC_CATA.JDC_CATA,X_JDC_CATA):
class_instance=A_JDC.JDC
def __init__(self,*pos,**kw):
#print pos
from Validation import V_MACRO_ETAPE
from Ihm import I_MACRO_ETAPE
from .A_ASSD import CO
+from Efi2Xsd.MCAccasXsd import X_MCCOMPO
class MACRO_ETAPE(I_MACRO_ETAPE.MACRO_ETAPE,
+ X_MCCOMPO,
V_MACRO_ETAPE.MACRO_ETAPE,
N_MACRO_ETAPE.MACRO_ETAPE):
typeCO=CO
from Noyau import N_MCBLOC
from Validation import V_MCBLOC
from Ihm import I_MCBLOC
+from Efi2Xsd.MCAccasXsd import X_MCBLOC
-class MCBLOC(I_MCBLOC.MCBLOC,N_MCBLOC.MCBLOC,V_MCBLOC.MCBLOC):
- def __init__(self,val,definition,nom,parent):
- N_MCBLOC.MCBLOC.__init__(self,val,definition,nom,parent)
+
+class MCBLOC(I_MCBLOC.MCBLOC,N_MCBLOC.MCBLOC,X_MCBLOC,V_MCBLOC.MCBLOC):
+ def __init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=None):
+ N_MCBLOC.MCBLOC.__init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
V_MCBLOC.MCBLOC.__init__(self)
from Noyau import N_MCFACT
from Validation import V_MCFACT
from Ihm import I_MCFACT
+from Efi2Xsd.MCAccasXsd import X_MCFACT
-class MCFACT(I_MCFACT.MCFACT,N_MCFACT.MCFACT,V_MCFACT.MCFACT):
- def __init__(self,val,definition,nom,parent):
- N_MCFACT.MCFACT.__init__(self,val,definition,nom,parent)
+class MCFACT(I_MCFACT.MCFACT,N_MCFACT.MCFACT,X_MCFACT,V_MCFACT.MCFACT):
+ def __init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=None):
+ N_MCFACT.MCFACT.__init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
V_MCFACT.MCFACT.__init__(self)
from Noyau import N_MCLIST
from Validation import V_MCLIST
from Ihm import I_MCLIST
+from Efi2Xsd.MCAccasXsd import X_MCLIST
-class MCList(I_MCLIST.MCList,N_MCLIST.MCList,V_MCLIST.MCList):
+
+class MCList(I_MCLIST.MCList,N_MCLIST.MCList,X_MCLIST,V_MCLIST.MCList):
def __init__(self):
N_MCLIST.MCList.__init__(self)
from Noyau import N_MCSIMP
from Validation import V_MCSIMP
from Ihm import I_MCSIMP
+from Efi2Xsd.MCAccasXsd import X_MCSIMP
-class MCSIMP(I_MCSIMP.MCSIMP,N_MCSIMP.MCSIMP,V_MCSIMP.MCSIMP):
- def __init__(self,val,definition,nom,parent):
- N_MCSIMP.MCSIMP.__init__(self,val,definition,nom,parent)
+class MCSIMP(I_MCSIMP.MCSIMP,N_MCSIMP.MCSIMP,X_MCSIMP,V_MCSIMP.MCSIMP):
+ def __init__(self,val,definition,nom,parent,objPyxbDeConstruction=None):
+ #def __init__(self,val,definition,nom,parent,objPyxbDeConstruction) quand cela sera correct dans les update_etape. pour l instant on laisse le defaut a None : 9 Aout 18:
+ N_MCSIMP.MCSIMP.__init__(self,val,definition,nom,parent,objPyxbDeConstruction)
V_MCSIMP.MCSIMP.__init__(self)
from __future__ import absolute_import
from Noyau import N_OPER
from Ihm import I_ENTITE
-from . import A_ETAPE
+from Accas import A_ETAPE
+from Efi2Xsd.AccasXsd import X_OPER
-class OPER(N_OPER.OPER,I_ENTITE.ENTITE):
+
+class OPER(N_OPER.OPER,X_OPER,I_ENTITE.ENTITE):
class_instance=A_ETAPE.ETAPE
def __init__(self,*tup,**args):
I_ENTITE.ENTITE.__init__(self)
from __future__ import absolute_import
from Noyau import N_PROC
from Ihm import I_ENTITE
-from . import A_PROC_ETAPE
+from Accas import A_PROC_ETAPE
+from Efi2Xsd.AccasXsd import X_PROC
-class PROC(N_PROC.PROC,I_ENTITE.ENTITE):
+class PROC(N_PROC.PROC,X_PROC,I_ENTITE.ENTITE):
class_instance=A_PROC_ETAPE.PROC_ETAPE
def __init__(self,*tup,**args):
- #print tup
- #print args
+ #print (tup)
+ #print (args)
I_ENTITE.ENTITE.__init__(self)
N_PROC.PROC.__init__(self,*tup,**args)
from Noyau import N_PROC_ETAPE
from Validation import V_PROC_ETAPE
from Ihm import I_PROC_ETAPE
+from Efi2Xsd.MCAccasXsd import X_MCCOMPO
class PROC_ETAPE(I_PROC_ETAPE.PROC_ETAPE,
V_PROC_ETAPE.PROC_ETAPE,
+ X_MCCOMPO,
N_PROC_ETAPE.PROC_ETAPE):
def __init__(self,oper=None,args={}):
N_PROC_ETAPE.PROC_ETAPE.__init__(self,oper=oper,args=args)
from __future__ import absolute_import
from Noyau import N_SIMP
from Ihm import I_ENTITE
-from . import A_MCSIMP
+from Accas import A_MCSIMP
+from Efi2Xsd.AccasXsd import X_SIMP
-class SIMP(N_SIMP.SIMP,I_ENTITE.ENTITE):
+class SIMP(N_SIMP.SIMP,X_SIMP,I_ENTITE.ENTITE):
class_instance=A_MCSIMP.MCSIMP
def __init__(self,*tup,**args):
#print tup
add_subdirectory ( Accas )
add_subdirectory ( Aide )
add_subdirectory ( Editeur )
+add_subdirectory ( Efi2Xsd )
add_subdirectory ( Extensions )
add_subdirectory ( Ihm )
install ( DIRECTORY InterfaceQT4 DESTINATION ${CMAKE_INSTALL_PREFIX} )
from Extensions.i18n import tr
-def substract_list(liste1,liste2):
+def substractList(liste1,liste2):
"""
Enleve tous les elements de liste2 presents dans liste1 et retourne liste1
"""
pass
return liste1
-def get_rep_user(dir):
+def getRepUser(dir):
"""
Determine sur quelle plate-forme s'execute Eficas et recherche
le repertoire de l'utilisateur /$home/Eficas_install
""" Return filename.ext if path/filename.ext is given """
return os.path.split(pathAndFile)[1]
-def init_rep_cata_dev(fic_cata,rep_goal):
+def initRep_CataDev(fic_cata,rep_goal):
"""
Initialise le repertoire des catalogues developpeurs (chemin d'acces donne
dans le fichier eficas.ini cad :
try :
if not os.path.isdir(rep_goal) :
os.mkdir(rep_goal)
- #texte_entete = get_entete_cata(fic_cata)
+ #texte_entete = getEnteteCata(fic_cata)
texte_entete=""
# rep_goal doit contenir les catalogues du developpeur sous la forme *.capy
# il faut creer le catalogue developpeur par concatenation de entete,declaration_concepts
traceback.print_exc()
print ( tr("Impossible de transferer les fichiers requis dans : %s", str(rep_goal)))
-def get_entete_cata(fic_cata):
+def getEnteteCata(fic_cata):
""" Retrouve l'entete du catalogue """
l_lignes = open(fic_cata,'r').readlines()
txt = ''
from copy import copy,deepcopy
# import du chargeur de composants
-from .comploader import make_objecttreeitem
+from .comploader import makeObjecttreeitem
from Ihm import CONNECTOR
from Extensions.i18n import tr
from Extensions.eficas_exception import EficasException
def __init__(self):
"""Constructor. Do whatever you need to do."""
- def GetText(self):
+ def getText(self):
"""Return text string to display."""
- def GetLabelText(self):
+ def getLabelText(self):
"""Return label text string to display in front of text (if any)."""
expandable = None
- def _IsExpandable(self):
+ def _isExpandable(self):
"""Do not override! Called by TreeNode."""
if self.expandable is None:
- self.expandable = self.IsExpandable()
+ self.expandable = self.isExpandable()
return self.expandable
- def IsExpandable(self):
+ def isExpandable(self):
"""Return whether there are subitems."""
return 1
- def _GetSubList(self):
+ def _getSubList(self):
"""Do not override! Called by TreeNode."""
- if not self.IsExpandable():
+ if not self.isExpandable():
return []
- sublist = self.GetSubList()
+ sublist = self.getSubList()
if not sublist:
self.expandable = 0
return sublist
def SetText(self, text):
"""Change the item's text (if it is editable)."""
- def GetIconName(self):
+ def getIconName(self):
"""Return name of icon to be displayed normally."""
- def GetSelectedIconName(self):
+ def getSelectedIconName(self):
"""Return name of icon to be displayed when selected."""
- def GetSubList(self):
+ def getSubList(self):
"""Return list of items forming sublist."""
- def OnDoubleClick(self):
+ def onDoubleClick(self):
"""Called on a double-click on the item."""
class Delegate(object):
self.object = delegate
self.__cache = {}
- def setdelegate(self, delegate):
+ def setDelegate(self, delegate):
self.resetcache()
self.object = delegate
- def getdelegate(self):
+ def getDelegate(self):
return self.object
def __getattr__(self, name):
class ObjectTreeItem(TreeItem,Delegate):
- def __init__(self, appli, labeltext, object, setfunction=None):
+ def __init__(self, appli, labeltext, object, setFunction=None):
self.labeltext = labeltext
self.appli = appli
# L'objet delegue est stocke dans l'attribut object
# On cache l'objet initial (pour destruction eventuelle
# ulterieure)
self._object = object
- self.setfunction = setfunction
+ self.setFunction = setFunction
self.expandable = 1
self.sublist=[]
self.init()
object = self._object.copy()
appli = copy(self.appli)
labeltext = copy(self.labeltext)
- fonction = deepcopy(self.setfunction)
- item = make_objecttreeitem(appli,labeltext,object,fonction)
+ fonction = deepcopy(self.setFunction)
+ item = makeObjecttreeitem(appli,labeltext,object,fonction)
return item
- def isactif(self):
+ def isActif(self):
if hasattr(self.object,'actif'):
return self.object.actif
else:
"""
pass
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
# None --> fonte et couleur par defaut
return self.labeltext,None,None
- def get_nature(self) :
+ def getNature(self) :
"""
Retourne la nature de l'item et de l'objet
"""
return self.object.nature
- def get_regles(self):
+ def getRegles(self):
""" retourne les regles de l'objet pointe par self """
- return self.object.get_regles()
+ return self.object.getRegles()
- def get_liste_mc_presents(self):
+ def getListeMcPresents(self):
""" Retourne la liste des mots-cles fils de l'objet pointe par self """
- return self.object.liste_mc_presents()
+ return self.object.listeMcPresents()
- def get_val(self):
+ def getVal(self):
""" Retourne le nom de la valeur de l'objet pointe par self dans le cas
ou celle-ci est un objet (ASSD) """
- return self.object.getval()
+ return self.object.getVal()
def get_definition(self):
"""
"""
return self.object.definition
- def get_liste_mc_ordonnee(self,liste,dico):
+ def getListeMcOrdonnee(self,liste,dico):
""" retourne la liste ordonnee (suivant le catalogue) brute des mots-cles
d'une entite composee dont le chemin complet est donne sous forme
d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
il faut encore rearranger cette liste (certains mots-cles deja
presents ne doivent plus etre proposes, regles ...)"""
- return self.object.get_liste_mc_ordonnee(liste,dico)
+ return self.object.getListeMcOrdonnee(liste,dico)
- def get_liste_mc_ordonnee_brute(self,liste,dico):
+ def getListeMcOrdonneeBrute(self,liste,dico):
"""
retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
d'une entite composee dont le chemin complet est donne sous forme
d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
"""
- return self.object.get_liste_mc_ordonnee_brute(liste,dico)
+ return self.object.getListeMcOrdonneeBrute(liste,dico)
- def get_genealogie(self):
+ def getGenealogie(self):
"""
Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE)
de l'objet pointe par self
"""
- return self.object.get_genealogie()
+ return self.object.getGenealogie()
- def get_index_child(self,nom_fils):
+ def getIndexChild(self,nom_fils):
"""
Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
le nouveau mot-cle
"""
- return self.object.get_index_child(nom_fils)
+ return self.object.getIndexChild(nom_fils)
- def get_index_child_old(self,nom_fils):
+ def getIndexChild_old(self,nom_fils):
"""
Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
le nouveau mot-cle
"""
- liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(self.get_genealogie(),self.get_jdc().cata_ordonne_dico)
- liste_noms_mc_presents = self.object.liste_mc_presents()
+ liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(self.getGenealogie(),self.getJdc().cata_ordonne_dico)
+ liste_noms_mc_presents = self.object.listeMcPresents()
l=[]
for nom in liste_noms_mc_ordonnee:
if nom in liste_noms_mc_presents or nom == nom_fils:
# l contient les anciens mots-cles + le nouveau dans l'ordre
return l.index(nom_fils)
- def append_child(self,name,pos=None):
+ def appendChild(self,name,pos=None):
"""
Permet d'ajouter un item fils a self
"""
if pos == 'first':
index = 0
elif pos == 'last':
- index = len(self.liste_mc_presents())
+ index = len(self.listeMcPresents())
elif type(pos) == int :
# la position est fixee
index = pos
elif type(pos) == types.InstanceType:
# pos est un item. Il faut inserer name apres pos
- index = self.get_index(pos) +1
+ index = self.getIndex(pos) +1
elif type(name) == types.InstanceType:
- index = self.get_index_child(name.nom)
+ index = self.getIndexChild(name.nom)
else:
- index = self.get_index_child(name)
+ index = self.getIndexChild(name)
return self.addobject(name,index)
def appendBrother(self,name,pos='after'):
Permet d'ajouter un frere a self
par defaut on l'ajoute apres self
"""
- index = self._object.parent.get_index(self.getObject())
+ index = self._object.parent.getIndex(self.getObject())
if pos == 'before':
index = index
elif pos == 'after':
return
return self.parent.addobject(name,index)
- def get_nom_etape(self):
- """Retourne le nom de self """
- return self.object.get_nom_etape()
-
- def get_copie_objet(self):
+ def getCopieObjet(self):
""" Retourne une copie de l'objet pointe par self """
return self.object.copy()
- def get_position(self):
+ def getPosition(self):
""" Retourne la valeur de l'attribut position de l'objet pointe par self """
definition = self.get_definition()
try:
except AttributeError:
return 'local'
- def get_nom(self):
+ def getNom(self):
""" Retourne le nom de l'objet pointe par self """
return self.object.nom
- def get_jdc(self):
+ def getJdc(self):
""" Retourne le jdc auquel appartient l'objet pointe par self """
return self.object.jdc
- def get_valeur(self):
+ def getValeur(self):
""" Retourne la valeur de l'objet pointe par self """
return self.object.valeur
- def get_cr(self):
+ def getCr(self):
""" Retourne le compte-rendu CR de self """
return self.object.report()
- def get_objet_commentarise(self):
+ def getObjetCommentarise(self):
"""
Cette methode retourne un objet commentarise
representatif de self.object
--> a surcharger par les differents items
"""
raise EficasException("MESSAGE AU DEVELOPPEUR : il faut \
- surcharger la methode get_objet_commentarise() \
+ surcharger la methode getObjetCommentarise() \
pour la classe %s", self.__class__.__name__)
- def isvalid(self):
+ def isValid(self):
""" Retourne 1 si l'objet pointe par self est valide, 0 sinon"""
- return self.object.isvalid()
+ return self.object.isValid()
- def iscopiable(self):
+ def isCopiable(self):
"""
Retourne 1 si l'objet est copiable, 0 sinon
Par defaut retourne 0
"""
return 0
- def get_mc_presents(self):
+ def getMcPresents(self):
""" Retourne le dictionnaire des mots-cles presents de l'objet pointe par self """
- return self.object.dict_mc_presents()
+ return self.object.dictMcPresents()
- def verif_condition_regles(self,l_mc_presents):
- return self.object.verif_condition_regles(l_mc_presents)
+ def verifConditionRegles(self,l_mc_presents):
+ return self.object.verifConditionRegles(l_mc_presents)
- def get_fr(self):
+ def getFr(self):
""" Retourne le fr de l'objet pointe par self """
try:
- return self.object.get_fr()
+ return self.object.getFr()
except:
return ""
- def get_docu(self):
+ def getDocu(self):
""" Retourne la cle de doc de l'objet pointe par self """
- return self.object.get_docu()
+ return self.object.getDocu()
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
""" Remplace la valeur de l'objet pointe par self par new_valeur """
- return self.object.set_valeur(new_valeur)
+ return self.object.setValeur(new_valeur)
- def GetText(self):
+ def getText(self):
return myrepr.repr(self.object)
- def GetIconName(self):
- if not self.IsExpandable():
+ def getIconName(self):
+ if not self.isExpandable():
return "python"
def IsEditable(self):
- return self.setfunction is not None
+ return self.setFunction is not None
def SetText(self, text):
try:
value = eval(text)
- self.setfunction(value)
+ self.setFunction(value)
except:
pass
# Modif de ma part CCar : je ne comprend pas a quoi ca sert
# else:
# self.object = value
- def IsExpandable(self):
+ def isExpandable(self):
return 1
- def GetSubList(self):
+ def getSubList(self):
keys = dir(self.object)
sublist = []
for key in keys:
value = getattr(self.object, key)
except AttributeError:
continue
- item = make_objecttreeitem(
+ item = makeObjecttreeitem(
self.appli,
str(key) + " =",
value,
sublist.append(item)
return sublist
- def wait_fichier_init(self):
+ # a piori inutile PN 06 11 17
+ #def wait_fichier_init(self):
""" Retourne 1 si l'object pointe par self attend un fichier d'initialisation
(ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
- return self.object.definition.fichier_ini
+ # return self.object.definition.fichier_ini
- def make_objecttreeitem(self,appli,labeltext, object, setfunction=None):
+ def makeObjecttreeitem(self,appli,labeltext, object, setFunction=None):
"""
Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet
de type item associe a l'object passe en argument.
"""
- return make_objecttreeitem(appli,labeltext,object,setfunction)
+ return makeObjecttreeitem(appli,labeltext,object,setFunction)
#def __del__(self):
# print "__del__",self
class AtomicObjectTreeItem(ObjectTreeItem):
- def IsExpandable(self):
+ def isExpandable(self):
return 0
class SequenceTreeItem(ObjectTreeItem):
- def IsExpandable(self):
+ def isExpandable(self):
return len(self._object) > 0
def __len__(self) :
def keys(self):
return list(range(len(self._object)))
- def GetIconName(self):
- if self._object.isvalid():
+ def getIconName(self):
+ if self._object.isValid():
return "ast-green-los"
- elif self._object.isoblig():
+ elif self._object.isOblig():
return "ast-red-los"
else:
return "ast-yel-los"
- def ajout_possible(self):
- return self._object.ajout_possible()
+ def ajoutPossible(self):
+ return self._object.ajoutPossible()
- def get_index(self,child):
+ def getIndex(self,child):
""" Retourne le numero de child dans la liste des enfants de self """
- return self._object.get_index(child.getObject())
+ return self._object.getIndex(child.getObject())
- def GetText(self):
+ def getText(self):
return " "
- def additem(self,obj,pos):
+ def addItem(self,obj,pos):
self._object.insert(pos,obj)
- item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj)
+ item = self.makeObjecttreeitem(self.appli, obj.nom + ":", obj)
return item
- def suppitem(self,item):
+ def suppItem(self,item):
try :
self._object.remove(item.getObject())
# la liste peut etre retournee vide !
message = "Mot-clef " + item.getObject().nom + " supprime"
- self.appli.affiche_infos(message)
+ self.appli.afficheInfos(message)
return 1
except:
return 0
- def GetSubList(self):
+ def getSubList(self):
isublist=iter(self.sublist)
liste=self._object.data
iliste=iter(liste)
for obj in iliste:
if obj is old_obj:break
# nouvel objet : on cree un nouvel item
- def setfunction(value, object=obj):
+ def setFunction(value, object=obj):
object=value
- it = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+ it = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
self.sublist.append(it)
if old_obj is None and obj is None:break
if old_obj is obj: self.sublist.append(item)
if format in generator.plugins :
# Le generateur existe on l'utilise
g=generator.plugins[format]()
- g.init_jdc(self.node.get_jdc())
+ g.initJdc(self.node.getJdc())
texte=g.gener(self.node)
else:
print ("Le generateur n'a pas ete trouve")
from six.moves import range
#
-__Id__="$Id: analyse_catalogue.py,v 1.9.8.1.2.1.2.6 2014-01-23 09:14:44 pnoyret Exp $"
+__Id__="$Id: analyseCatalogue.py,v 1.9.8.1.2.1.2.6 2014-01-23 09:14:44 pnoyret Exp $"
__version__="$Name: $"
#
l_noms_commandes = ['OPER','PROC','MACRO','FORM']
l_noms_simples=['SIMP',]
l_noms=l_noms_composes+l_noms_simples
-def elimine_commentaires(text):
+def elimineCommentaires(text):
""" Elimine les lignes de commentaires dans text
Attention : supprime sauvagement tous les caracteres entre # et le retour chariot ..."""
comments = re.compile(r'#[^\n]*')
return comments.sub(u'',text)
-def cherche_nom(text):
+def chercheNom(text):
Whitespace = r'[ \f\t]*'
Name = r'[a-zA-Z_]\w*'
myexpr = '(u'+Name+')'+Whitespace+'='+Whitespace+'$'
a=re.search(myexpr,text)
return a.group(1)
-def cherche_args(text):
+def chercheArgs(text):
text = text.strip()
longueur = len(text)
if text[0] != '(u':
return text[1:i],''
class ENTITE(object):
- def cherche_enfants(self):
+ def chercheEnfants(self):
try :
self.text = self.text.strip()
liste = re.split(u'=',self.text,1)
reste=liste[1]
reste = reste.strip()
if reste[0:4] in l_noms :
- nom_mc = cherche_nom(arg1+'=')
- arg_mc, self.text = cherche_args(reste[4:])
- self.cree_mc(nom_mc,arg_mc,reste[0:4])
+ nom_mc = chercheNom(arg1+'=')
+ arg_mc, self.text = chercheArgs(reste[4:])
+ self.creeMc(nom_mc,arg_mc,reste[0:4])
else :
self.text = reste
- self.cherche_enfants()
+ self.chercheEnfants()
else :
# pas de = rencontre
return
except Exception as e:
- self.cr.fatal(tr("Erreur rencontree dans recherche_enfants : %s", e.__str()))
+ self.cr.fatal(tr("Erreur rencontree dans rechercheEnfants : %s", e.__str()))
- def cree_mc(self,nom_mc,arg_mc,test):
+ def creeMc(self,nom_mc,arg_mc,test):
if test in l_noms_composes :
mc = FACT_CATA(nom_mc,arg_mc,self)
self.children.append(mc)
else :
print (tr("Erreur dans la creation du mot-cle : %s", nom_mc) )
- def construit_liste_dico(self):
+ def construitListeDico(self):
l=[]
d={}
if len(self.children)==0:
self.cr = CR()
self.cr.debut = "Debut commande %s" %self.nom
self.cr.fin = "Fin commande %s" %self.nom
- self.cherche_enfants()
- self.construit_liste_dico()
+ self.chercheEnfants()
+ self.construitListeDico()
parent.cr.add(self.cr)
def affiche(self):
self.cr = CR()
self.cr.debut = "Debut mot-cle facteur ou bloc %s" %self.nom
self.cr.fin = "Fin mot-cle facteur ou bloc %s" %self.nom
- self.cherche_enfants()
- self.construit_liste_dico()
+ self.chercheEnfants()
+ self.construitListeDico()
parent.cr.add(self.cr)
def affiche(self,ind):
self.cr = CR()
self.cr.debut = "Debut compte-rendu catalogue %s" %self.fichier
self.cr.fin = "Fin compte-rendu catalogue %s" %self.fichier
- self.ouvrir_fichier()
+ self.ouvrirFichier()
self.liste_commandes=[]
self.liste_textes_commandes=[]
- def ouvrir_fichier(self):
+ def ouvrirFichier(self):
try :
f=open(self.fichier,'r')
self.texte_complet=f.read()
print((tr("Impossible d'ouvrir le fichier : %s ", str(self.fichier))))
self.cr.fatal(tr("Impossible d'ouvrir le fichier : %s ", str(self.fichier)))
- def constr_list_txt_cmd(self,text):
- text = elimine_commentaires(text)
+ def constrListTxtCmd(self,text):
+ text = elimineCommentaires(text)
pattern = '\) *;'
liste=re.split(pattern,text)
for i in range(0,len(liste)-1):
self.liste_textes_commandes.append(liste[i]+')')
- def analyse_commande_old(self,text):
+ def analyseCommandeOld(self,text):
liste = re.split(u'OPER *\(u',text,1)
if len(liste) < 2 :
liste = re.split(u'PROC *\(u',text,1)
return
debut = liste[0]
fin = liste[1]
- nom_cmd = cherche_nom(debut)
+ nom_cmd = chercheNom(debut)
if nom_cmd == 'erreur !':
print((tr("Erreur dans la recherche du nom de la commande : "), debut))
- args_cmd,toto = cherche_args(u'(u'+fin)
+ args_cmd,toto = chercheArgs(u'(u'+fin)
if args_cmd == 'erreur !':
print((tr("Erreur dans la recherche des args de la commande :") , debut))
cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
self.liste_commandes.append(cmd)
- def analyse_commande(self,text):
+ def analyseCommande(self,text):
for nom_cmd in l_noms_commandes:
liste = re.split(nom_cmd+' *\(u',text,1)
if len(liste) == 2 : break
return
debut = liste[0]
fin = liste[1]
- nom_cmd = cherche_nom(debut)
+ nom_cmd = chercheNom(debut)
if nom_cmd == 'erreur !':
print(( tr("Erreur dans la recherche du nom de la commande : "), debut))
- args_cmd,toto = cherche_args(u'(u'+fin)
+ args_cmd,toto = chercheArgs(u'(u'+fin)
if args_cmd == 'erreur !':
print(( tr("Erreur dans la recherche des args de la commande : "), debut))
print((tr(fin)))
cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
self.liste_commandes.append(cmd)
- def analyse_texte(self,texte):
- self.constr_list_txt_cmd(texte)
+ def analyseTexte(self,texte):
+ self.constrListTxtCmd(texte)
try:
self.parent.configure_barre(len(self.liste_textes_commandes))
except:
self.parent.update_barre()
except:
pass
- self.analyse_commande(texte_commande)
- self.construit_liste_dico()
+ self.analyseCommande(texte_commande)
+ self.construitListeDico()
- def ecrit_lcmd(self):
+ def ecritLcmd(self):
f=open(u'U:\\EFICAS\\Accas\\cata.txt','w')
for cmd in self.liste_commandes :
f.write(cmd.affiche())
f.close()
- def construit_liste_dico(self):
+ def construitListeDico(self):
l=[]
d={}
for cmd in self.liste_commandes:
""" retourne l'objet rapport du catalogue de commande """
return self.cr
-def analyse_catalogue(parent,nom_cata):
+def analyseCatalogue(parent,nom_cata):
cata = CATALOGUE_CATA(parent,nom_cata)
- cata.analyse_texte(cata.texte_complet)
+ cata.analyseTexte(cata.texte_complet)
return cata
-def analyse_catalogue_commande(parent,nom_cata):
+def analyseCatalogueCommande(parent,nom_cata):
cata = CATALOGUE_CATA(parent,nom_cata)
- cata.analyse_commande(cata.texte_complet)
- cata.construit_liste_dico()
+ cata.analyseCommande(cata.texte_complet)
+ cata.construitListeDico()
return cata
-def make_cata_pickle(fic_cata):
+def makeCataPickle(fic_cata):
"""
Lance l'analyse de l'ordre des mots-cles dans le catalogue dont le nom
est passe en argument et sauvegarde ces infos dans le fichier pickle relu
par Eficas
"""
fic_cata_p = os.path.splitext(fic_cata)[0]+'_pickled.py'
- cata_ordonne = analyse_catalogue(None,fic_cata)
+ cata_ordonne = analyseCatalogue(None,fic_cata)
f = open(fic_cata_p,'w+')
p = six.moves.cPickle.Pickler(f)
p.dump(cata_ordonne.entites)
if __name__ == "__main__" :
import profile
- profile.run(u"analyse_catalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
+ profile.run(u"analyseCatalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
from Extensions.i18n import tr
#
-__Id__="$Id: analyse_catalogue_initial.py,v 1.2.4.1.2.2.2.4 2017-04-09 14:04:44 pnoyret Exp $"
+__Id__="$Id: analyseCatalogue_initial.py,v 1.2.4.1.2.2.2.4 2017-04-09 14:04:44 pnoyret Exp $"
__version__="$Name: V7_main $"
#
self.liste_commandes=[]
self.lignes=[]
self.fichier=fichier
- self.ouvrir_fichier()
- self.constr_list_txt_cmd()
+ self.ouvrirFichier()
+ self.constrListTxtCmd()
- def ouvrir_fichier(self):
+ def ouvrirFichier(self):
try :
f=open(self.fichier,'r')
self.lignes=f.readlines()
except :
print(tr("Impossible d'ouvrir le fichier : %s", str(self.fichier)))
- def constr_list_txt_cmd(self):
+ def constrListTxtCmd(self):
pattern = '^# Ordre Catalogue '
for i in self.lignes :
if (re.search(pattern,i)):
self.liste_commandes.append(i)
-def analyse_catalogue(nom_cata):
+def analyseCatalogue(nom_cata):
cata = Catalogue_initial(nom_cata)
return cata.liste_commandes
if __name__ == "__main__" :
monCata="/local/noyret/Install_Eficas/EficasQT4/Openturns_StudyOpenTURNS_Cata_Study_V4.py"
- analyse_catalogue(monCata)
+ analyseCatalogue(monCata)
from Accas import NUPL
-def traite_entiteNUPL(entite):
+def traiteEntiteNUPL(entite):
"""
Fonction speciale pour les nuplets (classe NUPL)
Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc
"""
entite.ordre_mc=[]
-def traite_entite(entite,liste_simp_reel):
+def traiteEntite(entite,liste_simp_reel):
"""
Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc
qui est une liste contenant le nom des sous entites dans l'ordre
l=[]
for k,v in list(entite.entites.items()):
if isinstance(v,NUPL):
- traite_entiteNUPL(v)
+ traiteEntiteNUPL(v)
else:
- traite_reel(v,liste_simp_reel)
- traite_entite(v,liste_simp_reel)
- traite_cache(v)
+ traiteReel(v,liste_simp_reel)
+ traiteEntite(v,liste_simp_reel)
+ traiteCache(v)
l.append((v._no,k))
l.sort()
entite.ordre_mc=[ item for index, item in l ]
-def traite_cache(objet):
+def traiteCache(objet):
if not hasattr(objet, "cache"): return
if objet.cache == 0 :return
clef=objet.nom
objet.pere.mcOblig={}
objet.pere.mcOblig[clef]=objet.defaut
-def traite_reel(objet,liste_simp_reel):
+def traiteReel(objet,liste_simp_reel):
if objet.__class__.__name__ == "SIMP":
if ( 'R' in objet.type):
if objet.nom not in liste_simp_reel :
liste_simp_reel.append(objet.nom)
-def analyse_niveau(cata_ordonne_dico,niveau,liste_simp_reel):
+def analyseNiveau(cata_ordonne_dico,niveau,liste_simp_reel):
"""
Analyse un niveau dans un catalogue de commandes
"""
if niveau.l_niveaux == ():
# Il n'y a pas de sous niveaux
for oper in niveau.entites:
- traite_entite(oper,liste_simp_reel)
+ traiteEntite(oper,liste_simp_reel)
cata_ordonne_dico[oper.nom]=oper
else:
for niv in niveau.l_niveaux:
- analyse_niveau(cata_ordonne_dico,niv)
+ analyseNiveau(cata_ordonne_dico,niv)
-def analyse_catalogue(cata):
+def analyseCatalogue(cata):
"""
Cette fonction analyse le catalogue cata pour construire avec l'aide
- de traite_entite la structure de donnees ordre_mc qui donne l'ordre
+ de traiteEntite la structure de donnees ordre_mc qui donne l'ordre
d'apparition des mots cles dans le catalogue
Elle retourne un dictionnaire qui contient toutes les commandes
du catalogue indexees par leur nom
if cata.JdC.l_niveaux == ():
# Il n'y a pas de niveaux
for oper in cata.JdC.commandes:
- traite_entite(oper,liste_simp_reel)
+ traiteEntite(oper,liste_simp_reel)
cata_ordonne_dico[oper.nom]=oper
else:
for niv in cata.JdC.l_niveaux:
- analyse_niveau(cata_ordonne_dico,niv,liste_simp_reel)
+ analyseNiveau(cata_ordonne_dico,niv,liste_simp_reel)
return cata_ordonne_dico,liste_simp_reel
if __name__ == "__main__" :
from Cata import cata_STA6
- dico=analyse_catalogue(cata_STA6)
+ dico=analyseCatalogue(cata_STA6)
#import cata_saturne
- #dico=analyse_catalogue(cata_saturne)
+ #dico=analyseCatalogue(cata_saturne)
def print_entite(entite,dec=' '):
print (dec,entite.nom,entite.__class__.__name__)
self.first.append(comment)
self.reglesUtilisees=[]
self.validatorsUtilises=[]
- self.constr_list_txt_cmd()
+ self.constrListTxtCmd()
self.ecrire_fichier()
except :
print(("Impossible d'ecrire le fichier : "+ str(self.fichier)))
- def constr_list_txt_cmd(self):
+ def constrListTxtCmd(self):
mesCommandes=self.cata.JdC.commandes
self.commandes=ET.SubElement(self.first,'commandes')
for maCommande in mesCommandes:
import readercata
monreadercata = readercata.READERCATA( parent, parent )
Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
+ monCata=monreadercata.cata
monCataXML=CatalogueXML(monCata,code)
import readercata
monreadercata = readercata.READERCATA( parent, parent )
Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
+ monCata=monreadercata.cata
monConstruitInto=ChercheInto(monCata,code)
import readercata
monreadercata = readercata.READERCATA( parent, parent )
Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
+ monCata=monreadercata.cata
monConstruitInto=ChercheInto(monCata,code)
- composants : dictionnaire de stockage des relations entre types
d'objet du noyau et types d'item
- - charger_composants() : fonction de chargement des composants. Retourne
+ - chargerComposants() : fonction de chargement des composants. Retourne
le dictionnaire composants.
- gettreeitem(object) -> type d'item : fonction qui retourne un type
d'item correspondant au type de l'objet noyau fourni.
- - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item
+ - makeObjecttreeitem(appli,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
correspondant a l'objet noyau fourni.
"""
# import generaux
import os,glob,types
# Dictionnaire {object : item} permettant d'associer un item a un object
-# Ce dictionnaire est renseigne par la methode charger_composants
+# Ce dictionnaire est renseigne par la methode chargerComposants
composants = {}
-def charger_composants(Ihm="QT"):
+def chargerComposants(Ihm="QT"):
"""
Cette fonction a pour but de charger tous les modules composants graphiques
(fichiers compo*.py dans le meme repertoire que ce module )
- et de remplir le dictionnaire composants utilise par make_objecttreeitem
+ et de remplir le dictionnaire composants utilise par makeObjecttreeitem
"""
reper=os.path.dirname(__file__)
- if Ihm == "TK" :
- repertoire=reper+"/../InterfaceTK"
- package="InterfaceTK"
- else :
- repertoire=reper+"/../InterfaceQT4"
- package="InterfaceQT4"
+ repertoire=reper+"/../InterfaceQT4"
+ package="InterfaceQT4"
listfich=glob.glob(os.path.join(repertoire, "compo*.py"))
for fichier in listfich:
m= os.path.basename(fichier)[:-3]
itemtype=composants[None]
return itemtype
-def make_objecttreeitem(appli,labeltext, object, setfunction=None):
+def makeObjecttreeitem(appli,labeltext, object, setFunction=None):
"""
Cette fonction permet de construire et de retourner un objet
de type item associe a l'object passe en argument.
"""
c = gettreeitem(object)
- #print appli,labeltext, object, setfunction
- return c(appli,labeltext, object, setfunction)
+ return c(appli,labeltext, object, setFunction)
self.sous_menu=sous_menus[code]
self.code=code
self.liste={}
- self.traite_liste()
+ self.traiteListe()
- def traite_liste(self):
+ def traiteListe(self):
if not (self.code in sous_menus) : return
if not (os.path.exists(self.rep_patrons)) : return
for file in os.listdir(self.rep_patrons):
Le deuxieme bb est un jeu de commandes simple.
Le troisieme est decrit dans le fichier ff de type .ini
-qui est parse par le module ConfigParser.
+qui est parse par le module Configparser.
Chaque section du fichier decrit un jeu de commandes.
Un include est specifie par: numero logique=nom du fichier
Une poursuite est specifiee par: poursuite=reference a un jeu de commande
# sont stockees hierarchiquement
#
-def check_comm(option, opt_str, value, parser):
+def checkComm(option, opt_str, value, parser):
if not hasattr(parser.values,"studies"):
parser.values.studies=[]
parser.values.comm=[]
parser.values.current=d_study
parser.values.studies.append(d_study)
-def check_poursuite(option, opt_str, value, parser):
+def checkPoursuite(option, opt_str, value, parser):
if parser.values.comm is None:
raise OptionValueError(tr("un fichier de commandes doit etre defini avant une poursuite %s", value))
if not os.path.isfile(value):
comm["pours"]=d_study
parser.values.current=d_study
-def check_include(option, opt_str, value, parser):
+def checkInclude(option, opt_str, value, parser):
try:
args=[int(parser.rargs[0]),parser.rargs[1]]
except:
comm[args[0]]=args[1]
-def check_jdc(config,jdc,parser,fich):
+def checkJdc(config,jdc,parser,fich):
"""
Fonction : analyse une section de fichier .ini pour en extraire
les informations sur les fichiers poursuite et includes
parser : objet analyseur de la ligne de commande
fich : nom du fichier .ini en cours d'analyse
- config : objet de la classe ConfigParser permettant de parser le fichier fich
+ config : objet de la classe Configparser permettant de parser le fichier fich
jdc : nom de la section du fichier fich a analyser
"""
d_study={}
de commandes %(v_2)s n'existe pas", \
{'v_1': fich, 'v_2': comm}))
- pours=check_jdc(config,p,parser,fich)
+ pours=checkJdc(config,p,parser,fich)
pours["comm"]=comm
d_study["pours"]=pours
continue
return d_study
-def check_fich(option, opt_str, fich, parser):
+def checkFich(option, opt_str, fich, parser):
"""
Fonction : parse le fichier fich (format .ini)
if not hasattr(parser.values,"studies"):
parser.values.studies=[]
parser.values.comm=[]
- config = six.moves.configparser.ConfigParser()
+ config = six.moves.configparser.configparser()
config.read([fich])
if not config.has_option(u"jdc","jdc"):
raise OptionValueError(tr(" jdc %s manque option jdc dans section jdc", str(fich)))
%(v_2)s n'existe pas", {'v_1': fich, 'v_2': comm}))
parser.values.comm.append(comm)
- d_study=check_jdc(config,jdc,parser,fich)
+ d_study=checkJdc(config,jdc,parser,fich)
d_study["comm"]=comm
parser.values.studies.append(d_study)
-def print_pours(d_pours,dec=''):
+def printPours(d_pours,dec=''):
# Les fichiers includes d'abord
for k,v in list(d_pours.items()):
if k in (u"pours","comm"):continue
if "pours" in d_pours:
# Description de la poursuite
print((tr("%(v_1)s fichier poursuite: %(v_2)s", {'v_1': dec, 'v_2': d_pours["pours"]["comm"]})))
- print_pours(d_pours["pours"],dec=dec+"++")
+ printPours(d_pours["pours"],dec=dec+"++")
-def print_d_env():
+def printDEnv():
if d_env.studies is None:return
for study in d_env.studies:
print((tr("nom etude : %s", study["comm"])))
- print_pours(study,dec="++")
+ printPours(study,dec="++")
-def create_parser():
+def createparser():
# creation du parser des options de la ligne de commande
#import prefs
parser=optparse.OptionParser(usage=tr("utilisation : %prog [options]"), version="%prog 1.13")
parser.add_option(u"-j","--jdc",dest="comm",type='string',
- action="callback",callback=check_comm,
+ action="callback",callback=checkComm,
help=tr("nom du fichier de commandes"))
parser.add_option(u"-p","--poursuite", type="string",dest="pours",
- action="callback", callback=check_poursuite,
+ action="callback", callback=checkPoursuite,
help=tr("nom du fichier poursuite"))
parser.add_option(u"-i","--include",
- action="callback", callback=check_include,
+ action="callback", callback=checkInclude,
nargs=2, help=tr("numero d'unite suivi du nom du fichier include"))
parser.add_option(u"-f","--fich", type="string",dest="fich",
- action="callback", callback=check_fich,
+ action="callback", callback=checkFich,
help=tr("fichier decrivant une etude"))
parser.add_option(u"-c","--cata", action="store", type="string",dest="cata",
help=tr("version de catalogue a utiliser"))
+ parser.add_option(u"-v","--version_cata", action="store", type="string",dest="version_cata",
+ help=tr("version de catalogue a utiliser"))
+
+
parser.add_option(u"-k","--kode", action="store", type="string",dest="code",
help=tr("nom du code a utiliser"))
return parser
def parse(args):
- parser=create_parser()
+ parser=createparser()
(options,args)=parser.parse_args(args[1:])
if not hasattr(options,"studies"):
options.studies=[]
global d_env
d_env=options
- #print_d_env()
+ #printDEnv()
return options
-def get_unit(d_study,appli):
+def getUnit(d_study,appli):
"""
Fonction : construit et retourne un dictionnaire contenant les informations
sur les fichiers poursuite et includes sous la forme adaptee
...]
d_study : dictionnaire de l'etude
- appli : objet application EFICAS (permet d'acceder aux services comme get_source)
+ appli : objet application EFICAS (permet d'acceder aux services comme getSource)
"""
- return get_dunit(d_study,appli)
+ return getDunit(d_study,appli)
-def get_dunit(d_unit,appli):
+def getDunit(d_unit,appli):
d={}
if 'pours' in d_unit:
# on a une poursuite
comm=d_unit["pours"]["comm"]
- g=get_dunit(d_unit["pours"],appli)
- text=appli.get_source(comm)
+ g=getDunit(d_unit["pours"],appli)
+ text=appli.getSource(comm)
d[None]=comm,text,g
for k,v in list(d_unit.items()):
if k in (u"pours","comm"): continue
- text=appli.get_source(v)
+ text=appli.getSource(v)
d[k]=v,text,d
return d
if type(self.groupes) != tuple:
self.groupes=(self.groupes,)
-def traite_commande(commande,niveau):
+def traiteCommande(commande,niveau):
"""
Cette fonction cree l'attribut UI de l'objet commande
a partir des informations contenues dans UIinfo
if not grp in niveau.dict_groupes: niveau.dict_groupes[grp]=[]
niveau.dict_groupes[grp].append(commande.nom)
-def traite_niveau(niveau):
+def traiteNiveau(niveau):
if niveau.l_niveaux == ():
# Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes
niveau.dict_groupes={}
for oper in niveau.entites:
- traite_commande(oper,niveau)
+ traiteCommande(oper,niveau)
# A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
# sans doublon
niveau.liste_groupes=list(niveau.dict_groupes.keys())
#print niveau.dict_groupes
else:
for niv in niveau.l_niveaux:
- traite_niveau(niv)
+ traiteNiveau(niv)
def traite_UIinfo(cata):
"""
# dans les attributs liste_groupes et dict_groupes
cata.JdC.dict_groupes={}
for commande in cata.JdC.commandes:
- traite_commande(commande,cata.JdC)
+ traiteCommande(commande,cata.JdC)
# A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
# sans doublon
cata.JdC.liste_groupes=list(cata.JdC.dict_groupes.keys())
else:
# Le catalogue de commandes contient des definitions de niveau
for niv in cata.JdC.l_niveaux:
- traite_niveau(niv)
+ traiteNiveau(niv)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import types
+
+# CONTEXT est accessible (__init__.py de Noyau)
+
+#import raw.efficas as efficas
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+# ds l init du SIMP il manque siValide et fenetreIhm
+
+from mapDesTypes import dictSIMPEficasXML, dictSIMPXMLEficas
+from mapDesTypes import dictFACTEficasXML, dictFACTXMLEficas
+from mapDesTypes import dictPROCEficasXML, dictPROCXMLEficas
+from mapDesTypes import dictOPEREficasXML, dictOPERXMLEficas
+from mapDesTypes import dictBLOCEficasXML, dictBLOCXMLEficas
+from mapDesTypes import dictPourCast, dictNomsDesTypes
+from mapDesTypes import listeParamDeTypeTypeAttendu, listeParamDeTypeStr, dictPourCast
+from mapDesTypes import listeParamTjsSequence, listeParamSelonType
+from mapDesTypes import Tuple
+
+
+from balises import *
+
+# -----------------
+class X_definition:
+# -----------------
+
+ def getCode(self):
+ if hasattr(self,'code') : return
+ obj=self
+ while ( not hasattr(obj,'code') ): obj=obj.pere
+ self.code = obj.code
+
+ #def genealogie(self,n):
+ # texte=self.nom
+ # obj=self
+ # j=1
+ # while ( hasattr(obj,'pere') ):
+ # texte=obj.pere.nom+'_'+texte
+ # obj=obj.pere
+ # j=j+1
+ # if j > n : return (True, 'T_'+texte)
+ # return (False, 'T_'+texte)
+
+ def definitNomDuTypePyxb(self):
+ self.aCreer = True
+ cata = CONTEXT.getCurrentCata()
+ nom='T_'+self.nom
+ if not (nom in cata.dictTypesXSD.keys()) :
+ cata.dictTypesXSD[nom] = [self,]
+ return nom
+ self.aCreer = False
+ if nom == 'T_Consigne' : return nom
+ listePossible=cata.dictTypesXSD[nom]
+ indice=0
+ while (indice < len(listePossible)) :
+ objAComparer=listePossible[indice]
+ if self.compare(objAComparer) : return objAComparer.nomDuTypePyxb
+ indice += 1
+ self.aCreer = True
+ cata.dictTypesXSD[nom].append(self)
+ nomAlter='T_'+self.nom+'_'+str(indice)
+ return nomAlter
+
+ # def existeDeja(self,nom):
+ # if nom in cata.dictTypesXSD.keys() :
+ # self.aCreer = False
+ # return cata.dictTypesXSD[nom]
+ # else :
+ # cata.dictTypesXSD[nom] = self
+ # return None
+
+# ----------------------------------------
+class X_definitionComposee (X_definition):
+# ----------------------------------------
+
+ def CreeTexteComplexeVenantDesFils(self):
+ texteComplexeVenantDesFils=""
+ for nom in self.ordre_mc:
+ mcFils = self.entites[nom]
+ mcFils.dumpXsd()
+ self.texteComplexe += mcFils.texteElt
+ self.texteSimple += mcFils.texteSimple
+ texteComplexeVenantDesFils += mcFils.texteComplexe
+ return texteComplexeVenantDesFils
+
+ def dumpXsd(self):
+ #print ('------------------------------------------------')
+ #print ('dumpXsd de ' , self.nom)
+
+ self.getCode()
+ self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ self.texteSimple = "" # on n ajoute pas de type simple
+
+ self.traduitMinMax()
+ # pour accepter les PROC et ...
+ #
+ if self.aCreer :
+ self.texteComplexe = debutTypeCompo.format(self.nomDuTypePyxb,self.minOccurs,self.maxOccurs)
+ texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
+ self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
+ self.texteComplexe += finTypeCompo
+ else :
+ self.texteComplexe = ""
+
+ minDsSequence=0
+ if hasattr(self, 'statut') and self.statut=='f' : minDsSequence=0
+ maxDsSequence=1
+ if self.label in ('BLOC', 'FACT'):
+ self.texteElt=eltCompoDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minDsSequence,maxDsSequence)
+ else :
+ self.texteElt=eltCompoDsSequenceSiProc.format(self.nom,self.code,self.nomDuTypePyxb)
+ #print (self.texteComplexe)
+ #print ('------------------------------------------------')
+
+ def traduitMinMax(self):
+ # ____________________
+ # valable pour bloc, proc et oper
+ self.minOccurs = 0
+ self.maxOccurs = 1
+
+ def compare(self,autreMC):
+ if self.label != autreMC.label : return False
+ for attr in ( 'regles', 'fr', 'defaut', 'min' ,'max', 'position' , 'docu' ) :
+ val1=getattr(self,attr)
+ val2=getattr(autreMC,attr)
+ if val1 != val2 : return False
+ for defFille in self.entites.keys():
+ if defFille not in autreMC.entites.keys() : return False
+ if not self.entites[defFille].compare(autreMC.entites[defFille]) : return False
+ return True
+
+# ---------------------------------
+class X_FACT (X_definitionComposee):
+#--------- ------------------------
+ def traduitMinMax(self):
+ if self.max == '**' or self.max == float('inf') : self.maxOccurs="unbounded"
+ else : self.maxOccurs = self.max
+ self.minOccurs = self.min
+ if self.statut =='f' : self.minOccurs=0
+
+# ---------------------------------
+class X_OPER (X_definitionComposee):
+# ---------------------------------
+ pass
+
+# ----------------------------------
+class X_PROC (X_definitionComposee):
+#-----------------------------------
+ pass
+
+#-----------------------------------
+class X_BLOC (X_definitionComposee):
+#-----------------------------------
+ def dumpXsd(self):
+ #print ('------------------------------------------------')
+ #print ('dumpXsd de ' , self.nom)
+
+ self.getCode()
+ self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ self.texteSimple = "" # on n ajoute pas de type simple
+
+ # Pour les blocs le minOccurs vaut 0 et le max 1
+ if self.aCreer :
+ self.texteComplexe = debutTypeSubst.format(self.nomDuTypePyxb)
+ texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
+ self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
+ self.texteComplexe += finTypeSubst
+ else :
+ self.texteComplexe = ""
+
+ self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1)
+
+ #print ('------------------------------------------------')
+
+ def compare(self,autreMC):
+ if self.label != autreMC.label : return False
+ for attr in ( 'condition', 'regles', ):
+ val1=getattr(self,attr)
+ val2=getattr(autreMC,attr)
+ if val1 != val2 : return False
+ for defFille in self.entites.keys():
+ if defFille not in autreMC.entites.keys() : return False
+ if not self.entites[defFille].compare(autreMC.entites[defFille]) : return False
+ return True
+
+
+#--------------------------------
+class X_SIMP (X_definition):
+#--------------------------------
+ def dumpXsd(self):
+ #print ('exploreObjet SIMP')
+ self.getCode()
+ self.aCreer = True
+
+ # --> homonymie on peut utiliser genealogie
+ #self.traduitMinMax()
+ #self.traduitValMinValMax()
+ self.nomDuTypeDeBase = self.traduitType()
+ self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ if self.aCreer == True :
+ if self.into != None:
+ self.texteSimple = debutTypeSimpleWithInto.format (self.nomDuTypePyxb, self.nomDuTypeDeBase)
+ for val in self.into :
+ self.texteSimple += typeSimpleWithInto.format(val)
+ self.texteSimple += finTypeSimpleWithInto
+ else :
+ self.texteSimple = typeSimple.format(self.nomDuTypePyxb, self.nomDuTypeDeBase)
+ else :
+ # le type existe deja
+ self.texteSimple=""
+ self.texteComplexe = ""
+
+ # on se sert des listes si maxOccurs est > 0
+ # a gerer dans le dump
+ if self.statut =='f' : minOccurs = 0
+ else : minOccurs = 1
+ self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
+
+
+ def traduitType(self):
+ # il faut traduire le min et le max
+ # il faut ajouter les regles
+ # il faut gerer les types tuple et fichier
+
+ if hasattr(self.type[0], 'label') and self.type[0].label == "Tuple" : return ('XXXXXXXX')
+ return dictNomsDesTypes[self.type[0]]
+
+ def traduitValMinValMax(self):
+ self.maxInclusive=self.val_max
+ self.minInclusive=self.val_min
+ if self.val_min == float('-inf') and val_max== float('inf') : return
+ print ('il faut affiner le type du SIMP ', self.nom)
+ if self.val_max == '**' or self.val_max == float('inf') : self.maxInclusive=None
+ else : self.maxInclusive = self.val_max
+ if self.val_min == '**' or self.val_max == float('-inf') : self.maxInclusive=None
+ else : self.minInclusive = self.val_min
+
+ def traduitMinMax(self):
+ if self.min == 1 and self.max == 1 : return
+ print ('il faut creer une liste ' , self.nom)
+
+ def compare(self,autreMC):
+ if self.label != autreMC.label : return False
+ for attr in ( 'type', 'ang', 'fr', 'into', 'intoSug' , 'siValide', 'defaut', 'min' ,'max' ,'homo' ,'position' ,'val_min' , 'val_max' , 'docu' , 'validators' , 'sug' ) :
+ val1=getattr(self,attr)
+ val2=getattr(autreMC,attr)
+ if val1 != val2 : return False
+ return True
+
+#-----------------
+class X_JDC_CATA :
+#-----------------
+
+ def dumpXsd(self):
+
+ self.texteSimple = ""
+ self.texteComplexe = ""
+ self.nomDuTypePyxb='T_'+self.code
+ self.texteCata = debutTypeCata.format(self.nomDuTypePyxb)
+ for commande in self.commandes :
+ commande.code=self.code
+ commande.dumpXsd()
+ self.texteSimple += commande.texteSimple
+ self.texteSimple += commande.texteComplexe
+ self.texteCata += commande.texteElt
+ self.texteCata += finTypeCata
+ self.texteElt=eltCata.format(self.code,self.code, self.nomDuTypePyxb)
+
+ self.texteXSD = texteDebut.format(self.code,self.code,self.code)
+ self.texteXSD += self.texteSimple
+ self.texteXSD += self.texteCata
+ self.texteXSD += self.texteElt
+ self.texteXSD += texteFin
+ #print (self.texteSimple)
+ #print (self.texteCata)
+ #print (self.texteElt)
+ print (self.texteXSD)
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+# Installation de tous les fichiers Python du repertoire et des sous-repertoires (sauf CVS)
+install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
+ FILES_MATCHING PATTERN *.py
+ PATTERN CVS EXCLUDE
+ )
+
+
+### Local Variables:
+### mode: cmake
+### End:
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import traceback
+#import raw.efficas as efficas
+import types
+
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+import pyxb
+import pyxb.binding
+import pyxb.binding.basis
+#import pyxb.utils.utility
+#import pyxb.utils.domutils
+
+class X_OBJECT:
+# -------------
+
+ def deletePyxbObject(self):
+ print ('----------- deletePyxbObject', self.nom)
+ return
+ indice = 0
+ trouve = False
+ for i in self.perePyxb.objPyxb.orderedContent():
+ if id(self.objPyxb) == id(i._Content__value) : trouve = True ;break
+ indice = indice + 1
+ if not trouve : print ('objet pas trouve')
+ print (self.perePyxb.objPyxb.description)
+ del self.perePyxb.objPyxb.__dict__[self.nom]
+ print (self.perePyxb.objPyxb.__delattr__)
+ #delattr(self.perePyxb.objPyxb,self.nom)
+ # PNPN
+
+ print ('delattr', self.perePyxb.objPyxb,self.nom)
+ del self.perePyxb.objPyxb.orderedContent()[indice]
+
+
+class X_MCSIMP(X_OBJECT):
+# -----------------------
+
+ def buildObjPyxb(self) :
+ # self.valeur tient compte de la valeur par defaut
+ # utiliser getValeur ? expression numpy
+ if not self.cata or not self.cata.modeleMetier : return
+ #print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
+ #if self.nom == 'diameter' :
+ # traceback.print_stack()
+ # print ('****************************************************')
+ # print ('objPyxbDeConstruction', self.objPyxbDeConstruction)
+ #if self.objPyxbDeConstruction == None : print (self.nom, ' pas de pyxb')
+ if self.objPyxbDeConstruction != None :
+ self.objPyxb = self.objPyxbDeConstruction
+ self.maClasseModeleMetier =type(self.objPyxb)
+ #print (self.maClasseModeleMetier)
+ self.objPyxbDeConstruction = None
+ else :
+ self.monNomClasseModeleMetier='T_'+self.nom
+ self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ #print (self.maClasseModeleMetier)
+ #print (self.valeur)
+ #print (type(self.valeur))
+ if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
+ elif self.definition.into != None and 'TXM' in self.definition.type : self.objPyxb = None
+ else : self.objPyxb=self.maClasseModeleMetier();
+ self.filsPyxb=None
+ #print ('X_MCSIMP', self.nom, self.objPyxb)
+ #print ('fin X_MCSIMP', self.objPyxb, self.nom,self)
+
+
+ def setValeurObjPyxb(self,newVal):
+ print ('dans setValeurObjPyxb MCSIMP')
+ if not self.cata or not self.cata.modeleMetier : return
+ # 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()
+ self.val=newVal
+ setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+ print ('setattr', self.perePyxb.objPyxb,self.nom)
+ trouve=False
+ indice=0
+ for i in self.perePyxb.objPyxb.orderedContent():
+ if isinstance(i._Content__value, self.maClasseModeleMetier) :
+ self.perePyxb.objPyxb.orderedContent()[indice]=self.perePyxb.objPyxb.orderedContent()[-1]
+ del(self.perePyxb.objPyxb.orderedContent()[-1])
+ trouve=True
+ break
+ indice+=1
+ if not trouve : print ('Attention souci au changement de valeur de ', self.nom)
+ self.objPyxb=nvlObj
+ print ('iiiiiiiiiiiiiiiiiiiiiiiiiiiiii', nvlObj, id(nvlObj))
+ #for i in self.perePyxb.objPyxb.orderedContent():
+ # print ('ds le for pour i')
+ # print (i._Content__value)
+ # print (id(i._Content__value))
+ # print (type((i._Content__value)))
+ # if id(i._Content__value) == id(self.objPyxb) : break
+ # indexOC +=1
+
+ #maValeur = getattr(self.perePyxb.objPyxb, self.nom)
+ #print ('je change', indexOC)
+ #if isinstance(maValeur, pyxb.binding.basis.simpleTypeDefinition):
+ #if 1 :
+ # print ('jkjkljkljklj')
+ # setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+ # self.perePyxb.objPyxb.orderedContent()[indexOC]=self.perePyxb.objPyxb.orderedContent()[-1]
+ # del(self.perePyxb.objPyxb.orderedContent()[-1])
+ #print ('apres',self.nom, self.perePyxb.objPyxb.orderedContent())
+ #else :
+ # index=0
+ # trouve=False
+ # try :
+ # for i in maValeur:
+ # if id(i) == id(self.objPyxb) :trouve = True ; break
+ # index=index+1
+ # maValeur[index]=nvlObj
+ # self.perePyxb.objPyxb.orderedContent()[indexOC]._Content__value=nvlObj
+ # except : pass
+ # if not trouve : print (self.nom , 'pas trouve')
+
+ #print ('arret programme'); exit()
+
+ #print ('id objPyxb',id(self.objPyxb))
+ #print ('id objPyxb[0]',id(self.objPyxb[0]))
+ #print ('id elt ', id(self.objPyxb._element), self.objPyxb._element, type(self.objPyxb._element), type(self.objPyxb._element()))
+ #print (' perePyxb _ElementMap')
+ #print (self.perePyxb.objPyxb._ElementMap)
+ #index=0
+ #for i in self.perePyxb.objPyxb._ElementMap.keys() :
+ # print (id(i), ' ', id(self.perePyxb.objPyxb._ElementMap[i]))
+ #print (dir(self.perePyxb.objPyxb._ElementMap[i]))
+ # print (id(self.perePyxb.objPyxb._ElementMap[i]))
+# index=index+1
+ #print (' objPyxb monBinding id')
+ #monBinding = getattr(self.perePyxb.objPyxb, self.nom)
+ #for i in monBinding : print id(i)
+ #print (' perePyxb orderedContent')
+ #for i in self.perePyxb.objPyxb.orderedContent():
+ # print id(i._Content__value)
+ # print (i._Content__value, type(i._Content__value))
+ #print (' perePyxb orderedContent')
+ #for i in self.perePyxb.objPyxb.content(): print id(i)
+
+ #print (self.perePyxb.objPyxb.orderedContent())
+ #print (monBinding)
+
+
+ def addPyxbObject(self, indiceDsLeContenu):
+ if not self.cata or not self.cata.modeleMetier : return
+
+ # adherence Accas sur le parent
+ parent=self.parent
+ while (parent.isBLOC() ): parent=parent.parent
+ self.perePyxb=parent
+
+ self.monNomClasseModeleMetier='T_'+self.nom
+ self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ nvlObj=self.maClasseModeleMetier()
+ print ('setattr', self.perePyxb.objPyxb,self.nom)
+ setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+ tampon=self.perePyxb.objPyxb.orderedContent()[-1]
+ self.objPyxb = nvlObj
+ indexOC=-1
+ longueur=len(self.perePyxb.objPyxb.orderedContent())
+ for i in reversed(range(longueur)):
+ self.perePyxb.objPyxb.orderedContent()[i]=self.perePyxb.objPyxb.orderedContent()[i-1]
+ if i == indiceDsLeContenu + 1 : break
+ self.perePyxb.objPyxb.orderedContent()[indiceDsLeContenu]=tampon
+
+
+ #for i in self.perePyxb.objPyxb.orderedContent() :
+ # print (i._Content__value, type(i._Content__value))
+ #print ('----------------')
+
+ #print self.perePyxb.objPyxb.orderedContent()
+ #for i in self.perePyxb.objPyxb.orderedContent():
+ # print ('valeur de ', i)
+ # print (i._Content__value)
+ # print (type(i._Content__value))
+ # if isinstance(i._Content__value, self.maClasseModeleMetier) :
+ # print dir(i._Content__value)
+ # self.objPyxb = i._Content__value
+ # setattr(self.perePyxb.objPyxb, self.nom, nvlObj)
+ # self.perePyxb.objPyxb.orderedContent()[indexOC]=self.perePyxb.objPyxb.orderedContent()[-1]
+ # del(self.perePyxb.objPyxb.orderedContent()[-1])
+ # indexOC+=1
+ #PNPNPNPNPNPNPNPNP
+
+class X_MCCOMPO(X_OBJECT) :
+# -------------------------
+#
+ def buildObjPyxb(self,mc_list) :
+ #print ('________________________________________________')
+ #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
+ if not self.cata or not self.cata.modeleMetier : return
+
+ self.listArg=[]
+ for objAccas in mc_list :
+ if objAccas.nature == 'MCBLOC' :
+ self.exploreBLOC(objAccas)
+ elif objAccas.nature == 'MCList' :
+ for fils in objAccas :
+ fils.perePyxb=self
+ self.listArg.append(fils.objPyxb)
+ else :
+ self.listArg.append(objAccas.objPyxb)
+ objAccas.perePyxb=self
+ print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+
+ self.monNomClasseModeleMetier='T_'+self.nom
+ self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ if self.objPyxbDeConstruction != None :
+ self.objPyxb = self.objPyxbDeConstruction
+ self.objPyxbDeConstruction = None
+ #print ('je passe dans le if pour ', self.nom, self.objPyxb, self)
+ else :
+ self.objPyxb=self.maClasseModeleMetier(*self.listArg)
+ #print ('Fin __________ ', self.nom, self.objPyxb)
+ #print ('X_MCCOMPO', self.nom, self.objPyxb)
+ #print ('_______________________________________')
+
+ def deletePyxbObject(self):
+ print ('******************************************')
+ print ('je passe ds deletePyxbObject pour ', self, self.nom)
+ print (self.perePyxb)
+ print (dir(self))
+ print ('******************************************')
+
+ def exploreBLOC(self,objAccas):
+ laListeSsLesBlocs=[]
+ for fils in objAccas.mcListe:
+ if fils.nature == 'MCBLOC' :
+ self.exploreBLOC(fils)
+ elif fils.nature == 'MCList' :
+ for objFils in fils :
+ fils.perePyxb=self
+ self.listArg.append(fils.objPyxb)
+ #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+ else :
+ self.listArg.append(fils.objPyxb)
+ fils.perePyxb=self
+ #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+
+
+
+
+class X_MCBLOC (X_MCCOMPO):
+# --------------------------
+ def buildObjPyxb(self,mc_list):
+ if not self.cata or not self.cata.modeleMetier : return
+ # mise a none ? le bloc n a pas d existence en pyxb
+ self.perePyxb=None
+ #print ('_______________________________________')
+ #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list)
+ # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc
+ # Pas sur d en avoir besoin du filsPyxb
+ self.filsPyxb=[]
+ self.objPyxb=None
+ for objAccas in mc_list :
+ self.filsPyxb.append(objAccas.objPyxb)
+ #print (self.filsPyxb)
+ #print ('Fin ', self.nom, self.objPyxb)
+ #print ('_______________________________________')
+
+
+
+
+class X_MCLIST (X_MCCOMPO):
+# --------------------------
+
+ def buildObjPyxb(self,mc_list):
+ #print ('__________________________________________________________________')
+ #print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+ #print ('on ne fait rien pour les MCLISTs, cela sera fait dans chaque MCFACT')
+ #print ('__________________________________________________________________')
+ pass
+
+ # detruire la methode suivante
+ #def build2ObjPyxb(self,mc_list):
+ # print ('_______________________________________')
+ # print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+ # if not self.cata.modeleMetier : return
+ # self.monNomClasseModeleMetier='T_'+self.nom
+ # self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ # listArg=[]
+ # MCList est une liste
+ # for nbDeSequence in self :
+ # for objAccas in nbDeSequence.mcListe :
+ #print (type (objAccas))
+ #print (objAccas.nom, objAccas.objPyxb, type(objAccas.objPyxb))
+ #print ( type (objAccas.objPyxb) == list )
+ #if type (objAccas.objPyxb) == list :
+ #print ('ds le if')
+ # for fils in objAccas.objPyxb :
+ # listArg.append(fils.objPyxb)
+ # fils.perePyxb=self
+ #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+ # else :
+ # listArg.append(objAccas.objPyxb)
+ # objAccas.perePyxb=self
+ #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+ #listArg.append(objAccas.objPyxb)
+ #objAccas.perePyxb=self
+ #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom)
+
+ # print ('X_MCLIST', self.nom, self, listArg)
+ # self.objPyxb=self.maClasseModeleMetier(*listArg)
+ # print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb)
+ # print ('_______________________________________')
+
+class X_MCFACT (X_MCCOMPO):
+# -------------------------
+# on gere au niveau du MCCOMPO
+ pass
+
+
+class X_JDC (X_MCCOMPO):
+# ---------------------
+
+ def __init__(self):
+ #print ('_______________________________________')
+ #print ('X_JDC buildObjPyxb', self)
+ if not self.cata or not self.cata.modeleMetier : return
+ self.monNomClasseModeleMetier=self.code
+ self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ self.objPyxb=self.maClasseModeleMetier()
+ pyxb.GlobalValidationConfig._setContentInfluencesGeneration(pyxb.GlobalValidationConfig.ALWAYS)
+ pyxb.GlobalValidationConfig._setInvalidElementInContent(pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+ pyxb.GlobalValidationConfig._setOrphanElementInContent(pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+ #print ('fin buildObjPyxb _______________________________________')
+
+ def enregistreEtapePyxb(self,etape):
+ # OK seulement si sequence (choice ? ...)
+ if not self.cata.modeleMetier : return
+ print ('enregistreEtapePyxb' , etape)
+ self.objPyxb.append(etape.objPyxb)
+ etape.perePyxb = self
+ #self.toXml()
+
+ def toXml(self):
+ if not self.cata.modeleMetier : return
+ print ('***************',self.objPyxb,'***************',)
+ print ('***************',self.objPyxb.orderedContent(),'***************',)
+ print(self.objPyxb.toDOM().toprettyxml())
+ print(self.objPyxb.toxml())
+ return (self.objPyxb.toDOM().toprettyxml())
+
+
+ def analyseFromXML(self):
+ print ("je suis ds analyseFromXML -- > appel ds analyse de I_JDC.py")
+ if self.procedure == "" : return
+ self.objPyxb=self.cata.modeleMetier.CreateFromDocument(self.procedure)
+ for objEtape in self.objPyxb.content():
+ objEtape.dictArgs= (self.pyxbToDict(objEtape))
+ objEtape.monNomClasseAccas=objEtape._ExpandedName.localName()
+ objEtape.monNomClasseAccas=objEtape.monNomClasseAccas[2:]
+ objEtape.dictPyxb['objEnPyxb']=objEtape
+ objEtape.dictArgs['dicoPyxbDeConstruction']=objEtape.dictPyxb
+ maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas)
+ objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
+ # attention objAccasEtape = None normal (cf buildSd)
+
+ #print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
+ #print (objEtape , type(objEtape))
+ #print (objEtape.dictPyxb)
+ #print (maClasseAccas)
+ #print (objAccasEtape)
+
+ #print (objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas))
+ #print (objEtape._ExpandedName, type(objEtape._ExpandedName))
+ #print (objEtape.dictPyxb[u'experience'])
+ #print (objEtape.dictArgs)
+ #print (objEtape.dictPyxb)
+ #print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
+ #exit()
+
+
+ def pyxbToDict(self,objAAnalyser):
+ # la transformation de l objAAnalyser en type lu par eficas ne fonctionne pas pour tout
+ # faudrait - il travailler sur les types des objets ?
+ # c est a revoir -> fonction cast a prevoir ds les 2 sens
+ if objAAnalyser is None: return
+ #print ('debut pour ',objAAnalyser)
+ dictArgs = {}
+ if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition):
+ objAAnalyser.dictPyxb=objAAnalyser
+ #print (objAAnalyser.dictPyxb , type(objAAnalyser.dictPyxb))
+ if isinstance(objAAnalyser, pyxb.binding.basis.enumeration_mixin): return str(objAAnalyser)
+ if isinstance(objAAnalyser, types.StringTypes): return str(objAAnalyser)
+ if isinstance(objAAnalyser, types.FloatType): return float(objAAnalyser)
+ if isinstance(objAAnalyser, (types.IntType, types.LongType)): return int(objAAnalyser)
+ #if isinstance(objAAnalyser, (types.NoneType, types.BooleanType, types.FloatType, types.IntType, types.LongType)):
+ return repr(objAAnalyser)
+ # ou ? return objAAnalyser
+ #if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,)
+ #pour une enum getattr(value dans le type)
+ # return pythonLiteral(ReferenceFacet(facet=value, **kw))
+ objAAnalyser.dictPyxb = {}
+ for expandedName, elementDeclaration in objAAnalyser._ElementMap.items():
+ objPyxbName = expandedName.localName()
+ objPyxbValue = getattr(objAAnalyser, objPyxbName)
+ if objPyxbValue == None or objPyxbValue == [] : continue
+ if elementDeclaration.isPlural():
+ dictArgs[objPyxbName] = []
+ #objAAnalyser.dictPyxb[objPyxbName]={}
+ objAAnalyser.dictPyxb[objPyxbName]=[]
+ #objAAnalyser.dictPyxb['objEnPyxb']=objAAnalyser
+ for objPyxb in objPyxbValue :
+ #print ('-------------',objPyxb)
+ dictArgs[objPyxbName].append(self.pyxbToDict(objPyxb))
+ objPyxb.dictPyxb['objEnPyxb'] = objPyxb
+ objAAnalyser.dictPyxb[objPyxbName].append(objPyxb.dictPyxb)
+ else:
+ dictArgs[objPyxbName] = self.pyxbToDict(getattr(objAAnalyser, objPyxbName))
+ #print ('ajout ds dico de ', objAAnalyser , 'de', objPyxbName, objPyxbValue)
+ objAAnalyser.dictPyxb[objPyxbName] = objPyxbValue.dictPyxb
+ #print ('ajout ds dico de ', objPyxbValue.dictPyxb, 'de', objPyxbName)
+ objAAnalyser.dictPyxb['objEnPyxb']=objAAnalyser
+ #print ("***********************************")
+ #print ('pyxbToDict fin pour ********** ', objAAnalyser)
+ #print ('pyxbToDict ', objAAnalyser, objAAnalyser.dictPyxb)
+ #print ('pyxbToDict fin pour ********** ', objAAnalyser)
+ #print ("***********************************")
+ #print (dictArgs)
+ #print (dictPyxb)
+ #for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i]))
+ #print ('fin pour ',objAAnalyser)
+ return dictArgs
+
+
+# def analyseContent(self,objAAnalyser):
+# objAAnalyser.dictArgs={}
+# for objContenu in objAAnalyser.content():
+# #print ('j analyse ', objContenu)
+# objContenu.monNomClasseModeleMetier=str(objContenu.__class__).split('.')[-1]
+# objContenu.monNomClasseAccas=objContenu.monNomClasseModeleMetier[2:-2]
+# #maClasseAccas=classeAccasPere.entites[objContenu.monNomClasseAccas]
+# if objContenu._IsSimpleTypeContent():
+# print (objContenu.monNomClasseAccas,objContenu.pythonLiteral())
+# print (objContenu.monNomClasseAccas,objContenu.xsdLiteral())
+# #chaine=objContenu.pythonLiteral().split('(')[1].split(')')[0]
+# print (dir(objContenu))
+# objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=None
+# #objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=objContenu.pythonLiteral()
+# else :
+# self.analyseContent(objContenu)
+# objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=objContenu.dictArgs
+ #print ( '________________')
+ #print (objAAnalyser.monNomClasseAccas)
+ #for i in objAAnalyser.dictArgs : print (i, objAAnalyser.dictArgs[i])
+ #print ( '________________')
+
+
+
+if __name__ == "__main__":
+ print ('a faire')
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <!--<xs:import schemaLocation="./Model Efficas (1.1) v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+ <xs:override schemaLocation="./Model Efficas (1.1) v6.xsd">\r
+ <xs:attribute name="attribut" type="AT_attribut"/>\r
+ <xs:simpleType name="AT_attribut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+\r
+<!-- <xs:complexType name="essai">\r
+ <xs:sequence>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="attribut" default="n"/>\r
+ </xs:complexType>\r
+--> \r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ <xs:attribute name="attribut" default="n">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+ <!-- <xs:attribute default="n" ref="attribut"/>-->\r
+ <!-- <xs:attribute default="n" name="attribut" type="AT_attribut" />-->\r
+ </xs:complexType>\r
+ </xs:override>\r
+ </xs:schema>\r
+
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <xs:element name="doc" type="T_doc"/>\r
+ <xs:element name="cata" type="T_cata"/>\r
+ <xs:element name="regles" type="T_regles"/>\r
+ <xs:element name="typeCree" type="T_classe_utilisateur"/>\r
+ <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+ <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+ <xs:element name="fonction_utilisateur" type="T_fonction_python"/>\r
+ <xs:element name="commandes" type="T_commandes">\r
+ <!-- La contrainte suivante fonctionne -->\r
+ <xs:unique name="Uniq_Command">\r
+ <xs:selector xpath="*"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:element name="validators" type="T_validators"/>\r
+ <xs:element name="plageValeur" type="T_plageValeur"/>\r
+ <xs:element name="typeAttendu" type="T_name"/>\r
+ <xs:element name="classeUtilisateurName" type="T_classe_utilisateur_username" abstract="true" substitutionGroup="typeAttendu"/>\r
+ <xs:element name="SIMP" type="T_SIMP"/>\r
+ <xs:element name="portee" type="T_portee" default="None"/>\r
+ <xs:element name="condition" type="T_fonction_python"/>\r
+ <xs:element name="borne_sup" type="T_typeAttendu"/>\r
+ <xs:element name="borne_inf" type="T_typeAttendu"/>\r
+ <!-- <xs:element name="into" type="T_into"/>-->\r
+ <xs:element name="into" type="T_into"/>\r
+ <!-- <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+ <xs:attribute name="nom" type="AT_nom"/>\r
+ <xs:attribute name="ag" type="AT_ag"/>\r
+ <xs:attribute name="fr" type="xs:string"/>\r
+ <xs:attribute name="ang" type="xs:string"/>\r
+ <xs:attribute name="docu" type="AT_docu"/>\r
+ <xs:attribute name="valeur_sugg" type="AT_valeur_sugg"/>\r
+ <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+ <xs:attribute name="max_occurs" type="AT_max_occurs"/>\r
+ <xs:attribute name="min_occurs" type="AT_min_occurs"/>\r
+ <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+ <xs:complexType name="T_doc">\r
+ <xs:attribute ref="fr" use="optional"/>\r
+ <xs:attribute ref="ang"/>\r
+ <xs:attribute ref="docu"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_cata">\r
+ <xs:sequence>\r
+ <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_commandes">\r
+ <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+ <xs:element ref="OPER"/>\r
+ <xs:element ref="PROC"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_Cardinalite"/>\r
+ <xs:complexType name="T_plageValeur">\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element ref="borne_sup" minOccurs="0"/>\r
+ <xs:element ref="borne_inf" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:element ref="into"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:complexType>\r
+ <xs:element name="OPER" type="T_OPER">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC -->\r
+ <xs:key name="Key_Name_In_Oper">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ \r
+ <xs:complexType name="T_OPER">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="typeCree"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="PROC" type="T_PROC">\r
+ <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+ <xs:key name="Key_Name_In_Proc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_PROC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="FACT" type="T_FACT">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT -->\r
+ <xs:key name="Key_Name_In_Fact">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <!-- Définition par restriction -->\r
+ <!-- <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>-->\r
+ <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:attribute ref="statut"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:extension>\r
+ <!-- <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs gt @efficas:min_occurs]"/>\r
+-->\r
+ <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs > min_occurs "/>-->\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_fonction_python">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:element name="BLOC" type="T_BLOC">\r
+ <xs:key name="Key_Name_In_Bloc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <xs:complexType name="T_BLOC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="condition"/>\r
+ </xs:sequence>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:simpleType name="AT_statut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="f"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!--<xs:simpleType name="T_repetable">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>-->\r
+ <xs:simpleType name="T_portee">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="None"/>\r
+ <xs:enumeration value="Global"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_max_occurs">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minInclusive value="-1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_min_occurs">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minExclusive value="0"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Comparable -->\r
+ <!-- <xs:simpleType name="AT_borne_sup">\r
+ <xs:atomic base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_borne_inf">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_ag">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="No comment"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_docu">\r
+ <xs:annotation>\r
+ <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_valeur_sugg">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <!-- TODO: Exclure mots clés python|efficas -->\r
+ <xs:simpleType name="AT_nom">\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_predicat1">\r
+ <xs:list itemType="AT_nom"/>\r
+ <!-- TODO: Supprimer la liste -->\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_predicat2">\r
+ <xs:sequence>\r
+ <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+ <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+ </xs:sequence>\r
+ <!-- TODO: Supprimer la séquence -->\r
+ </xs:complexType>\r
+ <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+ <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+ <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+ <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+ <xs:element name="EXCLUS" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+ <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+ <xs:group name="predicat">\r
+ <xs:choice>\r
+ <xs:element ref="A_CLASSER"/>\r
+ <xs:element ref="AU_MOINS_UN"/>\r
+ <xs:element ref="AU_PLUS_UN"/>\r
+ <xs:element ref="ENSEMBLE"/>\r
+ <xs:element ref="EXCLUS"/>\r
+ <xs:element ref="PRESENT_ABSENT"/>\r
+ <xs:element ref="PRESENT_PRESENT"/>\r
+ <xs:element ref="UN_PARMI"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+ <xs:complexType name="T_regles">\r
+ <xs:sequence maxOccurs="unbounded">\r
+ <xs:group ref="predicat"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- <xs:simpleType name="T_typeCree">\r
+ <xs:restriction base="T_classe_utilisateur"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_subroutine">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_validators">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="NoRepeat"/>\r
+ <xs:enumeration value="OnlyStr"/>\r
+ <xs:enumeration value="VerifExiste"/>\r
+ <xs:enumeration value="VerifTypeTuple"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_Bool">\r
+ <xs:restriction base="xs:boolean"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_Bool">\r
+ <xs:list itemType="T_Bool"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_I">\r
+ <xs:restriction base="xs:int"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_I">\r
+ <xs:list itemType="T_I"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_R">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_R">\r
+ <xs:list itemType="T_R"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_TXM">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_TXM">\r
+ <xs:list itemType="T_TXM"/>\r
+ </xs:simpleType>\r
+ <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+ <xs:simpleType name="T_C">\r
+ <xs:restriction>\r
+ <xs:simpleType>\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:minLength value="2"/>\r
+ <xs:maxLength value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Ajouter une contrainte : taille pair -->\r
+ <!-- Il n'est pas possible de définir des listes de listes -->\r
+ <xs:simpleType name="T_list_C">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_name_base">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple_name">\r
+ <xs:restriction base="T_name_base">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- On ne peut pas rendre abstrait un simpleType && \r
+ Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+ lui peut être abstrait.\r
+ -->\r
+ <xs:simpleType name="T_classe_utilisateur_name">\r
+ <xs:restriction base="T_name">\r
+ <xs:enumeration value="T_classe_utilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_classe_utilisateur_username">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_classe_utilisateur_name">\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_name">\r
+ <xs:union memberTypes="T_simple_name">\r
+ <xs:simpleType>\r
+ <xs:restriction base="AT_nom">\r
+ <xs:enumeration value="T_Matrice_double"/>\r
+ <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
+ <xs:enumeration value="T_tuple"/>\r
+ <xs:enumeration value="T_classe_utilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:union>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_grma"/>\r
+ <xs:complexType name="T_grno"/>\r
+ <xs:complexType name="T_SalomeEntry"/>\r
+ <xs:complexType name="T_Fichier"/>\r
+ <!-- <xs:complexType name="T_Repertoire"/>-->\r
+ <xs:simpleType name="T_Repertoire">\r
+ <xs:list>\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:whiteSpace value="preserve"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:list>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple">\r
+ <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="T_TXM"/>-->\r
+ <!-- <xs:simpleType name="T_simple">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="T_list_double">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <!-- Possibilité d'utiliser un type paramétré ? -->\r
+ <xs:complexType name="T_Matrice_double">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_double">\r
+ <xs:attribute name="n" type="xs:integer" use="required"/>\r
+ <xs:attribute name="m" type="xs:integer" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
+ <xs:complexType name="T_Matrice_Symetrique_double">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_double">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Une liste est aussi un type simple ! -->\r
+ <!-- <xs:simpleType name="T_list_anySimpleType">\r
+ <xs:list itemType="xs:anySimpleType"/>\r
+ </xs:simpleType>\r
+-->\r
+ <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+ <xs:complexType name="T_tuple">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anySimpleType">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_classe_utilisateur">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:element name="typesimple" type="T_simple"/>\r
+ <xs:element name="matrice_double" type="T_Matrice_double"/>\r
+ <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
+ <xs:element name="tuple" type="T_tuple"/>\r
+ <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
+ <!-- Essai -->\r
+ <!-- <xs:group name="T_Attendu_group1">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matrice_double"/>\r
+ <xs:element ref="matrice_symetrique_double"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classe_utilisateur"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:group name="T_Attendu_group2">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matrice_double"/>\r
+ <xs:element ref="matrice_symetrique_double"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classe_utilisateur"/>\r
+ <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:group ref="T_Attendu_group1"/>\r
+ </xs:complexType>\r
+ -->\r
+ <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+ <!--\r
+ <xs:complexType name="T_into">\r
+ <xs:group ref="T_Attendu_group2"/>\r
+ </xs:complexType>\r
+ -->\r
+ <xs:complexType name="T_into">\r
+ <xs:choice>\r
+ <!-- <xs:element ref="typesimple" type="T_Base"/>-->\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_into">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte (ASSD) : pass\r
+class maille (ASSD) : pass\r
+class carte_flux_r (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+ def __call__(self, *l_typ_cham, **kwargs):\r
+ return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+ execmodul=None,\r
+ regles=ENSEMBLE('E1','E2','E3')\r
+ )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+ NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+ );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+ NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+ );\r
+\r
+E1=PROC(nom="E1",\r
+ op=None,\r
+ regles = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+ ETAT_INIT = FACT(statut='f', max='**',\r
+ GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+ GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+ ),\r
+\r
+ RESULTAT = FACT(statut='f',\r
+ DEPL=SIMP(statut='o', typ='R', validators=NoRepeat()),\r
+ VITE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ACCE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ), \r
+ );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+ regles = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+ CONCEPT = FACT(statut='f',max='**',\r
+ NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+ ),\r
+ CHAINE = SIMP(statut='f',typ='TXM'),\r
+ POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+ );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+ DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+ into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+ b_blocIn = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+ ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+ ALGO_INTE = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+ CARTE = SIMP(statut='f',typ=carte,),\r
+ b_carte = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+ CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+ fr="Options pour le calcul de contraintes et efforts generalises",\r
+ into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+ ),\r
+ ), \r
+ );\r
+\r
+-->\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <!--<xs:import schemaLocation="./Model Efficas (1.1) v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+ <xs:override schemaLocation="./Model Efficas (1.1) v7.xsd">\r
+ <xs:attribute name="attribut" type="AT_attribut"/>\r
+ <xs:simpleType name="AT_attribut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="essai">\r
+ <xs:sequence>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="attribut" default="n"/>\r
+ </xs:complexType>\r
+-->\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ <xs:attribute name="attribut" default="n">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+ <!-- <xs:attribute default="n" ref="attribut"/>-->\r
+ <!-- <xs:attribute default="n" name="attribut" type="AT_attribut" />-->\r
+ </xs:complexType>\r
+ </xs:override>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <xs:element name="doc" type="T_doc"/>\r
+ <xs:element name="cata" type="T_cata"/>\r
+ <xs:element name="regles" type="T_regles"/>\r
+ <xs:element name="typeCree" type="T_classe_utilisateur"/>\r
+ <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+ <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+ <xs:element name="fonction_utilisateur" type="T_fonction_python"/>\r
+ <xs:element name="commandes" type="T_commandes">\r
+ <!-- La contrainte suivante fonctionne -->\r
+ <xs:unique name="Uniq_Command">\r
+ <xs:selector xpath="*"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:element name="validators" type="T_validators"/>\r
+ <xs:element name="plageValeur" type="T_plageValeur"/>\r
+ <xs:element name="typeAttendu" type="T_name"/>\r
+ <xs:element name="classeUtilisateurName" type="T_classe_utilisateur_username" abstract="true" substitutionGroup="typeAttendu"/>\r
+ <xs:element name="SIMP" type="T_SIMP"/>\r
+ <xs:element name="portee" type="T_portee" default="None"/>\r
+ <xs:element name="condition" type="T_fonction_python"/>\r
+ <xs:element name="borne_sup" type="T_typeAttendu"/>\r
+ <xs:element name="borne_inf" type="T_typeAttendu"/>\r
+ <!-- <xs:element name="into" type="T_into"/>-->\r
+ <xs:element name="into" type="T_into"/>\r
+ <!-- <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+ <xs:attribute name="nom" type="AT_nom"/>\r
+ <xs:attribute name="ag" type="AT_ag"/>\r
+ <xs:attribute name="fr" type="xs:string"/>\r
+ <xs:attribute name="ang" type="xs:string"/>\r
+ <xs:attribute name="docu" type="AT_docu"/>\r
+ <xs:attribute name="valeur_sugg" type="AT_valeur_sugg"/>\r
+ <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+ <xs:attribute name="max_occurs" type="AT_max_occurs"/>\r
+ <xs:attribute name="min_occurs" type="AT_min_occurs"/>\r
+ <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+ <xs:complexType name="T_doc">\r
+ <xs:attribute ref="fr" use="optional"/>\r
+ <xs:attribute ref="ang"/>\r
+ <xs:attribute ref="docu"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_cata">\r
+ <xs:sequence>\r
+ <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_commandes">\r
+ <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+ <xs:element ref="OPER"/>\r
+ <xs:element ref="PROC"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_Cardinalite"/>\r
+ <xs:complexType name="T_plageValeur">\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element ref="borne_sup" minOccurs="0"/>\r
+ <xs:element ref="borne_inf" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:element ref="into"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:complexType>\r
+ <xs:element name="OPER" type="T_OPER">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC -->\r
+ <xs:key name="Key_Name_In_Oper">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_OPER">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="typeCree"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="PROC" type="T_PROC">\r
+ <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+ <xs:key name="Key_Name_In_Proc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_PROC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="FACT" type="T_FACT">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT -->\r
+ <xs:key name="Key_Name_In_Fact">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <!-- Définition par restriction -->\r
+ <!-- <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>-->\r
+ <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:attribute ref="statut"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:extension>\r
+ <!-- <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs gt @efficas:min_occurs]"/>\r
+-->\r
+ <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs > min_occurs "/>-->\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_fonction_python">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:element name="BLOC" type="T_BLOC">\r
+ <xs:key name="Key_Name_In_Bloc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <xs:complexType name="T_BLOC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_Accas_Common">\r
+ <xs:sequence>\r
+ <xs:element ref="condition"/>\r
+ </xs:sequence>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="min_occurs" default="1"/>\r
+ <xs:attribute ref="max_occurs" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:simpleType name="AT_statut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="f"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!--<xs:simpleType name="T_repetable">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>-->\r
+ <xs:simpleType name="T_portee">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="None"/>\r
+ <xs:enumeration value="Global"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_max_occurs">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minInclusive value="-1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_min_occurs">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minExclusive value="0"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Comparable -->\r
+ <!-- <xs:simpleType name="AT_borne_sup">\r
+ <xs:atomic base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_borne_inf">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_ag">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="No comment"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_docu">\r
+ <xs:annotation>\r
+ <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_valeur_sugg">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <!-- TODO: Exclure mots clés python|efficas -->\r
+ <xs:simpleType name="AT_nom">\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_predicat1">\r
+ <xs:list itemType="AT_nom"/>\r
+ <!-- TODO: Supprimer la liste -->\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_predicat2">\r
+ <xs:sequence>\r
+ <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+ <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+ </xs:sequence>\r
+ <!-- TODO: Supprimer la séquence -->\r
+ </xs:complexType>\r
+ <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+ <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+ <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+ <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+ <xs:element name="EXCLUS" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+ <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+ <xs:group name="predicat">\r
+ <xs:choice>\r
+ <xs:element ref="A_CLASSER"/>\r
+ <xs:element ref="AU_MOINS_UN"/>\r
+ <xs:element ref="AU_PLUS_UN"/>\r
+ <xs:element ref="ENSEMBLE"/>\r
+ <xs:element ref="EXCLUS"/>\r
+ <xs:element ref="PRESENT_ABSENT"/>\r
+ <xs:element ref="PRESENT_PRESENT"/>\r
+ <xs:element ref="UN_PARMI"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+ <xs:complexType name="T_regles">\r
+ <xs:sequence maxOccurs="unbounded">\r
+ <xs:group ref="predicat"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- <xs:simpleType name="T_typeCree">\r
+ <xs:restriction base="T_classe_utilisateur"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_subroutine">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_validators">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="NoRepeat"/>\r
+ <xs:enumeration value="OnlyStr"/>\r
+ <xs:enumeration value="VerifExiste"/>\r
+ <xs:enumeration value="VerifTypeTuple"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_Bool">\r
+ <xs:restriction base="xs:boolean"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_Bool">\r
+ <xs:list itemType="T_Bool"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_I">\r
+ <xs:restriction base="xs:int"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_I">\r
+ <xs:list itemType="T_I"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_R">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_R">\r
+ <xs:list itemType="T_R"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_TXM">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_TXM">\r
+ <xs:list itemType="T_TXM"/>\r
+ </xs:simpleType>\r
+ <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+ <xs:simpleType name="T_C">\r
+ <xs:restriction>\r
+ <xs:simpleType>\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:minLength value="2"/>\r
+ <xs:maxLength value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Ajouter une contrainte : taille pair -->\r
+ <!-- Il n'est pas possible de définir des listes de listes -->\r
+ <xs:simpleType name="T_list_C">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_name_base">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple_name">\r
+ <xs:restriction base="T_name_base">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- On ne peut pas rendre abstrait un simpleType && \r
+ Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+ lui peut être abstrait.\r
+ -->\r
+ <xs:simpleType name="T_classe_utilisateur_name">\r
+ <xs:restriction base="T_name">\r
+ <xs:enumeration value="T_classe_utilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_classe_utilisateur_username">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_classe_utilisateur_name">\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_name">\r
+ <xs:union memberTypes="T_simple_name">\r
+ <xs:simpleType>\r
+ <xs:restriction base="AT_nom">\r
+ <xs:enumeration value="T_Matrice_double"/>\r
+ <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
+ <xs:enumeration value="T_tuple"/>\r
+ <xs:enumeration value="T_classe_utilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:union>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_grma"/>\r
+ <xs:complexType name="T_grno"/>\r
+ <xs:complexType name="T_SalomeEntry"/>\r
+ <xs:complexType name="T_Fichier"/>\r
+ <!-- <xs:complexType name="T_Repertoire"/>-->\r
+ <xs:simpleType name="T_Repertoire">\r
+ <xs:list>\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:whiteSpace value="preserve"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:list>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple">\r
+ <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="T_TXM"/>-->\r
+ <!-- <xs:simpleType name="T_simple">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="T_list_double">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <!-- Possibilité d'utiliser un type paramétré ? -->\r
+ <xs:complexType name="T_Matrice_double">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_double">\r
+ <xs:attribute name="n" type="xs:integer" use="required"/>\r
+ <xs:attribute name="m" type="xs:integer" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
+ <xs:complexType name="T_Matrice_Symetrique_double">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_double">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Une liste est aussi un type simple ! -->\r
+ <!-- <xs:simpleType name="T_list_anySimpleType">\r
+ <xs:list itemType="xs:anySimpleType"/>\r
+ </xs:simpleType>\r
+-->\r
+ <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+ <xs:complexType name="T_tuple">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anySimpleType">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_classe_utilisateur">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:element name="typesimple" type="T_simple"/>\r
+ <xs:element name="matrice_double" type="T_Matrice_double"/>\r
+ <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
+ <xs:element name="tuple" type="T_tuple"/>\r
+ <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
+ <!-- Essai -->\r
+ <!-- <xs:group name="T_Attendu_group1">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matrice_double"/>\r
+ <xs:element ref="matrice_symetrique_double"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classe_utilisateur"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:group name="T_Attendu_group2">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matrice_double"/>\r
+ <xs:element ref="matrice_symetrique_double"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classe_utilisateur"/>\r
+ <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:group ref="T_Attendu_group1"/>\r
+ </xs:complexType>\r
+ -->\r
+ <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+ <!--\r
+ <xs:complexType name="T_into">\r
+ <xs:group ref="T_Attendu_group2"/>\r
+ </xs:complexType>\r
+ -->\r
+ <xs:complexType name="T_into">\r
+ <xs:choice>\r
+ <!-- <xs:element ref="typesimple" type="T_Base"/>-->\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="fonction_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_into">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte (ASSD) : pass\r
+class maille (ASSD) : pass\r
+class carte_flux_r (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+ def __call__(self, *l_typ_cham, **kwargs):\r
+ return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+ execmodul=None,\r
+ regles=ENSEMBLE('E1','E2','E3')\r
+ )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+ NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+ );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+ NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+ );\r
+\r
+E1=PROC(nom="E1",\r
+ op=None,\r
+ regles = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+ ETAT_INIT = FACT(statut='f', max='**',\r
+ GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+ GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+ ),\r
+\r
+ RESULTAT = FACT(statut='f',\r
+ DEPL=SIMP(statut='o', typ='R', validators=NoRepeat()),\r
+ VITE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ACCE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ), \r
+ );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+ regles = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+ CONCEPT = FACT(statut='f',max='**',\r
+ NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+ ),\r
+ CHAINE = SIMP(statut='f',typ='TXM'),\r
+ POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+ );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+ DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+ into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+ b_blocIn = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+ ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+ ALGO_INTE = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+ CARTE = SIMP(statut='f',typ=carte,),\r
+ b_carte = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+ CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+ fr="Options pour le calcul de contraintes et efforts generalises",\r
+ into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+ ),\r
+ ), \r
+ );\r
+\r
+-->\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <!--<xs:import schemaLocation="./Model Efficas (1.1) v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+ <xs:override schemaLocation="./Model Efficas (1.1) v8.xsd">\r
+ <xs:attribute name="attribut" type="AT_attribut"/>\r
+ <xs:simpleType name="AT_attribut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="essai">\r
+ <xs:sequence>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="attribut" default="n"/>\r
+ </xs:complexType>\r
+-->\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ <xs:attribute name="attribut" default="n">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+ <!-- <xs:attribute default="n" ref="attribut"/>-->\r
+ <!-- <xs:attribute default="n" name="attribut" type="AT_attribut" />-->\r
+ </xs:complexType>\r
+ </xs:override>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <xs:element name="doc" type="T_doc"/>\r
+ <xs:element name="cata" type="T_cata"/>\r
+ <xs:element name="regles" type="T_regles"/>\r
+ <xs:element name="typeCree" type="T_classeUtilisateur"/>\r
+ <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+ <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+ <xs:element name="fonctionUtilisateur" type="T_fonctionUtilisateur"/>\r
+ <xs:element name="commandes" type="T_commandes">\r
+ <!-- La contrainte suivante fonctionne -->\r
+ <xs:unique name="Uniq_Command">\r
+ <xs:selector xpath="*"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:element name="validators" type="T_validators"/>\r
+ <xs:element name="plageValeur" type="T_plageValeur"/>\r
+ <xs:element name="typeAttendu" type="T_name"/>\r
+ <xs:element name="classeUtilisateurName" type="T_classeUtilisateurName" abstract="true" substitutionGroup="typeAttendu"/>\r
+ <xs:element name="SIMP" type="T_SIMP"/>\r
+ <xs:element name="portee" type="T_portee" default="None"/>\r
+ <xs:element name="condition" type="T_fonctionUtilisateur"/>\r
+ <xs:element name="borneSup" type="T_typeAttendu"/>\r
+ <xs:element name="borneInf" type="T_typeAttendu"/>\r
+ <!-- <xs:element name="into" type="T_into"/>-->\r
+ <xs:element name="into" type="T_into"/>\r
+ <!-- <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+ <xs:attribute name="nom" type="AT_nom"/>\r
+ <xs:attribute name="fr" type="xs:string"/>\r
+ <xs:attribute name="ang" type="xs:string"/>\r
+ <xs:attribute name="docu" type="AT_docu"/>\r
+ <xs:attribute name="valeurSugg" type="AT_valeurSugg"/>\r
+ <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+ <xs:attribute name="maxOccurences" type="AT_maxOccurences"/>\r
+ <xs:attribute name="minOccurences" type="AT_minOccurences"/>\r
+ <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+ <xs:complexType name="T_doc">\r
+ <xs:attribute ref="fr" use="optional"/>\r
+ <xs:attribute ref="ang"/>\r
+ <xs:attribute ref="docu"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_cata">\r
+ <xs:sequence>\r
+ <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_commandes">\r
+ <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+ <xs:element ref="OPER"/>\r
+ <xs:element ref="PROC"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_plageValeur">\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element ref="borneSup" minOccurs="0"/>\r
+ <xs:element ref="borneInf" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:element ref="into"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_accasCommon">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:complexType>\r
+ <xs:element name="OPER" type="T_OPER">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC -->\r
+ <xs:key name="Key_Name_In_Oper">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_OPER">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommon">\r
+ <xs:sequence>\r
+ <xs:element ref="typeCree"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="PROC" type="T_PROC">\r
+ <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+ <xs:key name="Key_Name_In_Proc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_PROC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommon">\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="FACT" type="T_FACT">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT -->\r
+ <xs:key name="Key_Name_In_Fact">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <!-- Définition par restriction -->\r
+ <!-- <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_accasCommon">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>-->\r
+ <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommon">\r
+ <xs:attribute ref="statut"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:extension>\r
+ <!-- <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences gt @efficas:minOccurences]"/>\r
+-->\r
+ <!--<xs:assert test="if (.[exists(@efficas:maxOccurences)] and .[exists(@efficas:minOccurences)] ) then (@efficas:maxOccurences gt @efficas:minOccurences) or @efficas:maxOccurences = -1 else true" altova:message="Erreur maxOccurences > minOccurences "/>-->\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_fonctionUtilisateur">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:element name="BLOC" type="T_BLOC">\r
+ <xs:key name="Key_Name_In_Bloc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <xs:complexType name="T_BLOC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommon">\r
+ <xs:sequence>\r
+ <xs:element ref="condition"/>\r
+ </xs:sequence>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="typeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:simpleType name="AT_statut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="f"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!--<xs:simpleType name="T_repetable">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>-->\r
+ <xs:simpleType name="T_portee">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="None"/>\r
+ <xs:enumeration value="Global"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_maxOccurences">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minInclusive value="-1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_minOccurences">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minExclusive value="0"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Comparable -->\r
+ <!-- <xs:simpleType name="AT_borne_sup">\r
+ <xs:atomic base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_borne_inf">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_docu">\r
+ <xs:annotation>\r
+ <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_valeurSugg">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <!-- TODO: Exclure mots clés python|efficas -->\r
+ <xs:simpleType name="AT_nom">\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_predicat1">\r
+ <xs:list itemType="AT_nom"/>\r
+ <!-- TODO: Supprimer la liste -->\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_predicat2">\r
+ <xs:sequence>\r
+ <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+ <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+ </xs:sequence>\r
+ <!-- TODO: Supprimer la séquence -->\r
+ </xs:complexType>\r
+ <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+ <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+ <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+ <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+ <xs:element name="EXCLUS" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+ <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+ <xs:group name="predicat">\r
+ <xs:choice>\r
+ <xs:element ref="A_CLASSER"/>\r
+ <xs:element ref="AU_MOINS_UN"/>\r
+ <xs:element ref="AU_PLUS_UN"/>\r
+ <xs:element ref="ENSEMBLE"/>\r
+ <xs:element ref="EXCLUS"/>\r
+ <xs:element ref="PRESENT_ABSENT"/>\r
+ <xs:element ref="PRESENT_PRESENT"/>\r
+ <xs:element ref="UN_PARMI"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+ <xs:complexType name="T_regles">\r
+ <xs:sequence maxOccurs="unbounded">\r
+ <xs:group ref="predicat"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- <xs:simpleType name="T_typeCree">\r
+ <xs:restriction base="T_classeUtilisateur"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_subroutine">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_validators">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="NoRepeat"/>\r
+ <xs:enumeration value="OnlyStr"/>\r
+ <xs:enumeration value="VerifExiste"/>\r
+ <xs:enumeration value="VerifTypeTuple"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_Bool">\r
+ <xs:restriction base="xs:boolean"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_Bool">\r
+ <xs:list itemType="T_Bool"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_I">\r
+ <xs:restriction base="xs:int"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_I">\r
+ <xs:list itemType="T_I"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_R">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_R">\r
+ <xs:list itemType="T_R"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_TXM">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_TXM">\r
+ <xs:list itemType="T_TXM"/>\r
+ </xs:simpleType>\r
+ <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+ <xs:simpleType name="T_C">\r
+ <xs:restriction>\r
+ <xs:simpleType>\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:minLength value="2"/>\r
+ <xs:maxLength value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Ajouter une contrainte : taille pair -->\r
+ <!-- Il n'est pas possible de définir des listes de listes -->\r
+ <xs:simpleType name="T_list_C">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_nameBase">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simpleName">\r
+ <xs:restriction base="T_nameBase">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- On ne peut pas rendre abstrait un simpleType && \r
+ Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+ lui peut être abstrait.\r
+ -->\r
+ <xs:simpleType name="T_classeUtilisateurTypeName">\r
+ <xs:restriction base="T_name">\r
+ <xs:enumeration value="T_classeUtilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_classeUtilisateurName">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_classeUtilisateurTypeName">\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_name">\r
+ <xs:union memberTypes="T_simpleName">\r
+ <xs:simpleType>\r
+ <xs:restriction base="AT_nom">\r
+ <xs:enumeration value="T_matriceDouble"/>\r
+ <xs:enumeration value="T_matriceSymetriqueDouble"/>\r
+ <xs:enumeration value="T_tuple"/>\r
+ <xs:enumeration value="T_classeUtilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:union>\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_grma"/>\r
+ <xs:complexType name="T_grno"/>\r
+ <xs:complexType name="T_SalomeEntry"/>\r
+ <xs:complexType name="T_Fichier"/>\r
+ <!-- <xs:complexType name="T_Repertoire"/>-->\r
+ <xs:simpleType name="T_Repertoire">\r
+ <xs:list>\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:whiteSpace value="preserve"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:list>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple">\r
+ <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="T_TXM"/>-->\r
+ <!-- <xs:simpleType name="T_simple">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="Bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="T_list_Double">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <!-- Possibilité d'utiliser un type paramétré ? -->\r
+ <xs:complexType name="T_matriceDouble">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_Double">\r
+ <xs:attribute name="n" type="xs:integer" use="required"/>\r
+ <xs:attribute name="m" type="xs:integer" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Faire l'exercice de dériver de T_matriceDouble -->\r
+ <xs:complexType name="T_matriceSymetriqueDouble">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_Double">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Une liste est aussi un type simple ! -->\r
+ <!-- <xs:simpleType name="T_list_anySimpleType">\r
+ <xs:list itemType="xs:anySimpleType"/>\r
+ </xs:simpleType>\r
+-->\r
+ <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+ <xs:complexType name="T_tuple">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anySimpleType">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_classeUtilisateur">\r
+ <xs:restriction base="AT_nom"/>\r
+ </xs:simpleType>\r
+ <xs:element name="typesimple" type="T_simple"/>\r
+ <xs:element name="matriceDouble" type="T_matriceDouble"/>\r
+ <xs:element name="matriceSymetriqueDouble" type="T_matriceSymetriqueDouble"/>\r
+ <xs:element name="tuple" type="T_tuple"/>\r
+ <xs:element name="classeUtilisateur" type="T_classeUtilisateur"/>\r
+ <!-- Essai -->\r
+ <!-- <xs:group name="T_Attendu_group1">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matriceDouble"/>\r
+ <xs:element ref="matriceSymetriqueDouble"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classeUtilisateur"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:group name="T_Attendu_group2">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matriceDouble"/>\r
+ <xs:element ref="matriceSymetriqueDouble"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classeUtilisateur"/>\r
+ <xs:element ref="fonctionUtilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:group ref="T_Attendu_group1"/>\r
+ </xs:complexType>\r
+ -->\r
+ <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+ <!--\r
+ <xs:complexType name="T_into">\r
+ <xs:group ref="T_Attendu_group2"/>\r
+ </xs:complexType>\r
+ -->\r
+ <xs:complexType name="T_into">\r
+ <xs:choice>\r
+ <!-- <xs:element ref="typesimple" type="T_Base"/>-->\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_into">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte (ASSD) : pass\r
+class maille (ASSD) : pass\r
+class carte_flux_r (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+ def __call__(self, *l_typ_cham, **kwargs):\r
+ return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+ execmodul=None,\r
+ regles=ENSEMBLE('E1','E2','E3')\r
+ )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+ NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+ );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+ NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+ );\r
+\r
+E1=PROC(nom="E1",\r
+ op=None,\r
+ regles = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+ ETAT_INIT = FACT(statut='f', max='**',\r
+ GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+ GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+ ),\r
+\r
+ RESULTAT = FACT(statut='f',\r
+ DEPL=SIMP(statut='o', typ='R', validators=NoRepeat()),\r
+ VITE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ACCE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ), \r
+ );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+ regles = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+ CONCEPT = FACT(statut='f',max='**',\r
+ NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+ ),\r
+ CHAINE = SIMP(statut='f',typ='TXM'),\r
+ POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+ );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+ DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+ into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+ b_blocIn = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+ ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+ ALGO_INTE = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+ CARTE = SIMP(statut='f',typ=carte,),\r
+ b_carte = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+ CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+ fr="Options pour le calcul de contraintes et efforts generalises",\r
+ into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+ ),\r
+ ), \r
+ );\r
+\r
+-->\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <!--<xs:import schemaLocation="./Model Efficas (1.1) v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+ <xs:override schemaLocation="./Model Efficas (1.1) v9.xsd">\r
+ <xs:attribute name="attribut" type="AT_attribut"/> \r
+ <xs:simpleType name="AT_attribut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- <xs:complexType name="essai">\r
+ <xs:sequence>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="attribut" default="n"/>\r
+ </xs:complexType>\r
+-->\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="nomTypeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ <xs:attribute name="attribut" default="n">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+ <!-- <xs:attribute default="n" ref="attribut"/>-->\r
+ <!-- <xs:attribute default="n" name="attribut" type="AT_attribut" />-->\r
+ </xs:complexType>\r
+ </xs:override>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+ <xs:element name="doc" type="T_doc"/>\r
+ <xs:element name="cata" type="T_cata"/>\r
+ <xs:element name="regles" type="T_regles"/>\r
+ <xs:element name="typeCree" type="T_classeUtilisateur"/>\r
+ <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+ <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+ <xs:element name="fonctionUtilisateur" type="T_fonctionUtilisateur"/>\r
+ <xs:element name="commandes" type="T_commandes">\r
+ <!-- La contrainte suivante fonctionne -->\r
+ <xs:unique name="Uniq_Command">\r
+ <xs:selector xpath="*"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:element name="validators" type="T_validators"/>\r
+ <xs:element name="plageValeur" type="T_plageValeur"/>\r
+ <xs:element name="nomTypeAttendu" type="T_nomTypeAttendu"/>\r
+ <xs:element name="nomClasseUtilisateur" type="T_nomClasseUtilisateur" abstract="true" substitutionGroup="nomTypeAttendu"/>\r
+ <xs:element name="SIMP" type="T_SIMP"/>\r
+ <xs:element name="portee" type="T_portee" default="None"/>\r
+ <xs:element name="condition" type="T_fonctionUtilisateur"/>\r
+ <xs:element name="borneSup" type="T_borne"/>\r
+ <xs:element name="borneInf" type="T_borne"/>\r
+ <!-- <xs:element name="into" type="T_into"/>-->\r
+ <xs:element name="into" type="T_into"/>\r
+ <!-- <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+ <xs:attribute name="nom" type="AT_nom"/>\r
+ <xs:attribute name="version" type="xs:string"/>\r
+ <xs:attribute name="fr" type="xs:string"/>\r
+ <xs:attribute name="ang" type="xs:string"/>\r
+ <xs:attribute name="docu" type="AT_docu"/>\r
+ <xs:attribute name="valeurSugg" type="AT_valeurSugg"/>\r
+ <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+ <xs:attribute name="maxOccurences" type="AT_maxOccurences"/>\r
+ <xs:attribute name="minOccurences" type="AT_minOccurences"/>\r
+ <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+ <xs:complexType name="T_doc">\r
+ <xs:attribute ref="fr" use="optional"/>\r
+ <xs:attribute ref="ang"/>\r
+ <xs:attribute ref="docu"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_cata">\r
+ <xs:sequence>\r
+ <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom"/>\r
+ <xs:attribute ref="version"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_commandes">\r
+ <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+ <xs:element ref="OPER"/>\r
+ <xs:element ref="PROC"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_plageValeur">\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element ref="borneSup" minOccurs="0"/>\r
+ <xs:element ref="borneInf" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:element ref="into" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_accasCommun">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:complexType>\r
+ <xs:element name="OPER" type="T_OPER">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC -->\r
+ <xs:key name="Key_Name_In_Oper">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_OPER">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommun">\r
+ <xs:sequence>\r
+ <xs:element ref="typeCree"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="PROC" type="T_PROC">\r
+ <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+ <xs:key name="Key_Name_In_Proc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC | ./efficas:FACT | ./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+ <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+ <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+ <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+ <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+ <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+ <xs:field xpath="."/>\r
+ </xs:unique>\r
+ </xs:element>\r
+ <xs:complexType name="T_PROC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommun">\r
+ <xs:attribute ref="subroutine"/>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:element name="FACT" type="T_FACT">\r
+ <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector ! -->\r
+ <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT -->\r
+ <xs:key name="Key_Name_In_Fact">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <!-- Définition par restriction -->\r
+ <!-- <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_accasCommun">\r
+ <xs:sequence>\r
+ <xs:element ref="regles" minOccurs="0"/>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:choice maxOccurs="unbounded">\r
+ <xs:element ref="BLOC"/>\r
+ <xs:element ref="FACT"/>\r
+ <xs:element ref="SIMP"/>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>-->\r
+ <xs:complexType name="T_FACT">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommun">\r
+ <xs:attribute ref="statut"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:extension>\r
+ <!-- <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences gt @efficas:minOccurences]"/>\r
+-->\r
+ <!--<xs:assert test="if (.[exists(@efficas:maxOccurences)] and .[exists(@efficas:minOccurences)] ) then (@efficas:maxOccurences gt @efficas:minOccurences) or @efficas:maxOccurences = -1 else true" altova:message="Erreur maxOccurences > minOccurences "/>-->\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_fonctionUtilisateur">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:element name="BLOC" type="T_BLOC">\r
+ <xs:key name="Key_Name_In_Bloc">\r
+ <xs:annotation>\r
+ <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+ <xs:field xpath="@efficas:nom"/>\r
+ </xs:key>\r
+ <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+ <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+ <xs:field xpath="."/>\r
+ </xs:keyref>\r
+ </xs:element>\r
+ <xs:complexType name="T_BLOC">\r
+ <xs:complexContent>\r
+ <xs:extension base="T_accasCommun">\r
+ <xs:sequence>\r
+ <xs:element ref="condition"/>\r
+ </xs:sequence>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_SIMP">\r
+ <xs:sequence>\r
+ <xs:element ref="doc" minOccurs="0"/>\r
+ <xs:element ref="portee" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element ref="valeurDef" minOccurs="0"/>\r
+ <xs:element ref="valeurSugg" minOccurs="0"/>\r
+ <xs:element ref="plageValeur" minOccurs="0"/>\r
+ <xs:element ref="nomTypeAttendu"/>\r
+ <xs:element ref="validators" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute ref="nom" use="required"/>\r
+ <xs:attribute ref="statut" default="o"/>\r
+ <xs:attribute ref="minOccurences" default="1"/>\r
+ <xs:attribute ref="maxOccurences" default="1">\r
+ <xs:annotation>\r
+ <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:simpleType name="AT_statut">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="f"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!--<xs:simpleType name="T_repetable">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="n"/>\r
+ <xs:enumeration value="o"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>-->\r
+ <xs:simpleType name="T_portee">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="None"/>\r
+ <xs:enumeration value="Global"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_maxOccurences">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minInclusive value="-1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_minOccurences">\r
+ <xs:restriction base="xs:long">\r
+ <xs:minInclusive value="0"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Comparable -->\r
+ <!-- <xs:simpleType name="AT_borne_sup">\r
+ <xs:atomic base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_borne_inf">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_docu">\r
+ <xs:annotation>\r
+ <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_valeurSugg">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <!-- TODO: Exclure mots clés python|efficas -->\r
+ <xs:simpleType name="T_pythonIdentifiant">\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="AT_nom">\r
+ <xs:restriction base="T_pythonIdentifiant"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_predicat1">\r
+ <xs:list itemType="T_pythonIdentifiant"/>\r
+ <!-- TODO: Supprimer la liste -->\r
+ </xs:simpleType>\r
+ <xs:complexType name="T_predicat2">\r
+ <xs:sequence>\r
+ <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+ <xs:element name="p2" type="T_pythonIdentifiant" minOccurs="1"/>\r
+ </xs:sequence>\r
+ <!-- TODO: Supprimer la séquence -->\r
+ </xs:complexType>\r
+ <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+ <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+ <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+ <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+ <xs:element name="EXCLUS" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+ <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+ <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+ <xs:group name="predicat">\r
+ <xs:choice>\r
+ <xs:element ref="A_CLASSER"/>\r
+ <xs:element ref="AU_MOINS_UN"/>\r
+ <xs:element ref="AU_PLUS_UN"/>\r
+ <xs:element ref="ENSEMBLE"/>\r
+ <xs:element ref="EXCLUS"/>\r
+ <xs:element ref="PRESENT_ABSENT"/>\r
+ <xs:element ref="PRESENT_PRESENT"/>\r
+ <xs:element ref="UN_PARMI"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+ <xs:complexType name="T_regles">\r
+ <xs:sequence maxOccurs="unbounded">\r
+ <xs:group ref="predicat"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- <xs:simpleType name="T_typeCree">\r
+ <xs:restriction base="T_classeUtilisateur"/>\r
+ </xs:simpleType>\r
+-->\r
+ <xs:simpleType name="AT_subroutine">\r
+ <xs:restriction base="T_pythonIdentifiant"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_validators">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="NoRepeat"/>\r
+ <xs:enumeration value="OnlyStr"/>\r
+ <xs:enumeration value="VerifExiste"/>\r
+ <xs:enumeration value="VerifTypeTuple"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_bool">\r
+ <xs:restriction base="xs:boolean"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_bool">\r
+ <xs:list itemType="T_bool"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_I">\r
+ <xs:restriction base="xs:int"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_I">\r
+ <xs:list itemType="T_I"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_R">\r
+ <xs:restriction base="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_R">\r
+ <xs:list itemType="T_R"/>\r
+ </xs:simpleType>\r
+ <!-- <xs:simpleType name="T_TXM">\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_TXM">\r
+ <xs:list itemType="T_TXM"/>\r
+ </xs:simpleType>\r
+-->\r
+ <!--<xs:simpleType name="T_list_TXM">\r
+ <xs:restriction base="T_list_TXM2"> <xs:maxLength value="1"/><xs:minLength value="1"/></xs:restriction>\r
+</xs:simpleType>\r
+-->\r
+ <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+ <xs:simpleType name="T_C">\r
+ <xs:restriction>\r
+ <xs:simpleType>\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:minLength value="2"/>\r
+ <xs:maxLength value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Ajouter une contrainte : taille pair -->\r
+ <!-- Il n'est pas possible de définir des listes de listes -->\r
+ <xs:simpleType name="T_list_C">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_nomTypeAttenduBase">\r
+ <xs:restriction base="T_pythonIdentifiant"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simpleName">\r
+ <xs:restriction base="T_nomTypeAttenduBase">\r
+ <xs:enumeration value="Fichier"/>\r
+ <xs:enumeration value="Repertoire"/>\r
+ <xs:enumeration value="I"/>\r
+ <xs:enumeration value="R"/>\r
+ <xs:enumeration value="C"/>\r
+ <xs:enumeration value="bool"/>\r
+ <xs:enumeration value="grma"/>\r
+ <xs:enumeration value="grno"/>\r
+ <xs:enumeration value="SalomeEntry"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_nomTypeAttendu">\r
+ <xs:union memberTypes="T_simpleName">\r
+ <xs:simpleType>\r
+ <xs:restriction base="T_pythonIdentifiant">\r
+ <xs:enumeration value="TXM"/>\r
+ <xs:enumeration value="matriceDouble"/>\r
+ <xs:enumeration value="matriceSymetriqueDouble"/>\r
+ <xs:enumeration value="tuple"/>\r
+ <xs:enumeration value="classeUtilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:union>\r
+ </xs:simpleType>\r
+ <!-- On ne peut pas rendre abstrait un simpleType && \r
+ Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+ lui peut être abstrait.\r
+ -->\r
+ <!-- Le type T_nomDuTypeClasseUtilisateur est réduit à l'énumeration "classeUtilisateur"\r
+ et utilisé dans le type T_nomClasseUtilisateur pour y ajouter un attribut nom\r
+ -->\r
+ <xs:simpleType name="T_nomDuTypeClasseUtilisateur">\r
+ <xs:restriction base="T_nomTypeAttendu">\r
+ <xs:enumeration value="classeUtilisateur"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <!-- Le nom de la classe utilisateur est donnée dans l'attribut nom-->\r
+ <xs:complexType name="T_nomClasseUtilisateur">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_nomDuTypeClasseUtilisateur">\r
+ <xs:attribute ref="nom" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_grma"/>\r
+ <xs:complexType name="T_grno"/>\r
+ <xs:complexType name="T_SalomeEntry"/>\r
+ <xs:complexType name="T_Fichier"/>\r
+ <!-- <xs:complexType name="T_Repertoire"/>-->\r
+ <xs:simpleType name="T_Repertoire">\r
+ <xs:list>\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:whiteSpace value="preserve"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:list>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_simple">\r
+ <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_bool T_list_bool T_Repertoire"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_TXM">\r
+ <xs:annotation>\r
+ <xs:documentation>les TXM peuvent contenir des espaces, pour créer une liste de TXM, il faut donc répéter le nom de la balise.</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="T_list_Double">\r
+ <xs:list itemType="xs:double"/>\r
+ </xs:simpleType>\r
+ <!-- Possibilité d'utiliser un type paramétré ? -->\r
+ <xs:complexType name="T_matriceDouble">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_Double">\r
+ <xs:attribute name="n" type="xs:integer" use="required"/>\r
+ <xs:attribute name="m" type="xs:integer" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Faire l'exercice de dériver de T_matriceDouble -->\r
+ <xs:complexType name="T_matriceSymetriqueDouble">\r
+ <xs:simpleContent>\r
+ <xs:extension base="T_list_Double">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- Une liste est aussi un type simple ! -->\r
+ <!-- <xs:simpleType name="T_list_anySimpleType">\r
+ <xs:list itemType="xs:anySimpleType"/>\r
+ </xs:simpleType>\r
+-->\r
+ <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : Problème résolu avec une séquence de tuple -->\r
+ <xs:complexType name="T_tuple">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anySimpleType">\r
+ <xs:attribute name="n" type="xs:int" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="T_classeUtilisateur">\r
+ <xs:restriction base="T_pythonIdentifiant"/>\r
+ </xs:simpleType>\r
+ <xs:element name="typesimple" type="T_simple"/>\r
+ <xs:element name="TXM" type="T_TXM"/>\r
+ <xs:element name="matriceDouble" type="T_matriceDouble"/>\r
+ <xs:element name="matriceSymetriqueDouble" type="T_matriceSymetriqueDouble"/>\r
+ <xs:element name="tuple" type="T_tuple"/>\r
+ <xs:element name="classeUtilisateur" type="T_classeUtilisateur"/>\r
+ <!-- Essai -->\r
+ <!-- <xs:group name="T_Attendu_group1">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matriceDouble"/>\r
+ <xs:element ref="matriceSymetriqueDouble"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classeUtilisateur"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:group name="T_Attendu_group2">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple"/>\r
+ <xs:element ref="matriceDouble"/>\r
+ <xs:element ref="matriceSymetriqueDouble"/>\r
+ <xs:element ref="tuple"/>\r
+ <xs:element ref="classeUtilisateur"/>\r
+ <xs:element ref="fonctionUtilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ </xs:group>\r
+\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:group ref="T_Attendu_group1"/>\r
+ </xs:complexType>\r
+ -->\r
+ <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+ <!--\r
+ <xs:complexType name="T_into">\r
+ <xs:group ref="T_Attendu_group2"/>\r
+ </xs:complexType>\r
+ -->\r
+ <xs:complexType name="T_into">\r
+ <xs:choice>\r
+ <!-- <xs:element ref="typesimple" type="T_Base"/>-->\r
+ <xs:element ref="typesimple" minOccurs="0"/>\r
+ <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_typeAttendu">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_into">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="T_borne">\r
+ <xs:complexContent>\r
+ <xs:restriction base="T_into">\r
+ <xs:choice>\r
+ <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+ <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+ </xs:choice>\r
+ </xs:restriction>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte (ASSD) : pass\r
+class maille (ASSD) : pass\r
+class carte_flux_r (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+ def __call__(self, *l_typ_cham, **kwargs):\r
+ return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+ execmodul=None,\r
+ regles=ENSEMBLE('E1','E2','E3')\r
+ )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+ NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+ );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+ NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+ );\r
+\r
+E1=PROC(nom="E1",\r
+ op=None,\r
+ regles = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+ ETAT_INIT = FACT(statut='f', max='**',\r
+ GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+ GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+ ),\r
+\r
+ RESULTAT = FACT(statut='f',\r
+ DEPL=SIMP(statut='o', typ='R', validators=NoRepeat()),\r
+ VITE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ACCE=SIMP(statut='f', typ='R', validators=NoRepeat()),\r
+ ), \r
+ );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+ regles = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+ CONCEPT = FACT(statut='f',max='**',\r
+ NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+ ),\r
+ CHAINE = SIMP(statut='f',typ='TXM'),\r
+ POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+ );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+ DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+ into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+ b_blocIn = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+ ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+ ALGO_INTE = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+ CARTE = SIMP(statut='f',typ=carte,),\r
+ b_carte = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+ CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+ fr="Options pour le calcul de contraintes et efforts generalises",\r
+ into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+ ),\r
+ ), \r
+ );\r
+\r
+-->\r
--- /dev/null
+pyxbgen -u model.xsd -m efficas --write-for-customization
+/local/PyXB-1.2.6/scripts/pyxbgen -u model.xsd -m efficas --write-for-customization
+/local/PyXB-1.2.6/scripts/pyxbgen -u model_ext.xsd -m efficas_ext --write-for-customization
+
+
+/local/PyXB-1.2.6/scripts/pyxbgen -u model.xsd -m efficas --write-for-customization --default-namespace-public --archive-to-file=model.wxsd
+/local/PyXB-1.2.6/scripts/pyxbgen -u model_ext.xsd -m efficas_ext --write-for-customization --archive-path=.:+
--- /dev/null
+Pyxb --> accas
+si simp on ne passe rien
+sinon un dictPyxb avec valeur dict des objets clef=nom
+et un objpyxb dans objpyxb
+
+il faut mettre à jour la liste en cohérence avec l ordered content
+Attention aux blocs
--- /dev/null
+AccasXsd.py
+ contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue
+
+balises.py
+ contient les balises necessaires pour generer le xsd metier a partir du catalogue eficas (ou .py ou en .xsd)
+
+efficas.py
+ contient le modele genere par pyxb a partir du XSD eficas
+
+mapDesTypes.py
+ fait le lien bidirectionnel entre les types ACCAS et les types XSD
+
+MCAccasXsd.py
+ contient les classes qui font le lien entre les classes objet Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue
+
+readerEfiXsd.py
+ contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du modele eficas XSD
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XSD 1.1//EN" "XMLSchema.dtd" [
+ <!-- provide ID type information even for parsers which only read the
+ internal subset -->
+ <!ATTLIST xs:schema
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:complexType
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:complexContent
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:simpleContent
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:extension
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:element
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:group
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:all
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:choice
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:sequence
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:any
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:anyAttribute
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:attribute
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:attributeGroup
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:unique
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:key
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:keyref
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:selector
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:field
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:assert
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:include
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:import
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:redefine
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:override
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:notation
+ id ID #IMPLIED
+ >
+ <!--
+ Make sure that processors that do not read the external
+ subset will know about the various IDs we declare
+ -->
+ <!ATTLIST xs:simpleType
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:maxExclusive
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:minExclusive
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:maxInclusive
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:minInclusive
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:totalDigits
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:fractionDigits
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:length
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:minLength
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:maxLength
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:enumeration
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:pattern
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:assertion
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:explicitTimezone
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:appinfo
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:documentation
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:list
+ id ID #IMPLIED
+ >
+ <!ATTLIST xs:union
+ id ID #IMPLIED
+ >
+]>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0" xml:lang="EN" vc:minVersion="1.1">
+ <xs:annotation>
+ <xs:documentation>
+ Part 1 version: structures.xsd (rec-20120405)
+ Part 2 version: datatypes.xsd (rec-20120405)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema Definition Language. The documentation (within 'documentation' elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part.
+
+ See below (at the bottom of this document) for information about
+ the revision and namespace-versioning policy governing this
+ schema document.
+
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document.</xs:documentation>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than <schema> itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="composition">
+ <xs:choice>
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:override"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which occur freely at the top level of schemas.
+ All of their types are based on the "annotated" type by extension.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see <redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:group ref="xs:composition" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:sequence minOccurs="0">
+ <xs:element ref="xs:defaultOpenContent"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="defaultAttributes" type="xs:QName"/>
+ <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace" use="optional" default="##local"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ </xs:element>
+ <xs:simpleType name="allNNI">
+ <xs:annotation>
+ <xs:documentation>
+ for maxOccurs</xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:attributeGroup name="occurs">
+ <xs:annotation>
+ <xs:documentation>
+ for all particles</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="defRef">
+ <xs:annotation>
+ <xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="inheritable" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="targetNamespace" use="prohibited"/>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="inheritable" type="xs:boolean"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="anyAttribute" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-anyAttribute"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attribute name="notQName" type="xs:qnameListA" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="assertions">
+ <xs:sequence>
+ <xs:element name="assert" type="xs:assertion" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="assertion">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="test" type="xs:string"/>
+ <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ <complexContent>
+ <restriction base="xs:anyType">
+ ...
+ </restriction>
+ </complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:openContent" minOccurs="0"/>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or prohibited</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overridden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ <xs:attribute name="defaultAttributesApply" type="xs:boolean" use="optional" default="true"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="xs:openContent" minOccurs="0"/>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:sequence>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="xs:openContent" minOccurs="0"/>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:openContent" minOccurs="0"/>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="openContent" id="openContent">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-openContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="any" type="xs:wildcard" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="mode" use="optional" default="interleave">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="interleave"/>
+ <xs:enumeration value="suffix"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="defaultOpenContent" id="defaultOpenContent">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-defaultOpenContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="any" type="xs:wildcard"/>
+ </xs:sequence>
+ <xs:attribute name="appliesToEmpty" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="mode" use="optional" default="interleave">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="interleave"/>
+ <xs:enumeration value="suffix"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ <xs:group ref="xs:assertions"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ The element element can be used either
+ at the top level to define an element-type binding globally,
+ or within a content model to either reference a globally-defined
+ element or type or declare an element-type binding locally.
+ The ref form is not allowed at the top level.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="targetNamespace" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-element"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="altType">
+ <xs:annotation>
+ <xs:documentation>
+ This type is used for 'alternative' elements.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:attribute name="test" type="xs:string" use="optional"/>
+ <xs:attribute name="type" type="xs:QName" use="optional"/>
+ <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" type="xs:QName" use="required"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element ref="xs:any"/>
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:groupRef">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" fixed="1"/>
+ <xs:attribute name="maxOccurs" type="xs:nonNegativeInteger" fixed="1"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="all" type="xs:all" id="all">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-all"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-group"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:attributeGroup name="anyAttrGroup">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional"/>
+ <xs:attribute name="notNamespace" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:basicNamespaceList">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attributeGroup ref="xs:anyAttrGroup"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attribute name="notQName" type="xs:qnameList" use="optional"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Value is
+ ##any - - any non-conflicting WFXML/attribute at all
+
+ ##other - - any non-conflicting WFXML/attribute from
+ namespace other than targetNS
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+
+ one or - - any non-conflicting WFXML/attribute from
+ more URI the listed namespaces
+ references
+ (space separated)
+
+ ##targetNamespace or ##local may appear in the above list, to
+ refer to the targetNamespace of the enclosing
+ schema or an absent targetNamespace respectively</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:specialNamespaceList xs:basicNamespaceList"/>
+ </xs:simpleType>
+ <xs:simpleType name="basicNamespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:simpleType name="specialNamespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="qnameList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use
+ </xs:documentation>
+ </xs:annotation>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:QName">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##defined"/>
+ <xs:enumeration value="##definedSibling"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:simpleType name="qnameListA">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use
+ </xs:documentation>
+ </xs:annotation>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:QName">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##defined"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:simpleType name="xpathDefaultNamespace">
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##defaultNamespace"/>
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" type="xs:QName" use="required"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="override" id="override">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-override"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:schemaTop" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence minOccurs="0">
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="../structures/structures.html#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within schema documents</xs:documentation>
+ </xs:annotation>
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ <xs:annotation>
+ <xs:documentation>
+ In keeping with the XML Schema WG's standard versioning policy,
+ the material in this schema document will persist at the URI
+ http://www.w3.org/2012/04/XMLSchema.xsd.
+
+ At the date of issue it can also be found at the URI
+ http://www.w3.org/2009/XMLSchema/XMLSchema.xsd.
+
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XSD
+ and its namespace. In other words, if XSD or the XML Schema
+ namespace change, the version of this document at
+ http://www.w3.org/2009/XMLSchema/XMLSchema.xsd will change accordingly;
+ the version at http://www.w3.org/2012/04/XMLSchema.xsd will not change.
+
+ Previous dated (and unchanging) versions of this schema document
+ include:
+
+ http://www.w3.org/2012/01/XMLSchema.xsd
+ (XSD 1.1 Proposed Recommendation)
+
+ http://www.w3.org/2011/07/XMLSchema.xsd
+ (XSD 1.1 Candidate Recommendation)
+
+ http://www.w3.org/2009/04/XMLSchema.xsd
+ (XSD 1.1 Candidate Recommendation)
+
+ http://www.w3.org/2004/10/XMLSchema.xsd
+ (XSD 1.0 Recommendation, Second Edition)
+
+ http://www.w3.org/2001/05/XMLSchema.xsd
+ (XSD 1.0 Recommendation, First Edition)
+
+
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, extension, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="extension"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="facet" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ An abstract element, representing facets in general.
+ The facets defined by this spec are substitutable for
+ this element, and implementation-defined facets should
+ also name this as a substitution-group head.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:facet"/>
+ <xs:any namespace="##other" processContents="lax"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="minExclusive" type="xs:facet" substitutionGroup="xs:facet" id="minExclusive">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" type="xs:facet" substitutionGroup="xs:facet" id="minInclusive">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxExclusive" type="xs:facet" substitutionGroup="xs:facet" id="maxExclusive">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" type="xs:facet" substitutionGroup="xs:facet" id="maxInclusive">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="intFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:integer" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="totalDigits" substitutionGroup="xs:facet" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" type="xs:numFacet" substitutionGroup="xs:facet" id="fractionDigits">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="length" type="xs:numFacet" substitutionGroup="xs:facet" id="length">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" type="xs:numFacet" substitutionGroup="xs:facet" id="minLength">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" type="xs:numFacet" substitutionGroup="xs:facet" id="maxLength">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="enumeration" type="xs:noFixedFacet" substitutionGroup="xs:facet" id="enumeration">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="whiteSpace" substitutionGroup="xs:facet" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="pattern" substitutionGroup="xs:facet" id="pattern">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="assertion" type="xs:assertion" substitutionGroup="xs:facet" id="assertion">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-assertion"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="explicitTimezone" substitutionGroup="xs:facet" id="explicitTimezone">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-explicitTimezone"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ <xs:enumeration value="prohibited"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation>
+ In keeping with the XML Schema WG's standard versioning policy,
+ this schema document will persist at the URI
+ http://www.w3.org/2012/04/datatypes.xsd.
+
+ At the date of issue it can also be found at the URI
+ http://www.w3.org/2009/XMLSchema/datatypes.xsd.
+
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XSD
+ and its namespace. In other words, if XSD or the XML Schema
+ namespace change, the version of this document at
+ http://www.w3.org/2009/XMLSchema/datatypes.xsd will change accordingly;
+ the version at http://www.w3.org/2012/04/datatypes.xsd will not change.
+
+ Previous dated (and unchanging) versions of this schema document
+ include:
+
+ http://www.w3.org/2012/01/datatypes.xsd
+ (XSD 1.1 Proposed Recommendation)
+
+ http://www.w3.org/2011/07/datatypes.xsd
+ (XSD 1.1 Candidate Recommendation)
+
+ http://www.w3.org/2009/04/datatypes.xsd
+ (XSD 1.1 Candidate Recommendation)
+
+ http://www.w3.org/2004/10/datatypes.xsd
+ (XSD 1.0 Recommendation, Second Edition)
+
+ http://www.w3.org/2001/05/datatypes.xsd
+ (XSD 1.0 Recommendation, First Edition)
+
+ </xs:documentation>
+ </xs:annotation>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+This file was generated by Altova MapForce 2018sp1\r
+\r
+YOU SHOULD NOT MODIFY THIS FILE, BECAUSE IT WILL BE\r
+OVERWRITTEN WHEN YOU RE-RUN CODE GENERATION.\r
+\r
+Refer to the Altova MapForce Documentation for further details.\r
+http://www.altova.com/mapforce\r
+-->\r
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://chercheurs.edf.com/logiciels/efficas" xmlns:user="http://www.altova.com/MapForce/UDF/user" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf" xmlns:grp="http://www.altova.com/Mapforce/grouping" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="ns0 user vmf grp xs fn">\r
+ <xsl:param name="Model_Efficas__1_1____XMLSchema__1_1__v7" select="'Model Efficas (1.1) + XMLSchema (1.1) v7.xml'"/>\r
+ <xsl:function name="grp:Fact_mapping_v2_var9_cur_of_nom">\r
+ <xsl:param name="var8_cur" as="node()"/>\r
+ <xsl:for-each select="$var8_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var39_cur_of_nom">\r
+ <xsl:param name="var38_cur" as="node()"/>\r
+ <xsl:for-each select="$var38_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var46_cur_of_nom">\r
+ <xsl:param name="var45_cur" as="node()"/>\r
+ <xsl:for-each select="$var45_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var48_cur_of_nom">\r
+ <xsl:param name="var47_cur" as="node()"/>\r
+ <xsl:for-each select="$var47_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var50_cur_of_nom">\r
+ <xsl:param name="var49_cur" as="node()"/>\r
+ <xsl:for-each select="$var49_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:template name="user:Fact_mapping_v2">\r
+ <xsl:param name="NameSpaceName" select="()"/>\r
+ <xsl:param name="efficasANDschema" select="()"/>\r
+ <xsl:variable name="var55_nom" as="node()?" select="$efficasANDschema/@ns0:nom"/>\r
+ <xsl:variable name="var56_SIMP" as="node()*" select="$efficasANDschema/ns0:SIMP"/>\r
+ <xsl:variable name="var57_FACT" as="node()*" select="$efficasANDschema/ns0:FACT"/>\r
+ <xsl:variable name="var54_test_resultof_logical_and" as="xs:string*">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:exists($var57_FACT) and xs:boolean(xs:decimal('0')))">\r
+ <xsl:for-each select="$var55_nom">\r
+ <xsl:variable name="var53_cur" as="node()" select="."/>\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var46_cur_of_nom(.)">\r
+ <xsl:variable name="var52_create_FACT" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var48_cur_of_nom(.)">\r
+ <xsl:variable name="var51_map_of_group_by" as="xs:string*">\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var50_cur_of_nom(.)">\r
+ <xsl:for-each select="current-group()/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ </xsl:variable>\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat('T_', fn:string($var53_cur)), xs:string(fn:count($var52_create_FACT/ns0:FACT))), '.'), fn:string-join($var51_map_of_group_by, '.')), '.'), 'KEY:'), current-grouping-key()), '.GID:'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each-group>\r
+ </xsl:for-each-group>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var55_nom">\r
+ <xsl:sequence select="fn:concat('T_', fn:string(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+ <xsl:variable name="var3_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var2_resultof_filter" as="node()*">\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:variable name="var1_resultof_vmf__inputtoresult" as="xs:boolean">\r
+ <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:if test="$var1_resultof_vmf__inputtoresult">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:exists($var2_resultof_filter)">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var3_resultof_filter">\r
+ <xsl:variable name="var7_cur" as="node()" select="."/>\r
+ <xsl:variable name="var6_resultof_any" as="xs:boolean" select="fn:exists((./@ns0:max_occurs)[(xs:integer(fn:string(.)) != xs:decimal('1'))])"/>\r
+ <simpleType>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:variable name="var5_attribut" as="node()?" select="$var7_cur/@attribut"/>\r
+ <xsl:variable name="var4_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var5_attribut)">\r
+ <xsl:sequence select="fn:string($var5_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat($var4_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+ </xsl:for-each>\r
+ <xsl:if test="fn:not($var6_resultof_any)">\r
+ <restriction>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:attribute name="base" namespace="">\r
+ <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </restriction>\r
+ </xsl:if>\r
+ <xsl:if test="$var6_resultof_any">\r
+ <list>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:attribute name="itemType" namespace="">\r
+ <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </list>\r
+ </xsl:if>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var14_cur" as="node()" select="."/>\r
+ <xsl:variable name="var13_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var9_cur_of_nom(.)">\r
+ <xsl:variable name="var12_nom" as="node()?" select="$var14_cur/@ns0:nom"/>\r
+ <xsl:variable name="var10_create_FACT" as="node()">\r
+ <FACT>\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:variable name="var11_test_resultof_greater" as="xs:string?">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:count($var10_create_FACT/ns0:FACT) > xs:decimal('1'))">\r
+ <xsl:for-each select="$var12_nom">\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var12_nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var11_test_resultof_greater">\r
+ <xsl:attribute name="ns0:nom" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:min_occurs">\r
+ <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:regles">\r
+ <regles>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </regles>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:doc">\r
+ <doc>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </doc>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:BLOC">\r
+ <BLOC>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </BLOC>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var13_resultof_Fact_mapping_v_/xs:simpleType">\r
+ <simpleType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <complexType>\r
+ <xsl:if test="fn:exists($var54_test_resultof_logical_and)">\r
+ <xsl:attribute name="name" namespace="" select="xs:string(fn:string-join(for $x in $var54_test_resultof_logical_and return xs:string($x), ' '))"/>\r
+ </xsl:if>\r
+ <sequence>\r
+ <xsl:variable name="var16_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var15_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:not(fn:exists(($var15_vmf__inputtoresult_of_attribut)[.]))">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var16_resultof_filter">\r
+ <xsl:variable name="var21_cur" as="node()" select="."/>\r
+ <xsl:variable name="var20_nom" as="node()?" select="@ns0:nom"/>\r
+ <element>\r
+ <xsl:for-each select="$var20_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var20_nom">\r
+ <xsl:variable name="var18_attribut" as="node()?" select="$var21_cur/@attribut"/>\r
+ <xsl:variable name="var17_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var18_attribut)">\r
+ <xsl:sequence select="fn:string($var18_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var17_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var19_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf6_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var19_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var24_nom" as="node()?" select="@ns0:nom"/>\r
+ <element>\r
+ <xsl:for-each select="$var24_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var24_nom">\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':T_'), fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var22_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf7_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var22_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:variable name="var23_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+ <xsl:attribute name="maxOccurs" namespace="">\r
+ <xsl:choose>\r
+ <xsl:when test="($var23_cur_as_integer = xs:decimal('-1'))">\r
+ <xsl:sequence select="'unbounded'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="xs:string($var23_cur_as_integer)"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ </sequence>\r
+ <xsl:variable name="var26_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var25_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:exists(($var25_vmf__inputtoresult_of_attribut)[.])">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var26_resultof_filter">\r
+ <xsl:variable name="var31_cur" as="node()" select="."/>\r
+ <xsl:variable name="var30_nom" as="node()?" select="@ns0:nom"/>\r
+ <attribute>\r
+ <xsl:for-each select="$var30_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var30_nom">\r
+ <xsl:variable name="var28_attribut" as="node()?" select="$var31_cur/@attribut"/>\r
+ <xsl:variable name="var27_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var28_attribut)">\r
+ <xsl:sequence select="fn:string($var28_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var27_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var29_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf8_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var29_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="use" namespace="" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </attribute>\r
+ </xsl:for-each>\r
+ </complexType>\r
+ <xsl:variable name="var34_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var33_resultof_filter" as="node()*">\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:variable name="var32_resultof_vmf__inputtoresult" as="xs:boolean">\r
+ <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:if test="$var32_resultof_vmf__inputtoresult">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:not(fn:exists($var33_resultof_filter))">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var34_resultof_filter">\r
+ <xsl:variable name="var37_cur" as="node()" select="."/>\r
+ <complexType>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:variable name="var36_attribut" as="node()?" select="$var37_cur/@attribut"/>\r
+ <xsl:variable name="var35_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var36_attribut)">\r
+ <xsl:sequence select="fn:string($var36_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat($var35_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+ </xsl:for-each>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var44_cur" as="node()" select="."/>\r
+ <xsl:variable name="var43_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var39_cur_of_nom(.)">\r
+ <xsl:variable name="var42_nom" as="node()?" select="$var44_cur/@ns0:nom"/>\r
+ <xsl:variable name="var40_create_FACT" as="node()">\r
+ <FACT>\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:variable name="var41_test_resultof_greater" as="xs:string?">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:count($var40_create_FACT/ns0:FACT) > xs:decimal('1'))">\r
+ <xsl:for-each select="$var42_nom">\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var42_nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var41_test_resultof_greater">\r
+ <xsl:attribute name="ns0:nom" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:min_occurs">\r
+ <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:regles">\r
+ <regles>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </regles>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:doc">\r
+ <doc>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </doc>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:BLOC">\r
+ <BLOC>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </BLOC>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var43_resultof_Fact_mapping_v_/xs:complexType">\r
+ <complexType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </schema>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf1_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf2_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='Fichier'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Repertoire'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='TXM'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='I'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='R'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='C'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Bool'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gma'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gmo'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='SalomeEntry'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="false()"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf3_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'AT_'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='n'">\r
+ <xsl:copy-of select="'T_'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="'T_'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf4_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='TXM'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='I'">\r
+ <xsl:copy-of select="fn:QName('', 'int')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='R'">\r
+ <xsl:copy-of select="fn:QName('', 'double')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Bool'">\r
+ <xsl:copy-of select="fn:QName('', 'boolean')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gma'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gmo'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="fn:QName('', 'false')"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf5_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='n'">\r
+ <xsl:copy-of select="false()"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf6_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf7_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf8_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'optional'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'required'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:output method="xml" encoding="UTF-8" byte-order-mark="no" indent="yes"/>\r
+ <xsl:param name="UserNameSpace" as="xs:string" required="yes"/>\r
+ <xsl:param name="PrefixName" as="xs:string" required="yes"/>\r
+ <xsl:template match="/">\r
+ <xsl:variable name="var8_resultof_concat" as="xs:string" select="fn:concat($UserNameSpace, $PrefixName)"/>\r
+ <xsl:variable name="var7_cata" as="node()?" select="ns0:cata"/>\r
+ <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+ <xsl:namespace name="{$PrefixName}">\r
+ <xsl:sequence select="$var8_resultof_concat"/>\r
+ </xsl:namespace>\r
+ <xsl:attribute name="targetNamespace" namespace="" select="xs:string(xs:anyURI($var8_resultof_concat))"/>\r
+ <xsl:attribute name="attributeFormDefault" namespace="" select="'qualified'"/>\r
+ <xsl:attribute name="elementFormDefault" namespace="" select="'qualified'"/>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+ <xsl:variable name="var1_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <typeAttendu>\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </typeAttendu>\r
+ </xsl:for-each>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var1_resultof_Fact_mapping_v_/xs:simpleType">\r
+ <simpleType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+ <complexType>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat('T_', fn:string(@ns0:nom))"/>\r
+ <sequence>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <xsl:variable name="var4_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+ <element>\r
+ <xsl:attribute name="name" namespace="" select="$var4_nom_as_string"/>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var4_nom_as_string))"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var2_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf1_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var2_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:variable name="var3_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+ <xsl:attribute name="maxOccurs" namespace="">\r
+ <xsl:choose>\r
+ <xsl:when test="($var3_cur_as_integer = xs:decimal('-1'))">\r
+ <xsl:sequence select="'unbounded'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="xs:string($var3_cur_as_integer)"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ </sequence>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+ <xsl:variable name="var5_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <typeAttendu>\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </typeAttendu>\r
+ </xsl:for-each>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var5_resultof_Fact_mapping_v_/xs:complexType">\r
+ <complexType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+ <xsl:variable name="var6_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+ <element>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var6_nom_as_string))"/>\r
+ <xsl:attribute name="name" namespace="" select="$var6_nom_as_string"/>\r
+ </element>\r
+ </xsl:for-each>\r
+ </schema>\r
+ </xsl:template>\r
+</xsl:stylesheet>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:med="http://chercheurs.edf.com/logiciels/med"
+ targetNamespace="http://chercheurs.edf.com/logiciels/med"
+ attributeFormDefault="qualified"
+ elementFormDefault="qualified">
+ <simpleType name="AT_NAME">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="T_NAMEbis">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="T_NUM">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="T_NAME">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_DES">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="T_IDE">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="T_VAL">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="T_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_NOM">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="T_TEST2">
+ <restriction base="string"/>
+ </simpleType>
+ <complexType name="T_FAS">
+ <sequence>
+ <element name="FAMILY_MESH_NAME_REF" type="med:T_FAMILY_MESH_NAME_REF" minOccurs="1"
+ maxOccurs="unbounded"/>
+ <element name="ELEM2" type="med:T_ELEM2"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_FAMILY_MESH_NAME_REF">
+ <sequence>
+ <element name="NAMEbis" type="med:T_NAMEbis" minOccurs="1"/>
+ <element name="ELEM" type="med:T_ELEM" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="NAME" type="med:AT_NAME" use="required"/>
+ </complexType>
+ <complexType name="T_ELEM">
+ <sequence>
+ <element name="NUM" type="med:T_NUM" minOccurs="1"/>
+ <element name="NAME" type="med:T_NAME" minOccurs="1"/>
+ <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+ <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_ATT">
+ <sequence>
+ <element name="DES" type="med:T_DES" minOccurs="1"/>
+ <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+ <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <complexType name="T_GRO">
+ <sequence>
+ <element name="NBR" type="med:T_NBR" minOccurs="1"/>
+ <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_ELEM2">
+ <sequence>
+ <element name="TEST2" type="med:T_TEST2"/>
+ </sequence>
+ </complexType>
+ <element type="med:T_FAS" name="FAS"/>
+</schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:med="http://chercheurs.edf.com/logiciels/med"
+ targetNamespace="http://chercheurs.edf.com/logiciels/med"
+ attributeFormDefault="qualified"
+ elementFormDefault="qualified">
+ <simpleType name="AT_NAME">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="AT_NUM">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="AT_NAME">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_DES">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="T_IDE">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="T_VAL">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_NOM">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="AT_NUM">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_DES">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="T_IDE">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="T_VAL">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="AT_NUM">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="AT_NAME">
+ <restriction base="string"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_DES">
+ <list itemType="string"/>
+ </simpleType>
+ <simpleType name="T_IDE">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="T_VAL">
+ <list itemType="int"/>
+ </simpleType>
+ <simpleType name="AT_NBR">
+ <restriction base="int"/>
+ </simpleType>
+ <simpleType name="T_NOM">
+ <list itemType="string"/>
+ </simpleType>
+ <complexType name="T_FAS">
+ <sequence>
+ <element name="FAMILY_MESH_NAME_REF" type="med:T_FAMILY_MESH_NAME_REF" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_FAMILY_MESH_NAME_REF">
+ <sequence>
+ <element name="ELEME" type="med:T_ELEME" minOccurs="0" maxOccurs="1"/>
+ <element name="FAMILLE_ZERO" type="med:T_FAMILLE_ZERO" minOccurs="1" maxOccurs="1"/>
+ <element name="NOEUD" type="med:T_NOEUD" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="NAME" type="med:AT_NAME" use="required"/>
+ </complexType>
+ <complexType name="T_ELEME">
+ <sequence>
+ <element name="FAMILY_NAME_ELEM" type="med:T_FAMILY_NAME_ELEM" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_FAMILY_NAME_ELEM">
+ <sequence>
+ <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+ <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="NUM" type="med:AT_NUM" use="required"/>
+ <attribute name="NAME" type="med:AT_NAME" use="required"/>
+ </complexType>
+ <complexType name="T_ATT">
+ <sequence>
+ <element name="DES" type="med:T_DES" minOccurs="1"/>
+ <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+ <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <complexType name="T_GRO">
+ <sequence>
+ <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <complexType name="T_FAMILLE_ZERO">
+ <sequence>
+ <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="NUM" type="med:AT_NUM" use="required"/>
+ </complexType>
+ <complexType name="T_ATT">
+ <sequence>
+ <element name="DES" type="med:T_DES" minOccurs="1"/>
+ <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+ <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <complexType name="T_NOEUD">
+ <sequence>
+ <element name="FAMILY_NAME_NOE" type="med:T_FAMILY_NAME_NOE" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="T_FAMILY_NAME_NOE">
+ <sequence>
+ <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+ <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="NUM" type="med:AT_NUM" use="required"/>
+ <attribute name="NAME" type="med:AT_NAME" use="required"/>
+ </complexType>
+ <complexType name="T_ATT">
+ <sequence>
+ <element name="DES" type="med:T_DES" minOccurs="1"/>
+ <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+ <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <complexType name="T_GRO">
+ <sequence>
+ <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+ </sequence>
+ <attribute name="NBR" type="med:AT_NBR" use="required"/>
+ </complexType>
+ <element type="med:T_FAS" name="FAS"/>
+</schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+This file was generated by Altova MapForce 2018sp1\r
+\r
+YOU SHOULD NOT MODIFY THIS FILE, BECAUSE IT WILL BE\r
+OVERWRITTEN WHEN YOU RE-RUN CODE GENERATION.\r
+\r
+Refer to the Altova MapForce Documentation for further details.\r
+http://www.altova.com/mapforce\r
+-->\r
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://chercheurs.edf.com/logiciels/efficas" xmlns:user="http://www.altova.com/MapForce/UDF/user" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf" xmlns:grp="http://www.altova.com/Mapforce/grouping" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="ns0 user vmf grp xs fn">\r
+ <xsl:param name="Model_Efficas__1_1____XMLSchema__1_1__v7" select="'Model Efficas (1.1) + XMLSchema (1.1) v7.xml'"/>\r
+ <xsl:function name="grp:Fact_mapping_v2_var9_cur_of_nom">\r
+ <xsl:param name="var8_cur" as="node()"/>\r
+ <xsl:for-each select="$var8_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var39_cur_of_nom">\r
+ <xsl:param name="var38_cur" as="node()"/>\r
+ <xsl:for-each select="$var38_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var46_cur_of_nom">\r
+ <xsl:param name="var45_cur" as="node()"/>\r
+ <xsl:for-each select="$var45_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var48_cur_of_nom">\r
+ <xsl:param name="var47_cur" as="node()"/>\r
+ <xsl:for-each select="$var47_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:function name="grp:Fact_mapping_v2_var50_cur_of_nom">\r
+ <xsl:param name="var49_cur" as="node()"/>\r
+ <xsl:for-each select="$var49_cur/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:function>\r
+ <xsl:template name="user:Fact_mapping_v2">\r
+ <xsl:param name="NameSpaceName" select="()"/>\r
+ <xsl:param name="efficasANDschema" select="()"/>\r
+ <xsl:variable name="var55_nom" as="node()?" select="$efficasANDschema/@ns0:nom"/>\r
+ <xsl:variable name="var56_SIMP" as="node()*" select="$efficasANDschema/ns0:SIMP"/>\r
+ <xsl:variable name="var57_FACT" as="node()*" select="$efficasANDschema/ns0:FACT"/>\r
+ <xsl:variable name="var54_test_resultof_logical_and" as="xs:string*">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:exists($var57_FACT) and xs:boolean(xs:decimal('0')))">\r
+ <xsl:for-each select="$var55_nom">\r
+ <xsl:variable name="var53_cur" as="node()" select="."/>\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var46_cur_of_nom(.)">\r
+ <xsl:variable name="var52_create_FACT" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var48_cur_of_nom(.)">\r
+ <xsl:variable name="var51_map_of_group_by" as="xs:string*">\r
+ <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var50_cur_of_nom(.)">\r
+ <xsl:for-each select="current-group()/@ns0:nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ </xsl:variable>\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat('T_', fn:string($var53_cur)), xs:string(fn:count($var52_create_FACT/ns0:FACT))), '.'), fn:string-join($var51_map_of_group_by, '.')), '.'), 'KEY:'), current-grouping-key()), '.GID:'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each-group>\r
+ </xsl:for-each-group>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var55_nom">\r
+ <xsl:sequence select="fn:concat('T_', fn:string(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+ <xsl:variable name="var3_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var2_resultof_filter" as="node()*">\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:variable name="var1_resultof_vmf__inputtoresult" as="xs:boolean">\r
+ <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:if test="$var1_resultof_vmf__inputtoresult">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:exists($var2_resultof_filter)">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var3_resultof_filter">\r
+ <xsl:variable name="var7_cur" as="node()" select="."/>\r
+ <xsl:variable name="var6_resultof_any" as="xs:boolean" select="fn:exists((./@ns0:max_occurs)[(xs:integer(fn:string(.)) != xs:decimal('1'))])"/>\r
+ <simpleType>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:variable name="var5_attribut" as="node()?" select="$var7_cur/@attribut"/>\r
+ <xsl:variable name="var4_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var5_attribut)">\r
+ <xsl:sequence select="fn:string($var5_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat($var4_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+ </xsl:for-each>\r
+ <xsl:if test="fn:not($var6_resultof_any)">\r
+ <restriction>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:attribute name="base" namespace="">\r
+ <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </restriction>\r
+ </xsl:if>\r
+ <xsl:if test="$var6_resultof_any">\r
+ <list>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:attribute name="itemType" namespace="">\r
+ <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </list>\r
+ </xsl:if>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var14_cur" as="node()" select="."/>\r
+ <xsl:variable name="var13_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var9_cur_of_nom(.)">\r
+ <xsl:variable name="var12_nom" as="node()?" select="$var14_cur/@ns0:nom"/>\r
+ <xsl:variable name="var10_create_FACT" as="node()">\r
+ <FACT>\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:variable name="var11_test_resultof_greater" as="xs:string?">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:count($var10_create_FACT/ns0:FACT) > xs:decimal('1'))">\r
+ <xsl:for-each select="$var12_nom">\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var12_nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var11_test_resultof_greater">\r
+ <xsl:attribute name="ns0:nom" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:min_occurs">\r
+ <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:regles">\r
+ <regles>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </regles>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:doc">\r
+ <doc>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </doc>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:BLOC">\r
+ <BLOC>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </BLOC>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var13_resultof_Fact_mapping_v_/xs:simpleType">\r
+ <simpleType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <complexType>\r
+ <xsl:if test="fn:exists($var54_test_resultof_logical_and)">\r
+ <xsl:attribute name="name" namespace="" select="xs:string(fn:string-join(for $x in $var54_test_resultof_logical_and return xs:string($x), ' '))"/>\r
+ </xsl:if>\r
+ <sequence>\r
+ <xsl:variable name="var16_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var15_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:not(fn:exists(($var15_vmf__inputtoresult_of_attribut)[.]))">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var16_resultof_filter">\r
+ <xsl:variable name="var21_cur" as="node()" select="."/>\r
+ <xsl:variable name="var20_nom" as="node()?" select="@ns0:nom"/>\r
+ <element>\r
+ <xsl:for-each select="$var20_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var20_nom">\r
+ <xsl:variable name="var18_attribut" as="node()?" select="$var21_cur/@attribut"/>\r
+ <xsl:variable name="var17_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var18_attribut)">\r
+ <xsl:sequence select="fn:string($var18_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var17_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var19_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf6_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var19_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var24_nom" as="node()?" select="@ns0:nom"/>\r
+ <element>\r
+ <xsl:for-each select="$var24_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var24_nom">\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':T_'), fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var22_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf7_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var22_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:variable name="var23_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+ <xsl:attribute name="maxOccurs" namespace="">\r
+ <xsl:choose>\r
+ <xsl:when test="($var23_cur_as_integer = xs:decimal('-1'))">\r
+ <xsl:sequence select="'unbounded'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="xs:string($var23_cur_as_integer)"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ </sequence>\r
+ <xsl:variable name="var26_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var25_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:exists(($var25_vmf__inputtoresult_of_attribut)[.])">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var26_resultof_filter">\r
+ <xsl:variable name="var31_cur" as="node()" select="."/>\r
+ <xsl:variable name="var30_nom" as="node()?" select="@ns0:nom"/>\r
+ <attribute>\r
+ <xsl:for-each select="$var30_nom">\r
+ <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var30_nom">\r
+ <xsl:variable name="var28_attribut" as="node()?" select="$var31_cur/@attribut"/>\r
+ <xsl:variable name="var27_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var28_attribut)">\r
+ <xsl:sequence select="fn:string($var28_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var27_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var29_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf8_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var29_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="use" namespace="" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </attribute>\r
+ </xsl:for-each>\r
+ </complexType>\r
+ <xsl:variable name="var34_resultof_filter" as="node()*">\r
+ <xsl:for-each select="$var56_SIMP">\r
+ <xsl:variable name="var33_resultof_filter" as="node()*">\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <xsl:variable name="var32_resultof_vmf__inputtoresult" as="xs:boolean">\r
+ <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:if test="$var32_resultof_vmf__inputtoresult">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:if test="fn:not(fn:exists($var33_resultof_filter))">\r
+ <xsl:sequence select="."/>\r
+ </xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var34_resultof_filter">\r
+ <xsl:variable name="var37_cur" as="node()" select="."/>\r
+ <complexType>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:variable name="var36_attribut" as="node()?" select="$var37_cur/@attribut"/>\r
+ <xsl:variable name="var35_resultof_vmf__inputtoresult" as="xs:string">\r
+ <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+ <xsl:with-param name="input" as="xs:string">\r
+ <xsl:choose>\r
+ <xsl:when test="fn:exists($var36_attribut)">\r
+ <xsl:sequence select="fn:string($var36_attribut)"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="'n'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat($var35_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+ </xsl:for-each>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var57_FACT">\r
+ <xsl:variable name="var44_cur" as="node()" select="."/>\r
+ <xsl:variable name="var43_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var39_cur_of_nom(.)">\r
+ <xsl:variable name="var42_nom" as="node()?" select="$var44_cur/@ns0:nom"/>\r
+ <xsl:variable name="var40_create_FACT" as="node()">\r
+ <FACT>\r
+ <xsl:for-each select="current-group()">\r
+ <FACT>\r
+ <xsl:for-each select="@ns0:nom">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:variable>\r
+ <xsl:variable name="var41_test_resultof_greater" as="xs:string?">\r
+ <xsl:choose>\r
+ <xsl:when test="(fn:count($var40_create_FACT/ns0:FACT) > xs:decimal('1'))">\r
+ <xsl:for-each select="$var42_nom">\r
+ <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:for-each select="$var42_nom">\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var41_test_resultof_greater">\r
+ <xsl:attribute name="ns0:nom" select="."/>\r
+ </xsl:for-each>\r
+ </xsl:for-each-group>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:min_occurs">\r
+ <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:regles">\r
+ <regles>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </regles>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:doc">\r
+ <doc>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </doc>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:BLOC">\r
+ <BLOC>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </BLOC>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var43_resultof_Fact_mapping_v_/xs:complexType">\r
+ <complexType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ </schema>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf1_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf2_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='Fichier'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Repertoire'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='TXM'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='I'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='R'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='C'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Bool'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gma'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gmo'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='SalomeEntry'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="false()"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf3_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'AT_'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='n'">\r
+ <xsl:copy-of select="'T_'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="'T_'"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf4_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='TXM'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='I'">\r
+ <xsl:copy-of select="fn:QName('', 'int')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='R'">\r
+ <xsl:copy-of select="fn:QName('', 'double')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='Bool'">\r
+ <xsl:copy-of select="fn:QName('', 'boolean')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gma'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='gmo'">\r
+ <xsl:copy-of select="fn:QName('', 'string')"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="fn:QName('', 'false')"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf5_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="true()"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='n'">\r
+ <xsl:copy-of select="false()"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf6_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf7_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'0'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'1'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:template name="vmf:vmf8_inputtoresult">\r
+ <xsl:param name="input" select="()"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$input='f'">\r
+ <xsl:copy-of select="'optional'"/>\r
+ </xsl:when>\r
+ <xsl:when test="$input='o'">\r
+ <xsl:copy-of select="'required'"/>\r
+ </xsl:when>\r
+ </xsl:choose>\r
+ </xsl:template>\r
+ <xsl:output method="xml" encoding="UTF-8" byte-order-mark="no" indent="yes"/>\r
+ <xsl:param name="UserNameSpace" as="xs:string" required="yes"/>\r
+ <xsl:param name="PrefixName" as="xs:string" required="yes"/>\r
+ <xsl:template match="/">\r
+ <xsl:variable name="var8_resultof_concat" as="xs:string" select="fn:concat($UserNameSpace, $PrefixName)"/>\r
+ <xsl:variable name="var7_cata" as="node()?" select="ns0:cata"/>\r
+ <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+ <xsl:namespace name="{$PrefixName}">\r
+ <xsl:sequence select="$var8_resultof_concat"/>\r
+ </xsl:namespace>\r
+ <xsl:attribute name="targetNamespace" namespace="" select="xs:string(xs:anyURI($var8_resultof_concat))"/>\r
+ <xsl:attribute name="attributeFormDefault" namespace="" select="'qualified'"/>\r
+ <xsl:attribute name="elementFormDefault" namespace="" select="'qualified'"/>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+ <xsl:variable name="var1_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <typeAttendu>\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </typeAttendu>\r
+ </xsl:for-each>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var1_resultof_Fact_mapping_v_/xs:simpleType">\r
+ <simpleType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </simpleType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+ <complexType>\r
+ <xsl:attribute name="name" namespace="" select="fn:concat('T_', fn:string(@ns0:nom))"/>\r
+ <sequence>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <xsl:variable name="var4_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+ <element>\r
+ <xsl:attribute name="name" namespace="" select="$var4_nom_as_string"/>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var4_nom_as_string))"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:variable name="var2_resultof_vmf__inputtoresult" as="xs:string?">\r
+ <xsl:call-template name="vmf:vmf1_inputtoresult">\r
+ <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var2_resultof_vmf__inputtoresult">\r
+ <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:variable name="var3_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+ <xsl:attribute name="maxOccurs" namespace="">\r
+ <xsl:choose>\r
+ <xsl:when test="($var3_cur_as_integer = xs:decimal('-1'))">\r
+ <xsl:sequence select="'unbounded'"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:sequence select="xs:string($var3_cur_as_integer)"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:attribute>\r
+ </xsl:for-each>\r
+ </element>\r
+ </xsl:for-each>\r
+ </sequence>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+ <xsl:variable name="var5_resultof_Fact_mapping_v_" as="node()?">\r
+ <xsl:call-template name="user:Fact_mapping_v2">\r
+ <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+ <xsl:with-param name="efficasANDschema" as="node()">\r
+ <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:FACT">\r
+ <FACT>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </FACT>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:SIMP">\r
+ <SIMP>\r
+ <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+ <xsl:for-each select="@ns0:statut">\r
+ <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@ns0:max_occurs">\r
+ <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="@attribut">\r
+ <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="ns0:typeAttendu">\r
+ <typeAttendu>\r
+ <xsl:sequence select="fn:string(.)"/>\r
+ </typeAttendu>\r
+ </xsl:for-each>\r
+ </SIMP>\r
+ </xsl:for-each>\r
+ </FACT>\r
+ </xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:variable>\r
+ <xsl:for-each select="$var5_resultof_Fact_mapping_v_/xs:complexType">\r
+ <complexType>\r
+ <xsl:sequence select="(./@node(), ./node())"/>\r
+ </complexType>\r
+ </xsl:for-each>\r
+ </xsl:for-each>\r
+ <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+ <xsl:variable name="var6_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+ <element>\r
+ <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var6_nom_as_string))"/>\r
+ <xsl:attribute name="name" namespace="" select="$var6_nom_as_string"/>\r
+ </element>\r
+ </xsl:for-each>\r
+ </schema>\r
+ </xsl:template>\r
+</xsl:stylesheet>\r
--- /dev/null
+saxonb-xslt -s:../Cata_MED_FAM.xml -xsl:MappingMapToXMLSchema_1_1__ef.xslt PrefixName=med UserNameSpace='http://chercheurs.edf.com/logiciels/'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
--- /dev/null
+texteDebut='<?xml version="1.0" encoding="UTF-8"?>\n<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:{}="http://chercheurs.edf.com/logiciels/{}" targetNamespace="http://chercheurs.edf.com/logiciels/{}" elementFormDefault="qualified" attributeFormDefault="qualified"\n>'
+texteFin='</schema>'
+
+# SIMP
+typeSimple = '\t<simpleType name="{}">\n\t\t<restriction base="{}"/>\n\t</simpleType>\n'
+debutTypeSimpleWithInto = '\t<simpleType name="{}">\n\t\t<restriction base="{}">\n'
+typeSimpleWithInto = '\t\t\t<enumeration value="{}"/>\n'
+finTypeSimpleWithInto = '\t\t</restriction>\n\t</simpleType>\n'
+eltDsSequence = '\t\t\t<element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+
+# COMPO
+debutTypeCompo = '\t<complexType name="{}" >\n\t\t<sequence minOccurs="{}" maxOccurs="{}">\n'
+finTypeCompo = '\t\t</sequence>\n\t</complexType>\n'
+eltCompoDsSequence = '\t\t\t<element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+eltCompoDsSequenceSiProc = '\t\t\t<element name="{}" type="{}:{}" />\n'
+
+# BLOC
+debutTypeSubst = '\t<group name="{}"> \n\t\t<sequence>\n'
+finTypeSubst = '\t\t</sequence>\n\t</group>\n'
+substDsSequence = '\t\t\t<group ref="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+
+
+# CATA
+debutTypeCata = '\t<complexType name="{}">\n\t\t<choice minOccurs="0" maxOccurs="unbounded">\n'
+finTypeCata = '\t\t</choice>\n\t</complexType> '
+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
+
+ 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)
+
--- /dev/null
+../CataTestXSD/Test_Catalogue_(1.1)_PyXB.xml
\ No newline at end of file
--- /dev/null
+# -*- coding: utf-8 -*-
+from raw.efficas import *
--- /dev/null
+# Demonstrate alternatives for bindings customization
+import sys, os
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..")))
+
+# Introspection-based customization.
+#from raw.custom import *
+#import raw.custom as raw_custom
+from Atmo.raw.atmo_test3 import *
+import Atmo.raw.atmo_test3 as raw_custom
+
+#class ta04 (raw_custom.ta04):
+# def xa04 (self):
+# return 'extend ta04'
+#raw_custom.ta04._SetSupersedingClass(ta04)
+
+import inspect
+def creationAccasSimp(c):
+ print c
+
+class toto
+def __init__(self,*args):
+ print dir(self)
+ mro = type(self).mro()
+ for next_class in mro[mro.index(ChildB) + 1:] :
+ if hasattr(next_class, '__init__'):
+ next_class.__init__(self,args)
+
+# Utility function to identify classes of interest
+def _isSupersedable (cls):
+ return inspect.isclass(cls) and issubclass(cls, pyxb.binding.basis._DynamicCreate_mixin)
+
+def _injectClasses ():
+ import sys
+ import pyxb.binding.basis
+
+ # All PyXB complex type definitions in the original module
+ raw_classes = set([_o for (_, _o) in inspect.getmembers(raw_custom) if _isSupersedable(_o)])
+ raw_classes_compo=set()
+ raw_classes_simp=set()
+ for c in raw_classes :
+ if issubclass(c,pyxb.binding.basis.complexTypeDefinition) : raw_classes_compo.add(c)
+ else : raw_classes_simp.add(c)
+ #print 'Original classes complex type: %s' % (raw_classes_compo,)
+ print 'Original classes simple type: %s' % (raw_classes_simp,)
+ for c in raw_classes_simp:
+ setattr(c,'creationAccasSimp',creationAccasSimp)
+ oldInit=c.__init__
+ print c.__class__
+ #setattr(c,'__init__',__init__)
+ print c.__mro__
+
+ # PyXB complex type definitions in this module that did not come
+ # from the original import *.
+ this_module = sys.modules[__name__]
+ this_classes = set([_o for (_, _o) in inspect.getmembers(this_module) if _isSupersedable(_o) and _o not in raw_classes])
+ this_classes_tuple = tuple(this_classes)
+ #print 'This classes: %s' % (this_classes,)
+
+ # Raw classes superseded by something in this module
+ superseded_classes = set([ _o for _o in raw_classes if _o._SupersedingClass() in this_classes ])
+ superseded_classes_tuple = tuple(superseded_classes)
+ print 'Superseded classes: %s' % (superseded_classes,)
+
+ # Raw classes that are subclasses of something superseded by this
+ # module, but that are not themselves superseded by this module
+ need_supersedure_classes = set([_o for _o in raw_classes if issubclass(_o, superseded_classes_tuple) and _o not in superseded_classes])
+ print 'Need supersedure classes: %s' % (need_supersedure_classes,)
+
+ # Add local definitions to supersede classes all of whose
+ # ancestors have been superseded as necessary.
+ while need_supersedure_classes:
+ did_replacement = False
+ new_need_supersedure_classes = set()
+ for o in need_supersedure_classes:
+ candidate = True
+ # Build the new sequence of base classes while we check them.
+ new_mro = []
+ for super_o in o.__mro__:
+ if super_o == o:
+ # Put the superseded class in its original position (probably first)
+ new_mro.append(o)
+ continue
+ if super_o in need_supersedure_classes:
+ # Subclass of a class we haven't gotten to yet; put it off
+ candidate = False
+ break
+ # Append the replacement or the original, as needed
+ if super_o in superseded_classes:
+ new_mro.append(super_o._SupersedingClass())
+ else:
+ new_mro.append(super_o)
+ if not candidate:
+ new_need_supersedure_classes.add(o)
+ continue
+ # Create a new class that subclasses the replacements
+ name = o.__name__
+ new_o = type(name, tuple(new_mro), o.__dict__.copy())
+ # Install it in the module
+ setattr(this_module, name, new_o)
+ # Tell PyXB to use it as the superseding class
+ o._SetSupersedingClass(new_o)
+ # Record it so future passes will find it
+ superseded_classes.add(o)
+ assert need_supersedure_classes != new_need_supersedure_classes
+ need_supersedure_classes = new_need_supersedure_classes
+
+_injectClasses()
+m=T_Unit1(1)
+print m
--- /dev/null
+class Tuple:
+ def __init__(self,ntuple):
+ self.ntuple=ntuple
+
+ def __convert__(self,valeur):
+ if type(valeur) == types.StringType:
+ return None
+ if len(valeur) != self.ntuple:
+ return None
+ return valeur
+
+ def info(self):
+ return "Tuple de %s elements" % self.ntuple
+
+ __repr__=info
+ __str__=info
+
+
+
+def inverseDico(dicoSource) :
+#---------------------------
+ dicoInverse = {}
+ for (clef,valeur) in dicoSource.items():
+ if not(type(valeur) is tuple):
+ dicoInverse[valeur]=clef
+ continue
+ (elt,att)=valeur
+ if elt not in dicoInverse : dicoInverse[elt]={}
+ dicoInverse[elt][att]=clef
+ return dicoInverse
+
+dictSIMPEficasXML= { 'typ' : 'nomTypeAttendu',
+ 'statut' : 'statut',
+ 'min' : 'minOccurences',
+ 'max' : 'maxOccurences',
+ 'homo' : 'homo' ,
+ 'position' : 'portee',
+ 'validators' : 'validators' ,
+ 'sug' : 'valeurSugg',
+ 'defaut' : 'valeurDef' ,
+ 'into' : ('plageValeur','into'),
+ 'val_min' : ('plageValeur','borneInf'),
+ 'val_max' : ('plageValeur','borneSup'),
+ 'ang' : ('doc','ang'),
+ 'fr' : ('doc','fr',),
+ 'docu' : ('doc','docu'),
+ }
+
+dictSIMPXMLEficas= inverseDico(dictSIMPEficasXML)
+
+
+
+dictFACTEficasXML = { 'statut' : 'statut',
+ 'min' : 'minOccurences',
+ 'max' : 'maxOccurences',
+ 'ang' : ('doc','ang'),
+ 'fr' : ('doc','fr',),
+ 'docu' : ('doc','docu'),
+ 'regles' : 'regles',
+ 'validators' : 'validators' ,
+ }
+
+dictFACTXMLEficas = inverseDico(dictFACTEficasXML)
+
+dictBLOCEficasXML = { 'statut' : 'statut',
+ 'ang' : ('doc','ang'),
+ 'fr' : ('doc','fr',),
+ 'regles' : 'regles',
+ 'condition' : 'condition' ,
+ }
+
+dictBLOCXMLEficas = inverseDico(dictBLOCEficasXML)
+
+dictPROCEficasXML = { 'nom' : 'nom',
+ 'regles' : 'regles',
+ 'ang' : ('doc','ang'),
+ 'fr' : ('doc','fr',),
+ 'docu' : ('doc','docu'),
+ }
+ # 'UIinfo' : 'UIinfo'
+ # 'reentrant'
+ # 'repetable'
+ # 'op_init'
+ # 'fenetreIhm' : 'fenetreIhm'
+
+dictPROCXMLEficas = inverseDico(dictPROCEficasXML)
+
+dictOPEREficasXML = dictPROCEficasXML
+dictOPERXMLEficas = dictPROCXMLEficas
+
+dictPourCast = { 'I' : int, 'R' : float, 'bool' : bool , }
+dictNomsDesTypes = { 'I' : 'int', 'R' : 'float', bool : 'boolean' , 'TXM' : 'string', 'Fichier' : 'string', 'Repertoire':'string', 'FichierNoAbs' : 'string', 'FichierOuRepertoire':'string' }
+
+listeParamDeTypeTypeAttendu = ( 'defaut', 'sug', 'val_min', 'val_max', 'into', 'intoSug')
+listeParamDeTypeStr = ('fr', 'docu', 'ang', 'nom' )
+
+listeParamTjsSequence = ('into' , 'intoSug')
+listeParamSelonType = ('defaut', 'sug', 'into', 'intoSug')
+
+if __name__ == "__main__":
+ import pprint
+ pp=pprint.PrettyPrinter(indent=4)
+ print ('dictSIMPEficasXML')
+ pp.pprint(dictSIMPEficasXML)
+ print ('\n\n')
+ print ('dictSIMPXMLEficas')
+ pp.pprint(dictSIMPXMLEficas)
+ print ('\n\n')
+ print ('dictFACTEficasXML')
+ pp.pprint(dictFACTEficasXML)
+ print ('\n\n')
+ print ('dictFACTXMLEficas')
+ pp.pprint(dictFACTXMLEficas)
+ print ('\n\n')
+ print ('dictPROCEficasXML')
+ pp.pprint(dictPROCEficasXML)
+ print ('\n\n')
+ print ('dictPROCXMLEficas')
+ pp.pprint(dictPROCXMLEficas)
+ print ('\n\n')
+ print ('dictNomsDesTypes')
+ pp.pprint(dictNomsDesTypes )
--- /dev/null
+ModeleEficas/Model Efficas (1.1) v9.xsd
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import raw.efficas as efficas
+import types
+
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+
+from Accas import *
+
+
+# ds l init du SIMP il manque siValide et fenetreIhm
+
+from mapDesTypes import dictSIMPEficasXML, dictSIMPXMLEficas
+from mapDesTypes import dictFACTEficasXML, dictFACTXMLEficas
+from mapDesTypes import dictPROCEficasXML, dictPROCXMLEficas
+from mapDesTypes import dictOPEREficasXML, dictOPERXMLEficas
+from mapDesTypes import dictBLOCEficasXML, dictBLOCXMLEficas
+from mapDesTypes import dictPourCast
+from mapDesTypes import listeParamDeTypeTypeAttendu, listeParamDeTypeStr, dictPourCast
+from mapDesTypes import listeParamTjsSequence, listeParamSelonType
+
+
+# ------------------------------
+class objetDefinitionAccas:
+# ------------------------------
+
+ def argumentXMLToEficas(self):
+ # ---------------------------
+ # Attention, pas de validation pour l instant
+ # il faut verifier la coherence entre les types contenus dans defaut, sug ... et le typeAttendu
+ # tout cela dans une fonction verifie pas faite -)
+
+ # Recuperation parametres
+ self.dictArgsEficas={}
+ for nomXMLArg in dir(self) :
+ if nomXMLArg in self.dictATraiter :
+ nomEficasArg=self.dictATraiter[nomXMLArg]
+ argu=getattr(self,nomXMLArg)
+ if argu==None : continue
+
+ if type(nomEficasArg) == types.DictionaryType:
+ for nomXML in list(nomEficasArg.keys()):
+ arguDecoupe=getattr(argu,nomXML)
+ nomEficasDecoupe=nomEficasArg[nomXML]
+ if arguDecoupe == None : continue
+ self.dictArgsEficas[nomEficasDecoupe]=arguDecoupe
+ else :
+ self.dictArgsEficas[nomEficasArg] = argu
+
+ # Cast dans le bon type des parametres si necessaire
+ if 'min' in list(self.dictArgsEficas.keys()):
+ self.dictArgsEficas['min']=int(self.dictArgsEficas['min'])
+
+ if 'max' in list(self.dictArgsEficas.keys()):
+ if self.dictArgsEficas['max']== -1 : self.dictArgsEficas['max']="**"
+ else : self.dictArgsEficas['max']=int(self.dictArgsEficas['max'])
+
+ for param in list(self.dictArgsEficas.keys()):
+ if param in listeParamDeTypeStr :
+ self.dictArgsEficas[param]=unicode(self.dictArgsEficas[param])
+
+ # En 2.7 a revoir en 3 ? necessaire
+ self.nomObj=str(self.nom)
+
+ def getAccasEquivalent(self):
+ # ---------------------------
+ return self.nomObj, self.objAccas
+#
+
+# ---------------------------------------------------------
+class objetComposeDefinitionAccas (objetDefinitionAccas):
+# ---------------------------------------------------------
+ def exploreArbre(self,cata):
+ # --------------------------
+ liste=[]
+ for obj in self.content(): liste.append(obj)
+ #liste.reverse()
+ # PNPNPN essayer de comprendre reverse ou non
+
+ for obj in liste:
+ if hasattr(obj,'explore') : obj.explore(cata)
+ if hasattr(obj,'getAccasEquivalent') :
+ nom,objetAccas=obj.getAccasEquivalent()
+ self.dictArgsEficas[nom]=objetAccas
+
+# ----------------------------------------------------
+class monSIMP (efficas.T_SIMP, objetDefinitionAccas):
+# ----------------------------------------------------
+
+ def explore(self,cata):
+ # --------------------
+ #print ("je passe dans explore pour SIMP ", self.nom)
+ self.dictATraiter= dictSIMPXMLEficas
+ self.argumentXMLToEficas()
+ #print (self.dictArgsEficas)
+
+
+ self.objAccas=A_SIMP.SIMP(**self.dictArgsEficas)
+ self.objAccas.nom=self.nomObj
+
+ def argumentXMLToEficas(self):
+ # ----------------------------
+ #print self.nom
+ objetDefinitionAccas.argumentXMLToEficas(self)
+
+ if self.attendTuple() :
+ #nbDElts=type(listeDElt[0])
+ print self.nomTypeAttendu
+
+
+ self.traiteLesSequences()
+ #self.convertitLesTypes()
+
+ def attendListe(self):
+ # ---------------
+ if 'max' in self.dictArgsEficas :
+ if self.dictArgsEficas['max'] > 1 : return True
+ if self.dictArgsEficas['max'] == "**" : return True
+ return False
+
+ def attendTuple(self):
+ # -----------------
+ if self.dictArgsEficas['typ'] != 'tuple' : return False
+ return True
+
+ def attendTXM(self):
+ # ----------------
+ if self.dictArgsEficas['typ'] == 'TXM' : return True
+ return False
+
+
+ def traiteLesSequences(self):
+ # ---------------------------
+ listeDeListe=self.attendListe()
+ for param in listeParamTjsSequence :
+ if param in self.dictArgsEficas :
+ if listeDeListe == False:
+ #print ('________________________________')
+ listeDElt=[]
+ for i in range(len(self.dictArgsEficas[param])):
+ # ou typesimple ?
+ # ici on ne sait pas si on est un type simple ou complexe ?
+ listeDElt.append(self.dictArgsEficas[param][i].content()[0])
+ listeRetour=self.convertitListeDsLeBonType(listeDElt)
+ #print (listeRetour)
+ #print ('________________________________')
+ self.dictArgsEficas[param]=listeRetour
+ else :
+ listeResultat=[]
+ # on transforme en liste pour traiter chaque elt de la liste
+ for i in range(len(self.dictArgsEficas[param])):
+ if self.dictArgsEficas[param][i].typesimple != None :
+ lesElts=self.dictArgsEficas[param][i].typesimple
+ else :
+ lesElts=self.dictArgsEficas[param][i].content()
+ if (not(isinstance(lesElts,list)) and not (isinstance(lesElts,tuple))):
+ lesElts=(lesElts,)
+ lesEltsTransformes=self.convertitListeDsLeBonType(lesElts)
+ lesEltsTransformes=self.convertitListeDsLeBonType(lesElts)
+ listeResultat.append(lesEltsTransformes)
+ self.dictArgsEficas[param]=listeResultat
+ #print ('fin de traiteLesSequences pour', self.nom, ' param :', param, 'listeResultat',self.dictArgsEficas[param])
+
+
+ def convertitListeDsLeBonType(self,listeDElt):
+ # -------------------------------------------
+ # Cas des Tuples non traites
+ typeAttendu = self.dictArgsEficas['typ']
+ if typeAttendu in list(dictPourCast.keys()):
+ nouvelleListe=[]
+ castDsLeTypeAttendu=dictPourCast[typeAttendu]
+ for valeurACaster in listeDElt :
+ val=castDsLeTypeAttendu(valeurACaster)
+ nouvelleListe.append(val)
+ return nouvelleListe
+ elif self.attendTuple() :
+ nbDElts=type(listeDElt[0]).n
+
+ else : return listeDElt
+
+
+
+ def convertitLesTypes(self):
+ # ------------------------
+ # Cas des Tuples non traites
+ # Cas des fonctions utilisateurs non traites
+
+ typeAttendu = self.dictArgsEficas['typ']
+ if typeAttendu in list(dictPourCast.keys()):
+ castDsLeTypeAttendu=dictPourCast[typeAttendu]
+ for param in listeParamDeTypeTypeAttendu :
+ if param in list(self.dictArgsEficas.keys()):
+ if param in listeParamEnListeSelonType or param in listeParamTjsEnListe :
+ print ('typeAttendu',typeAttendu)
+ print (self.dictArgsEficas[param])
+ print (self.dictArgsEficas[param].content())
+ print (self.dictArgsEficas[param].content())
+ return
+ valeurACaster=self.dictArgsEficas[param].typesimple
+ if not isinstance(valeurACaster, (list, tuple)) :
+ val=castDsLeTypeAttendu(valeurACaster)
+ self.dictArgsEficas[param]=val
+ else :
+ liste=[]
+ for val in valeurACaster : liste.append(castDsLeTypeAttendu(val))
+ self.dictArgsEficas[param]=liste
+
+
+# -------------------------------------------------------
+class monFACT(efficas.T_FACT, objetComposeDefinitionAccas):
+# -------------------------------------------------------
+ def explore(self,cata):
+ # --------------------
+ #print "je passe dans explore pour FACT ", self.nom
+
+ self.dictATraiter= dictFACTXMLEficas
+ self.argumentXMLToEficas()
+ self.exploreArbre(cata)
+ self.objAccas=A_FACT.FACT(**self.dictArgsEficas)
+
+
+# ---------------------------------------------------------
+class monPROC(efficas.T_PROC, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+ def explore(self,cata):
+ # --------------------
+ print "je passe dans explore pour PROC ", self.nom
+ self.dictATraiter= dictPROCXMLEficas
+ self.argumentXMLToEficas()
+ self.exploreArbre(cata)
+ self.dictArgsEficas['op']=None
+
+ self.objAccas=A_PROC.PROC(**self.dictArgsEficas)
+ setattr(cata, self.nomObj,self.objAccas)
+ cata.contexteXML[self.nomObj]=self.objAccas
+
+# ---------------------------------------------------------
+class monOPER(efficas.T_OPER, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+ def explore(self,cata):
+# ------------------------
+ print "je passe dans explore pour OPER", self.nom
+ self.cata=cata
+ self.dictATraiter= dictOPERXMLEficas
+ self.argumentXMLToEficas()
+ self.exploreArbre(cata)
+
+ textCreationClasse='class '+str(self.typeCree)+'(ASSD): pass\n'
+ exec(textCreationClasse,globals())
+ maClasseCreee=globals()[self.typeCree]
+ self.dictArgsEficas['sd_prod'] = maClasseCreee
+ cata.contexteXML[self.typeCree] = maClasseCreee
+
+ self.dictArgsEficas['op'] = None
+ self.objAccas=A_OPER.OPER(**self.dictArgsEficas)
+ setattr(cata, self.nomObj,self.objAccas)
+ cata.contexteXML[self.nomObj] = self.objAccas
+
+# ---------------------------------------------------------
+class monBLOC(efficas.T_BLOC, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+ def explore(self,cata):
+# ------------------------
+ print ('je passe dans explore pour BLOC', self.nom)
+ self.cata=cata
+ self.dictATraiter= dictBLOCXMLEficas
+ self.argumentXMLToEficas()
+ self.exploreArbre(cata)
+ self.objAccas=A_BLOC.BLOC(**self.dictArgsEficas)
+ setattr(cata, self.nomObj,self.objAccas)
+ cata.contexteXML[self.nomObj] = self.objAccas
+
+# ------------------------------
+class monCata(efficas.T_cata):
+# ------------------------------
+ def exploreCata(self):
+ # PNPNPN --> il faut revoir ce mecanisme
+ self.modeleMetier = None
+ # On positionne le contexte ACCAS
+ self.JdC = JDC_CATA (code = 'Atmo', execmodul = None,)
+ self.contexteXML={}
+ objAExplorer=self.commandes[0]
+ for obj in objAExplorer.content():
+ if hasattr(obj,'explore') : obj.explore(self)
+ #print dir(self.JdC)
+
+
+ #def dumpXSD(self):
+ # for etape in self.contexteXML.values() :
+ # etape.dumpXSD()
+
+efficas.T_SIMP._SetSupersedingClass(monSIMP)
+efficas.T_FACT._SetSupersedingClass(monFACT)
+efficas.T_PROC._SetSupersedingClass(monPROC)
+efficas.T_OPER._SetSupersedingClass(monOPER)
+efficas.T_BLOC._SetSupersedingClass(monBLOC)
+efficas.T_cata._SetSupersedingClass(monCata)
+
+if __name__ == "__main__":
+# print dir(efficas)
+# print dir(efficas.T_SIMP)
+
+ #xml = open('cata_test1.xml').read()
+ xml = open('cata.xml').read()
+ SchemaMed = efficas.CreateFromDocument(xml)
+ SchemaMed.exploreCata()
+ #SchemaMed.dumpXSD()
+
def __init__(self,texte='',parent=None,reg='oui'):
self.valeur = texte
if not parent :
- self.jdc = self.parent = CONTEXT.get_current_step()
+ self.jdc = self.parent = CONTEXT.getCurrentStep()
else:
self.jdc = self.parent = parent
if hasattr(self.parent,'etape'):
self.niveau = self.parent.niveau
self.actif=1
self.state="unchanged"
- #self.appel = N_utils.callee_where(niveau=2)
+ #self.appel = N_utils.calleeWhere(niveau=2)
if reg=='oui' : self.register()
- def isvalid(self):
+ def isValid(self):
return 1
def report(self):
Genere l'objet rapport (classe CR)
"""
self.cr=CR()
- if not self.isvalid(): self.cr.warn(tr("Objet commande commentarise invalide"))
+ if not self.isValid(): self.cr.warn(tr("Objet commande commentarise invalide"))
return self.cr
def copy(self):
# XXX self.texte ne semble pas exister ???
return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
- def init_modif(self):
+ def initModif(self):
self.state = 'modified'
- self.parent.init_modif()
+ self.parent.initModif()
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
"""
Remplace la valeur de self(si elle existe) par new_valeur)
"""
self.valeur = new_valeur
- self.init_modif()
+ self.initModif()
- def get_valeur(self) :
+ def getValeur(self) :
"""
Retourne la valeur de self, cad le texte de la commande commentarisee
"""
"""
self.parent.register(self)
- def isoblig(self):
+ def isOblig(self):
"""
Indique si self est obligatoire ou non : retourne toujours 0
"""
"""
return self.nom
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si self est repetable ou non : retourne toujours 1
"""
return 1
- def get_attribut(self,nom_attribut) :
+ def getAttribut(self,nom_attribut) :
"""
Retourne l'attribut de nom nom_attribut de self (ou herite)
"""
else :
return None
- def get_fr(self):
+ def getFr(self):
"""
Retourne l'attribut fr de self.definition
"""
except:
return ''
- def liste_mc_presents(self):
+ def listeMcPresents(self):
return []
def supprime(self):
self.val = None
self.appel = None
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
pass
- def update_context(self,d):
+ def updateContext(self,d):
"""
Update le dictionnaire d avec les concepts ou objets produits par self
--> ne fait rien pour une commande en commentaire
"""
pass
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
pass
- def replace_concept (self,old_sd,sd):
+ def replaceConcept (self,old_sd,sd):
pass
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
return None
- def uncomment(self):
+ def unComment(self):
"""
Cette methode a pour but de decommentariser l'objet courant,
cad de retourner un tuple contenant :
- le nom de la sdprod eventuellement produite (sinon None)
"""
# on recupere le contexte avant la commande commentarisee
- context_ini = self.jdc.get_contexte_avant(self)
+ context_ini = self.jdc.getContexteAvant(self)
try:
# on essaie de creer un objet JDC...
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
if re.search('Fin Commentaire',self.valeur) :
self.valeur=self.valeur.replace('Fin Commentaire','')
J=self.jdc.__class__(procedure=self.valeur,
else:
nom_sd = None
#new_etape=new_etape.copy()
- #print "uncomment",new_etape.sd
+ #print "unComment",new_etape.sd
pos=self.parent.etapes.index(self)
- # L'ordre d'appel est important : suppentite fait le menage des concepts dans les etapes suivantes
- self.parent.addentite(new_etape,pos)
- self.parent.suppentite(self)
+ # L'ordre d'appel est important : suppEntite fait le menage des concepts dans les etapes suivantes
+ self.parent.addEntite(new_etape,pos)
+ self.parent.suppEntite(self)
return new_etape,nom_sd
def active(self):
"""
self.actif = 0
- def isactif(self):
+ def isActif(self):
"""
Booleenne qui retourne 1 si self est valide, 0 sinon
"""
return self.actif
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self et
"""
return [],[]
- def verif_condition_regles(self,liste_presents):
+ def verifConditionRegles(self,liste_presents):
"""
Retourne la liste des mots-cles a rajouter pour satisfaire les regles
en fonction de la liste des mots-cles presents
Cette methode sert a reinitialiser la parente de l'objet
"""
self.parent=parent
- self.jdc=parent.get_jdc_root()
+ self.jdc=parent.getJdcRoot()
self.etape=self
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
"""
Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
avant etape, sinon enleve la reference a ces concepts
"""
pass
- def control_sdprods(self,d):
+ def controlSdprods(self,d):
"""sans objet pour les commandes commentarisees"""
pass
def close(self):
pass
- def reset_context(self):
+ def resetContext(self):
pass
# parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
self.valeur=valeur
if not parent :
- self.jdc = self.parent = CONTEXT.get_current_step()
+ self.jdc = self.parent = CONTEXT.getCurrentStep()
else:
self.jdc = self.parent = parent
# La classe COMMENTAIRE n'a pas de definition. On utilise self
self.actif=1
self.state="unchanged"
self.register()
+ self.fenetreIhm=None
def register(self):
"""
c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
return c
- def isvalid(self):
+ def isValid(self):
"""
Retourne 1 si self est valide, 0 sinon
Retourne toujours 1 car un commentaire est toujours valide
"""
return 1
- def isoblig(self):
+ def isOblig(self):
""" Indique si self est obligatoire ou non : retourne toujours 0 """
return 0
- def isrepetable(self):
+ def isRepetable(self):
""" Indique si self est repetable ou non : retourne toujours 1 """
return 1
"""
self.actif = 1
- def isactif(self):
+ def isActif(self):
"""
Booleenne qui retourne 1 si self est valide, 0 sinon
"""
self.definition = None
self.niveau = None
- def liste_mc_presents(self):
+ def listeMcPresents(self):
return []
- def get_valeur(self) :
+ def getValeur(self) :
""" Retourne la valeur de self, cad le contenu du commentaire """
try :
return self.valeur
except:
return None
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
"""
Remplace la valeur de self(si elle existe) par new_valeur
"""
self.valeur = new_valeur
- self.init_modif()
+ self.initModif()
- def init_modif(self):
+ def initModif(self):
self.state = 'modified'
if self.parent:
- self.parent.init_modif()
+ self.parent.initModif()
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
pass
- def update_context(self,d):
+ def updateContext(self,d):
"""
Update le dictionnaire d avec les concepts ou objets produits par self
--> ne fait rien pour un commentaire
def report(self):
""" Genere l'objet rapport (classe CR) """
self.cr=CR()
- if not self.isvalid(): self.cr.warn(tr("Objet commentaire non valorise"))
+ if not self.isValid(): self.cr.warn(tr("Objet commentaire non valorise"))
return self.cr
def ident(self):
"""
return self.nom
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
pass
- def replace_concept (self,old_sd,sd):
+ def replaceConcept (self,old_sd,sd):
pass
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self et
"""
return [],[]
- def verif_condition_regles(self,liste_presents):
+ def verifConditionRegles(self,liste_presents):
"""
Retourne la liste des mots-cles a rajouter pour satisfaire les regles
en fonction de la liste des mots-cles presents
"""
return []
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
"""
Retourne les concepts produits par la commande
"""
return None
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
pass
- def get_fr(self):
+ def getFr(self):
"""
Retourne le commentaire lui meme tronque a la 1ere ligne
"""
return self.valeur.split('\n',1)[0]
- def control_sdprods(self,d):
+ def controlSdprods(self,d):
"""sans objet """
pass
def close(self):
pass
- def reset_context(self):
+ def resetContext(self):
pass
def __init__(self,niveau,parent):
self.parent = parent
- self.jdc = self.parent.get_jdc_root()
+ self.jdc = self.parent.getJdcRoot()
self.niveau = self
self.definition = niveau
self.etapes=[]
self.dict_niveaux={}
self.editmode = 0
self.state="undetermined"
- self.build_niveaux()
+ self.buildNiveaux()
- def build_niveaux(self):
+ def buildNiveaux(self):
for niveau in self.definition.l_niveaux:
etape_niveau = ETAPE_NIVEAU(niveau,self)
self.etapes_niveaux.append(etape_niveau)
- si editmode = 0 : on est en mode relecture d'un fichier de commandes
auquel cas on ajoute etape a la fin de la liste self.etapes
- si editmode = 1 : on est en mode ajout d'etape depuis eficas auquel cas
- cette methode ne fait rien, c'est addentite qui enregistre etape
+ cette methode ne fait rien, c'est addEntite qui enregistre etape
a la bonne place dans self.etapes
"""
if self.editmode : return
def ident(self):
return self.definition.label
- def isactif(self):
+ def isActif(self):
#print 'Niveau : ',self.definition.nom
#print '\tactif =',self.definition.actif
if self.definition.actif == 1 :
return 1
else :
# self.actif est une condition a evaluer dans un certain contexte ...
- d = self.cree_dict_valeurs()
+ d = self.creeDictValeurs()
try:
t=eval(self.definition.actif,d)
return t
traceback.print_exc()
return 0
- def cree_dict_valeurs(self):
+ def creeDictValeurs(self):
"""
Retourne le dictionnaire des freres aines de self compose des couples :
- {nom_frere isvalid()}
+ {nom_frere isValid()}
"""
d={}
for niveau in self.parent.etapes_niveaux:
if niveau is self : break
- d[niveau.definition.nom]=niveau.isvalid()
+ d[niveau.definition.nom]=niveau.isValid()
return d
- def isvalid(self):
+ def isValid(self):
""" Methode booleenne qui retourne 0 si le niveau est invalide, 1 sinon """
if self.etapes_niveaux == []:
if len(self.etapes) == 0:
return self.definition.valide_vide
else:
for etape in self.etapes :
- if not etape.isvalid() : return 0
+ if not etape.isValid() : return 0
return 1
else:
for etape_niveau in self.etapes_niveaux :
- if not etape_niveau.isvalid() : return 0
+ if not etape_niveau.isValid() : return 0
return 1
def accept(self,visitor):
visitor.visitETAPE_NIVEAU(self)
- def addentite(self,name,pos_rel):
+ def addEntite(self,name,pos_rel):
self.editmode = 1
try :
- pos_abs=self.jdc.get_nb_etapes_avant(self)+pos_rel
- cmd = self.jdc.addentite(name,pos_abs)
+ pos_abs=self.jdc.getNbEtapesAvant(self)+pos_rel
+ cmd = self.jdc.addEntite(name,pos_abs)
self.etapes.insert(pos_rel,cmd)
self.editmode = 0
return cmd
self.editmode = 0
return None
- def suppentite(self,etape) :
+ def suppEntite(self,etape) :
""" Classe ETAPE_NIVEAU
Supprime une etape
"""
- self.jdc.suppentite(etape)
+ self.jdc.suppEntite(etape)
- def get_fr(self):
+ def getFr(self):
"""
Retourne le texte d'aide dans la langue choisie
"""
self.parent = parent
self.l_children = []
if formule :
- self.set_formule(formule)
+ self.setFormule(formule)
if self.parent :
self.parent.enregistre(self)
- def set_formule(self,formule):
+ def setFormule(self,formule):
"""
Stocke formule (tuple) dans l'attribut t_formule
Methode externe
if type(formule) != types.tuple:
raise InterpreteurException(tr("La formule passee a l'interpreteur doit etre sous forme de tuple"))
self.t_formule = formule
- #self.init_cr()
- self.modify_listes()
- self.ordonne_listes()
+ #self.initCr()
+ self.modifyListes()
+ self.ordonneListes()
- def init_cr(self):
+ def initCr(self):
"""
Initialise le cr,cad valorise les chaines debut et fin
"""
self.l_children.append(fils)
self.cr.add(fils.cr)
- def isvalid(self):
+ def isValid(self):
"""
Booleenne qui retourne 1 si la formule est valide, 0 sinon
Methode externe
"""
self.l_operateurs = []
self.cr.purge() # on vide le cr
- self.init_cr() # on initialise le cr
- self.interprete_formule()
+ self.initCr() # on initialise le cr
+ self.interpreteFormule()
return self.cr.estvide()
- def interprete_formule(self):
+ def interpreteFormule(self):
"""
Realise l'interpretation du corps de la formule
"""
# Enleve les espaces
text_arg = text_arg.replace(' ','')
try:
- self.l_operateurs.append(self.split_operateurs(text_arg))
+ self.l_operateurs.append(self.splitOperateurs(text_arg))
except InterpreteurException as e:
self.cr.fatal(e.__str__())
- def modify_listes(self):
+ def modifyListes(self):
"""
Modifie la liste des constantes en lui ajoutant le nom des parametres
de la fonction a interpreter
self.l_constantes.append(cte)
# on ajoute les fonctions unaires externes au dictionnaire des fonctions unaires
for new_fonc in self.new_fonctions_unaires:
- self.d_fonctions_unaires[new_fonc[0]] = self.get_nb_args(new_fonc)
+ self.d_fonctions_unaires[new_fonc[0]] = self.getNbArgs(new_fonc)
#self.d_fonctions_unaires.update(self.new_fonctions_unaires)
self.l_fonctions_unaires = list(self.d_fonctions_unaires.keys())
- def ordonne_listes(self):
+ def ordonneListes(self):
"""
Ordonne les listes de fonctions unaires et binaires
"""
self.l_constantes.sort(cmp_function)
- def split_operateurs(self,texte):
+ def splitOperateurs(self,texte):
"""
Splite le texte passe en argument en operateurs plus elementaires.
N'analyse pas l'interieur des operateurs (ne fait qu'une passe)
texte = texte.strip()
# on recherche un nombre en debut de texte
try:
- oper,reste = self.cherche_nombre(texte)
+ oper,reste = self.chercheNombre(texte)
except InterpreteurException as e:
raise InterpreteurException (e.__str__())
if not oper :
# on recherche une constante en debut de texte
try:
- oper,reste = self.cherche_constante(texte)
+ oper,reste = self.chercheConstante(texte)
except InterpreteurException as e:
raise InterpreteurException (e.__str__())
if not oper :
# on recherche une expression entre parentheses...
try:
- oper,reste = self.cherche_expression_entre_parentheses(texte)
+ oper,reste = self.chercheExpressionEntreParentheses(texte)
except InterpreteurException as e:
raise InterpreteurException(e.__str__())
if not oper :
# on recherche le debut d'un operateur unaire en debut de texte
try:
- oper,reste = self.cherche_operateur_unaire(texte)
+ oper,reste = self.chercheOperateurUnaire(texte)
except InterpreteurException as e:
raise InterpreteurException(e.__str__())
if not oper :
- type_objet,nom_objet = self.get_type(texte)
+ type_objet,nom_objet = self.getType(texte)
if type_objet == 'constante':
raise InterpreteurException( "Constante %s inconnue" %nom_objet)
elif type_objet == 'fonction':
l_operateurs.append(oper)
if reste :
texte = reste.strip()
- oper,reste = self.cherche_operateur_binaire(texte)
+ oper,reste = self.chercheOperateurBinaire(texte)
if not oper :
# on a un reste et pas d'operateur binaire --> erreur
raise InterpreteurException("L'operateur %s doit etre suivi d'un operateur binaire" %l_operateurs[-1])
else:
# on a bien trouve un operateur binaire:
l_operateurs.append(oper)
- # il faut recommencer l'analyse du reste par split_operateurs ...
+ # il faut recommencer l'analyse du reste par splitOperateurs ...
try:
- l_op = self.split_operateurs(reste)
+ l_op = self.splitOperateurs(reste)
except InterpreteurException as e:
raise InterpreteurException(e.__str__())
l_operateurs.extend(l_op)
# on a fini d'analyser texte
return l_operateurs
- def cherche_nombre(self,texte):
+ def chercheNombre(self,texte):
"""
Cherche un nombre en debut de texte
Retourne ce nombre et le reste ou None et le texte initial
# on n'a pas trouve de nombre
return None,texte
- def cherche_constante_old(self,texte):
+ def chercheConstanteOld(self,texte):
"""
Recherche une constante en debut de texte parmi la liste des constantes.
Retourne le texte representant la constante et le reste du texte ou
# aucune constante trouvee
return None,texte
- def cherche_constante(self,texte):
+ def chercheConstante(self,texte):
"""
Recherche une constante en debut de texte parmi la liste des constantes.
Retourne le texte representant la constante et le reste du texte ou
# aucune constante trouvee
return None,texte
- def cherche_args(self,texte):
+ def chercheArgs(self,texte):
"""
Cherche au debut de texte une liste d'arguments entre parentheses
"""
# on a fini d'analyser le texte : reste = None
return texte,None
- def cherche_operateur_unaire_old(self,texte):
+ def chercheOperateurUnaireOld(self,texte):
"""
Cherche dans texte un operateur unaire
"""
operateur = txt
texte = reste
try:
- args,reste = self.cherche_args(texte)
+ args,reste = self.chercheArgs(texte)
except InterpreteurException as e:
raise InterpreteurException(e.__str__())
if not args :
raise InterpreteurException('operateur unaire %s sans arguments' %operateur)
else:
#operateur = operateur+args
- args = self.split_args(txt,args,self.d_fonctions_unaires[operateur])
+ args = self.splitArgs(txt,args,self.d_fonctions_unaires[operateur])
formule_operateur = (txt,'',self.t_formule[2],args)
operateur = Interpreteur_Formule(formule = formule_operateur,
constantes = self.new_constantes,
fonctions_unaires = self.new_fonctions_unaires,
parent = self)
- operateur.interprete_formule()
+ operateur.interpreteFormule()
texte = reste
return operateur,reste
else:
# aucun operateur unaire trouve
return None,texte
- def cherche_operateur_unaire(self,texte):
+ def chercheOperateurUnaire(self,texte):
"""
Cherche dans texte un operateur unaire
"""
identificateur = l_groups[1].strip()
reste = l_groups[2]
try:
- args,reste = self.cherche_args(reste)
+ args,reste = self.chercheArgs(reste)
except InterpreteurException as e:
raise InterpreteurException (e.__str__())
if not args :
# operateur unaire sans arguments
- # en principe on ne doit jamais etre dans ce cas car il est deja trappe par cherche_constante ...
+ # en principe on ne doit jamais etre dans ce cas car il est deja trappe par chercheConstante ...
raise InterpreteurException ('Fonction %s sans arguments !' %identificateur)
else:
# il faut encore verifier que l'on a bien a faire a une fonction connue
if identificateur not in self.l_fonctions_unaires:
raise InterpreteurException ('Fonction %s inconnue dans %s !' %(identificateur,texte))
- args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
+ args = self.splitArgs(identificateur,args,self.d_fonctions_unaires[identificateur])
formule_operateur = (sgn+identificateur,'',self.t_formule[2],args)
operateur = Interpreteur_Formule(formule = formule_operateur,
constantes = self.new_constantes,
fonctions = self.new_fonctions_unaires,
parent = self)
- operateur.interprete_formule()
+ operateur.interpreteFormule()
texte = reste
return operateur,reste
elif texte[0] == '-':
# Il faut pouvoir trapper les expressions du type exp(-(x+1)) ...
try :
- args,reste = self.cherche_args(texte[1:])
+ args,reste = self.chercheArgs(texte[1:])
except InterpreteurException as e:
raise InterpreteurException (e.__str__())
if not args :
return None,texte
else:
identificateur = '-'
- args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
+ args = self.splitArgs(identificateur,args,self.d_fonctions_unaires[identificateur])
formule_operateur = (identificateur,'',self.t_formule[2],args)
operateur = Interpreteur_Formule(formule = formule_operateur,
constantes = self.new_constantes,
fonctions = self.new_fonctions_unaires,
parent = self)
- operateur.interprete_formule()
+ operateur.interpreteFormule()
texte = reste
return operateur,reste
else:
return None,texte
- def cherche_operateur_binaire(self,texte):
+ def chercheOperateurBinaire(self,texte):
"""
Cherche dans texte un operateur unaire
"""
# aucun operateur unaire trouve
return None,texte
- def cherche_expression_entre_parentheses(self,texte):
+ def chercheExpressionEntreParentheses(self,texte):
"""
Cherche en debut de texte une expression entre parentheses
"""
- args,reste = self.cherche_args(texte.strip())
+ args,reste = self.chercheArgs(texte.strip())
if not args :
return None,texte
else:
constantes = self.new_constantes,
fonctions = self.new_fonctions_unaires,
parent = self)
- operateur.interprete_formule()
+ operateur.interpreteFormule()
texte = reste
return operateur,reste
- def split_args(self,nom_fonction,args,nb_args):
+ def splitArgs(self,nom_fonction,args,nb_args):
"""
Tente de partager args en nb_args elements
Retourne une liste de chaines de caracteres (liste de longueur nb_args)
else:
return l_args
- def get_type(self,texte):
+ def getType(self,texte):
"""
Retourne le type de l'objet defini dans texte, a savoir:
- constante
nom_oper,args = texte.split('(',1)
return 'fonction',nom_oper
- def get_nb_args(self,formule):
+ def getNbArgs(self,formule):
"""
Retourne le nombre d'arguments dans la definition de formule (sous forme de tuple)
"""
fonctions = fonctions_unaires)
txt = i.str()
print(('\nformule %s = %s' %(str(formule),txt)))
- #if i.isvalid() :
+ #if i.isValid() :
# print "\n\tPas d'erreur !"
#else:
# print i.report()
class JDC(object):
def __init__(self):
self.dict_niveaux={}
- self.build_niveaux()
+ self.buildNiveaux()
- def build_niveaux(self):
+ def buildNiveaux(self):
for niveau in self.definition.l_niveaux:
etape_niv = etape_niveau.ETAPE_NIVEAU(niveau,self)
self.etapes_niveaux.append(etape_niv)
# On pourrait verifier que le jdc_pere apres l'etape etape_include
# ne contient pas deja un concept de ce nom
- #if self.jdc_pere.get_sd_apres_etape_avec_detruire(sdnom,etape=self.etape_include):
+ #if self.jdc_pere.getSdApresEtapeAvecDetruire(sdnom,etape=self.etape_include):
# Il existe un concept apres self => impossible d'inserer
# raise AsException("Nom de concept deja defini : %s" % sdnom)
# On a choisi de ne pas faire ce test ici mais de le faire en bloc
- # si necessaire apres en appelant la methode verif_contexte
+ # si necessaire apres en appelant la methode verifContexte
# ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
- # Ajoute a la creation (appel de reg_sd).
+ # Ajoute a la creation (appel de regSD).
self.sds_dict[sdnom]=sd
sd.nom=sdnom
if restrict == 'non':
self.g_context[sdnom]=sd
- def get_verif_contexte(self):
- #print "get_verif_contexte"
- j_context=self.get_contexte_avant(None)
- self.verif_contexte(j_context)
+ def getVerifContexte(self):
+ #print "getVerifContexte"
+ j_context=self.getContexteAvant(None)
+ self.verifContexte(j_context)
return j_context
- def force_contexte(self,contexte):
+ def forceContexte(self,contexte):
for nom_sd,sd in list(contexte.items()):
if not isinstance(sd,ASSD):continue
- autre_sd= self.jdc_pere.get_sd_apres_etape_avec_detruire(nom_sd,sd,
+ autre_sd= self.jdc_pere.getSdApresEtapeAvecDetruire(nom_sd,sd,
etape=self.etape_include)
if autre_sd is None:continue
if sd is not autre_sd:
# Il existe un autre concept de meme nom produit par une etape apres self
# on detruit ce concept pour pouvoir inserer les etapes du jdc_include
if sd.etape:
- sd.etape.supprime_sdprod(sd)
+ sd.etape.supprimeSdprod(sd)
return contexte
- def verif_contexte(self,context):
+ def verifContexte(self,context):
"""
Cette methode verifie si le contexte passe en argument (context)
peut etre insere dans le jdc pere de l'include.
Si le contexte ne peut pas etre insere, la methode leve une
exception sinon elle retourne le contexte inchange
"""
- #print "verif_contexte"
+ #print "verifContexte"
for nom_sd,sd in list(context.items()):
if not isinstance(sd,ASSD):continue
- autre_sd= self.jdc_pere.get_sd_apres_etape_avec_detruire(nom_sd,sd,
+ autre_sd= self.jdc_pere.getSdApresEtapeAvecDetruire(nom_sd,sd,
etape=self.etape_include)
if autre_sd is None:continue
if sd is not autre_sd:
return context
- def get_liste_cmd(self):
+ def getListeCmd(self):
"""
Retourne la liste des commandes du catalogue
"""
if self.jdc_pere is None:
- return JDC.get_liste_cmd(self)
- return self.jdc_pere.get_liste_cmd()
+ return JDC.getListeCmd(self)
+ return self.jdc_pere.getListeCmd()
- def get_groups(self):
+ def getGroups(self):
"""
Retourne la liste des commandes du catalogue par groupes
"""
if self.jdc_pere is None:
- return JDC.get_groups(self)
- return self.jdc_pere.get_groups()
+ return JDC.getGroups(self)
+ return self.jdc_pere.getGroups()
- def init_modif(self):
+ def initModif(self):
"""
Met l'etat de l'etape a : modifie
Propage la modification au parent
- Attention : init_modif doit etre appele avant de realiser une modification
+ Attention : initModif doit etre appele avant de realiser une modification
La validite devra etre recalculee apres cette modification
- mais par un appel a fin_modif pour preserver l'etat modified
+ mais par un appel a finModif pour preserver l'etat modified
de tous les objets entre temps
"""
- #print "jdc_include.init_modif",self,self.etape_include
+ #print "jdc_include.initModif",self,self.etape_include
self.state = 'modified'
if self.etape_include:
- self.etape_include.init_modif()
+ self.etape_include.initModif()
- def fin_modif(self):
+ def finModif(self):
"""
Methode appelee une fois qu'une modification a ete faite afin de
declencher d'eventuels traitements post-modification
ex : INCLUDE et POURSUITE
"""
- #print "jdc_include.fin_modif",self,self.etape_include
+ #print "jdc_include.finModif",self,self.etape_include
CONNECTOR.Emit(self,"valid")
if self.etape_include:
- self.etape_include.fin_modif()
+ self.etape_include.finModif()
def supprime(self):
"""
# self.context_ini={}
# self.procedure=None
- def get_contexte_avant(self,etape):
+ def getContexteAvant(self,etape):
"""
Retourne le dictionnaire des concepts connus avant etape
On tient compte des concepts produits par le jdc pere
comme DETRUIRE ou les macros
Si etape == None, on retourne le contexte en fin de JDC
"""
- #print "jdc_include.get_contexte_avant",etape,etape and etape.nom
+ #print "jdc_include.getContexteAvant",etape,etape and etape.nom
if self.etape_include:
- new_context=self.etape_include.parent.get_contexte_avant(self.etape_include).copy()
+ new_context=self.etape_include.parent.getContexteAvant(self.etape_include).copy()
self.context_ini=new_context
- d= JDC.get_contexte_avant(self,etape)
+ d= JDC.getContexteAvant(self,etape)
return d
- def reset_context(self):
- #print "jdc_include.reset_context",self,self.nom
+ def resetContext(self):
+ #print "jdc_include.resetContext",self,self.nom
if self.etape_include:
- self.etape_include.parent.reset_context()
- new_context=self.etape_include.parent.get_contexte_avant(self.etape_include).copy()
+ self.etape_include.parent.resetContext()
+ new_context=self.etape_include.parent.getContexteAvant(self.etape_include).copy()
self.context_ini=new_context
- JDC.reset_context(self)
+ JDC.resetContext(self)
- def get_sd_apres_etape(self,nom_sd,etape,avec='non'):
+ def getSdApresEtape(self,nom_sd,etape,avec='non'):
"""
Cette methode retourne la SD de nom nom_sd qui est eventuellement
definie apres etape
Si avec vaut 'non' exclut etape de la recherche
"""
if self.etape_include:
- sd=self.etape_include.parent.get_sd_apres_etape(nom_sd,self.etape_include,'non')
+ sd=self.etape_include.parent.getSdApresEtape(nom_sd,self.etape_include,'non')
if sd:return sd
- return JDC.get_sd_apres_etape(self,nom_sd,etape,avec)
+ return JDC.getSdApresEtape(self,nom_sd,etape,avec)
- def get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec='non'):
+ def getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec='non'):
"""
On veut savoir ce que devient le concept sd de nom nom_sd apres etape.
Il peut etre detruit, remplace ou conserve
definie apres etape en tenant compte des concepts detruits
Si avec vaut 'non' exclut etape de la recherche
"""
- #print "jdc_include.get_sd_apres_etape_avec_detruire",nom_sd,sd,id(sd)
- autre_sd=JDC.get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec)
+ #print "jdc_include.getSdApresEtapeAvecDetruire",nom_sd,sd,id(sd)
+ autre_sd=JDC.getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec)
# si autre_sd vaut None le concept sd a ete detruit. On peut terminer
# la recherche en retournant None
# Si autre_sd ne vaut pas sd, le concept a ete redefini. On peut terminer
# la recherche en retournant le concept nouvellement defini
# Sinon, on poursuit la recherche dans les etapes du niveau superieur.
if autre_sd is None or autre_sd is not sd :return autre_sd
- return self.etape_include.parent.get_sd_apres_etape_avec_detruire(nom_sd,sd,self.etape_include,'non')
+ return self.etape_include.parent.getSdApresEtapeAvecDetruire(nom_sd,sd,self.etape_include,'non')
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Fonction : Mettre a jour les etapes du JDC suite a la disparition du
concept sd
que de transmettre aux fils
"""
# Nettoyage des etapes de l'include
- JDC.delete_concept(self,sd)
+ JDC.deleteConcept(self,sd)
# Nettoyage des etapes du parent
if self.etape_include:
- self.etape_include.parent.delete_concept_after_etape(self.etape_include,sd)
+ self.etape_include.parent.deleteConceptAfterEtape(self.etape_include,sd)
- def delete_concept_after_etape(self,etape,sd):
+ def deleteConceptAfterEtape(self,etape,sd):
"""
Fonction : Mettre a jour les etapes du JDC qui sont apres etape suite a
la disparition du concept sd
"""
# Nettoyage des etapes de l'include
- JDC.delete_concept_after_etape(self,etape,sd)
+ JDC.deleteConceptAfterEtape(self,etape,sd)
# Nettoyage des etapes du parent
if self.etape_include:
- self.etape_include.parent.delete_concept_after_etape(self.etape_include,sd)
+ self.etape_include.parent.deleteConceptAfterEtape(self.etape_include,sd)
- def update_concept_after_etape(self,etape,sd):
+ def updateConceptAfterEtape(self,etape,sd):
"""
Fonction : mettre a jour les etapes du JDC suite a une modification
du concept sd (principalement renommage)
"""
- JDC.update_concept_after_etape(self,etape,sd)
+ JDC.updateConceptAfterEtape(self,etape,sd)
if self.etape_include:
- self.etape_include.parent.update_concept_after_etape(self.etape_include,sd)
+ self.etape_include.parent.updateConceptAfterEtape(self.etape_include,sd)
- def replace_concept_after_etape(self,etape,old_sd,sd):
+ def replaceConceptAfterEtape(self,etape,old_sd,sd):
"""
Fonction : Mettre a jour les etapes du JDC qui sont apres etape suite au
remplacement du concept old_sd par sd
"""
# Nettoyage des etapes de l'include
- JDC.replace_concept_after_etape(self,etape,old_sd,sd)
+ JDC.replaceConceptAfterEtape(self,etape,old_sd,sd)
# Nettoyage des etapes du parent
if self.etape_include:
- self.etape_include.parent.replace_concept_after_etape(self.etape_include,old_sd,sd)
+ self.etape_include.parent.replaceConceptAfterEtape(self.etape_include,old_sd,sd)
- def changefichier(self,fichier):
+ def changeFichier(self,fichier):
if self.etape_include:
self.etape_include.fichier_ini=fichier
- self.fin_modif()
+ self.finModif()
- def control_context_apres(self,etape):
+ def controlContextApres(self,etape):
"""
Cette methode verifie que les etapes apres l'etape etape
ont bien des concepts produits acceptables (pas de conflit de
Effectue les verifications sur les etapes du jdc mais aussi sur les
jdc parents s'ils existent.
"""
- #print "jdc_include.control_context_apres",self,etape
+ #print "jdc_include.controlContextApres",self,etape
#Regularise les etapes du jdc apres l'etape etape
- self.control_jdc_context_apres(etape)
+ self.controlJdcContextApres(etape)
if self.etape_include:
#print "CONTROL_INCLUDE:",self.etape_include,self.etape_include.nom
# il existe un jdc pere. On propage la regularisation
- self.etape_include.parent.control_context_apres(self.etape_include)
+ self.etape_include.parent.controlContextApres(self.etape_include)
class JDC_INCLUDE(JDC_POURSUITE):
- def get_liste_cmd(self):
+ def getListeCmd(self):
"""
Retourne la liste des commandes du catalogue
"""
if self.jdc_pere is None:
- return JDC.get_liste_cmd(self)
- return [e for e in self.jdc_pere.get_liste_cmd() if e not in ("DEBUT","POURSUITE","FIN") ]
+ return JDC.getListeCmd(self)
+ return [e for e in self.jdc_pere.getListeCmd() if e not in ("DEBUT","POURSUITE","FIN") ]
- def active_etapes(self):
+ def activeEtapes(self):
for e in self.etapes:
e.active()
code_translator = QTranslator()
eficas_translator = QTranslator()
-def localise(application, locale=None,file=None,translatorFichier=None, debug=False ):
+def localise(application, locale=None,file=None,translatorFichier=None, debug=True ):
"""
"""
from PyQt5.QtCore import QLibraryInfo
self.etape = None
self.state = 'undetermined'
self.actif=1
- self.mc_liste=self.build_mc()
+ self.mcListe=self.buildMc()
- def build_mc(self):
+ def buildMc(self):
"""
Construit la liste des sous-entites de MCNUPLET
a partir de la liste des arguments (valeur)
"""
args = self.valeur
if args ==None : args =()
- mc_liste=[]
+ mcListe=[]
# on cree les sous entites du NUPLET a partir des valeurs initiales
k=0
if objet.definition.position == 'global' :
self.append_mc_global(objet)
#XXX et global_jdc ??
- mc_liste.append(objet)
+ mcListe.append(objet)
k=k+1
# Un nuplet n'a pas de mots inconnus
self.reste_val={}
- return mc_liste
+ return mcListe
- def isvalid(self,cr='non'):
+ def isValid(self,cr='non'):
"""
Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
"""
old_valid = self.valid
else:
old_valid = None
- for child in self.mc_liste :
- if not child.isvalid():
+ for child in self.mcListe :
+ if not child.isValid():
valid = 0
break
- if len(self.mc_liste) != len(self.definition.entites):
+ if len(self.mcListe) != len(self.definition.entites):
valid=0
if cr == 'oui' :
self.cr.fatal(''.join(("Nuplet : ",self.nom,tr("Longueur incorrecte"))))
self.valid = valid
self.state = 'unchanged'
if old_valid:
- if old_valid != self.valid : self.init_modif_up()
+ if old_valid != self.valid : self.initModifUp()
return self.valid
def __getitem__(self,key):
"""
# Un nuplet est toujours une liste de mots cles simples
# On retourne donc la valeur
- return self.mc_liste[key].valeur
+ return self.mcListe[key].valeur
def __str__(self):
"""
de caracteres
"""
s='('
- for e in self.mc_liste:
+ for e in self.mcListe:
s=s + str(e.valeur) + ','
return s + ')'
de caracteres
"""
s='('
- for e in self.mc_liste:
+ for e in self.mcListe:
s=s + str(e.valeur) + ','
return s + ')'
- def get_regles(self):
+ def getRegles(self):
"""
Retourne la liste des regles attachees au nuplet
"""
return []
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Verifie s'il y a des blocs sous le nuplet et retourne
les blocs en question
# Il n y a pas de BLOCs sous un NUPLET
return [],[]
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si le NUPLET peut etre repete.
Retourne 1 si c'est le cas.
def makeobjet(self):
return self.definition(val = None, nom = self.nom,parent = self.parent)
- def get_valeur(self):
+ def getValeur(self):
"""
Cette methode doit retourner la valeur de l'objet. Elle est utilisee par
- cree_dict_valeurs pour construire un dictionnaire contenant les mots cles
+ creeDictValeurs pour construire un dictionnaire contenant les mots cles
d'une etape.
Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
des mots cle simples contenus.
"""
l=[]
- for v in self.mc_liste:
+ for v in self.mcListe:
l.append(v.valeur)
return l
- def get_val(self):
+ def getVal(self):
"""
Une autre methode qui retourne une "autre" valeur du mot cle facteur.
- Elle est utilisee par la methode get_mocle
+ Elle est utilisee par la methode getMocle
"""
l=[]
- for v in self.mc_liste:
+ for v in self.mcListe:
l.append(v.valeur)
return l
- def isoblig(self):
+ def isOblig(self):
return self.definition.statut=='o'
- def get_fr(self):
+ def getFr(self):
"""
Retourne le texte d'aide dans la langue choisie
"""
except:
return ''
- def cree_dict_valeurs(self,liste=[],condition=0):
+ def creeDictValeurs(self,liste=[],condition=0):
dico={}
return dico
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
"""
Realise l'update des blocs conditionnels fils de self
et propage au parent (rien a faire pour nuplet)
self.entites.append(commande)
self.l_noms_entites.append(commande.nom)
- def get_liste_cmd(self):
+ def getListeCmd(self):
self.l_noms_entites.sort()
return self.l_noms_entites
self.idracine="NUPLET"
self.affecter_parente()
- def verif_cata(self):
+ def verifCata(self):
"""
Cette methode sert a valider les attributs de l'objet de definition
de la classe NUPL
self.cr.fatal(tr("L'attribut 'statut' doit valoir 'o','f','c' ou 'd'"))
if type(self.docu) != bytes :
self.cr.fatal(tr("L'attribut 'docu' doit etre une chaine de caracteres"))
- self.verif_cata_regles()
+ self.verifCataRegles()
def __call__(self,val,nom,parent):
"""
Methode qui cree le rapport de verification du catalogue du nuplet
"""
self.cr = self.CR()
- self.verif_cata()
+ self.verifCata()
for v in self.entites :
cr = v.report()
cr.debut =tr("Debut ")+v.__class__.__name__+ ' : '
# completude
self.definition=self
# parent ne peut etre qu'un objet de type JDC
- self.jdc = self.parent = CONTEXT.get_current_step()
+ self.jdc = self.parent = CONTEXT.getCurrentStep()
self.niveau=self.parent.niveau
self.actif=1
self.state='undetermined'
self.register()
self.dict_valeur=[]
- #self.valeur = self.interprete_valeur(valeur)
+ #self.valeur = self.interpreteValeur(valeur)
#self.val=valeur
self.valeur = valeur
self.val=repr(valeur)
- def interprete_valeur(self,val):
+ def interpreteValeur(self,val):
"""
Essaie d'interpreter val (chaine de caracteres)comme :
- un entier
if type(val) == bytes:
# on tente l'evaluation dans un contexte fourni par le parent s'il existe
if self.parent:
- valeur=self.parent.eval_in_context(val,self)
+ valeur=self.parent.evalInContext(val,self)
else:
try :
valeur = eval(val)
# on retourne val comme une string car on n'a pas su l'interpreter
return val
- def get_valeurs(self):
+ def getValeurs(self):
valeurretour=[]
if self.dict_valeur != []:
for val in self.dict_valeur:
valeurretour.append(self.valeur)
return valeurretour
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
"""
Remplace la valeur de self par new_valeur interpretee
"""
- self.valeur = self.interprete_valeur(new_valeur)
+ self.valeur = self.interpreteValeur(new_valeur)
self.val=repr(self.valeur)
- self.parent.update_concept_after_etape(self,self)
- self.init_modif()
+ self.parent.updateConceptAfterEtape(self,self)
+ self.initModif()
- def set_nom(self,new_nom):
+ def setNom(self,new_nom):
"""
Change le nom du parametre
"""
- self.init_modif()
+ self.initModif()
self.nom=new_nom
- self.fin_modif()
+ self.finModif()
- def init_modif(self):
+ def initModif(self):
"""
Methode qui declare l'objet courant comme modifie et propage
cet etat modifie a ses ascendants
"""
self.state = 'modified'
if self.parent:
- self.parent.init_modif()
+ self.parent.initModif()
- def get_jdc_root(self):
+ def getJdcRoot(self):
if self.parent:
- return self.parent.get_jdc_root()
+ return self.parent.getJdcRoot()
else:
return self
"""
Enregistre le parametre dans la liste des etapes de son parent (JDC)
"""
- self.parent.register_parametre(self)
+ self.parent.registerParametre(self)
self.parent.register(self)
- def isvalid(self,cr='non'):
+ def isValid(self,cr='non'):
"""
Retourne 1 si self est valide, 0 sinon
Un parametre est considere comme valide si :
return 0
return 1
- def isoblig(self):
+ def isOblig(self):
"""
Indique si self est obligatoire ou non : retourne toujours 0
"""
return 0
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si self est repetable ou non : retourne toujours 1
"""
return 1
- def liste_mc_presents(self):
+ def listeMcPresents(self):
return []
def supprime(self):
"""
self.actif = 1
try:
- self.jdc.append_param(self)
+ self.jdc.appendParam(self)
except:
pass
CONNECTOR.Emit(self,"add",None)
Il faut supprimer le parametre du contexte global du JDC
"""
self.actif = 0
- self.jdc.del_param(self)
- self.jdc.delete_concept_after_etape(self,self)
+ self.jdc.delParam(self)
+ self.jdc.deleteConceptAfterEtape(self,self)
CONNECTOR.Emit(self,"supp",None)
CONNECTOR.Emit(self,"valid")
- def isactif(self):
+ def isActif(self):
"""
Booleenne qui retourne 1 si self est actif, 0 sinon
"""
return self.actif
- def set_attribut(self,nom_attr,new_valeur):
+ def setAttribut(self,nom_attr,new_valeur):
"""
Remplace la valeur de self.nom_attr par new_valeur)
"""
if hasattr(self,nom_attr):
setattr(self,nom_attr,new_valeur)
- self.init_modif()
+ self.initModif()
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
"""
Il faut supprimer le parametre qui a ete entre dans la liste des
parametres du JDC
"""
- self.jdc.delete_param(self)
- self.parent.delete_concept(self)
+ self.jdc.deleteParam(self)
+ self.parent.deleteConcept(self)
- def update_context(self,d):
+ def updateContext(self,d):
"""
Update le dictionnaire d avec le parametre que produit self
"""
"""
return self.nom
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
"""
Retourne les concepts produits par la commande
"""
def report(self):
""" Genere l'objet rapport (classe CR) """
self.cr=CR()
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
return self.cr
def ident(self):
"""
return self.nom
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
pass
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
pass
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self et
"""
return [],[]
- def verif_condition_regles(self,liste_presents):
+ def verifConditionRegles(self,liste_presents):
"""
Retourne la liste des mots-cles a rajouter pour satisfaire les regles
en fonction de la liste des mots-cles presents
"""
return []
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
pass
- def control_sdprods(self,d):
+ def controlSdprods(self,d):
"""sans objet """
pass
def close(self):
pass
- def reset_context(self):
+ def resetContext(self):
pass
def eval(self):
def __repr__(self):
return self.chainevaleur
- def isvalid(self):
+ def isValid(self):
if self.valeur and self.chainevaleur:
return 1
return self.param_pere.nom+'['+str(self.item)+']'
- def isvalid(self):
- isvalid = 1
+ def isValid(self):
+ isValid = 1
if self.item < 0:
- isvalid = 0
+ isValid = 0
try:
longueur= len(self.param_pere.dict_valeur) - 1
except:
longueur=0
if self.item > longueur :
- isvalid= 0
- return isvalid
+ isValid= 0
+ return isValid
# parent ne peut etre qu'un objet de type JDC
import Accas
self.Accas_EVAL=Accas.EVAL
- self.valeur = self.interprete_valeur(valeur)
+ self.valeur = self.interpreteValeur(valeur)
self.val = valeur
self.nom = nom
- self.jdc = self.parent = CONTEXT.get_current_step()
+ self.jdc = self.parent = CONTEXT.getCurrentStep()
self.definition=self
self.niveau = self.parent.niveau
self.actif=1
self.state='undetermined'
# Ceci est-il indispensable ???
- #self.appel = N_utils.callee_where(niveau=2)
+ #self.appel = N_utils.calleeWhere(niveau=2)
self.register()
def __repr__(self):
"""
return self.nom
- def interprete_valeur(self,val):
+ def interpreteValeur(self,val):
"""
Essaie d'interpreter val (chaine de caracteres ou None) comme :
une instance de Accas.EVAL
print(("Le texte %s n'est pas celui d'un parametre evalue" %val))
return None
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
"""
Remplace la valeur de self par new_valeur interpretee.
"""
- self.valeur = self.interprete_valeur(new_valeur)
+ self.valeur = self.interpreteValeur(new_valeur)
self.val = new_valeur
- self.init_modif()
+ self.initModif()
- def get_nom(self) :
+ def getNom(self) :
"""
Retourne le nom du parametre
"""
return self.nom
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la valeur de self, cad le texte de l'objet class_eval.EVAL
"""
else:
return ''
- def verif_eval(self,exp_eval=None,cr='non'):
+ def verifEval(self,exp_eval=None,cr='non'):
"""
Cette methode a pour but de verifier si l'expression EVAL
est syntaxiquement correcte.
formule=(self.nom,'',None,exp_eval)
# on recupere la liste des constantes et des autres fonctions predefinies
# et qui peuvent etre utilisees dans le corps de la formule courante
- l_ctes,l_form = self.jdc.get_parametres_fonctions_avant_etape(self)
+ l_ctes,l_form = self.jdc.getParametresFonctionsAvantEtape(self)
# on cree un objet verificateur
verificateur = interpreteur_formule.Interpreteur_Formule(formule=formule,
constantes = l_ctes,
fonctions = l_form)
if cr == 'oui' :
if not verificateur.cr.estvide():
- self.cr.fatal(verificateur.cr.get_mess_fatal())
- return verificateur.isvalid(),''.join(verificateur.cr.crfatal)
+ self.cr.fatal(verificateur.cr.getMessFatal())
+ return verificateur.isValid(),''.join(verificateur.cr.crfatal)
else:
# pas d'expression EVAL --> self non valide
if cr == 'oui' :
self.cr.fatal(tr("Le parametre EVAL %s ne peut valoir None") , self.nom)
return 0,tr("Le parametre EVAL ne peut valoir None")
- def verif_nom(self,nom=None,cr='non'):
+ def verifNom(self,nom=None,cr='non'):
"""
Verifie si le nom passe en argument (si aucun prend le nom courant)
est un nom valide pour un parametre EVAL
if len(nom) > 8 :
if cr == 'oui' : self.cr.fatal(tr("Un nom de parametre ne peut depasser 8 caracteres"))
return 0,"Un nom de parametre ne peut depasser 8 caracteres"
- sd = self.parent.get_sd_autour_etape(nom,self)
+ sd = self.parent.getSdAutourEtape(nom,self)
if sd :
if cr == 'oui' : self.cr.fatal(tr("Un concept de nom %s existe deja !"), nom)
return 0,"Un concept de nom %s existe deja !" %nom
return 1,''
- def verif_parametre_eval(self,param=None,cr='non'):
+ def verifParametreEval(self,param=None,cr='non'):
"""
Verifie la validite du parametre EVAL passe en argument.
Ce nouveau parametre est passe sous la forme d'un tuple : (nom,valeur)
param = (self.nom,self.valeur.valeur)
else:
param = (self.nom,None)
- test_nom,erreur_nom = self.verif_nom(param[0],cr=cr)
- test_eval,erreur_eval = self.verif_eval(param[1],cr=cr)
+ test_nom,erreur_nom = self.verifNom(param[0],cr=cr)
+ test_eval,erreur_eval = self.verifEval(param[1],cr=cr)
# test global = produit des tests partiels
test = test_nom*test_eval
# message d'erreurs global = concatenation des messages partiels
par les nouvelles valeurs passees dans le tuple formule.
On stocke les valeurs SANS verifications.
"""
- self.init_modif()
- self.set_nom(param[0])
- self.set_valeur('EVAL("""'+param[1]+'""")')
+ self.initModif()
+ self.setNom(param[0])
+ self.setValeur('EVAL("""'+param[1]+'""")')
- def isvalid(self,cr='non'):
+ def isValid(self,cr='non'):
"""
Retourne 1 si self est valide, 0 sinon
Un parametre evalue est considere comme valide si :
- il a un nom
- il a une valeur qui est interpretable par l'interpreteur de FORMULEs
"""
- resu,erreur= self.verif_parametre_eval(cr=cr)
+ resu,erreur= self.verifParametreEval(cr=cr)
return resu
def report(self):
Genere l'objet rapport (classe CR)
"""
self.cr = CR()
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
return self.cr
- def set_nom(self,new_nom):
+ def setNom(self,new_nom):
"""
Remplace le nom de self par new_nom
"""
def __init__(self,module):
UserDict.__init__(self)
self.plugin_dir=module.__path__[0]
- self.plugin_set_name=module.__name__
+ self.plugin_setName=module.__name__
_module_list = glob.glob( os.path.join( self.plugin_dir,
- '%s*py' % self.plugin_set_name,
+ '%s*py' % self.plugin_setName,
)
)
_module_list.sort()
for _module_name in _module_list:
_module_name = os.path.basename(_module_name)[:-3]
- _import_name = '%s.%s' % ( self.plugin_set_name,
+ _import_name = '%s.%s' % ( self.plugin_setName,
_module_name )
try:
if isinstance(string, (six.text_type, int, float, complex)):
return string
elif isinstance(string, str):
- return _str_to_unicode(string)
+ return _str_toUnicode(string)
else:
raise EficasException("TypeError: Expected number, string or\
Unicode object!")
-def _str_to_unicode(string):
+def _str_toUnicode(string):
"""
- _str_to_unicode(string) -> unicode
+ _str_toUnicode(string) -> unicode
Tries to create a Unicode object out of the input string; assumes
the string is UTF-8 encoded; if not, then assume the string is
Latin-9 encoded.
class ASSD:
def __repr__(self):
return tr("concept %(inst_name)s de type %(class_name)s", \
- {'inst_name': self.get_name(), \
+ {'inst_name': self.getName(), \
'class_name': self.__class__.__name__})
def __str__(self):
- return self.get_name() or "<None>"
+ return self.getName() or "<None>"
#def __del__(self):
# print "__del__",self
class CO(ASSD):
def __convert__(cls,valeur):
if hasattr(valeur,'_etape') :
- # valeur est un concept CO qui a ete transforme par type_sdprod
+ # valeur est un concept CO qui a ete transforme par typeSDProd
if valeur.etape == valeur._etape:
# le concept est bien produit par l'etape
return valeur
return text,boolOK
- def gettext(self):
+ def getText(self):
text = "Regle de classement "' :\n'
for mc in self.listeAvant :
text = text + mc + ', '
import six
class A_CLASSER(I_REGLE.REGLE):
- def gettext(self):
+ def getText(self):
text = 'Regle ' + self.__class__.__name__+ ' :\n'
t=" D'abord :\n"+' '*8
for arg in self.args0:
_no=0
import Accas
-def number_entite(entite):
+def numberEntite(entite):
"""
Fonction qui attribue un numero unique a tous les objets du catalogue
Ce numero permet de conserver l'ordre des objets
class ENTITE:
def __init__(self):
- number_entite(self)
+ numberEntite(self)
- def get_docu(self):
+ def getDocu(self):
if hasattr(self,'docu') :
if self.docu != "" : return self.docu
else:
if hasattr(self,'pere'):
- return self.pere.get_docu()
+ return self.pere.getDocu()
else:
return None
else:
return None
- def get_sug(self):
+ def getSug(self):
if hasattr(self,'sug') :
if self.sug != "" : return self.sug
return None
- def check_definition(self, parent):
+ def checkDefinition(self, parent):
"""Verifie la definition d'un objet composite (commande, fact, bloc)."""
args = self.entites.copy()
mcs = set()
#if val.max != 1 and val.type == 'TXM':
#print "#CMD", parent, nom
elif val.label == 'FACT':
- val.check_definition(parent)
+ val.checkDefinition(parent)
#PNPNPN surcharge
# CALC_SPEC !
#assert self.label != 'FACT', \
# seuls les blocs peuvent entrer en conflit avec les mcs du plus haut niveau
for nom, val in args.items():
if val.label == 'BLOC':
- mcbloc = val.check_definition(parent)
+ mcbloc = val.checkDefinition(parent)
#XXX
#print "#BLOC", parent, re.sub('\s+', ' ', val.condition)
#assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \
regle.enregistreXML(moi,catalogueXml)
catalogueXml.reglesUtilisees.append(self.regles)
- if ((self.get_docu() !="" and self.get_docu() !=None) or \
+ if ((self.getDocu() !="" and self.getDocu() !=None) or \
(self.fr != "" and self.fr != None) or \
(self.ang != "" and self.ang != None) ):
dico={}
- if self.get_docu() !=None : dico["docu"]=self.get_docu()
+ if self.getDocu() !=None : dico["docu"]=self.getDocu()
if self.fr != None : dico["fr"]=six.text_type(self.fr,"iso-8859-1")
if self.ang != None : dico["ang"]=self.ang
doc=ET.SubElement(moi,'doc')
doc.attrib=dico
- if ((self.get_sug() !=None) or \
+ if ((self.getSug() !=None) or \
(hasattr(self,'defaut') and (self.defaut != None) and (self.defaut != 'None'))) :
# il faut ajouter des sug dans le catalogue
# les attributs sont toujours du texte
if (self.defaut != None) and (self.defaut != 'None') :
if isinstance(self.defaut,str ) : dico["defaut"]=six.text_type(self.defaut,"iso-8859-1")
else :dico["defaut"]=str(self.defaut)
- if self.get_sug() !=None:
- if isinstance(self.get_sug(),str ) : dico["sug"]=six.text_type(self.get_sug(),"iso-8859-1")
- else :dico["sug"]=str(self.get_sug())
+ if self.getSug() !=None:
+ if isinstance(self.getSug(),str ) : dico["sug"]=six.text_type(self.getSug(),"iso-8859-1")
+ else :dico["sug"]=str(self.getSug())
doc=ET.SubElement(moi,'ValeurDef')
doc.attrib=dico
# Objet re pour controler les identificateurs Python
concept_re=re.compile(r'[a-zA-Z_]\w*$')
-# import rajoute suite a l'ajout de Build_sd --> a resorber
+# import rajoute suite a l'ajout de buildSd --> a resorber
import traceback
import Noyau
from Noyau import N_Exception
def ident(self):
return self.nom
- def get_sdname(self):
- #print "SDNAME ",self.reuse,self.sd,self.sd.get_name()
+ def getSdname(self):
+ #print "SDNAME ",self.reuse,self.sd,self.sd.getName()
if CONTEXT.debug :
- print(("SDNAME ", self.reuse, self.sd, self.sd.get_name()))
+ print(("SDNAME ", self.reuse, self.sd, self.sd.getName()))
sdname=''
if self.reuse != None:
- sdname= self.reuse.get_name()
+ sdname= self.reuse.getName()
else:
- if self.sd:sdname=self.sd.get_name()
+ if self.sd:sdname=self.sd.getName()
if sdname.find('sansnom') != -1 or sdname.find('SD_') != -1:
# dans le cas ou la SD est 'sansnom' ou 'SD_' on retourne la chaine vide
return ''
return sdname
- def is_reentrant(self):
+ def isReentrant(self):
"""
Indique si la commande est reentrante
"""
return self.definition.reentrant == 'o'
- def init_modif(self):
+ def initModif(self):
"""
Met l'etat de l'etape a : modifie
Propage la modification au parent
"""
- # init_modif doit etre appele avant de realiser une modification
+ # initModif doit etre appele avant de realiser une modification
# La validite devra etre recalculee apres cette modification
- # mais dans l'appel a fin_modif pour preserver l'etat modified
+ # mais dans l'appel a finModif pour preserver l'etat modified
# de tous les objets entre temps
- #print "init_modif",self,self.parent
+ #print "initModif",self,self.parent
self.state = 'modified'
if self.parent:
- self.parent.init_modif()
+ self.parent.initModif()
- def fin_modif(self):
+ def finModif(self):
"""
Methode appelee une fois qu'une modification a ete faite afin de
declencher d'eventuels traitements post-modification
"""
CONNECTOR.Emit(self,"valid")
if self.parent:
- self.parent.fin_modif()
+ self.parent.finModif()
- def nomme_sd(self,nom) :
+ def nommeSd(self,nom) :
"""
Cette methode a pour fonction de donner un nom (nom) au concept
produit par l'etape (self).
if not concept_re.match(nom):
return 0, tr("Un nom de concept doit etre un identificateur Python")
+ # pour eviter que le nom du concept soit le nom de la classe --> souci pour utiliser le concept
+ if (nom == self.definition.nom) : return (0, tr("un concept de type ")+ nom + tr(" ne peut pas se nommer ") + nom)
+ if ( nom in dir(self.jdc.cata)) : return (0, nom + tr("est un not reserve"))
+ #if (not isinstance(nom,str)) : return (0, tr("Le nom ") + nom + tr(" est un mot reserve"))
#if len(nom) > 8 and self.jdc.definition.code == 'ASTER':
# return 0, tr("Nom de concept trop long (maxi 8 caracteres)")
- self.init_modif()
+ self.initModif()
#
# On verifie d'abord si les mots cles sont valides
#
- if not self.isvalid(sd='non') : return 0,"Nommage du concept refuse : l'operateur n'est pas valide"
+ if not self.isValid(sd='non') : return 0,"Nommage du concept refuse : l'operateur n'est pas valide"
#
# Cas particulier des operateurs obligatoirement reentrants
#
if self.definition.reentrant == 'o':
- self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self)
+ self.sd = self.reuse = self.jdc.getSdAvantEtape(nom,self)
if self.sd != None :
self.sdnom=self.sd.nom
- self.fin_modif()
+ self.finModif()
return 1, tr("Concept existant")
else:
return 0, tr("Operateur reentrant mais concept non existant")
#
old_reuse=None
if self.definition.reentrant == 'f' :
- sd = self.jdc.get_sd_avant_etape(nom,self)
+ sd = self.jdc.getSdAvantEtape(nom,self)
if sd != None :
- if isinstance(sd,self.get_type_produit()) :
+ if isinstance(sd,self.getType_produit()) :
self.sd = self.reuse = sd
self.sdnom = sd.nom
- self.fin_modif()
+ self.finModif()
return 1, tr("Operateur reentrant et concept existant trouve")
else:
return 0, tr("Concept deja existant et de mauvais type")
#
if self.sd == None :
#Pas de concept produit preexistant
- if self.parent.get_sd_autour_etape(nom,self):
+ if self.parent.getSdAutourEtape(nom,self):
# Un concept de ce nom existe dans le voisinage de l'etape courante
# On retablit l'ancien concept reentrant s'il existait
if old_reuse:
# On peut donc creer le concept retourne
# Il est cree sans nom mais enregistre dans la liste des concepts existants
try:
- self.get_sd_prod()
+ self.getSdProd()
# Renommage du concept : Il suffit de changer son attribut nom pour le nommer
self.sd.nom = nom
self.sdnom=nom
- self.parent.update_concept_after_etape(self,self.sd)
- self.fin_modif()
+ self.parent.updateConceptAfterEtape(self,self.sd)
+ self.finModif()
return 1, tr("Nommage du concept effectue")
except:
return 0, tr("Nommage impossible %s", str(sys.exc_info()[1]))
#Un concept produit preexiste
old_nom=self.sd.nom
if old_nom.find('sansnom') :
- # Dans le cas ou old_nom == sansnom, isvalid retourne 0 alors que ...
+ # Dans le cas ou old_nom == sansnom, isValid retourne 0 alors que ...
# par contre si le concept existe et qu'il s'appelle sansnom c'est que l'etape est valide
# on peut donc le nommer sans test prealable
- if self.parent.get_sd_autour_etape(nom,self):
+ if self.parent.getSdAutourEtape(nom,self):
return 0, tr("Nommage du concept refuse : un concept de meme nom existe deja")
else:
# Renommage du concept : Il suffit de changer son attribut nom pour le nommer
self.sd.nom=nom
self.sdnom=nom
- self.parent.update_concept_after_etape(self,self.sd)
- self.fin_modif()
+ self.parent.updateConceptAfterEtape(self,self.sd)
+ self.finModif()
return 1, tr("Nommage du concept effectue")
- if self.isvalid() :
- # Normalement l appel de isvalid a mis a jour le concept produit (son type)
+ if self.isValid() :
+ # Normalement l appel de isValid a mis a jour le concept produit (son type)
# Il suffit de specifier l attribut nom de sd pour le nommer si le nom n est pas
# deja attribue
- if self.parent.get_sd_autour_etape(nom,self):
+ if self.parent.getSdAutourEtape(nom,self):
return 0, tr("Nommage du concept refuse : un concept de meme nom existe deja")
else:
# Renommage du concept : Il suffit de changer son attribut nom pour le nommer
self.sd.nom=nom
self.sdnom=nom
- self.parent.update_concept_after_etape(self,self.sd)
- self.fin_modif()
+ self.parent.updateConceptAfterEtape(self,self.sd)
+ self.finModif()
return 1, tr("Nommage du concept effectue")
else:
# Normalement on ne devrait pas passer ici
return 0, 'Normalement on ne devrait pas passer ici'
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
"""
Fonction : retourne le concept produit par l etape de nom nom_sd
s il existe sinon None
"""
if self.actif:return
self.actif = 1
- self.init_modif()
+ self.initModif()
if self.sd :
try:
- self.jdc.append_sdprod(self.sd)
+ self.jdc.appendSdProd(self.sd)
except:
pass
CONNECTOR.Emit(self,"add",None)
et de la liste des sd
"""
self.actif = 0
- self.init_modif()
+ self.initModif()
if self.sd :
- self.jdc.del_sdprod(self.sd)
- self.jdc.delete_concept_after_etape(self,self.sd)
+ self.jdc.delSdprod(self.sd)
+ self.jdc.deleteConceptAfterEtape(self,self.sd)
CONNECTOR.Emit(self,"supp",None)
CONNECTOR.Emit(self,"valid")
- def control_sdprods(self,d):
+ def controlSdprods(self,d):
"""
Cette methode doit verifier que ses concepts produits ne sont pas
deja definis dans le contexte
Si c'est le cas, les concepts produits doivent etre supprimes
"""
- #print "control_sdprods",d.keys(),self.sd and self.sd.nom,self.nom
+ #print "controlSdprods",d.keys(),self.sd and self.sd.nom,self.nom
if self.sd:
if self.sd.nom in d :
# Le concept est deja defini
# Redefinition du concept, on l'annule
#XXX on pourrait simplement annuler son nom pour conserver les objets
# l'utilisateur n'aurait alors qu'a renommer le concept (faisable??)
- self.init_modif()
+ self.initModif()
sd=self.sd
self.sd=self.reuse=self.sdnom=None
#supprime les references a sd dans les etapes suivantes
- self.parent.delete_concept_after_etape(self,sd)
- self.fin_modif()
+ self.parent.deleteConceptAfterEtape(self,sd)
+ self.finModif()
- def supprime_sdprod(self,sd):
+ def supprimeSdprod(self,sd):
"""
Supprime le concept produit sd s'il est produit par l'etape
"""
if sd is not self.sd:return
if self.sd != None :
- self.init_modif()
- self.parent.del_sdprod(sd)
+ self.initModif()
+ self.parent.delSdprod(sd)
self.sd=None
- self.fin_modif()
- self.parent.delete_concept(sd)
+ self.finModif()
+ self.parent.deleteConcept(sd)
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
"""
Fonction:
Lors d'une destruction d'etape, detruit tous les concepts produits
Une procedure n'en a aucun
Une macro en a en general plus d'un
"""
- #print "supprime_sdprods",self
+ #print "supprimeSdProds",self
if self.reuse is self.sd :return
# l'etape n'est pas reentrante
# le concept retourne par l'etape est a supprimer car il etait
# cree par l'etape
if self.sd != None :
- self.parent.del_sdprod(self.sd)
- self.parent.delete_concept(self.sd)
+ self.parent.delSdprod(self.sd)
+ self.parent.deleteConcept(self.sd)
def close(self):
return
- def update_concept(self,sd):
- for child in self.mc_liste :
- child.update_concept(sd)
+ def updateConcept(self,sd):
+ for child in self.mcListe :
+ child.updateConcept(sd)
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
"""
if self.reuse and self.reuse == sd:
self.sd=self.reuse=None
- self.init_modif()
- for child in self.mc_liste :
- child.delete_concept(sd)
+ self.initModif()
+ for child in self.mcListe :
+ child.deleteConcept(sd)
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Inputs :
- old_sd=concept remplace
"""
if self.reuse and self.reuse == old_sd:
self.sd=self.reuse=sd
- self.init_modif()
- for child in self.mc_liste :
- child.replace_concept(old_sd,sd)
+ self.initModif()
+ for child in self.mcListe :
+ child.replaceConcept(old_sd,sd)
- def reset_context(self):
+ def resetContext(self):
pass
- def get_noms_sd_oper_reentrant(self):
+ def getNomsSdOperReentrant(self):
"""
Retourne la liste des noms de concepts utilisesa l'interieur de la commande
qui sont du type que peut retourner cette commande
"""
- liste_sd = self.get_sd_utilisees()
+ liste_sd = self.getSd_utilisees()
l_noms = []
if type(self.definition.sd_prod) == types.FunctionType:
- d=self.cree_dict_valeurs(self.mc_liste)
+ d=self.creeDictValeurs(self.mcListe)
try:
classe_sd_prod = self.definition.sd_prod(*(), **d)
except:
l_noms.sort()
return l_noms
- def get_genealogie_precise(self):
+ def getGenealogiePrecise(self):
return [self.nom]
- def get_genealogie(self):
+ def getGenealogie(self):
"""
Retourne la liste des noms des ascendants de l'objet self
en s'arretant a la premiere ETAPE rencontree
"""
return [self.nom]
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
"""
Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
avant etape, sinon enleve la referea ces concepts
"""
- #print "verif_existence_sd",self.sd
- for motcle in self.mc_liste :
- motcle.verif_existence_sd()
+ #print "verifExistenceSd",self.sd
+ for motcle in self.mcListe :
+ motcle.verifExistenceSd()
- def update_mc_global(self):
+ def updateMcGlobal(self):
"""
Met a jour les mots cles globaux enregistres dans l'etape
et dans le jdc parent.
des mots cles globaux.
"""
self.mc_globaux={}
- I_MCCOMPO.MCCOMPO.update_mc_global(self)
+ I_MCCOMPO.MCCOMPO.updateMcGlobal(self)
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
"""
Realise l'update des blocs conditionnels fils de self
"""
- self._update_condition_bloc()
+ self._updateConditionBloc()
- def get_objet_commentarise(self,format):
+ def getObjetCommentarise(self,format):
"""
Cette methode retourne un objet commande commentarisee
representant la commande self
commande_comment = commande_comm.COMMANDE_COMM(texte=texte_commande,
reg='non',
parent=parent)
- self.parent.suppentite(self)
- parent.addentite(commande_comment,pos)
+ self.parent.suppEntite(self)
+ parent.addEntite(commande_comment,pos)
return commande_comment
def modified(self):
"""Le contenu de l'etape (mots cles, ...) a ete modifie"""
if self.nom=="DETRUIRE":
- self.parent.control_context_apres(self)
+ self.parent.controlContextApres(self)
#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau
- def Build_sd(self,nom):
+ def buildSd(self,nom):
"""
Methode de Noyau surchargee pour poursuivre malgre tout
si une erreur se produit pendant la creation du concept produit
"""
try:
- sd=Noyau.N_ETAPE.ETAPE.Build_sd(self,nom)
+ sd=Noyau.N_ETAPE.ETAPE.buildSd(self,nom)
except AsException as e :
# Une erreur s'est produite lors de la construction du concept
# Comme on est dans EFICAS, on essaie de poursuivre quand meme
return self.sd
#ATTENTION SURCHARGE: cette methode doit etre gardee en synchronisation avec Noyau
- def make_register(self):
+ def makeRegister(self):
"""
Initialise les attributs jdc, id, niveau et realise les
enregistrements necessaires
Pour EFICAS, on tient compte des niveaux
- Surcharge la methode make_register du package Noyau
+ Surcharge la methode makeRegister du package Noyau
"""
if self.parent :
- self.jdc = self.parent.get_jdc_root()
+ self.jdc = self.parent.getJdcRoot()
self.id= self.parent.register(self)
self.UserError=self.jdc.UserError
if self.definition.niveau :
def report(self):
cr= Validation.V_ETAPE.ETAPE.report(self)
#rafraichisst de la validite de l'etape (probleme avec l'ordre dans les macros : etape puis mots cles)
- self.isvalid()
- if not self.isvalid() and self.nom == "INCLUDE" :
+ self.isValid()
+ if not self.isValid() and self.nom == "INCLUDE" :
self.cr.fatal(('Etape : %s ligne : %r %s'),
self.nom, self.appel[0], tr("\n Include Invalide. \n ne sera pas pris en compte"))
return cr
from . import I_REGLE
class EXCLUS(I_REGLE.REGLE):
- def purge_liste(self,liste_a_purger,liste_mc_presents):
+ def purgeListe(self,liste_a_purger,listeMcPresents):
regle_active=0
- for mc_present in liste_mc_presents:
+ for mc_present in listeMcPresents:
if mc_present in self.mcs:
regle_active=1
break
for mc in self.mcs:
# Il ne faut pas purger un mot cle present. Sa cardinalite est verifiee par ailleurs
- if mc in liste_a_purger and mc not in liste_mc_presents:
+ if mc in liste_a_purger and mc not in listeMcPresents:
liste_a_purger.remove(mc)
return liste_a_purger
class FONCTION(ASSD):
def __init__(self,etape=None,sd=None,reg='oui'):
if reg=='oui':
- self.jdc.register_fonction(self)
+ self.jdc.registerFonction(self)
- def get_formule(self):
+ def getFormule(self):
"""
Retourne une formule decrivant self sous la forme d'un tuple :
(nom,type_retourne,arguments,corps)
"""
- if hasattr(self.etape,'get_formule'):
+ if hasattr(self.etape,'getFormule'):
# on est dans le cas d'une formule Aster
- return self.etape.get_formule()
+ return self.etape.getFormule()
else:
# on est dans le cas d'une fonction
return (self.nom,'REEL','(REEL:x)','''bidon''')
def __call__(self,*val):
if len(val) != len(self.nompar):
raise TypeError(" %s() takes exactly %d argument (%d given)" % (self.nom,len(self.nompar),len(val)))
- return param2.Unop2(self.nom,self.real_call,val)
+ return param2.Unop2(self.nom,self.realCall,val)
- def real_call(self,*val):
+ def realCall(self,*val):
if hasattr(self.parent,'contexte_fichier_init'):
context=self.parent.contexte_fichier_init
else : context={}
interpreteur = interpreteur_formule.Interpreteur_Formule
- def McBuild(self):
- self.mc_liste=self.build_mc()
+ def MCBuild(self):
+ self.mcListe=self.buildMc()
# on cree la liste des types autorises (liste des noms de mots-cles
# simples dans le catalogue de FORMULE)
self.l_types_autorises = list(self.definition.entites.keys())
# en plus de la construction traditionnelle des fils de self
# il faut pour les FORMULE decortiquer l'expression ...
- self.type_retourne,self.arguments,self.corps = self.analyse_formule()
+ self.type_retourne,self.arguments,self.corps = self.analyseFormule()
- def analyse_formule(self):
+ def analyseFormule(self):
"""
Cette methode decortique l'expression de la FORMULE.
Elle retourne 3 valeurs:
- les arguments de la FORMULE
- le corps de la FORMULE, cad son expression
"""
- if len(self.mc_liste) == 0:
+ if len(self.mcListe) == 0:
# pas de fils pour self --> la FORMULE est incomplete
return None,None,None
type_retourne="REEL"
- if len(self.mc_liste) > 0:
- child = self.mc_liste[0] # child est un MCSIMP
- corps = child.getval()
+ if len(self.mcListe) > 0:
+ child = self.mcListe[0] # child est un MCSIMP
+ corps = child.getVal()
else:
corps = None
- if len(self.mc_liste) > 1:
- child = self.mc_liste[1]
- l_args= child.getval()
+ if len(self.mcListe) > 1:
+ child = self.mcListe[1]
+ l_args= child.getVal()
else :
l_args=None
return type_retourne,l_args,corps
- def get_nom(self):
+ def getNom(self):
"""
Retourne le nom de la FORMULE, cad le nom de la SD si elle existe,
la string vide sinon
"""
if self.sd :
- return self.sd.get_name()
+ return self.sd.getName()
else:
return ''
- def get_formule(self):
+ def getFormule(self):
"""
Retourne un tuple decrivant la formule :
(nom,type_retourne,arguments,corps)
"""
- t,a,c = self.analyse_formule()
- n = self.get_nom()
+ t,a,c = self.analyseFormule()
+ n = self.getNom()
return (n,t,a,c)
- def verif_arguments(self,arguments = None):
+ def verifArguments(self,arguments = None):
"""
Verifie si les arguments passes en argument (si aucun prend les arguments courants)
sont des arguments valide pour une FORMULE.
if not re.match(identifier,str(a)) : return 0, str(a)+" n est pas un identifiant"
return test,erreur
- def verif_corps(self,corps=None,arguments=None):
+ def verifCorps(self,corps=None,arguments=None):
"""
Cette methode a pour but de verifier si le corps de la FORMULE
est syntaxiquement correct.
corps = self.corps
if not arguments :
arguments = self.arguments
- formule=(self.get_nom(),self.type_retourne,arguments,corps)
+ formule=(self.getNom(),self.type_retourne,arguments,corps)
# on recupere la liste des constantes et des autres fonctions predefinies
# et qui peuvent etre utilisees dans le corps de la formule courante
- l_ctes,l_form = self.jdc.get_parametres_fonctions_avant_etape(self)
+ l_ctes,l_form = self.jdc.getParametresFonctionsAvantEtape(self)
# on cree un objet verificateur
try:
verificateur = self.interpreteur(formule=formule,
except :
traceback.print_exc()
return 0,tr("Impossible de realiser la verification de la formule")
- return verificateur.isvalid(),verificateur.report()
+ return verificateur.isValid(),verificateur.report()
- def verif_nom(self,nom=None):
+ def verifNom(self,nom=None):
"""
Verifie si le nom passe en argument (si aucun prend le nom courant)
est un nom valide pour une FORMULE.
- un message d'erreurs ('' si illicite)
"""
if not nom :
- nom = self.get_nom()
+ nom = self.getNom()
if nom == "" :
return 0,tr("Pas de nom donne a la FORMULE")
if len(nom) > 8 :
return 0,tr("Un nom de FORMULE ne peut depasser 8 caracteres")
if nom[0] > "0" and nom[0] < "9" :
return 0,tr("Un nom de FORMULE ne peut pas commencer par un chiffre")
- sd = self.parent.get_sd_autour_etape(nom,self)
+ sd = self.parent.getSdAutourEtape(nom,self)
if sd :
return 0,tr("Un concept de nom %s existe deja !" %nom)
return 1,''
- def verif_type(self,type=None):
+ def verifType(self,type=None):
"""
Verifie si le type passe en argument (si aucun prend le type courant)
est un type valide pour une FORMULE.
return 0,tr("Une formule ne peut retourner une valeur de type : %s" %type)
return 1,''
- def verif_formule(self,formule=None):
+ def verifFormule(self,formule=None):
"""
Verifie la validite de la formule passee en argument.
Cette nouvelle formule est passee sous la forme d'un tuple : (nom,type_retourne,arguments,corps)
"""
if not formule :
formule = (None,None,None,None)
- test_nom,erreur_nom = self.verif_nom(formule[0])
- test_type,erreur_type = self.verif_type(formule[1])
+ test_nom,erreur_nom = self.verifNom(formule[0])
+ test_type,erreur_type = self.verifType(formule[1])
if formule[2]:
args = '('+formule[2]+')'
else:
args = None
- test_arguments,erreur_arguments = self.verif_arguments(args)
- test_corps,erreur_corps = self.verif_corps(corps = formule[3], arguments = args)
+ test_arguments,erreur_arguments = self.verifArguments(args)
+ test_corps,erreur_corps = self.verifCorps(corps = formule[3], arguments = args)
# test global = produit des tests partiels
test = test_nom*test_type*test_arguments*test_corps
# message d'erreurs global = concatenation des messages partiels
erreur = erreur+(len(mess) > 0)*'\n'+mess
return test,erreur
- def verif_formule_python(self,formule=None):
+ def verifFormule_python(self,formule=None):
"""
Pour l instant ne fait qu un compile python
il serait possible d ajouter des tests sur les arguments
"""
if not formule :
formule = (None,None,None,None)
- test_nom,erreur_nom = self.verif_nom(formule[0])
+ test_nom,erreur_nom = self.verifNom(formule[0])
if formule[2]:
args = '('+formule[2]+')'
else:
args = None
- test_arguments,erreur_arguments = self.verif_arguments(args)
+ test_arguments,erreur_arguments = self.verifArguments(args)
corps=formule[3]
erreur_formule= ''
test_formule=1
self.type_retourne = formule[1]
self.arguments = '('+formule[2]+')'
self.corps = formule[3]
- # il faut ajouter le mot-cle simple correspondant dans mc_liste
- # pour cela on utilise la methode generale build_mc
+ # il faut ajouter le mot-cle simple correspondant dans mcListe
+ # pour cela on utilise la methode generale buildMc
# du coup on est oblige de modifier le dictionnaire valeur de self ...
self.valeur = {}
self.valeur[self.type_retourne] = self.arguments+' = ' + self.corps
- self.McBuild()
- sd = self.get_sd_prod()
+ self.MCBuild()
+ sd = self.getSdProd()
if sd:
sd.nom = formule[0]
# parametres
# corps de la fonction
# il faut aussi que les arguments soient sous forme de tuple
- def update_formule_python(self,formule):
- self.build_mc()
- self.mc_liste=[]
+ def updateFormulePython(self,formule):
+ self.buildMc()
+ self.mcListe=[]
if len(formule) < 4 :
return 0
arguments=formule[3]
child=self.definition.entites[k](None,nom=k,parent=self)
child.valeur=mocles[k]
child.state = 'modified'
- self.mc_liste.append(child)
+ self.mcListe.append(child)
self.corps = formule[2]
self.type_retourne = formule[1]
- sd = self.get_sd_prod()
+ sd = self.getSdProd()
if sd:
sd.nom = formule[0]
- self.init_modif()
+ self.initModif()
return 1
def active(self):
Il faut ajouter la formule au contexte global du JDC
"""
self.actif = 1
- self.init_modif()
- nom = self.get_nom()
+ self.initModif()
+ nom = self.getNom()
if nom == '' : return
try:
- self.jdc.append_fonction(self.sd)
+ self.jdc.appendFonction(self.sd)
except:
pass
Il faut supprimer la formule du contexte global du JDC
"""
self.actif = 0
- self.init_modif()
+ self.initModif()
if not self.sd : return
- self.jdc.del_fonction(self.sd)
+ self.jdc.delFonction(self.sd)
- def update_concept(self,sd):
+ def updateConcept(self,sd):
return
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
sauf les objets FORM_ETAPE qui doivent verifier que le concept detruit n'est pas
utilise dans le corps de la fonction
"""
- self.init_modif()
+ self.initModif()
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Inputs :
- old_sd=concept remplace
Les objets FORM_ETAPE devraient verifier que le concept remplace n'est pas
utilise dans le corps de la fonction
"""
- self.init_modif()
+ self.initModif()
self.old_recorded_units={}
- def get_index(self,objet):
+ def getIndex(self,objet):
"""
Retourne la position d'objet dans la liste self
"""
return self.etapes.index(objet)
- def get_sd_avant_du_bon_type(self,etape,types_permis):
+ def getSdAvantDuBonType(self,etape,types_permis):
"""
Retourne la liste des concepts avant etape d'un type acceptable
"""
- d=self.get_contexte_avant(etape)
+ d=self.getContexteAvant(etape)
l=[]
# On considere que seul assd indique un type quelconque pas CO
elif self.assd in types_permis :
if v.etape.sdnom != "sansnom" : l.append(k)
- elif self.est_permis(v,types_permis):
+ elif self.estPermis(v,types_permis):
if v.etape.sdnom != "sansnom" : l.append(k)
l.sort()
return l
- def get_variables(self,etape):
+ def getVariables(self,etape):
etapeStop=etape
l=[]
for etapeTraitee in self.etapes :
if etapeTraitee==etapeStop:
break
if etapeTraitee.nom == 'VARIABLE' :
- variable=etapeTraitee.get_mocle('ModelVariable')
+ variable=etapeTraitee.getMocle('ModelVariable')
if variable != None :
l.append(variable.nom)
return l
- def get_distributions(self,etape):
+ def getDistributions(self,etape):
etapeStop=etape
l=[]
for etapeTraitee in self.etapes :
#def set_Copules_recalcule_etat(self):
# for etapeTraitee in self.etapes :
# if etapeTraitee.nom == 'CORRELATION' :
- #Matrix=etapeTraitee.get_child('Matrix')
+ #Matrix=etapeTraitee.getChild('Matrix')
#if Matrix !=None :
- # Correlation=etapeTraitee.get_child('CorrelationMatrix')
+ # Correlation=etapeTraitee.getChild('CorrelationMatrix')
# if Correlation !=None : Correlation.state='arecalculer'
# Matrix.state='arecalculer'
- #def recalcule_etat_correlation(self):
+ #def recalculeEtatCorrelation(self):
# for etapeTraitee in self.etapes :
# if etapeTraitee.nom == 'CORRELATION' :
- #Matrix=etapeTraitee.get_child('Matrix')
+ #Matrix=etapeTraitee.getChild('Matrix')
#if Matrix !=None :
# Matrix.state='arecalculer'
- # Correlation=Matrix.get_child('CorrelationMatrix')
+ # Correlation=Matrix.getChild('CorrelationMatrix')
# if Correlation !=None : Correlation.state='arecalculer'
- # Correlation.isvalid()
- # Matrix.isvalid()
+ # Correlation.isValid()
+ # Matrix.isValid()
# etapeTraitee.state='arecalculer'
- # if etapeTraitee.state=='arecalculer': etapeTraitee.isvalid()
+ # if etapeTraitee.state=='arecalculer': etapeTraitee.isValid()
- def recalcule_etat_correlation(self):
+ def recalculeEtatCorrelation(self):
for etapeTraitee in self.etapes :
if etapeTraitee.nom == 'CORRELATION' :
- Correlation=etapeTraitee.get_child('CorrelationMatrix')
+ Correlation=etapeTraitee.getChild('CorrelationMatrix')
if Correlation !=None :
Correlation.state='arecalculer'
- Correlation.isvalid()
- etapeTraitee.isvalid()
+ Correlation.isValid()
+ etapeTraitee.isValid()
- def recalcule_validite_apres_changement_global_jdc(self):
- #print "je passe dans recalcule_validite_apres_changement_global_jdc"
+ def recalculeValiditeApresChangementGlobalJdc(self):
+ #print "je passe dans recalculeValiditeApresChangementGlobalJdc"
try :
- liste=self.get_jdc_root().cata[0].liste_condition
+ liste=self.getJdcRoot().cata.liste_condition
except :
liste=()
for etapeTraitee in self.etapes :
if etapeTraitee.nom not in liste: continue
self.forceRecalculBloc(etapeTraitee)
etapeTraitee.state='arecalculer'
- etapeTraitee.isvalid()
+ etapeTraitee.isValid()
def forceRecalculBloc(self,objet):
# Attention : certains objets deviennent None quand on recalcule
# les conditions d existence des blocs
if objet != None: objet.state='arecalculer'
- if hasattr(objet,'liste_mc_presents'):
- for childNom in objet.liste_mc_presents():
- child=objet.get_child(childNom)
- if hasattr(objet,'_update_condition_bloc'):objet._update_condition_bloc()
+ if hasattr(objet,'listeMcPresents'):
+ for childNom in objet.listeMcPresents():
+ child=objet.getChild(childNom)
+ if hasattr(objet,'_updateConditionBloc'):objet._updateConditionBloc()
self.forceRecalculBloc(child)
- def get_sd_avant_du_bon_type_pour_type_de_base(self,etape,type):
+ def getSdAvantDuBonTypePourTypeDeBase(self,etape,type):
"""
Retourne la liste des concepts avant etape d'1 type de base acceptable
Attention different de la routine precedente : 1 seul type passe en parametre
Teste sur issubclass et par sur le type permis
"""
- d=self.get_contexte_avant(etape)
+ d=self.getContexteAvant(etape)
l=[]
try :
- typeverif=self.cata[0].__dict__[type]
+ typeverif=self.cata.__dict__[type]
except :
return l
for k,v in d.items():
l.sort()
return l
- def cherche_list_avant(self,etape,valeur):
- d=self.get_contexte_avant(etape)
+ def chercheListAvant(self,etape,valeur):
+ d=self.getContexteAvant(etape)
for k,v in d.items():
if issubclass(v.__class__,LASSD):
if k == valeur :
return v
return None
- def est_permis(self,v,types_permis):
+ def estPermis(self,v,types_permis):
for type_ok in types_permis:
if type_ok in ('R','I','C','TXM') and v in self.params :
return 1
return 1
return 0
- def addentite(self,name,pos):
+ def addEntite(self,name,pos):
"""
Ajoute une entite :
Si name est le nom d une commande ou un commentaire ajoute
une etape au JDC
Sinon remonte une erreur
"""
- self.init_modif()
+ self.initModif()
self.editmode=1
if name == "COMMENTAIRE" :
from Extensions import commentaire
# ajout d'un commentaire
- self.set_current_step()
+ self.setCurrentStep()
ind = 1
for child in self.etapes :
if isinstance(child,commentaire.COMMENTAIRE):
objet.nom = "_comm_"+repr(ind)
if pos == None : pos = 0
self.etapes.insert(pos,objet)
- self.reset_context()
+ self.resetContext()
self.editmode=0
- self.active_etapes()
+ self.activeEtapes()
CONNECTOR.Emit(self,"add",objet)
- self.fin_modif()
+ self.finModif()
return objet
elif name == "PARAMETRE":
# ajout d'un parametre
- self.set_current_step()
+ self.setCurrentStep()
nom_param = '_param_'+str(len(self.params)+1)
objet = parametre.PARAMETRE(nom=nom_param)
if pos == None : pos = 0
self.etapes.insert(pos,objet)
- self.reset_context()
+ self.resetContext()
self.editmode=0
- self.active_etapes()
+ self.activeEtapes()
CONNECTOR.Emit(self,"add",objet)
- self.fin_modif()
+ self.finModif()
return objet
elif name == "PARAMETRE_EVAL":
# ajout d'un parametre EVAL
- self.set_current_step()
+ self.setCurrentStep()
nom_param = '_param_'+str(len(self.params)+1)
objet = parametre_eval.PARAMETRE_EVAL(nom=nom_param)
if pos == None : pos = 0
self.etapes.insert(pos,objet)
- self.reset_context()
+ self.resetContext()
self.editmode=0
- self.active_etapes()
+ self.activeEtapes()
CONNECTOR.Emit(self,"add",objet)
- self.fin_modif()
+ self.finModif()
return objet
elif not( isinstance(name, basestring)):
#elif type(name)==types.InstanceType:
from Extensions import commentaire
if not( isinstance (objet,commentaire.COMMENTAIRE)):
objet.reparent(self)
- self.set_current_step()
+ self.setCurrentStep()
if isinstance(objet,ETAPE):
if objet.nom_niveau_definition == 'JDC':
# l'objet depend directement du JDC
objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet)
objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition]
self.etapes.insert(pos,objet)
- self.reset_context()
+ self.resetContext()
# il faut verifier que les concepts utilises par objet existent bien
# a ce niveau d'arborescence
- objet.verif_existence_sd()
- objet.update_mc_global()
+ objet.verifExistenceSd()
+ objet.updateMcGlobal()
self.editmode=0
- self.active_etapes()
+ self.activeEtapes()
CONNECTOR.Emit(self,"add",objet)
- self.fin_modif()
+ self.finModif()
return objet
else :
# On veut ajouter une nouvelle commande
try:
- self.set_current_step()
- cmd=self.get_cmd(name)
+ self.setCurrentStep()
+ cmd=self.getCmd(name)
# L'appel a make_objet n'a pas pour effet d'enregistrer l'etape
# aupres du step courant car editmode vaut 1
- # Par contre elle a le bon parent grace a set_current_step
+ # Par contre elle a le bon parent grace a setCurrentStep
e=cmd.make_objet()
if pos == None : pos = 0
self.etapes.insert(pos,e)
- self.reset_current_step()
- self.reset_context()
+ self.resetCurrentStep()
+ self.resetContext()
self.editmode=0
- self.active_etapes()
+ self.activeEtapes()
CONNECTOR.Emit(self,"add",e)
- self.fin_modif()
+ self.finModif()
return e
except AsException as e:
traceback.print_exc()
- self.reset_current_step()
+ self.resetCurrentStep()
self.editmode=0
raise AsException(tr("Impossible d'ajouter la commande")+name + '\n')
except:
#else :
traceback.print_exc()
- self.reset_current_step()
+ self.resetCurrentStep()
self.editmode=0
raise AsException(tr("Impossible d ajouter la commande")+name)
if hasattr(etape,"close"):etape.close()
CONNECTOR.Emit(self,"close")
- def set_current_step(self):
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(self)
+ def setCurrentStep(self):
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(self)
- def reset_current_step(self):
- CONTEXT.unset_current_step()
+ def resetCurrentStep(self):
+ CONTEXT.unsetCurrentStep()
- def liste_mc_presents(self):
+ def listeMcPresents(self):
return []
- def get_sd_avant_etape(self,nom_sd,etape):
- return self.get_contexte_avant(etape).get(nom_sd,None)
+ def getSdAvantEtape(self,nom_sd,etape):
+ return self.getContexteAvant(etape).get(nom_sd,None)
- def get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec='non'):
+ def getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec='non'):
"""
Cette methode retourne la SD sd de nom nom_sd qui est eventuellement
definie apres etape en tenant compte des concepts detruits
Si avec vaut 'non' exclut etape de la recherche
"""
- #print "JDC.get_sd_apres_etape_avec_detruire",nom_sd,sd
+ #print "JDC.getSdApresEtapeAvecDetruire",nom_sd,sd
ietap=self.etapes.index(etape)
if avec == 'non':ietap=ietap+1
d={nom_sd:sd}
for e in self.etapes[ietap:]:
- if e.isactif():
- e.update_context(d)
+ if e.isActif():
+ e.updateContext(d)
autre_sd=d.get(nom_sd,None)
if autre_sd is None:
# Le concept a ete detruit. On interrompt la recherche car il n'y a
# concept initial
return sd
- def get_sd_apres_etape(self,nom_sd,etape,avec='non'):
+ def getSdApresEtape(self,nom_sd,etape,avec='non'):
"""
Cette methode retourne la SD de nom nom_sd qui est eventuellement
definie apres etape
ietap=self.etapes.index(etape)
if avec == 'non':ietap=ietap+1
for e in self.etapes[ietap:]:
- sd=e.get_sdprods(nom_sd)
+ sd=e.getSdprods(nom_sd)
if sd:
if hasattr(e,'reuse'):
if e.reuse != sd:
return sd
return None
- def get_sd_autour_etape(self,nom_sd,etape,avec='non'):
+ def getSdAutourEtape(self,nom_sd,etape,avec='non'):
"""
Fonction: retourne la SD de nom nom_sd qui est eventuellement
definie avant ou apres etape
d'une etape
Si avec vaut 'non' exclut etape de la recherche
"""
- sd=self.get_sd_avant_etape(nom_sd,etape)
+ sd=self.getSdAvantEtape(nom_sd,etape)
if sd:return sd
- return self.get_sd_apres_etape(nom_sd,etape,avec)
+ return self.getSdApresEtape(nom_sd,etape,avec)
- def get_contexte_apres(self,etape):
+ def getContexte_apres(self,etape):
"""
Retourne le dictionnaire des concepts connus apres etape
On tient compte des commandes qui modifient le contexte
comme DETRUIRE ou les macros
Si etape == None, on retourne le contexte en fin de JDC
"""
- if not etape: return self.get_contexte_avant(etape)
+ if not etape: return self.getContexteAvant(etape)
- d=self.get_contexte_avant(etape)
- if etape.isactif():etape.update_context(d)
+ d=self.getContexteAvant(etape)
+ if etape.isActif():etape.updateContext(d)
self.index_etape_courante=self.index_etape_courante+1
return d
- def active_etapes(self):
+ def activeEtapes(self):
"""
Cette methode a pour fonction de desactiver les etapes qui doivent
l'etre cad, dans le cas d'ASTER, les etapes qui ne sont pas
comprises entre le premier DEBUT/POURSUITE et le premier FIN
et rendre actives les autres
"""
- if self.definition.code == 'ASTER' :
+ #if self.definition.code == 'ASTER' :
# Seulement pour ASTER :
# Avant DEBUT actif vaut 0
# Apres DEBUT et avant le 1er FIN actif vaut 1
# Apres le 1er FIN actif vaut -1
- actif=0
- else:
- actif=1
+ # actif=0
+ #actif=1
for etape in self.etapes:
- if actif == 0 and etape.nom in ['DEBUT','POURSUITE']:actif=1
- if actif == 1:
+ #if actif == 0 and etape.nom in ['DEBUT','POURSUITE']:actif=1
+ #if actif == 1:
etape.active()
- else:
- etape.inactive()
- if etape.nom == 'FIN':actif=-1
+ self.enregistreEtapePyxb(etape)
+ #else:
+ # etape.inactive()
+ #if etape.nom == 'FIN':actif=-1
def deplaceEntite(self,indexNoeudACopier,indexNoeudOuColler,pos):
"""
self.etapes2=self.etapes[0:indexNoeudOuColler+1]+[etapeACopier,]+self.etapes[indexNoeudOuColler+1:indexNoeudACopier]+self.etapes[indexNoeudACopier+1:]
self.etapes=self.etapes2
if indexNoeudACopier < indexNoeudOuColler :
- self.delete_concept_entre_etapes(indexNoeudACopier,indexNoeudOuColler,sd)
- self.reset_context()
+ self.deleteConceptEntreEtapes(indexNoeudACopier,indexNoeudOuColler,sd)
+ self.resetContext()
for e in self.etapes :
e.state = 'modified'
- self.control_context_apres(None)
+ self.controlContextApres(None)
return 1
- def suppentite(self,etape) :
+ def suppEntite(self,etape) :
"""
Cette methode a pour fonction de supprimer une etape dans
un jeu de commandes
#PN correction de bugs
if etape not in self.etapes: return 0
- self.init_modif()
+ self.initModif()
index_etape=self.etapes.index(etape)
+ etape.deletePyxbObject()
self.etapes.remove(etape)
if etape.niveau is not self:
# Il faut la desenregistrer
etape.niveau.unregister(etape)
- etape.supprime_sdprods()
+ etape.supprimeSdProds()
etape.close()
etape.supprime()
- self.active_etapes()
+ self.activeEtapes()
# Apres suppression de l'etape il faut controler que les etapes
# suivantes ne produisent pas des concepts DETRUITS dans op_init de etape
etape=self.etapes[index_etape]
else:
etape=None
- self.control_context_apres(etape)
+ self.controlContextApres(etape)
- self.reset_context()
+ self.resetContext()
CONNECTOR.Emit(self,"supp",etape)
- self.fin_modif()
+ self.finModif()
return 1
- def control_context_apres(self,etape):
+ def controlContextApres(self,etape):
"""
Cette methode verifie que les etapes apres l'etape etape
ont bien des concepts produits acceptables (pas de conflit de
Effectue les verifications sur les etapes du jdc mais aussi sur les
jdc parents s'ils existent.
"""
- #print "control_context_apres",self,etape
+ #print "controlContextApres",self,etape
#Regularise les etapes du jdc apres l'etape etape
- self.control_jdc_context_apres(etape)
+ self.controlJdcContextApres(etape)
- def control_jdc_context_apres(self,etape):
+ def controlJdcContextApres(self,etape):
"""
- Methode semblable a control_context_apres mais ne travaille
+ Methode semblable a controlContextApres mais ne travaille
que sur les etapes et sous etapes du jdc
"""
- #print "control_jdc_context_apres",self,etape
+ #print "controlJdcContextApres",self,etape
if etape is None:
# on demarre de la premiere etape
index_etape=0
#derniere etape du jdc : rien a faire
return
- context=self.get_contexte_avant(etape)
+ context=self.getContexteAvant(etape)
for e in self.etapes[index_etape:]:
- e.control_sdprods(context)
- e.update_context(context)
+ e.controlSdprods(context)
+ e.updateContext(context)
def analyse(self):
- self.compile()
- if not self.cr.estvide():return
- self.exec_compile()
- self.active_etapes()
-
- def register_parametre(self,param):
+ if self.editor.format == 'xml' :
+ # il ne faut pas le faire quand le jeu de donnees est vide
+ self.setCurrentContext()
+ self.analyseFromXML()
+ #print ('stop demande'); exit()
+ #self.execCompileFromXML()
+ else :
+ self.compile()
+ self.execCompile()
+ if not self.cr.estvide():return
+ self.activeEtapes()
+
+ def registerParametre(self,param):
"""
Cette methode sert a ajouter un parametre dans la liste des parametres
"""
self.params.append(param)
- def register_fonction(self,fonction):
+ def registerFonction(self,fonction):
"""
Cette methode sert a ajouter une fonction dans la liste des fonctions
"""
self.fonctions.append(fonction)
- def delete_param(self,param):
+ def deleteParam(self,param):
"""
Supprime le parametre param de la liste des parametres
et du contexte gobal
if param in self.params : self.params.remove(param)
if param.nom in self.g_context : del self.g_context[param.nom]
- def get_parametres_fonctions_avant_etape(self,etape):
+ def getParametresFonctionsAvantEtape(self,etape):
"""
Retourne deux elements :
- une liste contenant les noms des parametres (constantes ou EVAL)
l_fonctions = []
# on recupere le contexte avant etape
# on ne peut mettre dans les deux listes que des elements de ce contexte
- d=self.get_contexte_avant(etape)
+ d=self.getContexteAvant(etape)
# construction de l_constantes
for param in self.params:
nom = param.nom
for form in self.fonctions:
nom = form.nom
if not nom : continue
- if nom in d: l_fonctions.append(form.get_formule())
+ if nom in d: l_fonctions.append(form.getFormule())
# on ajoute les concepts produits par DEFI_VALEUR
# XXX On pourrait peut etre faire plutot le test sur le type
# on retourne les deux listes
return l_constantes,l_fonctions
- def get_nb_etapes_avant(self,niveau):
+ def getNbEtapesAvant(self,niveau):
"""
Retourne le nombre d etapes avant le debut de niveau
"""
nb=nb+len(niv.etapes)
return nb
- def init_modif(self):
+ def initModif(self):
"""
Methode appelee au moment ou une modification va etre faite afin de
declencher d'eventuels traitements pre-modification
"""
- #print "init_modif",self
+ #print "initModif",self
self.state = 'modified'
- def fin_modif(self):
- #print "fin_modif",self
+ def finModif(self):
+ #print "finModif",self
CONNECTOR.Emit(self,"valid")
- self.isvalid()
+ self.isValid()
pass
- def deep_update_condition_bloc(self):
+ def deepUpdateConditionBloc(self):
# pour le moment, on ne fait rien
- self.get_jdc_root().recalcule_validite_apres_changement_global_jdc()
+ self.getJdcRoot().recalculeValiditeApresChangementGlobalJdc()
#raise EficasException(tr("Pas implemente"))
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
# pour le moment, on ne fait rien
raise EficasException(tr("Pas implemente"))
- def get_liste_mc_inconnus(self):
+ def getListeMcInconnus(self):
"""
Retourne une liste contenant les mots-cles inconnus a la relecture du JDC
"""
# cette liste a le format suivant : [etape,(bloc,mcfact,...),nom_mc,valeur_mc]
l_mc = []
for etape in self.etapes :
- if etape.isactif() :
- if not etape.isvalid() :
- l = etape.get_liste_mc_inconnus()
+ if etape.isActif() :
+ if not etape.isValid() :
+ l = etape.getListeMcInconnus()
if l : l_mc.extend(l)
return l_mc
- def get_genealogie_precise(self):
+ def getGenealogiePrecise(self):
return []
- def get_genealogie(self):
+ def getGenealogie(self):
"""
Retourne la liste des noms des ascendants de l'objet self
jusqu'a la premiere ETAPE parent.
"""
return []
- def get_liste_cmd(self):
+ def getListeCmd(self):
"""
Retourne la liste des commandes du catalogue
"""
- return self.niveau.definition.get_liste_cmd()
+ return self.niveau.definition.getListeCmd()
- def get_groups(self):
+ def getGroups(self):
"""
Retourne la liste des groupes
"""
return self.niveau.definition.liste_groupes,self.niveau.definition.dict_groupes
- def set_etape_context(self,etape):
+ def setEtapeContext(self,etape):
"""
Positionne l'etape qui sera utilisee dans NommerSdProd pour
decider si le concept passe pourra etre nomme
"""
self._etape_context=etape
- def reset_context(self):
+ def resetContext(self):
"""
Cette methode reinitialise le contexte glissant pour pouvoir
tenir compte des modifications de l'utilisateur : craation
de commandes, nommage de concepts, etc.
"""
- #print "reset_context",self,self.nom
+ #print "resetContext",self,self.nom
self.current_context={}
self.index_etape_courante=0
ind={}
self.index_etapes=ind
# for etape in self.etapes:
- # etape.reset_context()
+ # etape.resetContext()
- def del_sdprod(self,sd):
+ def delSdprod(self,sd):
"""
Supprime la SD sd de la liste des sd et des dictionnaires de contexte
"""
- #print "del_sdprod",self,sd
- #print "del_sdprod",self.sds
- #print "del_sdprod",self.g_context
- #print "del_sdprod",self.sds_dict
+ #print "delSdprod",self,sd
+ #print "delSdprod",self.sds
+ #print "delSdprod",self.g_context
+ #print "delSdprod",self.sds_dict
#if sd in self.sds : self.sds.remove(sd)
if sd.nom in self.g_context : del self.g_context[sd.nom]
if sd.nom in self.sds_dict : del self.sds_dict[sd.nom]
- def del_param(self,param):
+ def delParam(self,param):
"""
Supprime le parametre param de la liste des paramatres
et du contexte gobal
if param in self.params : self.params.remove(param)
if param.nom in self.g_context : del self.g_context[param.nom]
- def del_fonction(self,fonction):
+ def delFonction(self,fonction):
"""
Supprime la fonction fonction de la liste des fonctions
et du contexte gobal
if fonction in self.fonctions : self.fonctions.remove(fonction)
if fonction.nom in self.g_context: del self.g_context[fonction.nom]
- def append_sdprod(self,sd):
+ def appendSdProd(self,sd):
"""
Ajoute la SD sd a la liste des sd en verifiant au prealable qu'une SD de
meme nom n'existe pas deja
self.g_context[sd.nom] = sd
#if sd not in self.sds : self.sds.append(sd)
- def append_param(self,param):
+ def appendParam(self,param):
"""
Ajoute le parametre param a la liste des params
et au contexte global
if param not in self.params : self.params.append(param)
self.g_context[param.nom]=param
- def append_fonction(self,fonction):
+ def appendFonction(self,fonction):
"""
Ajoute la fonction fonction a la liste des fonctions
et au contexte global
if fonction not in self.fonctions : self.fonctions.append(fonction)
self.g_context[fonction.nom]=fonction
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
que de transmettre aux fils
"""
for etape in self.etapes :
- etape.delete_concept(sd)
+ etape.deleteConcept(sd)
#PN PN PN pour les matrices ????
- #self.get_variables_avant(etape)
+ #self.getVariables_avant(etape)
- def replace_concept_after_etape(self,etape,old_sd,sd):
+ def replaceConceptAfterEtape(self,etape,old_sd,sd):
"""
Met a jour les etapes du JDC qui sont apres etape en fonction
du remplacement du concept sd
if index == len(self.etapes) :
return # etape est la derniere etape du jdc ...on ne fait rien !
for child in self.etapes[index:]:
- child.replace_concept(old_sd,sd)
+ child.replaceConcept(old_sd,sd)
- def update_concept_after_etape(self,etape,sd):
+ def updateConceptAfterEtape(self,etape,sd):
"""
Met a jour les etapes du JDC qui sont apres etape en fonction
de la modification (principalement nommage) du concept sd
if index == len(self.etapes) :
return # etape est la derniere etape du jdc ...on ne fait rien !
for child in self.etapes[index:]:
- child.update_concept(sd)
+ child.updateConcept(sd)
- def dump_state(self):
+ def dumpState(self):
print(("JDC.state: ",self.state))
for etape in self.etapes :
print((etape.nom+".state: ",etape.state))
- def change_unit(self,unit,etape,old_unit):
- #print "change_unit",unit,etape,old_unit
+ def changeUnit(self,unit,etape,old_unit):
+ #print "changeUnit",unit,etape,old_unit
#print id(self.recorded_units),self.recorded_units
#if self.recorded_units.has_key(old_unit):del self.recorded_units[old_unit]
- self.record_unit(unit,etape)
+ self.recordUnit(unit,etape)
- def record_unit(self,unit,etape):
+ def recordUnit(self,unit,etape):
"""Enregistre les unites logiques incluses et les infos relatives a l'etape"""
- #print "record_unit",unit,etape
+ #print "recordUnit",unit,etape
if unit is None:
# Cas de POURSUITE
self.recorded_units[None]=(etape.fichier_ini ,etape.fichier_text,etape.recorded_units)
#print self.recorded_units.get(None,(None,"",{}))[2]
#print self.recorded_units.get(None,(None,"",{}))[2].get(None,(None,"",{}))
- def changefichier(self,fichier):
- self.fin_modif()
+ def changeFichier(self,fichier):
+ self.finModif()
- def eval_in_context(self,valeur,etape):
+ def evalInContext(self,valeur,etape):
""" Tente d'evaluer valeur dans le contexte courant de etape
Retourne le parametre valeur inchange si l'evaluation est impossible
"""
#contexte initial du jdc
context=self.condition_context.copy()
#contexte courant des concepts. Il contient les parametres
- context.update(self.get_contexte_avant(etape))
+ context.update(self.getContexteAvant(etape))
try :
objet = eval(valeur,context)
return objet
"""
Cette methode ajoute etape dans la liste
des etapes self.etapes et retourne l identificateur d'etape
- fourni par l appel a g_register
+ fourni par l appel a gRegister
A quoi sert editmode ?
- Si editmode vaut 1, on est en mode edition de JDC. On cherche
a enregistrer une etape que l'on a creee avec eficas (en passant
- par addentite) auquel cas on ne veut recuperer que son numero
- d'enregistrement et c'est addentite qui l'enregistre dans
+ par addEntite) auquel cas on ne veut recuperer que son numero
+ d'enregistrement et c'est addEntite qui l'enregistre dans
self.etapes a la bonne place...
- Si editmode vaut 0, on est en mode relecture d'un fichier de
commandes et on doit enregistrer l'etape a la fin de self.etapes
self.index_etapes[etape] = len(self.etapes) - 1
else:
pass
- return self.g_register(etape)
+ return self.gRegister(etape)
#ATTENTION SURCHARGE : cette methode doit etre gardee en synchronisation avec celle de Noyau
def NommerSdprod(self,sd,sdnom,restrict='non'):
# XXX En mode editeur dans EFICAS, le nommage doit etre gere differemment
# Le dictionnaire g_context ne represente pas le contexte
# effectif avant une etape.
- # Il faut utiliser get_contexte_avant avec indication de l'etape
+ # Il faut utiliser getContexteAvant avec indication de l'etape
# traitee.
# Cette etape est indiquee par l'attribut _etape_context qui a ete
- # positionne prealablement par un appel a set_etape_context
+ # positionne prealablement par un appel a setEtapeContext
if CONTEXT.debug : print(("JDC.NommerSdprod ",sd,sdnom))
if self._etape_context:
- o=self.get_contexte_avant(self._etape_context).get(sdnom,None)
+ o=self.getContexteAvant(self._etape_context).get(sdnom,None)
else:
o=self.sds_dict.get(sdnom,None)
raise AsException(tr(" Nom de concept deja defini : "+ sdnom))
# ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
- # Ajoute a la creation (appel de reg_sd).
+ # Ajoute a la creation (appel de regSD).
self.sds_dict[sdnom]=sd
sd.nom=sdnom
if restrict == 'non':
self.g_context[sdnom]=sd
- def delete_concept_entre_etapes(self,index1,index2,sd):
+ def deleteConceptEntreEtapes(self,index1,index2,sd):
if index2 <= index1 :return
for child in self.etapes[index1:index2]:
- child.delete_concept(sd)
+ child.deleteConcept(sd)
- def delete_concept_after_etape(self,etape,sd):
+ def deleteConceptAfterEtape(self,etape,sd):
"""
Met a jour les etapes du JDC qui sont apres etape en fonction
de la disparition du concept sd
if index == len(self.etapes) :
return # etape est la derniere etape du jdc ...on ne fait rien !
for child in self.etapes[index:]:
- child.delete_concept(sd)
+ child.deleteConcept(sd)
#ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes de Noyau et Validation : a reintegrer
- def get_file(self,unite=None,fic_origine=''):
+ def getFile(self,unite=None,fic_origine=''):
"""
Retourne le nom du fichier correspondant a un numero d'unite
logique (entier) ainsi que le source contenu dans le fichier
"""
if self.appli is not None:
# Si le JDC est relie a une application maitre, on delegue la recherche
- file,text= self.appli.get_file(unite,fic_origine)
+ file,text= self.appli.getFile(unite,fic_origine)
else:
file = None
if unite != None:
linecache.cache[file]=0,0,text.split('\n'),file
return file,text
- def isvalid(self,cr='non'):
+ def isValid(self,cr='non'):
if hasattr(self,'valid'): old_valid=self.valid
else:old_valid=0
- valid=Validation.V_JDC.JDC.isvalid(self,cr)
+ valid=Validation.V_JDC.JDC.isValid(self,cr)
if valid != old_valid:
CONNECTOR.Emit(self,"valid")
return valid
- def get_l_noms_etapes(self):
+ def getLNomsEtapes(self):
"""
Retourne la liste des noms des etapes de self
"""
def __init__(self):
self.l_noms_entites=[]
- def get_liste_cmd(self):
+ def getListeCmd(self):
self.l_noms_entites.sort()
return self.l_noms_entites
- def get_docu(self):
+ def getDocu(self):
return
class LASSD:
def __repr__(self):
- return self.get_name()
+ return self.getName()
# Modules Eficas
from Extensions.i18n import tr
from Extensions.eficas_exception import EficasException
-from . import I_ETAPE
-from . import I_ENTITE
-from . import I_OBJECT
+from Ihm import I_ETAPE
+from Ihm import I_ENTITE
+from Ihm import I_OBJECT
import Noyau
from Noyau.N_ASSD import ASSD
from Noyau import N__F
-import convert
from Extensions import param2
-# import rajoutes suite a l'ajout de Build_sd --> a resorber
+# import rajoutes suite a l'ajout de buildSd --> a resorber
import Noyau, Validation.V_MACRO_ETAPE
from Noyau import N_Exception
from Noyau.N_Exception import AsException
self.text_error=""
self.recorded_units={}
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
"""
Fonction : retourne le concept produit par l etape de nom nom_sd
s il existe sinon None
return d.get(nom_sd,None)
return None
- def get_contexte_jdc(self,fichier,text):
+ def getContexteJdc(self,fichier,text,doitEtreValide=1):
"""
Interprete text comme un texte de jdc et retourne le contexte final.
ou leve une exception
--> utilisee par ops.POURSUITE et INCLUDE
"""
- #print ("get_contexte_jdc",self,self.nom)
+ #print ("getContexteJdc",self,self.nom, text)
# On recupere l'etape courante
- step=CONTEXT.get_current_step()
- try:
- #if 1 :
+ step=CONTEXT.getCurrentStep()
+ #try:
+ if 1 :
# on essaie de creer un objet JDC auxiliaire avec un contexte initial
- # Attention get_contexte_avant retourne un dictionnaire qui contient
+ # Attention getContexteAvant retourne un dictionnaire qui contient
# le contexte courant. Ce dictionnaire est reactualise regulierement.
# Si on veut garder l'etat du contexte fige, il faut en faire une copie.
- context_ini = self.parent.get_contexte_avant(self).copy()
- #print "get_contexte_jdc",context_ini.keys()
+ context_ini = self.parent.getContexteAvant(self).copy()
# Indispensable avant de creer un nouveau JDC
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
args=self.jdc.args
prefix_include=None
if hasattr(self,'prefix'):
self.text_converted=0
self.text_error=""
if self.nom != "INCLUDE_MATERIAU":
- if self.parent.appli.ihm == "QT" :
- format=self.parent.appli.appliEficas.format_fichier
- else :
- format=self.jdc.appli.format_fichier.get()
+ format=self.parent.appli.appliEficas.format_fichier
#on force a python pour Carmel
if format=="CARMEL3D" : format="python"
+ import convert
if format in convert.plugins :
# Le convertisseur existe on l'utilise
p=convert.plugins[format]()
self.text_converted=1
+ if hasattr(self,'sd') and self.sd != None : context_ini[self.sd.nom]=self.sd
j=self.JdC_aux( procedure=text, nom=fichier,
appli=self.jdc.appli,
cata=self.jdc.cata,
self.jdc_aux=j
self.jdc.jdcDict=self.jdc_aux
- except:
- #else :
+ #except:
+ else :
traceback.print_exc()
# On retablit l'etape courante step
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
return None
- if not j.cr.estvide():
+
+ if not j.cr.estvide() and doitEtreValide:
# Erreurs dans l'INCLUDE. On garde la memoire du fichier
# mais on n'insere pas les concepts
# On retablit l'etape courante step
- #print j.cr
- #print j.isvalid()
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
+ #print (j.cr)
+ #print ("valid ",j.isValid())
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
raise EficasException(tr("Impossible de relire le fichier %s \n ")+ six.text_type(j.cr))
- if not j.isvalid():
+ if not j.isValid() and doitEtreValide:
# L'INCLUDE n'est pas valide.
# on produit un rapport d'erreurs
cr=j.report()
+ #print ('cr', cr)
# On retablit l'etape courante step
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
self.jdc.cr.fatal("Le fichier include contient des erreurs ")
raise EficasException(tr("Le fichier include contient des erreurs "))
# Si aucune erreur rencontree
+ # ou qu on accepte un jdc incomplet
# On recupere le contexte de l'include verifie
try:
- j_context=j.get_verif_contexte()
+ j_context=j.getVerifContexte()
#print j_context.keys()
#print j.g_context.keys()
except:
# On retablit l'etape courante step
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
raise EficasException(" ")
# Si on est arrive ici, le texte du fichier inclus (INCLUDE, POURSUITE, ...)
self.jdc_aux=j
# On retablit l'etape courante step
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
return j_context
- def reevalue_sd_jdc(self):
+ def reevalueSdJdc(self):
"""
Avec la liste des SD qui ont ete supprimees, propage la
disparition de ces SD dans toutes les etapes et descendants
"""
- #print "reevalue_sd_jdc"
- l_sd_supp,l_sd_repl = self.diff_contextes()
+ #print "reevalueSdJdc"
+ l_sd_supp,l_sd_repl = self.diffContextes()
for sd in l_sd_supp:
- self.parent.delete_concept_after_etape(self,sd)
+ self.parent.deleteConceptAfterEtape(self,sd)
for old_sd,sd in l_sd_repl:
- self.parent.replace_concept_after_etape(self,old_sd,sd)
+ self.parent.replaceConceptAfterEtape(self,old_sd,sd)
- def diff_contextes(self):
+ def diffContextes(self):
"""
Realise la difference entre les 2 contextes
old_contexte_fichier_init et contexte_fichier_init
l_sd_replaced.append((self.old_contexte_fichier_init[old_key],self.contexte_fichier_init[old_key]))
return l_sd_suppressed,l_sd_replaced
- def control_sdprods(self,d):
+ def controlSdprods(self,d):
"""
Cette methode doit verifier que les concepts produits par la
commande ne sont pas incompatibles avec le contexte fourni (d).
Si c'est le cas, le concept produit doit etre supprime
Si la macro a elle meme des etapes, elle doit propager
- le traitement (voir methode control_jdc_context_apres de I_JDC)
+ le traitement (voir methode controlJdcContextApres de I_JDC)
"""
- #print ("I_MACRO_ETAPE.control_sdprods",d.keys(),self,self.nom,self.sd and self.sd.nom)
+ #print ("I_MACRO_ETAPE.controlSdprods",d.keys(),self,self.nom,self.sd and self.sd.nom)
if self.sd:
if self.sd.nom in d:
# Le concept est deja defini
# Redefinition du concept, on l'annule
#XXX on pourrait simplement annuler son nom pour conserver les objets
# l'utilisateur n'aurait alors qu'a renommer le concept (faisable??)
- self.init_modif()
+ self.initModif()
sd=self.sd
self.sd=self.reuse=self.sdnom=None
- self.parent.delete_concept_after_etape(self,sd)
- self.fin_modif()
+ self.parent.deleteConceptAfterEtape(self,sd)
+ self.finModif()
# On verifie les concepts a droite du signe =
- self.init_modif()
+ self.initModif()
sdprods=self.sdprods[:]
self.sdprods=[]
for co in sdprods:
if co.nom in d and co is not d[co.nom] :
#nettoie les mots cles de l'etape qui ont comme valeur co
- self.delete_concept(co)
+ self.deleteConcept(co)
#supprime les references a co dans les etapes suivantes
- self.parent.delete_concept_after_etape(self,co)
+ self.parent.deleteConceptAfterEtape(self,co)
else:
self.sdprods.append(co)
- self.fin_modif()
+ self.finModif()
for e in self.etapes:
- e.control_sdprods(d)
- e.update_context(d)
+ e.controlSdprods(d)
+ e.updateContext(d)
- def supprime_sdprod(self,sd):
+ def supprimeSdprod(self,sd):
"""
Supprime le concept produit sd s'il est produit par l'etape
"""
if sd in self.sdprods:
- self.init_modif()
- self.parent.del_sdprod(sd)
+ self.initModif()
+ self.parent.delSdprod(sd)
self.sdprods.remove(sd)
- self.fin_modif()
- self.parent.delete_concept(sd)
+ self.finModif()
+ self.parent.deleteConcept(sd)
return
if sd is not self.sd :return
if self.sd is not None :
- self.init_modif()
- self.parent.del_sdprod(sd)
+ self.initModif()
+ self.parent.delSdprod(sd)
self.sd=None
- self.fin_modif()
- self.parent.delete_concept(sd)
+ self.finModif()
+ self.parent.deleteConcept(sd)
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
"""
Fonction: Lors de la destruction de la macro-etape, detruit tous les concepts produits
Un operateur n a qu un concept produit
Une procedure n'en a aucun
Une macro en a en general plus d'un
"""
- #print "supprime_sdprods"
+ #print "supprimeSdProds"
if self.reuse is not self.sd :
# l'etape n'est pas reentrante
# le concept retourne par l'etape est a supprimer car il etait
# cree par l'etape
if self.sd != None :
- self.parent.del_sdprod(self.sd)
- self.parent.delete_concept(self.sd)
+ self.parent.delSdprod(self.sd)
+ self.parent.deleteConcept(self.sd)
# On detruit les concepts a droite du signe =
for co in self.sdprods:
- self.parent.del_sdprod(co)
- self.parent.delete_concept(co)
+ self.parent.delSdprod(co)
+ self.parent.deleteConcept(co)
# Si la macro a des etapes et des concepts inclus, on les detruit
for nom_sd,co in self.g_context.items():
if not isinstance(co,ASSD):continue
- self.parent.del_sdprod(co)
- self.parent.delete_concept(co)
+ self.parent.delSdprod(co)
+ self.parent.deleteConcept(co)
# On met g_context a blanc
self.g_context={}
# La macro a un jdc auxiliaire inclus. On demande sa fermeture
self.jdc_aux.close()
- def reset_context(self):
+ def resetContext(self):
if hasattr(self,"jdc_aux") and self.jdc_aux:
# La macro a un jdc auxiliaire inclus. On demande la reinitialisation du contexte
- self.jdc_aux.reset_context()
+ self.jdc_aux.resetContext()
- def update_concept(self,sd):
- I_ETAPE.ETAPE.update_concept(self,sd)
+ def updateConcept(self,sd):
+ I_ETAPE.ETAPE.updateConcept(self,sd)
for etape in self.etapes:
- etape.update_concept(sd)
+ etape.updateConcept(sd)
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Fonction : Mettre a jour les mots cles de l etape et eventuellement
le concept produit si reuse suite a la disparition du concept sd
Seuls les mots cles simples MCSIMP font un traitement autre
que de transmettre aux fils
"""
- #print "delete_concept",sd
- I_ETAPE.ETAPE.delete_concept(self,sd)
+ #print "deleteConcept",sd
+ I_ETAPE.ETAPE.deleteConcept(self,sd)
for etape in self.etapes:
- etape.delete_concept(sd)
+ etape.deleteConcept(sd)
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Fonction : Mettre a jour les mots cles de l etape et le concept produit si reuse
suite au remplacement du concept old_sd par sd
"""
- #print "replace_concept",old_sd,sd
- I_ETAPE.ETAPE.replace_concept(self,old_sd,sd)
+ #print "replaceConcept",old_sd,sd
+ I_ETAPE.ETAPE.replaceConcept(self,old_sd,sd)
for etape in self.etapes:
- etape.replace_concept(old_sd,sd)
+ etape.replaceConcept(old_sd,sd)
- def change_fichier_init(self,new_fic,text):
+ def changeFichierInit(self,new_fic,text):
"""
Tente de changer le fichier include. Le precedent include est conserve
dans old_xxx
self.fichier_text=text
try:
- self.make_contexte_include(new_fic,text)
+ self.makeContexteInclude(new_fic,text)
except:
l=traceback.format_exception_only(tr("Fichier invalide %s", sys.exc_info()[1]))
self.fichier_err=''.join(l)
# L'evaluation de text dans un JDC auxiliaire s'est bien passe
# on peut poursuivre le traitement
- self.init_modif()
+ self.initModif()
self.state="undetermined"
self.fichier_err=None
# On enregistre la modification de fichier
- self.record_unite()
+ self.recordUnite()
# Le contexte du parent doit etre reinitialise car les concepts produits ont change
- self.parent.reset_context()
+ self.parent.resetContext()
# Si des concepts ont disparu lors du changement de fichier, on demande leur suppression
self.old_contexte_fichier_init=self.old_context
- self.reevalue_sd_jdc()
+ self.reevalueSdJdc()
- self.fin_modif()
+ self.finModif()
if self.old_jdc_aux:
self.old_jdc_aux.close()
- def restore_fichier_init(self):
+ def restoreFichierInit(self):
"""
Restaure le fichier init enregistre dans old_xxx
"""
self.etapes=self.old_etapes
self.jdc_aux=self.old_jdc_aux
- def force_fichier_init(self):
+ def forceFichierInit(self):
"""
Force le remplacement du fichier init meme si le remplacant est en erreur
"""
# On ajoute egalement le concept produit dans le sds_dict du parent
# sans verification car on est sur (verification integree) que
# le nommage est possible
- j_context=self.jdc_aux.get_contexte_avant(None)
+ j_context=self.jdc_aux.getContexteAvant(None)
self.g_context.clear()
context_ini=self.jdc_aux.context_ini
for k,v in j_context.items():
self.fichier_err = None
# On enregistre la modification de fichier
- self.init_modif()
+ self.initModif()
self.state="undetermined"
- self.record_unite()
+ self.recordUnite()
# Le contexte du parent doit etre reinitialise car les concepts produits ont change
- self.parent.reset_context()
+ self.parent.resetContext()
# On remplace les anciens concepts par les nouveaux (y compris ajouts
# et suppression) et on propage les modifications aux etapes precedentes et suivantes
- # reevalue_sd_jdc construit la liste des differences entre les contextes contexte_fichier_init
+ # reevalueSdJdc construit la liste des differences entre les contextes contexte_fichier_init
# et old_contexte_fichier_init et effectue les destructions et remplacements de concept
# necessaires
self.old_contexte_fichier_init=self.old_context
- self.reevalue_sd_jdc()
- self.fin_modif()
+ self.reevalueSdJdc()
+ self.finModif()
if self.old_jdc_aux:
self.old_jdc_aux.close()
- self.jdc_aux.force_contexte(self.g_context)
+ self.jdc_aux.forceContexte(self.g_context)
- def build_include(self,fichier,text):
+ def buildInclude(self,fichier,text):
import Extensions.jdc_include
self.JdC_aux=Extensions.jdc_include.JdC_include
# un include partage la table des unites avec son parent (jdc)
self.recorded_units=self.parent.recorded_units
- self.build_jdcaux(fichier,text)
+ self.buildJdcaux(fichier,text)
- def build_poursuite(self,fichier,text):
+ def buildPoursuite(self,fichier,text):
import Extensions.jdc_include
self.JdC_aux=Extensions.jdc_include.JdC_poursuite
# une poursuite a sa propre table d'unites
self.recorded_units={}
- self.build_jdcaux(fichier,text)
+ self.buildJdcaux(fichier,text)
- def build_includeInclude(self,text):
+ def buildIncludeInclude(self,text):
import Extensions.jdc_include
self.JdC_aux=Extensions.jdc_include.JdC_include
# un include partage la table des unites avec son parent (jdc)
- self.build_jdcauxInclude(text)
-
- def build_includeEtape(self,text):
+ def buildIncludeEtape(self,text,doitEtreValide = 0):
import Extensions.jdc_include
self.JdC_aux=Extensions.jdc_include.JdC_include
# un include partage la table des unites avec son parent (jdc)
- #self.build_jdcauxInclude(text)
+ #self.buildJdcauxInclude(text)
# Attention fonctionne pour import_Zone de MT
# a adapter eventuellement
try :
- contexte = self.get_contexte_jdc(None,text)
+ #if 1 :
+ contexte = self.getContexteJdc(None,text,doitEtreValide)
except EficasException:
return 0
for e in self.etapes:
e.niveau=self.niveau
e.parent=self.parent
+ e.state='change'
index=self.jdc.etapes.index(self)
self.jdc.etapes=self.jdc.etapes[:index+1]+self.etapes+self.jdc.etapes[index+1:]
self.g_context={}
self.etapes=[]
- self.jdc.reset_context()
+ self.jdc.resetContext()
self.jdc_aux=None
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
return 1
- def build_jdcauxInclude(self,text):
+ def buildJdcauxInclude(self,text):
try :
- contexte = self.get_contexte_jdc(None,text)
+ contexte = self.getContexteJdc(None,text)
except EficasException:
pass
index=self.jdc.etapes.index(self)
self.g_context={}
self.etapes=[]
self.jdc_aux=None
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
- def build_jdcaux(self,fichier,text):
+ def buildJdcaux(self,fichier,text):
"""
Cree un jdc auxiliaire initialise avec text.
Initialise le nom du fichier associe avec fichier
self.fichier_unite=None
self.fichier_err = None
try:
- contexte = self.get_contexte_jdc(fichier,text)
+ contexte = self.getContexteJdc(fichier,text)
if contexte is None :
# Impossible de construire le jdc auxiliaire (sortie par None)
# On simule une sortie par exception
else:
# La construction du jdc auxiliaire est allee au bout
self.contexte_fichier_init = contexte
- self.init_modif()
- self.fin_modif()
+ self.initModif()
+ self.finModif()
except:
# Impossible de construire le jdc auxiliaire (sortie par exception)
l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
if self.jdc.appli is not None:
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message= tr("Ce fichier ne sera pas pris en compte\n %s",''.join(l)))
self.g_context={}
self.jdc_aux=None
self.fichier_err = ''.join(l)
self.contexte_fichier_init={}
- self.init_modif()
- self.fin_modif()
+ self.initModif()
+ self.finModif()
raise EficasException(" ")
- def make_contexte_include(self,fichier,text):
+ def makeContexteInclude(self,fichier,text):
"""
Cette methode sert a craer un contexte en interpratant un texte source Python.
"""
- print ("make_contexte_include",fichier)
+ #print ("makeContexteInclude",fichier)
# on recupere le contexte d'un nouveau jdc dans lequel on interprete text
- contexte = self.get_contexte_jdc(fichier,text)
- print ("make_contexte_include",fichier)
+ contexte = self.getContexteJdc(fichier,text)
if contexte == None :
raise EficasException("Impossible de construire le jeu de commandes correspondant au fichier")
else:
# l'attribut g_context est un dictionnaire qui contient les concepts produits par inclusion
# l'attribut contexte_fichier_init est un dictionnaire qui contient les concepts produits
# en sortie de macro. g_context est obtenu en retirant de contexte_fichier_init les concepts
- # existants en debut de macro contenus dans context_ini (dans get_contexte_jdc)
+ # existants en debut de macro contenus dans context_ini (dans getContexteJdc)
# g_context est utilise pour avoir les concepts produits par la macro
# contexte_fichier_init est utilise pour avoir les concepts supprimes par la macro
self.contexte_fichier_init = contexte
- print ("fin make_contexte_include",fichier)
+ #print ("fin makeContexteInclude",fichier)
- def reevalue_fichier_init_OBSOLETE(self):
+ def reevalueFichierInitObsolete(self):
"""Recalcule les concepts produits par le fichier enregistre"""
#print "reevalue_fichier_init"
old_context=self.contexte_fichier_init
try:
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+ self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
except:
l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
self.fichier_err = ''.join(l)
self.jdc_aux=None
self.old_contexte_fichier_init=old_context
self.contexte_fichier_init={}
- self.reevalue_sd_jdc()
+ self.reevalueSdJdc()
return
# L'evaluation s'est bien passee
self.fichier_err = None
self.old_contexte_fichier_init=old_context
- self.reevalue_sd_jdc()
+ self.reevalueSdJdc()
- def update_fichier_init(self,unite):
+ def updateFichierInit(self,unite):
"""Reevalue le fichier init sans demander (dans la mesure du possible) a l'utilisateur
les noms des fichiers
Ceci suppose que les relations entre unites et noms ont ete memorisees prealablement
L'include a ete initialise precedemment. Le jdc auxiliaire existe.
"""
- #print "update_fichier_init",unite,self.fichier_unite
+ #print "updateFichierInit",unite,self.fichier_unite
self.old_contexte_fichier_init=self.contexte_fichier_init
old_fichier_ini=self.fichier_ini
if not hasattr(self,"jdc_aux"):self.jdc_aux=None
old_jdc_aux=self.jdc_aux
- #print "update_fichier_init",self,self.parent,self.parent.recorded_units
+ #print "updateFichierInit",self,self.parent,self.parent.recorded_units
if self.fichier_unite is None:
# L'unite n'etait pas definie precedemment. On ne change que l'unite
- #print "update_fichier_init","pas de changement dans include"
+ #print "updateFichierInit","pas de changement dans include"
self.fichier_unite=unite
return
elif unite == self.fichier_unite :
# L'unite n'a pas change
- #print "update_fichier_init","pas de changement dans include 3"
+ #print "updateFichierInit","pas de changement dans include 3"
return
elif unite != self.fichier_unite :
# L'unite etait definie precedemment. On remplace l'include
#
- f,text=self.get_file_memo(unite=unite,fic_origine=self.parent.nom)
+ f,text=self.getFileMemo(unite=unite,fic_origine=self.parent.nom)
if f is None:
# Le fichier associe n'a pas pu etre defini
# on change l'unite associee mais pas l'include
- #print "update_fichier_init","pas de changement dans include 2"
+ #print "updateFichierInit","pas de changement dans include 2"
self.fichier_unite=unite
return
else:
self.fichier_ini = f
self.fichier_text=text
self.fichier_unite=unite
- #print "update_fichier_init",self.recorded_units
+ #print "updateFichierInit",self.recorded_units
- #print "update_fichier_init",self.fichier_ini,self.fichier_text,self.fichier_unite
+ #print "updateFichierInit",self.fichier_ini,self.fichier_text,self.fichier_unite
if old_fichier_ini == self.fichier_ini:
# Le fichier inclus n'a pas change. On ne recree pas le contexte
# mais on enregistre le changement d'association unite <-> fichier
- #print "update_fichier_init.fichier inchange",self.jdc_aux.context_ini
- self.parent.record_unit(unite,self)
+ #print "updateFichierInit.fichier inchange",self.jdc_aux.context_ini
+ self.parent.recordUnit(unite,self)
return
try:
self.fichier_err=None
- self.make_contexte_include(self.fichier_ini,self.fichier_text)
+ self.makeContexteInclude(self.fichier_ini,self.fichier_text)
# Les 3 attributs fichier_ini fichier_text recorded_units doivent etre corrects
- # avant d'appeler change_unit
+ # avant d'appeler changeUnit
except:
# Erreurs lors de l'evaluation de text dans un JDC auxiliaire
l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
if old_jdc_aux:
old_jdc_aux.close()
- self.parent.record_unit(unite,self)
+ self.parent.recordUnit(unite,self)
# Le contexte du parent doit etre reinitialise car les concepts
# produits ont change
- self.parent.reset_context()
+ self.parent.resetContext()
# Si des concepts ont disparu lors du changement de fichier, on
# demande leur suppression
- self.reevalue_sd_jdc()
- #print "update_fichier_init",self.jdc_aux.context_ini.keys()
+ self.reevalueSdJdc()
+ #print "updateFichierInit",self.jdc_aux.context_ini.keys()
- def record_unite(self):
- #print "record_unite",self.nom
+ def recordUnite(self):
+ #print "recordUnite",self.nom
if self.nom == "POURSUITE":
- self.parent.record_unit(None,self)
+ self.parent.recordUnit(None,self)
else:
if hasattr(self,'fichier_unite') :
- self.parent.record_unit(self.fichier_unite,self)
+ self.parent.recordUnit(self.fichier_unite,self)
- def get_file_memo(self, unite=None, fname=None, fic_origine=''):
+ def getFileMemo(self, unite=None, fname=None, fic_origine=''):
"""Retourne le nom du fichier et le source correspondant a l'unite unite
Initialise en plus recorded_units
"""
- #print "get_file_memo",unite,fic_origine,self,self.parent
+ #print "getFileMemo",unite,fic_origine,self,self.parent
#print self.parent.recorded_units
if unite is None:
# On est dans le cas d'une poursuite. On ne reutilise aucune unite de parent
f = fname
text = open(fname, 'r').read()
else:
- f,text=self.jdc.get_file(unite=unite, fic_origine=fic_origine)
+ f,text=self.jdc.getFile(unite=unite, fic_origine=fic_origine)
else:
f,text=None,None
self.recorded_units=units
if f is None and self.jdc.appli:
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message= tr("Ce fichier ne sera pas pris en compte\nLe fichier associe n'est pas defini"))
return f,text
- def update_context(self,d):
+ def updateContext(self,d):
"""
Met a jour le contexte contenu dans le dictionnaire d
Une MACRO_ETAPE peut ajouter plusieurs concepts dans le contexte
Une fonction enregistree dans op_init peut egalement modifier le contexte
"""
- #print ("update_context",self,self.nom,d.keys())
+ #print ("updateContext",self,self.nom,d.keys())
if hasattr(self,"jdc_aux") and self.jdc_aux:
- #ATTENTION: update_context NE DOIT PAS appeler reset_context
- # car il appelle directement ou indirectement update_context
- # equivalent a reset_context. Evite les recursions
+ #ATTENTION: updateContext NE DOIT PAS appeler resetContext
+ # car il appelle directement ou indirectement updateContext
+ # equivalent a resetContext. Evite les recursions
self.jdc_aux.context_ini=d.copy()
self.jdc_aux.current_context={}
self.jdc_aux.index_etape_courante=0
- #ATTENTION: il ne faut pas utiliser self.jdc_aux.get_contexte_avant
+ #ATTENTION: il ne faut pas utiliser self.jdc_aux.getContexteAvant
#car cet appel conduit a des remontees multiples incoherentes dans le
# ou les parents.
- #get_context_avant appelle update_context qui NE DOIT PAS appeler get_contexte_avant
+ #get_context_avant appelle updateContext qui NE DOIT PAS appeler getContexteAvant
#On n'a besoin que d'un update local connaissant
# le contexte amont : d qui sert a reinitialiser self.context_ini
for e in self.etapes:
- e.update_context(d)
+ e.updateContext(d)
return
if type(self.definition.op_init) == types.FunctionType:
if self.sd != None :d[self.sd.nom]=self.sd
for co in self.sdprods:
d[co.nom]=co
- #print "update_context.fin",d.keys()
+ #print "updateContext.fin",d.keys()
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
def copy(self):
Noyau.N_MACRO_ETAPE.MACRO_ETAPE.supprime(self)
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
- def get_file(self,unite=None,fic_origine=''):
+ def getFile(self,unite=None,fic_origine=''):
"""Retourne le nom du fichier et le source correspondant a l'unite unite
"""
if self.jdc :
- f,text=self.jdc.get_file(unite=unite,fic_origine=fic_origine)
+ f,text=self.jdc.getFile(unite=unite,fic_origine=fic_origine)
else:
f,text=None,None
return f,text
- def make_include3(self,fichier=None):
- self.make_includeCarmel(fichier)
+ def makeInclude3(self,fichier=None):
+ self.makeIncludeCarmel(fichier)
- def make_includeCND(self,fichier=None):
+ def makeIncludeCND(self,fichier=None):
unite=999
if fichier==None : return
if hasattr(self,'fichier_ini') : print((self.fichier_ini))
if groupe[0:5]=='VCUT_': texteVcut +='V_'+groupe[5:]+"=VCUT();\n"
texte=texteSources+texteCond+texteNoCond+texteVcut
#print (texte)
- self.build_includeInclude(texte)
- if CONTEXT.get_current_step()==None : CONTEXT.set_current_step(self)
+ self.buildIncludeInclude(texte)
+ if CONTEXT.getCurrentStep()==None : CONTEXT.setCurrentStep(self)
reevalue=0
- def make_includeCarmel(self,fichier=None):
+ def makeIncludeCarmel(self,fichier=None):
# Pour Carmel
- #print "je suis dans make_includeCarmel"
+ #print "je suis dans makeIncludeCarmel"
unite=999
if hasattr(self,'fichier_ini') : return
reevalue=0
if hasattr(self,'old_context_fichier_init' ):
reevalue=1
for concept in self.old_context_fichier_init.values():
- self.jdc.delete_concept(concept)
+ self.jdc.deleteConcept(concept)
if fichier == None :
- fichier=str(self.jdc.appli.get_file_dictDonnees())
+ fichier=str(self.jdc.appli.getFile_dictDonnees())
if fichier == str("") :
self.fichier_ini="badfile"
self.fichier_text=""
self.fichier_err=tr("Le fichier n est pas defini")
- self.parent.record_unit(999,self)
+ self.parent.recordUnit(999,self)
try :
- MCFils=self.get_child('FileName')
- MCFils.set_valeur(None)
+ MCFils=self.getChild('FileName')
+ MCFils.setValeur(None)
except :
pass
raise EficasException(self.fichier_err)
except:
#else:
traceback.print_exc()
- self.make_incl2_except()
+ self.makeIncl2Except()
raise EficasException(" ")
try:
#if 1 :
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+ self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
self.old_context_fichier_init=self.contexte_fichier_init
- self.parent.record_unit(unite,self)
+ self.parent.recordUnit(unite,self)
try :
- MCFils=self.get_child('FileName')
- #MCFils.set_valeur(fichier)
- #on appelle pas set_valeur qui modifie le contexte ce qui fout le bazar
+ MCFils=self.getChild('FileName')
+ #MCFils.setValeur(fichier)
+ #on appelle pas setValeur qui modifie le contexte ce qui fout le bazar
#pas de modification de bloc
MCFils.valeur=fichier
MCFils.val=fichier
pass
except:
#else:
- self.make_incl2_except()
+ self.makeIncl2Except()
# Cette P*** de ligne suivante ne fonctionne que pour Aster
# si quelqu un a une idee merci de m en parler
- #CONTEXT.set_current_step(self)
+ #CONTEXT.setCurrentStep(self)
- def make_include2(self,fichier=None):
+ def makeInclude2(self,fichier=None):
# Pour OT
# gestion de l unicite SVP
unite=999
if hasattr(self,'old_context_fichier_init' ):
reevalue=1
for concept in self.old_context_fichier_init.values():
- self.jdc.delete_concept(concept)
+ self.jdc.deleteConcept(concept)
if fichier == None :
- fichier=str(self.jdc.appli.get_file_variable())
+ fichier=str(self.jdc.appli.getFileVariable())
if fichier == str("") :
self.fichier_ini="badfile"
self.fichier_text=""
self.fichier_err=tr("Le fichier n est pas defini")
- self.parent.record_unit(999,self)
+ self.parent.recordUnit(999,self)
try :
- MCFils=self.get_child('FileName')
- MCFils.set_valeur(None)
+ MCFils=self.getChild('FileName')
+ MCFils.setValeur(None)
except :
pass
raise EficasException(self.fichier_err)
ligneTexte="%s=DETERMINISTICVARIABLE(N='%s',T='in',R=%d);\n" % (nom, nom, i)
self.fichier_text = self.fichier_text + ligneTexte
except:
- self.make_incl2_except()
+ self.makeIncl2Except()
raise EficasException(" ")
if nbVariableOut != 1 :
print((nbVariableOut ,"nbVariableOut"))
- self.make_incl2_except(mess=tr("le fichier doit contenir une unique variable de sortie"))
+ self.makeIncl2Except(mess=tr("le fichier doit contenir une unique variable de sortie"))
raise EficasException(" ")
try:
self.JdC_aux=Extensions.jdc_include.JdC_include
except:
traceback.print_exc()
- self.make_incl2_except()
+ self.makeIncl2Except()
raise EficasException(" ")
try:
print((self.fichier_ini ,self.fichier_text))
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+ self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
self.old_context_fichier_init=self.contexte_fichier_init
- self.parent.record_unit(unite,self)
+ self.parent.recordUnit(unite,self)
try :
- MCFils=self.get_child('FileName')
- MCFils.set_valeur(fichier)
+ MCFils=self.getChild('FileName')
+ MCFils.setValeur(fichier)
except :
pass
except:
- self.make_incl2_except()
+ self.makeIncl2Except()
# recalcul validite pour la matrice eventuelle
if reevalue :
if e.nom == "VARIABLE" :
e.state="modified"
try :
- mc=e.get_child('ModelVariable')
+ mc=e.getChild('ModelVariable')
mc.state="modified"
except :
pass
if e.nom == "CORRELATION" :
e.state="modified"
try :
- mc=e.get_child('Matrix')
+ mc=e.getChild('Matrix')
mc.state="modified"
- mcFeuille=mc.get_child('CorrelationMatrix')
+ mcFeuille=mc.getChild('CorrelationMatrix')
mcFeuille.state="modified"
except :
pass
- e.isvalid()
+ e.isValid()
- def make_incl2_except(self,mess=None):
+ def makeIncl2Except(self,mess=None):
l=traceback.format_exception_only(tr("Fichier invalide"),sys.exc_info()[1])
if self.jdc.appli is not None:
if mess == None :
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message= tr("Le contenu de ce fichier ne sera pas pris en compte\n %s",\
''.join(l)))
else :
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message=tr(mess))
- #self.parent.record_unit(unite,self)
+ #self.parent.recordUnit(unite,self)
self.g_context={}
self.etapes=[]
self.jdc_aux=None
self.fichier_err = ''.join(l)
self.contexte_fichier_init={}
try :
- MCFils=self.get_child('FileName')
- MCFils.set_valeur(None)
+ MCFils=self.getChild('FileName')
+ MCFils.setValeur(None)
except :
pass
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
- def make_include(self, unite=None, fname=None):
+ def makeInclude(self, unite=None, fname=None):
"""
Inclut un fichier dont l'unite logique est unite
Cette methode est appelee par la fonction sd_prod de la macro INCLUDE
Sinon on retourne None. Les concepts produits par l'INCLUDE sont
pris en compte par le JDC parent lors du calcul du contexte (appel de ???)
"""
- #print "make_include",unite
+ #print "makeInclude",unite
# On supprime l'attribut unite qui bloque l'evaluation du source de l'INCLUDE
# car on ne s'appuie pas sur lui dans EFICAS mais sur l'attribut fichier_ini
# Si unite n'a pas de valeur, l'etape est forcement invalide. On peut retourner None
if not hasattr(self,'fichier_ini') :
# Si le fichier n'est pas defini on le demande
- f,text=self.get_file_memo(unite=unite, fname=fname, fic_origine=self.parent.nom)
+ f,text=self.getFileMemo(unite=unite, fname=fname, fic_origine=self.parent.nom)
# On memorise le fichier retourne
self.fichier_ini = f
self.fichier_text = text
raise EficasException("pb import Extensions")
self.JdC_aux=Extensions.jdc_include.JdC_include
- #print "make_include",self.fichier_ini,self.fichier_text
+ #print "makeInclude",self.fichier_ini,self.fichier_text
if f is None and not text:
self.fichier_err=tr("Le fichier INCLUDE n est pas defini")
- self.parent.record_unit(unite,self)
+ self.parent.recordUnit(unite,self)
raise EficasException(self.fichier_err)
try:
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
- self.parent.record_unit(unite,self)
+ self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
+ self.parent.recordUnit(unite,self)
except:
l=traceback.format_exception_only(tr("Fichier invalide %s",sys.exc_info()[1]))
if self.jdc.appli:
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message=tr("Le contenu de ce fichier ne sera pas pris en compte\n"+''.join(l)))
- self.parent.record_unit(unite,self)
+ self.parent.recordUnit(unite,self)
self.g_context={}
self.etapes=[]
self.jdc_aux=None
else:
# Si le fichier est deja defini on ne reevalue pas le fichier
# et on leve une exception si une erreur a ete enregistree
- self.update_fichier_init(unite)
+ self.updateFichierInit(unite)
self.fichier_unite=unite
if self.fichier_err is not None: raise EficasException(self.fichier_err)
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
- def make_contexte(self,fichier,text):
+ def makeContexte(self,fichier,text):
"""
Cette methode sert a creer un contexte pour INCLUDE_MATERIAU
en interpretant un texte source Python
Elle est appelee par la fonction sd_prod d'INCLUDE_MATERIAU
"""
- #print "make_contexte",fichier
+ #print "makeContexte",fichier
# On supprime l'attribut mat qui bloque l'evaluation du source de l'INCLUDE_MATERIAU
# car on ne s'appuie pas sur lui dans EFICAS mais sur l'attribut fichier_ini
if hasattr(self,'mat'):del self.mat
except:
raise EficasException(" ")
try:
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+ self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
if not self.nom_mater in self.g_context :
#Pour permettre de lire un jeu de commandes avec des INCLUDE_MATERIAU errones
self.g_context[self.nom_mater]=None
if self.fichier_err is not None: raise EficasException(self.fichier_err)
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
- def update_sdprod(self,cr='non'):
+ def updateSdprod(self,cr='non'):
# Cette methode peut etre appelee dans EFICAS avec des mots cles de
# la commande modifies. Ceci peut conduire a la construction ou
# a la reconstruction d'etapes dans le cas d'INCLUDE ou d'INCLUDE_MATERIAU
# Il faut donc positionner le current_step avant l'appel
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(self)
- valid=Validation.V_MACRO_ETAPE.MACRO_ETAPE.update_sdprod(self,cr=cr)
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(self)
+ valid=Validation.V_MACRO_ETAPE.MACRO_ETAPE.updateSdprod(self,cr=cr)
+ CONTEXT.unsetCurrentStep()
return valid
#ATTENTION SURCHARGE: cette methode surcharge celle de Noyau a garder en synchro
- def Build_sd(self,nom):
+ def buildSd(self,nom):
"""
Methode de Noyau surchargee pour poursuivre malgre tout
si une erreur se produit pendant la creation du concept produit
"""
try:
- sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.Build_sd(self,nom)
+ sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.buildSd(self,nom)
except :
# return None
#except AsException,e:
return self.sd
#ATTENTION SURCHARGE: cette methode surcharge celle de Noyau a garder en synchro
- def make_poursuite(self):
+ def makePoursuite(self):
""" Cette methode est appelee par la fonction sd_prod de la macro POURSUITE
"""
- #print "make_poursuite"
+ #print "makePoursuite"
if not hasattr(self,'fichier_ini') :
# Si le fichier n'est pas defini on le demande
- f,text=self.get_file_memo(fic_origine=self.parent.nom)
+ f,text=self.getFileMemo(fic_origine=self.parent.nom)
# On memorise le fichier retourne
self.fichier_ini = f
self.fichier_unite = None
raise EficasException(" ")
self.JdC_aux=Extensions.jdc_include.JdC_poursuite
self.contexte_fichier_init={}
- #print "make_poursuite",self.fichier_ini,self.fichier_text
+ #print "makePoursuite",self.fichier_ini,self.fichier_text
if f is None:
self.fichier_err="Le fichier POURSUITE n'est pas defini"
self.jdc_aux=None
- self.parent.record_unit(None,self)
+ self.parent.recordUnit(None,self)
raise EficasException(self.fichier_err)
try:
- self.make_contexte_include(self.fichier_ini,self.fichier_text)
- self.parent.record_unit(None,self)
+ self.makeContexteInclude(self.fichier_ini,self.fichier_text)
+ self.parent.recordUnit(None,self)
except:
l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
if self.jdc.appli:
- self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
+ self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
message=tr("Ce fichier ne sera pas pris en compte\n %s",''.join(l)))
- self.parent.record_unit(None,self)
+ self.parent.recordUnit(None,self)
self.g_context={}
self.etapes=[]
self.jdc_aux=None
else:
# Si le fichier est deja defini on ne reevalue pas le fichier
# et on leve une exception si une erreur a ete enregistree
- self.update_fichier_init(None)
+ self.updateFichierInit(None)
if self.fichier_err is not None: raise EficasException(self.fichier_err)
from . import CONNECTOR
class MCCOMPO(I_OBJECT.OBJECT):
- def getlabeltext(self):
+ def getLabelText(self):
"""
Retourne le label de self
utilise pour l'affichage dans l'arbre
"""
return self.nom
- def get_liste_mc_ordonnee(self,liste,dico):
+ def getListeMcOrdonnee(self,liste,dico):
"""
Retourne la liste ordonnee (suivant le catalogue) des mots-cles
d'une entite composee dont le chemin complet est donne sous forme
il faut encore rearranger cette liste (certains mots-cles deja
presents ne doivent plus etre proposes, regles ...)
"""
- return self.filtre_liste_mc(self.get_liste_mc_ordonnee_brute(liste,dico))
+ return self.filtreListeMc(self.getListeMcOrdonneeBrute(liste,dico))
- def get_liste_mc_ordonnee_brute(self,liste,dico):
+ def getListeMcOrdonneeBrute(self,liste,dico):
"""
Retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
d'une entite composee dont le chemin complet est donne sous forme
if specifique == 1 : return l
return objet_cata.ordre_mc
- def filtre_liste_mc(self,liste_brute):
+ def filtreListeMc(self,liste_brute):
"""
Cette methode est appelee par EFICAS afin de presenter a
l'utilisateur la liste des enfants possibles de self actualisee
etre repetes
"""
liste = copy(liste_brute)
- liste_mc_presents = self.liste_mc_presents()
+ listeMcPresents = self.listeMcPresents()
# on enleve les mots-cles non permis par les regles
for regle in self.definition.regles:
- # la methode purge_liste est a developper pour chaque regle qui
+ # la methode purgeListe est a developper pour chaque regle qui
# influe sur la liste de choix a proposer a l'utilisateur
# --> EXCLUS,UN_PARMI,PRESENT_ABSENT
- liste = regle.purge_liste(liste,liste_mc_presents)
+ liste = regle.purgeListe(liste,listeMcPresents)
# on enleve les mots-cles dont l'occurrence est deja atteinte
liste_copy = copy(liste)
for k in liste_copy:
- objet = self.get_child(k,restreint = 'oui')
+ objet = self.getChild(k,restreint = 'oui')
if objet != None :
# l'objet est deja present : il faut distinguer plusieurs cas
if isinstance(objet,MCSIMP):
liste.remove(k)
if self.definition.entites[k].label=='BLOC':
liste.remove(k)
- # Pour corriger les exces qui pourraient etre commis dans la methode purge_liste
+ # Pour corriger les exces qui pourraient etre commis dans la methode purgeListe
# des regles, on essaie de compenser comme suit :
# on ajoute les mots cles facteurs presents dont l'occurence n'est pas atteinte
- for k in liste_mc_presents:
+ for k in listeMcPresents:
if k in liste:continue
- objet = self.get_child(k,restreint = 'oui')
+ objet = self.getChild(k,restreint = 'oui')
if isinstance(objet,MCFACT):
# un mot-cle facteur ne peut pas etre repete plus de self.max fois
if objet.definition.max > 1:
liste.append(k)
return liste
- def liste_mc_presents(self):
+ def listeMcPresents(self):
"""
Retourne la liste des noms des mots-cles fils de self presents construite
- a partir de self.mc_liste
+ a partir de self.mcListe
"""
l=[]
- for v in self.mc_liste:
+ for v in self.mcListe:
k=v.nom
l.append(k)
return l
- def get_index_child(self,nom_fils):
+ def getIndexChild(self,nom_fils):
"""
Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
Permet de savoir a quelle position il faut ajouter un nouveau mot-cle
"""
cata_ordonne = self.jdc.cata_ordonne_dico
- liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(self.get_genealogie(),cata_ordonne)
- liste_noms_mc_presents = self.liste_mc_presents()
+ liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(self.getGenealogie(),cata_ordonne)
+ liste_noms_mc_presents = self.listeMcPresents()
index=0
for nom in liste_noms_mc_ordonnee:
if nom == nom_fils:break
index=index+1
return index
- def ordonne_liste_mc(self,liste_mc_a_ordonner,liste_noms_mc_ordonnee):
+ def findRangObjetDsArbre(self,objet) :
+ # uniquement pour Pyxb
+ # parcourt les Blocs
+ leRang=0
+ pos=self.mcListe.index(objet)
+ i=0
+ while (i+1) < pos :
+ leRang= leRang + self.mcListe[i].longueurDsArbre()
+ i=i+1
+ return leRang
+
+
+ def ordonneListeMc(self,listeMc_a_ordonner,liste_noms_mc_ordonnee):
"""
- Retourne liste_mc_a_ordonner ordonnee suivant l'ordre
+ Retourne listeMc_a_ordonner ordonnee suivant l'ordre
donne par liste_noms_mc_ordonnee
"""
liste = []
# on transforme liste_a_ordonner en un dictionnaire (plus facile a consulter)
d_mc = {}
- for mc in liste_mc_a_ordonner:
+ for mc in listeMc_a_ordonner:
d_mc[mc.nom]=mc
# on construit la liste des objets ordonnes
for nom_mc in liste_noms_mc_ordonnee:
# on la retourne
return liste
- def suppentite(self,objet) :
+ def suppEntite(self,objet) :
"""
Supprime le fils 'objet' de self :
Retourne 1 si la suppression a pu etre effectuee,
Retourne 0 dans le cas contraire
"""
- if not objet in self.mc_liste:
- # Impossible de supprimer objet. Il n'est pas dans mc_liste
+ if not objet in self.mcListe:
+ # Impossible de supprimer objet. Il n'est pas dans mcListe
return 0
- self.init_modif()
- self.mc_liste.remove(objet)
+ self.initModif()
+ objet.deletePyxbObject()
+ self.mcListe.remove(objet)
CONNECTOR.Emit(self,"supp",objet)
- objet.delete_mc_global()
- objet.update_condition_bloc()
+ objet.deleteMcGlobal()
+ objet.updateConditionBloc()
objet.supprime()
self.etape.modified()
- self.fin_modif()
+ self.finModif()
return 1
- def isoblig(self):
+ def isOblig(self):
return 0
- def addentite(self,name,pos=None):
+ def addEntite(self,name,pos=None):
"""
Ajoute le mot-cle name a la liste des mots-cles de
l'objet MCCOMPOSE
"""
- self.init_modif()
+ self.initModif()
if type(name)==bytes :
# on est en mode creation d'un motcle
if self.ispermis(name) == 0 : return 0
# Appel de la methode qui fait le menage dans les references
# sur les concepts produits (verification que les concepts existent
# dans le contexte de la commande courante).
- objet.verif_existence_sd()
+ objet.verifExistenceSd()
# On verifie que l'ajout d'objet est autorise
if self.ispermis(objet) == 0:
- self.jdc.appli.affiche_alerte(tr("Erreur"),
+ self.jdc.appli.afficheAlerte(tr("Erreur"),
tr("L'objet %(v_1)s ne peut etre un fils de %(v_2)s",\
{'v_1': objet.nom, 'v_2': self.nom}))
- self.fin_modif()
+ self.finModif()
return 0
# On cherche s'il existe deja un mot cle de meme nom
- old_obj = self.get_child(objet.nom,restreint = 'oui')
+ old_obj = self.getChild(objet.nom,restreint = 'oui')
if not old_obj :
# on normalize l'objet
objet=objet.normalize()
# Le mot cle n'existe pas encore. On l'ajoute a la position
# demandee (pos)
if pos == None :
- self.mc_liste.append(objet)
+ self.mcListe.append(objet)
else :
- self.mc_liste.insert(pos,objet)
+ self.mcListe.insert(pos,objet)
# Il ne faut pas oublier de reaffecter le parent d'obj (si copie)
objet.reparent(self)
+ objet.addPyxbObject(self.findRangObjetDsArbre(objet))
CONNECTOR.Emit(self,"add",objet)
- objet.update_mc_global()
- objet.update_condition_bloc()
- self.fin_modif()
+ objet.updateMcGlobal()
+ objet.updateConditionBloc()
+ self.finModif()
return objet
else:
# Le mot cle existe deja. Si le mot cle est repetable,
# on cree une liste d'objets. Dans le cas contraire,
# on emet un message d'erreur.
- if not old_obj.isrepetable():
- self.jdc.appli.affiche_alerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
- self.fin_modif()
+ if not old_obj.isRepetable():
+ self.jdc.appli.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
+ self.finModif()
return 0
else:
# une liste d'objets de meme type existe deja
- old_obj.addentite(objet)
- self.fin_modif()
+ old_obj.addEntite(objet)
+ self.finModif()
return old_obj
def ispermis(self,fils):
if fils.parent.nom != self.nom : return 0
return 1
- def update_concept(self,sd):
- for child in self.mc_liste :
- child.update_concept(sd)
+ def updateConcept(self,sd):
+ for child in self.mcListe :
+ child.updateConcept(sd)
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
Seuls les mots cles simples MCSIMP font un traitement autre que
de transmettre aux fils
"""
- for child in self.mc_liste :
- child.delete_concept(sd)
+ for child in self.mcListe :
+ child.deleteConcept(sd)
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Inputs :
- old_sd=concept remplace
Mettre a jour les fils de l objet suite au remplacement du
concept old_sd
"""
- for child in self.mc_liste :
- child.replace_concept(old_sd,sd)
+ for child in self.mcListe :
+ child.replaceConcept(old_sd,sd)
- def get_liste_mc_inconnus(self):
+ def getListeMcInconnus(self):
"""
Retourne la liste des mots-cles inconnus dans self
"""
if self.reste_val != {}:
for k,v in self.reste_val.items() :
l_mc.append([self,k,v])
- for child in self.mc_liste :
- if child.isvalid() : continue
- l_child = child.get_liste_mc_inconnus()
+ for child in self.mcListe :
+ if child.isValid() : continue
+ l_child = child.getListeMcInconnus()
for mc in l_child:
l = [self]
l.extend(mc)
l_mc.append(l)
return l_mc
- def deep_update_condition_bloc(self):
+ def deepUpdateConditionBloc(self):
"""
Parcourt l'arborescence des mcobject et realise l'update
- des blocs conditionnels par appel de la methode update_condition_bloc
+ des blocs conditionnels par appel de la methode updateConditionBloc
"""
- self._update_condition_bloc()
- for mcobj in self.mc_liste:
- if hasattr(mcobj,"deep_update_condition_bloc"):
- mcobj.deep_update_condition_bloc()
+ self._updateConditionBloc()
+ for mcobj in self.mcListe:
+ if hasattr(mcobj,"deepUpdateConditionBloc"):
+ mcobj.deepUpdateConditionBloc()
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
"""
Realise l'update des blocs conditionnels fils de self
et propage au parent
"""
- self._update_condition_bloc()
- if self.parent:self.parent.update_condition_bloc()
+ self._updateConditionBloc()
+ if self.parent:self.parent.updateConditionBloc()
- def _update_condition_bloc(self):
+ def _updateConditionBloc(self):
"""
Realise l'update des blocs conditionnels fils de self
"""
- dict = self.cree_dict_condition(self.mc_liste,condition=1)
+ dict = self.creeDictCondition(self.mcListe,condition=1)
for k,v in self.definition.entites.items():
if v.label != 'BLOC' :continue
globs= self.jdc and self.jdc.condition_context or {}
- bloc=self.get_child(k,restreint = 'oui')
- presence=v.verif_presence(dict,globs)
+ bloc=self.getChild(k,restreint = 'oui')
+ presence=v.verifPresence(dict,globs)
if presence and not bloc:
# le bloc doit etre present
# mais le bloc n'est pas present et il doit etre cree
#print "AJOUT BLOC",k
- pos=self.get_index_child(k)
- self.addentite(k,pos)
+ pos=self.getIndexChild(k)
+ self.addEntite(k,pos)
if not presence and bloc:
# le bloc devrait etre absent
# le bloc est present : il faut l'enlever
#print "SUPPRESSION BLOC",k,bloc
- self.suppentite(bloc)
+ self.suppEntite(bloc)
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self
"""
liste_ajouts = []
liste_retraits = []
- dict = self.cree_dict_condition(self.mc_liste,condition=1)
+ dict = self.creeDictCondition(self.mcListe,condition=1)
for k,v in self.definition.entites.items():
if v.label=='BLOC' :
globs= self.jdc and self.jdc.condition_context or {}
- if v.verif_presence(dict,globs):
+ if v.verifPresence(dict,globs):
# le bloc doit etre present
- if not self.get_child(k,restreint = 'oui'):
+ if not self.getChild(k,restreint = 'oui'):
# le bloc n'est pas present et il doit etre cree
liste_ajouts.append(k)
else :
# le bloc doit etre absent
- if self.get_child(k,restreint = 'oui'):
+ if self.getChild(k,restreint = 'oui'):
# le bloc est present : il faut l'enlever
liste_retraits.append(k)
return liste_ajouts,liste_retraits
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
"""
Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
avant etape, sinon enleve la reference a ces concepts
"""
- for motcle in self.mc_liste :
- motcle.verif_existence_sd()
+ for motcle in self.mcListe :
+ motcle.verifExistenceSd()
- def update_mc_global(self):
+ def updateMcGlobal(self):
"""
Met a jour les mots cles globaux enregistres dans l'etape parente
et dans le jdc parent.
Un mot cle compose ne peut pas etre global. Il se contente de passer
la requete a ses fils.
"""
- for motcle in self.mc_liste :
- motcle.update_mc_global()
+ for motcle in self.mcListe :
+ motcle.updateMcGlobal()
- def delete_mc_global(self):
- for motcle in self.mc_liste :
- motcle.delete_mc_global()
+ def deleteMcGlobal(self):
+ for motcle in self.mcListe :
+ motcle.deleteMcGlobal()
try :
- motcle.update_mc_global()
+ motcle.updateMcGlobal()
except :
pass
- def init_modif_up(self):
- Validation.V_MCCOMPO.MCCOMPO.init_modif_up(self)
+ def initModifUp(self):
+ Validation.V_MCCOMPO.MCCOMPO.initModifUp(self)
CONNECTOR.Emit(self,"valid")
import Noyau
class MCFACT(I_MCCOMPO.MCCOMPO):
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si l'objet est repetable.
Retourne 1 si le mot-cle facteur self peut etre repete
else :
return 0
- def isoblig(self):
+ def isOblig(self):
if self.definition.statut != 'o' : return 0
- objet = self.parent.get_child(self.nom)
+ objet = self.parent.getChild(self.nom)
if len(objet) > 1 : return 0
else : return 1
- def getlabeltext(self):
+ def getMinMax(self):
+ """
+ Retourne les valeurs min et max admissibles pour la valeur de self
+ """
+ return self.definition.min,self.definition.max
+
+
+ def getLabelText(self):
"""
Retourne le label de self suivant qu'il s'agit d'un MCFACT
isole ou d'un MCFACT appartenant a une MCList :
utilisee pour l'affichage dans l'arbre
"""
- objet = self.parent.get_child(self.nom)
+ objet = self.parent.getChild(self.nom)
# objet peut-etre self ou une MCList qui contient self ...
if objet is None or objet is self:
return tr("Erreur - mclist inexistante : %s", self.nom)
try:
if len(objet) > 1 :
- index = objet.get_index(self)+1 # + 1 a cause de la numerotation qui commence a 0
+ index = objet.getIndex(self)+1 # + 1 a cause de la numerotation qui commence a 0
return self.nom +'_'+repr(index)+':'
else:
return self.nom
except:
return tr("Erreur - mot cle facteur de nom : %s", self.nom)
- def get_genealogie_precise(self):
- nom=self.getlabeltext()
+ def getGenealogiePrecise(self):
+ nom=self.getLabelText()
if nom[-1]==':' : nom=nom[0:-1]
if self.parent:
- l=self.parent.get_genealogie_precise()
+ l=self.parent.getGenealogiePrecise()
l.append(nom.strip())
return l
else:
return [nom.strip()]
- def init_modif(self):
+ def initModif(self):
"""
Met l'etat de l'objet a modified et propage au parent
qui vaut None s'il n'existe pas
self.state = 'modified'
parent= hasattr(self,"alt_parent") and self.alt_parent or self.parent
if parent:
- parent.init_modif()
+ parent.initModif()
- def fin_modif(self):
+ def finModif(self):
"""
Methode appelee apres qu'une modification a ete faite afin de declencher
d'eventuels traitements post-modification
"""
- #print "fin_modif",self
+ #print "finModif",self
# pour les objets autres que les commandes, aucun traitement specifique
# on remonte l'info de fin de modif au parent
CONNECTOR.Emit(self,"valid")
parent= hasattr(self,"alt_parent") and self.alt_parent or self.parent
if parent:
- parent.fin_modif()
+ parent.finModif()
def normalize(self):
""" Retourne le MCFACT normalise. Pour un MCFACT isole, l'objet normalise
"""
return 1
- def get_index(self,objet):
+ def getIndex(self,objet):
"""
Retourne la position d'objet dans la liste self
"""
return self.data.index(objet)
- def ajout_possible(self):
+ def ajoutPossible(self):
"""
Methode booleenne qui retourne 1 si on peut encore ajouter une occurrence
de l'element que contient self, 0 sinon
else:
return 0
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si l'objet est repetable.
Retourne 1 si le mot-cle facteur self peut etre repete
else :
return 0
- def isoblig(self):
+ def isOblig(self):
"""
Une MCList n'est jamais obligatoire (meme si le MCFACT qu'elle represente l'est
"""
return self.data[0].definition.statut=='o'
- def suppentite(self,obj):
+ def suppEntite(self,obj):
"""
Supprime le mot cle facteur obj de la MCLIST
"""
if obj not in self:
return 0
- self.init_modif()
+ self.initModif()
self.remove(obj)
CONNECTOR.Emit(self,"supp",obj)
- self.update_condition_bloc()
+ self.updateConditionBloc()
+ obj.deletePyxbObject()
obj.supprime()
self.etape.modified()
- self.fin_modif()
+ self.finModif()
return 1
- def addentite(self,obj,pos=None):
+ def addEntite(self,obj,pos=None):
"""
Ajoute le mot cle facteur obj a la MCLIST a la position pos
Retourne None si l'ajout est impossible
# on est en mode creation d'un motcle
raise EficasException(tr("traitement non-prevu"))
- if not self.ajout_possible():
- self.jdc.appli.affiche_alerte(tr("Erreur"),
+ if not self.ajoutPossible():
+ self.jdc.appli.afficheAlerte(tr("Erreur"),
tr("L'objet %s ne peut pas etre ajoute", obj.nom))
return None
if obj.isMCList():
obj=obj.data[0]
- # Traitement du copier coller seulement
+ # traitement du copier coller seulement
# Les autres cas d'ajout sont traites dans MCFACT
- self.init_modif()
- obj.verif_existence_sd()
+ self.initModif()
+ obj.verifExistenceSd()
obj.reparent(self.parent)
if pos is None:
self.append(obj)
else:
self.insert(pos,obj)
CONNECTOR.Emit(self,"add",obj)
- self.fin_modif()
- self.update_condition_bloc()
+ self.finModif()
+ self.updateConditionBloc()
return obj
- def liste_mc_presents(self):
+ def listeMcPresents(self):
return []
- def update_concept(self,sd):
+ def updateConcept(self,sd):
for child in self.data :
- child.update_concept(sd)
+ child.updateConcept(sd)
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
que de transmettre aux fils
"""
for child in self.data :
- child.delete_concept(sd)
+ child.deleteConcept(sd)
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Inputs :
- old_sd=concept remplace
du concept old_sd
"""
for child in self.data :
- child.replace_concept(old_sd,sd)
+ child.replaceConcept(old_sd,sd)
- def get_docu(self):
- return self.data[0].definition.get_docu()
+ def getDocu(self):
+ return self.data[0].definition.getDocu()
- def get_liste_mc_inconnus(self):
+ def getListeMcInconnus(self):
"""
Retourne la liste des mots-cles inconnus dans self
"""
l_mc = []
for mcfact in self.data :
- if mcfact.isvalid() : continue
- l_child = mcfact.get_liste_mc_inconnus()
+ if mcfact.isValid() : continue
+ l_child = mcfact.getListeMcInconnus()
for mc in l_child:
l = [self]
l.extend(mc)
l_mc.append(l)
return l_mc
- def verif_condition_regles(self,liste_presents):
+ def verifConditionRegles(self,liste_presents):
"""
Retourne la liste des mots-cles a rajouter pour satisfaire les regles
en fonction de la liste des mots-cles presents
# Sans objet pour une liste de mots cles facteurs
return []
- def deep_update_condition_bloc(self):
+ def deepUpdateConditionBloc(self):
"""
Parcourt l'arborescence des mcobject et realise l'update
- des blocs conditionnels par appel de la methode update_condition_bloc
+ des blocs conditionnels par appel de la methode updateConditionBloc
"""
- #print "deep_update_condition_bloc",self
+ #print "deepUpdateConditionBloc",self
for mcfact in self.data :
- mcfact.deep_update_condition_bloc()
+ mcfact.deepUpdateConditionBloc()
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
"""
Propage la mise a jour des conditions au parent.
Une liste ne fait pas de traitement sur les conditions
"""
- if self.parent: self.parent.update_condition_bloc()
+ if self.parent: self.parent.updateConditionBloc()
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self et
# Sans objet pour une liste de mots cles facteurs (a voir !!!)
return [],[]
- def init_modif(self):
+ def initModif(self):
"""
Met l'etat de l'objet a modified et propage au parent
qui vaut None s'il n'existe pas
"""
self.state = 'modified'
if self.parent:
- self.parent.init_modif()
+ self.parent.initModif()
- def fin_modif(self):
+ def finModif(self):
"""
Methode appelee apres qu'une modification a ete faite afin de declencher
d'eventuels traitements post-modification
"""
- #print "fin_modif",self
+ #print "finModif",self
CONNECTOR.Emit(self,"valid")
if self.parent:
- self.parent.fin_modif()
+ self.parent.finModif()
- def get_genealogie_precise(self):
+ def getGenealogiePrecise(self):
if self.parent:
- return self.parent.get_genealogie_precise()
+ return self.parent.getGenealogiePrecise()
else:
return []
- def get_genealogie(self):
+ def getGenealogie(self):
"""
Retourne la liste des noms des ascendants.
Un objet MCList n'est pas enregistre dans la genealogie.
XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
"""
if self.parent:
- return self.parent.get_genealogie()
+ return self.parent.getGenealogie()
else:
return []
- def get_liste_mc_ordonnee_brute(self,liste,dico):
+ def getListeMcOrdonneeBrute(self,liste,dico):
"""
Retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
d'une entite composee dont le chemin complet est donne sous forme
dico=objet_cata.entites
return objet_cata.ordre_mc
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
"""
Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
avant etape, sinon enleve la reference a ces concepts
"""
for motcle in self.data :
- motcle.verif_existence_sd()
+ motcle.verifExistenceSd()
- def get_fr(self):
+ def getFr(self):
"""
Retourne la chaine d'aide contenue dans le catalogue
en tenant compte de la langue
"""
try :
- return self.data[0].get_fr()
+ return self.data[0].getFr()
except:
return ''
"""
return self
- def update_mc_global(self):
+ def updateMcGlobal(self):
"""
Met a jour les mots cles globaux enregistres dans l'etape parente
et dans le jdc parent.
la requete a ses fils.
"""
for motcle in self.data :
- motcle.update_mc_global()
+ motcle.updateMcGlobal()
- def delete_mc_global(self):
+ def deleteMcGlobal(self):
for motcle in self.data :
- motcle.delete_mc_global()
+ motcle.deleteMcGlobal()
#def __del__(self):
# print "__del__",self
class MCSIMP(I_OBJECT.OBJECT):
- def isvalid(self,cr='non'):
+ def isValid(self,cr='non'):
if self.state == 'unchanged':
return self.valid
for type_permis in self.definition.type:
if hasattr(type_permis, "__class__") and type_permis.__class__.__name__ == 'Matrice':
self.monType=type_permis
return self.valideMatrice(cr=cr)
- if self.definition.siValide != None :
+ validite=Validation.V_MCSIMP.MCSIMP.isValid(self,cr=cr)
+ if self.definition.siValide != None and validite:
self.definition.siValide(self)
- return Validation.V_MCSIMP.MCSIMP.isvalid(self,cr=cr)
+ return validite
- def GetNomConcept(self):
+ def getNomConcept(self):
p=self
while p.parent :
try :
- nomconcept=p.get_sdname()
+ nomconcept=p.getSdname()
return nomconcept
except:
try :
- nomconcept= p.object.get_sdname()
+ nomconcept= p.object.getSdname()
return nomconcept
except :
pass
p=p.parent
return ""
- def GetText(self):
+ def getText(self):
"""
Retourne le texte a afficher dans l'arbre representant la valeur de l'objet
pointe par self
if self.valeur == None :
return None
elif type(self.valeur) == float :
- # Traitement d'un flottant isole
+ # traitement d'un flottant isole
txt = str(self.valeur)
- clefobj=self.GetNomConcept()
+ clefobj=self.getNomConcept()
if clefobj in self.jdc.appli.appliEficas.dict_reels :
if self.valeur in self.jdc.appli.appliEficas.dict_reels[clefobj]:
txt=self.jdc.appli.appliEficas.dict_reels[clefobj][self.valeur]
elif type(self.valeur) in (list,tuple) :
if self.valeur==[] or self.valeur == (): return str(self.valeur)
- # Traitement des listes
+ # traitement des listes
txt='('
sep=''
for val in self.valeur:
if type(val) == float :
- clefobj=self.GetNomConcept()
+ clefobj=self.getNomConcept()
if clefobj in self.jdc.appli.appliEficas.dict_reels:
if val in self.jdc.appli.appliEficas.dict_reels[clefobj]:
txt=txt + sep +self.jdc.appli.appliEficas.dict_reels[clefobj][val]
if isinstance(val,tuple) and len(self.valeur) == 1 : txt=txt+','
txt=txt+')'
else:
- # Traitement des autres cas
+ # traitement des autres cas
txt = str(self.valeur)
# txt peut etre une longue chaine sur plusieurs lignes.
# Pour le moment on retourne la chaine telle que
return txt
- def getval(self):
+ def getVal(self):
"""
Retourne une chaine de caractere representant la valeur de self
"""
val=self.valeur
if type(val) == float :
- clefobj=self.GetNomConcept()
+ clefobj=self.getNomConcept()
if clefobj in self.jdc.appli.appliEficas.dict_reels :
if val in self.jdc.appli.appliEficas.appliEficas.dict_reels[clefobj] :
return self.jdc.appli.appliEficas.dict_reels[clefobj][val]
if type(val) != tuple :
try:
- return val.get_name()
+ return val.getName()
except:
return val
else :
s='( '
for item in val :
try :
- s=s+item.get_name()+','
+ s=s+item.getName()+','
except:
s=s+repr(item)+','
s=s+' )'
return s
- def wait_bool(self):
+ def waitBool(self):
for typ in self.definition.type:
try :
if typ == bool: return True
pass
return False
- def wait_co(self):
+ def waitCo(self):
"""
Methode booleenne qui retourne 1 si l'objet attend un objet ASSD
qui n'existe pas encore (type CO()), 0 sinon
return 1
return 0
- def wait_assd(self):
+ def waitAssd(self):
"""
Methode booleenne qui retourne 1 si le MCS attend un objet de type ASSD
ou derive, 0 sinon
return 1
return 0
- def wait_assd_or_geom(self):
+ def waitAssdOrGeom(self):
"""
Retourne 1 si le mot-cle simple attend un objet de type
assd, ASSD, geom ou GEOM
return 1
return 0
- def wait_geom(self):
+ def waitGeom(self):
"""
Retourne 1 si le mot-cle simple attend un objet de type GEOM
Retourne 0 dans le cas contraire
return 0
- def wait_TXM(self):
+ def waitTxm(self):
"""
Retourne 1 si le mot-cle simple attend un objet de type TXM
Retourne 0 dans le cas contraire
if typ == 'TXM' :return 1
return 0
- def get_liste_valeurs(self):
+ def waitTuple(self):
+ for ss_type in self.definition.type:
+ if repr(ss_type).find('Tuple') != -1 :
+ return 1
+ return 0
+
+
+ def getListeValeurs(self):
"""
"""
if self.valeur == None:
else:
return [self.valeur]
- def isoblig(self):
+ def isOblig(self):
return self.definition.statut=='o'
def isImmuable(self):
- def valid_val(self,valeur):
+ def validVal(self,valeur):
"""
Verifie que la valeur passee en argument (valeur) est valide
sans modifier la valeur courante
valid=0
return valid,mess
- def valid_valeur(self,new_valeur):
+ def validValeur(self,new_valeur):
"""
Verifie que la valeur passee en argument (new_valeur) est valide
- sans modifier la valeur courante (evite d'utiliser set_valeur et est plus performant)
+ sans modifier la valeur courante (evite d'utiliser setValeur et est plus performant)
"""
- validite,mess=self.valid_val(new_valeur)
+ validite,mess=self.validVal(new_valeur)
return validite
- def valid_valeur_partielle(self,new_valeur):
+ def validValeurPartielle(self,new_valeur):
"""
Verifie que la valeur passee en argument (new_valeur) est une liste partiellement valide
sans modifier la valeur courante du mot cle
self.intoProto.adapt(val)
#on ne verifie pas la cardinalite
if self.definition.validators:
- validite=self.definition.validators.valide_liste_partielle(new_valeur)
+ validite=self.definition.validators.valideListePartielle(new_valeur)
except ValError as e:
validite=0
return validite
- def update_condition_bloc(self):
+ def updateConditionBloc(self):
""" Met a jour les blocs conditionnels dependant du mot cle simple self
"""
if self.definition.position == 'global' :
- self.etape.deep_update_condition_bloc()
+ self.etape.deepUpdateConditionBloc()
elif self.definition.position == 'global_jdc' :
- self.jdc.deep_update_condition_bloc()
+ self.jdc.deepUpdateConditionBloc()
else:
- self.parent.update_condition_bloc()
+ self.parent.updateConditionBloc()
- def set_valeur(self,new_valeur,evaluation='oui'):
- #print "set_valeur",new_valeur
- self.init_modif()
+ def setValeur(self,new_valeur,evaluation='oui'):
+ print ("setValeur Ihm/IMCSIMP ",new_valeur)
+ self.initModif()
self.valeur = new_valeur
self.val = new_valeur
- self.update_condition_bloc()
+ self.setValeurObjPyxb(new_valeur)
+ self.updateConditionBloc()
self.etape.modified()
- self.fin_modif()
+ self.finModif()
return 1
- def eval_valeur(self,new_valeur):
+ def evalValeur(self,new_valeur):
"""
Essaie d'evaluer new_valeur comme une SD, une declaration Python
ou un EVAL: Retourne la valeur evaluee (ou None) et le test de reussite (1 ou 0)
"""
- sd = self.jdc.get_sd_avant_etape(new_valeur,self.etape)
- #sd = self.jdc.get_contexte_avant(self.etape).get(new_valeur,None)
+ sd = self.jdc.getSdAvantEtape(new_valeur,self.etape)
+ #sd = self.jdc.getContexteAvant(self.etape).get(new_valeur,None)
#print sd
if sd is not None:
return sd,1
- lsd = self.jdc.cherche_list_avant(self.etape,new_valeur)
+ lsd = self.jdc.chercheListAvant(self.etape,new_valeur)
if lsd :
return lsd,1
else:
objet = eval(new_valeur,d)
return objet,1
except Exception:
- itparam=self.cherche_item_parametre(new_valeur)
+ itparam=self.chercheItemParametre(new_valeur)
if itparam:
return itparam,1
try :
if CONTEXT.debug : traceback.print_exc()
return None,0
- def eval_val(self,new_valeur):
+ def evalVal(self,new_valeur):
"""
- Tente d'evaluer new_valeur comme un objet du jdc (par appel a eval_val_item)
+ Tente d'evaluer new_valeur comme un objet du jdc (par appel a evalValItem)
ou comme une liste de ces memes objets
Si new_valeur contient au moins un separateur (,), tente l'evaluation sur
la chaine splittee
"""
if new_valeur in ('True','False') and 'TXM' in self.definition.type :
- valeur=self.eval_val_item(str(new_valeur))
+ valeur=self.evalValItem(str(new_valeur))
return new_valeur
if type(new_valeur) in (list,tuple):
valeurretour=[]
for item in new_valeur :
- valeurretour.append(self.eval_val_item(item))
+ valeurretour.append(self.evalValItem(item))
return valeurretour
else:
- valeur=self.eval_val_item(new_valeur)
+ valeur=self.evalValItem(new_valeur)
return valeur
- def eval_val_item(self,new_valeur):
+ def evalValItem(self,new_valeur):
"""
Tente d'evaluer new_valeur comme un concept, un parametre, un objet Python
Si c'est impossible retourne new_valeur inchange
argument new_valeur : string (nom de concept, de parametre, expression ou simple chaine)
"""
if self.etape and self.etape.parent:
- valeur=self.etape.parent.eval_in_context(new_valeur,self.etape)
+ valeur=self.etape.parent.evalInContext(new_valeur,self.etape)
return valeur
else:
try :
return new_valeur
pass
- def cherche_item_parametre (self,new_valeur):
+ def chercheItemParametre (self,new_valeur):
try:
nomparam=new_valeur[0:new_valeur.find("[")]
indice=new_valeur[new_valeur.find(u"[")+1:new_valeur.find(u"]")]
for p in self.jdc.params:
if p.nom == nomparam :
- if int(indice) < len(p.get_valeurs()):
+ if int(indice) < len(p.getValeurs()):
itparam=parametre.ITEM_PARAMETRE(p,int(indice))
return itparam
return None
except:
return None
- def update_concept(self,sd):
+ def updateConcept(self,sd):
if type(self.valeur) in (list,tuple) :
if sd in self.valeur:
- self.init_modif()
- self.fin_modif()
+ self.initModif()
+ self.finModif()
else:
if sd == self.valeur:
- self.init_modif()
- self.fin_modif()
+ self.initModif()
+ self.finModif()
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Inputs :
- sd=concept detruit
"""
if type(self.valeur) == tuple :
if sd in self.valeur:
- self.init_modif()
+ self.initModif()
self.valeur=list(self.valeur)
self.valeur.remove(sd)
- self.fin_modif()
+ self.finModif()
elif type(self.valeur) == list:
if sd in self.valeur:
- self.init_modif()
+ self.initModif()
self.valeur.remove(sd)
- self.fin_modif()
+ self.finModif()
else:
if self.valeur == sd:
- self.init_modif()
+ self.initModif()
self.valeur=None
self.val=None
- self.fin_modif()
+ self.finModif()
# Glut Horrible pour les matrices ???
if sd.__class__.__name__== "variable":
for type_permis in self.definition.type:
# a voir en python 3
if type_permis.__class__.__name__ == 'Matrice' :
self.state="changed"
- self.isvalid()
+ self.isValid()
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Inputs :
- old_sd=concept remplace
Met a jour la valeur du mot cle simple suite au remplacement
du concept old_sd
"""
- #print "replace_concept",old_sd,sd
+ #print "replaceConcept",old_sd,sd
if type(self.valeur) == tuple :
if old_sd in self.valeur:
- self.init_modif()
+ self.initModif()
self.valeur=list(self.valeur)
i=self.valeur.index(old_sd)
self.valeur[i]=sd
- self.fin_modif()
+ self.finModif()
elif type(self.valeur) == list:
if old_sd in self.valeur:
- self.init_modif()
+ self.initModif()
i=self.valeur.index(old_sd)
self.valeur[i]=sd
- self.fin_modif()
+ self.finModif()
else:
if self.valeur == old_sd:
- self.init_modif()
+ self.initModif()
self.valeur=sd
self.val=sd
- self.fin_modif()
+ self.finModif()
- def set_valeur_co(self,nom_co):
+ def setValeurCo(self,nom_co):
"""
Affecte a self l'objet de type CO et de nom nom_co
"""
- #print "set_valeur_co",nom_co
+ #print "setValeurCo",nom_co
step=self.etape.parent
if nom_co == None or nom_co == '':
new_objet=None
else:
# Avant de creer un concept il faut s'assurer du contexte : step
# courant
- sd= step.get_sd_autour_etape(nom_co,self.etape,avec='oui')
+ sd= step.getSdAutourEtape(nom_co,self.etape,avec='oui')
if sd:
# Si un concept du meme nom existe deja dans la portee de l'etape
# on ne cree pas le concept
# contextes en mode editeur
# Normalement la methode du Noyau doit etre surchargee
# On declare l'etape du mot cle comme etape courante pour NommerSdprod
- cs= CONTEXT.get_current_step()
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(step)
- step.set_etape_context(self.etape)
+ cs= CONTEXT.getCurrentStep()
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(step)
+ step.setEtapeContext(self.etape)
new_objet = Accas.CO(nom_co)
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(cs)
- self.init_modif()
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(cs)
+ self.initModif()
self.valeur = new_objet
self.val = new_objet
# On force l'enregistrement de new_objet en tant que concept produit
- # de la macro en appelant get_type_produit avec force=1
- self.etape.get_type_produit(force=1)
- self.fin_modif()
- step.reset_context()
- #print "set_valeur_co",new_objet
+ # de la macro en appelant getType_produit avec force=1
+ self.etape.getType_produit(force=1)
+ self.finModif()
+ step.resetContext()
+ #print "setValeurCo",new_objet
return 1,tr("Concept cree")
- def verif_existence_sd(self):
+ def verifExistenceSd(self):
"""
Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
avant etape, sinon enleve la referea ces concepts
"""
- #print "verif_existence_sd"
+ #print "verifExistenceSd"
# Attention : possible probleme avec include
# A priori il n'y a pas de raison de retirer les concepts non existants
# avant etape. En fait il s'agit uniquement eventuellement de ceux crees par une macro
- l_sd_avant_etape = list(self.jdc.get_contexte_avant(self.etape).values())
+ l_sd_avant_etape = list(self.jdc.getContexteAvant(self.etape).values())
if type(self.valeur) in (tuple,list) :
l=[]
for sd in self.valeur:
if isinstance(sd,ASSD) :
- if sd in l_sd_avant_etape or self.etape.get_sdprods(sd.nom) is sd:
+ if sd in l_sd_avant_etape or self.etape.getSdprods(sd.nom) is sd:
l.append(sd)
else:
l.append(sd)
if len(l) < len(self.valeur):
- self.init_modif()
+ self.initModif()
self.valeur=tuple(l)
- self.fin_modif()
+ self.finModif()
else:
if isinstance(self.valeur,ASSD) :
- if self.valeur not in l_sd_avant_etape and self.etape.get_sdprods(self.valeur.nom) is None:
- self.init_modif()
+ if self.valeur not in l_sd_avant_etape and self.etape.getSdprods(self.valeur.nom) is None:
+ self.initModif()
self.valeur = None
- self.fin_modif()
+ self.finModif()
- def get_min_max(self):
+ def getMinMax(self):
"""
Retourne les valeurs min et max admissibles pour la valeur de self
"""
return self.definition.min,self.definition.max
- def get_type(self):
+ def getType(self):
"""
Retourne le type attendu par le mot-cle simple
"""
return self.definition.type
- def delete_mc_global(self):
+ def deleteMcGlobal(self):
""" Retire self des declarations globales
"""
if self.definition.position == 'global' :
- etape = self.get_etape()
+ etape = self.getEtape()
if etape :
del etape.mc_globaux[self.nom]
elif self.definition.position == 'global_jdc' :
del self.jdc.mc_globaux[self.nom]
- def update_mc_global(self):
+ def updateMcGlobal(self):
"""
Met a jour les mots cles globaux enregistres dans l'etape parente
et dans le jdc parent.
Un mot cle simple peut etre global.
"""
if self.definition.position == 'global' :
- etape = self.get_etape()
+ etape = self.getEtape()
if etape :
etape.mc_globaux[self.nom]=self
elif self.definition.position == 'global_jdc' :
self.jdc.mc_globaux[self.nom]=self
def nbrColonnes(self):
- genea = self.get_genealogie()
+ genea = self.getGenealogie()
if "VALE_C" in genea and "DEFI_FONCTION" in genea : return 3
if "VALE" in genea and "DEFI_FONCTION" in genea : return 2
return 0
- def valide_item(self,item):
+ def valideItem(self,item):
"""Valide un item isole. Cet item est candidata l'ajout a la liste existante"""
valid=1
try:
self.intoProto.adapt(item)
#on ne verifie pas la cardinalite
if self.definition.validators:
- valid=self.definition.validators.verif_item(item)
+ valid=self.definition.validators.verifItem(item)
except ValError as e:
#traceback.print_exc()
valid=0
return valid
- def verif_type(self,item):
+ def verifType(self,item):
"""Verifie le type d'un item de liste"""
try:
#on verifie le type
self.intoProto.adapt(item)
#on ne verifie pas la cardinalite mais on verifie les validateurs
if self.definition.validators:
- valid=self.definition.validators.verif_item(item)
+ valid=self.definition.validators.verifItem(item)
comment=""
valid=1
except ValError as e:
def valideMatrice(self,cr):
#Attention, la matrice contient comme dernier tuple l ordre des variables
if self.valideEnteteMatrice()==False :
- self.set_valid(0)
+ self.setValid(0)
if cr == "oui" : self.cr.fatal(tr("La matrice n'a pas le bon entete"))
return 0
if self.monType.methodeCalculTaille != None :
if len(self.valeur[i])!= self.monType.nbCols:
ok=0
if ok:
- self.set_valid(1)
+ self.setValid(1)
return 1
except :
#else :
if cr == 'oui' :
self.cr.fatal(tr("La matrice n'est pas une matrice %(n_lign)d sur %(n_col)d", \
{'n_lign': self.monType.nbLigs, 'n_col': self.monType.nbCols}))
- self.set_valid(0)
+ self.setValid(0)
return 0
- def NbDeVariables(self):
- listeVariables=self.jdc.get_variables(self.etape)
+ def nbDeVariables(self):
+ listeVariables=self.jdc.getVariables(self.etape)
self.monType.nbLigs=len(listeVariables)
self.monType.nbCols=len(listeVariables)
def valideEnteteMatrice(self):
- if self.jdc.get_distributions(self.etape) == () or self.valeur == None : return 0
- if self.jdc.get_distributions(self.etape) != self.valeur[0] : return 0
+ if self.jdc.getDistributions(self.etape) == () or self.valeur == None : return 0
+ if self.jdc.getDistributions(self.etape) != self.valeur[0] : return 0
return 1
def changeEnteteMatrice(self):
- a=[self.jdc.get_distributions(self.etape),]
+ a=[self.jdc.getDistributions(self.etape),]
for t in self.valeur[1:]:
a.append(t)
self.valeur=a
- def NbDeDistributions(self):
- listeVariables=self.jdc.get_distributions(self.etape)
+ def nNbDeDistributions(self):
+ listeVariables=self.jdc.getDistributions(self.etape)
self.monType.nbLigs=len(listeVariables)
self.monType.nbCols=len(listeVariables)
# Elles doivent etre reintegrees des que possible
- def verif_typeihm(self,val,cr='non'):
+ def verifTypeIhm(self,val,cr='non'):
try :
val.eval()
return 1
except :
traceback.print_exc()
pass
- return self.verif_type(val,cr)
+ return self.verifType(val,cr)
- def verif_typeliste(self,val,cr='non') :
+ def verifTypeliste(self,val,cr='non') :
verif=0
for v in val :
- verif=verif+self.verif_typeihm(v,cr)
+ verif=verif+self.verifTypeIhm(v,cr)
return verif
- def init_modif_up(self):
- Validation.V_MCSIMP.MCSIMP.init_modif_up(self)
+ def initModifUp(self):
+ Validation.V_MCSIMP.MCSIMP.initModifUp(self)
CONNECTOR.Emit(self,"valid")
"""
return 0
- def get_regles(self):
+ def getRegles(self):
"""
Retourne les regles de self
"""
else :
return []
- def init_modif(self):
+ def initModif(self):
"""
Met l'etat de l'objet a modified et propage au parent
qui vaut None s'il n'existe pas
"""
self.state = 'modified'
if self.parent:
- self.parent.init_modif()
+ self.parent.initModif()
- def fin_modif(self):
+ def finModif(self):
"""
Methode appelee apres qu'une modification a ete faite afin de declencher
d'eventuels traitements post-modification
"""
- #print "fin_modif",self
+ #print "finModif",self
# pour les objets autres que les commandes, aucun traitement specifique
# on remonte l'info de fin de modif au parent
CONNECTOR.Emit(self,"valid")
if self.parent:
- self.parent.fin_modif()
+ self.parent.finModif()
- def isrepetable(self):
+ def isRepetable(self):
"""
Indique si l'objet est repetable
"""
return 0
- def liste_mc_presents(self):
+ def listeMcPresents(self):
"""
Retourne la liste des noms des mots cles presents
"""
return []
- def get_docu(self):
- return self.definition.get_docu()
+ def getDocu(self):
+ return self.definition.getDocu()
- def get_liste_mc_inconnus(self):
+ def getListeMcInconnus(self):
"""
Retourne la liste des mots-cles inconnus dans self
"""
return []
- def verif_condition_regles(self,liste_presents):
+ def verifConditionRegles(self,liste_presents):
"""
Retourne la liste des mots-cles a rajouter pour satisfaire les regles
en fonction de la liste des mots-cles presents
"""
liste=[]
for regle in self.definition.regles:
- liste=regle.verif_condition_regle(liste,liste_presents)
+ liste=regle.verifConditionRegle(liste,liste_presents)
return liste
- def verif_condition_bloc(self):
+ def verifConditionBloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
(en fonction du catalogue donc de la definition) de self et
"""
return [],[]
- def get_genealogie_precise(self):
+ def getGenealogiePrecise(self):
if self.parent:
- l=self.parent.get_genealogie_precise()
+ l=self.parent.getGenealogiePrecise()
l.append(self.nom.strip())
return l
else:
return [self.nom.strip()]
- def get_genealogie(self):
+ def getGenealogie(self):
"""
Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC
ou ETAPE) de self jusqu'au premier objet etape rencontre
"""
if self.parent:
- l=self.parent.get_genealogie()
+ l=self.parent.getGenealogie()
l.append(self.nom.strip())
return l
else:
return [self.nom.strip()]
- def get_fr(self):
+ def getFr(self):
"""
Retourne la chaine d'aide contenue dans le catalogue
en tenant compte de la langue
except :
return ''
- def update_concept(self,sd):
+ def updateConcept(self,sd):
pass
def normalize(self):
"""
return self
- def delete_mc_global(self):
+ def deleteMcGlobal(self):
return
- def update_mc_global(self):
+ def updateMcGlobal(self):
return
#def __del__(self):
from . import I_REGLE
class PRESENT_ABSENT(I_REGLE.REGLE):
- def purge_liste(self,liste_a_purger,liste_mc_presents):
+ def purgeListe(self,liste_a_purger,listeMcPresents):
regle_active=0
- if self.mcs[0] in liste_mc_presents:regle_active=1
+ if self.mcs[0] in listeMcPresents:regle_active=1
if not regle_active : return liste_a_purger
# Il ne faut pas purger le mot cle present
from . import I_REGLE
class PRESENT_PRESENT(I_REGLE.REGLE):
- def verif_condition_regle(self,liste,l_mc_presents):
+ def verifConditionRegle(self,liste,l_mc_presents):
mc0=self.mcs[0]
for mc_present in l_mc_presents:
if mc_present == mc0 :
from . import I_ETAPE
-# import rajoutes suite a l'ajout de Build_sd --> a resorber
+# import rajoutes suite a l'ajout de buildSd --> a resorber
import sys
import traceback,types
import Noyau
from Extensions.eficas_exception import EficasException
class PROC_ETAPE(I_ETAPE.ETAPE):
- def get_sdname(self):
+ def getSdname(self):
return ""
- def get_sdprods(self,nom_sd):
+ def getSdprods(self,nom_sd):
"""
Fonction : retourne le concept produit par l etape de nom nom_sd
s il existe sinon None
"""
return None
- def supprime_sdprods(self):
+ def supprimeSdProds(self):
"""
Fonction: Lors d'une destruction d'etape, detruit tous les concepts produits
Une procedure n'en a aucun
"""
return
- def delete_concept(self,sd):
+ def deleteConcept(self,sd):
"""
Fonction : Mettre a jour les mots cles de l etape
suite a la disparition du concept sd
Inputs :
- sd=concept detruit
"""
- for child in self.mc_liste :
- child.delete_concept(sd)
+ for child in self.mcListe :
+ child.deleteConcept(sd)
- def replace_concept(self,old_sd,sd):
+ def replaceConcept(self,old_sd,sd):
"""
Fonction : Mettre a jour les mots cles de l etape
suite au remplacement du concept old_sd
- old_sd=concept remplace
- sd=nouveau concept
"""
- for child in self.mc_liste :
- child.replace_concept(old_sd,sd)
+ for child in self.mcListe :
+ child.replaceConcept(old_sd,sd)
#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau
- def Build_sd(self):
+ def buildSd(self):
"""
Methode de Noyau surchargee pour poursuivre malgre tout
si une erreur se produit pendant la creation du concept produit
"""
try:
- sd=Noyau.N_PROC_ETAPE.PROC_ETAPE.Build_sd(self)
+ sd=Noyau.N_PROC_ETAPE.PROC_ETAPE.buildSd(self)
except AsException :
# Une erreur s'est produite lors de la construction du concept
# Comme on est dans EFICAS, on essaie de poursuivre quand meme
class REGLE:
- def gettext(self):
+ def getText(self):
text = self.__class__.__name__+ ' :\n'
for mc in self.mcs :
text = text + '\t' + mc.strip() + '\n'
return text
- def purge_liste(self,liste_a_purger,liste_mc_presents):
+ def purgeListe(self,liste_a_purger,listeMcPresents):
"""
Cette methode doit retirer de la liste liste_a_purger
les elements qui ne doivent plus apparaitre en fonction du contexte
# Dans le cas general on ne touche pas a la liste
return liste_a_purger
- def has_operande(self,nom):
+ def hasOperande(self,nom):
# On peut faire aussi try:self.mcs.index(nom);return 1;except:return 0
for mc in self.mcs:
if mc==nom : return 1
return 0
- def verif_condition_regle(self,liste,l_mc_presents):
+ def verifConditionRegle(self,liste,l_mc_presents):
return []
import xml.etree.ElementTree as ET
regleXml=ET.SubElement(root,'regles')
txt=""
- for mot in self.gettext().split('\n'):
+ for mot in self.getText().split('\n'):
mot.replace(' ','')
txt=txt + mot + " "
regleXml.text= txt
class UN_PARMI(I_REGLE.REGLE):
- def purge_liste(self,liste_a_purger,liste_mc_presents):
+ def purgeListe(self,liste_a_purger,listeMcPresents):
regle_active=0
- for mc_present in liste_mc_presents:
+ for mc_present in listeMcPresents:
if mc_present in self.mcs:
regle_active=1
break
# Si un des mots cles est present, on les enleve tous
# sauf celui ci
for mc in self.mcs:
- if mc in liste_a_purger and mc not in liste_mc_presents:
+ if mc in liste_a_purger and mc not in listeMcPresents:
liste_a_purger.remove(mc)
return liste_a_purger
from Noyau.N_VALIDATOR import *
class Compulsory(Compulsory):
- def has_into(self):
+ def hasInto(self):
return 0
- def valide_liste_partielle(self,liste_courante=None):
+ def valideListePartielle(self,liste_courante=None):
return 1
class OrdList(OrdList):
- def valide_liste_partielle(self,liste_courante=None):
+ def valideListePartielle(self,liste_courante=None):
"""
Methode de validation de liste partielle pour le validateur OrdList
"""
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import range
+ from builtins import object
+except : pass
+
+import types,os,sys
+
+from six.moves import range
+from PyQt5.QtGui import QIcon
+from PyQt5.QtWidgets import QApplication, QMessageBox
+from PyQt5.QtCore import QTimer, QSize, Qt
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from InterfaceQT4.feuille import Feuille
+from UiQT5.desWidgetPlusieursBase import Ui_WidgetPlusieursBase
+from InterfaceQT4.politiquesValidation import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie import SaisieValeur
+from InterfaceQT4.gereListe import GereListe
+from InterfaceQT4.gereListe import GerePlie
+from InterfaceQT4.gereListe import LECustom
+
+dicoLongueur={2:95,3:125,4:154,5:183,6:210,float('inf'):210}
+hauteurMax=253
+
+class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie):
+
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ #print "MonWidgetPlusieursBase", nom
+ self.inFocusOutEvent=False
+ self.nomLine="lineEditVal"
+ self.inInit=True
+ self.indexDernierLabel=0
+ self.numLineEditEnCours=0
+ self.listeAffichageWidget=[]
+ Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ GereListe.__init__(self)
+ self.gereIconePlier()
+ self.BSelectFichier.clicked.connect(self.selectInFile)
+
+ if sys.platform[0:5]!="linux":
+ repIcon=self.node.editor.appliEficas.repIcon
+ fichier=os.path.join(repIcon, 'arrow_up.png')
+ icon = QIcon(fichier)
+ self.RBHaut.setIcon(icon)
+ self.RBHaut.setIconSize(QSize(32, 32))
+ fichier2=os.path.join(repIcon, 'arrow_down.png')
+ icon2 = QIcon(fichier2)
+ self.RBBas.setIcon(icon2)
+ fichier3=os.path.join(repIcon, 'file-explorer.png')
+ icon3 = QIcon(fichier2)
+ self.BSelectFichier.setIcon(icon3)
+ self.BSelectFichier.setIconSize(QSize(32, 32))
+ icon=QIcon(self.repIcon+"/MoinsBleu.png")
+ self.RBMoins.setIcon(icon)
+ icon=QIcon(self.repIcon+"/PlusBleu.png")
+ self.RBPlus.setIcon(icon)
+ icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png")
+ self.RBVoisListe.setIcon(icon)
+
+
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
+ if self.monSimpDef.max != "**" and self.monSimpDef.max < 7:
+ hauteurMax=dicoLongueur[self.monSimpDef.max]
+ else :
+ hauteurMax=220
+ # if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur)
+ self.resize(self.width(),hauteurMax)
+ self.setMinimumHeight(hauteurMax)
+ self.finCommentaireListe()
+ self.parentQt.commandesLayout.insertWidget(-1,self)
+ self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+ self.AAfficher=self.lineEditVal1
+ self.inInit=False
+ # PNPN a completer __ si tuple le type des tuples sinon le tuple
+ self.monCommentaireLabel.setText(self.finCommentaireListe())
+
+
+ def setValeurs(self):
+ self.vScrollBar = self.scrollArea.verticalScrollBar()
+ self.politique=PolitiquePlusieurs(self.node,self.editor)
+ # construction du min de valeur a entrer
+ if self.monSimpDef.max == "**" : aConstruire=7
+ elif self.monSimpDef.max == float('inf'): aConstruire=7
+ else : aConstruire=self.monSimpDef.max
+
+ for i in range(1,aConstruire):
+ self.ajoutLineEdit()
+ QApplication.processEvents()
+ self.scrollArea.ensureWidgetVisible(self.lineEditVal1)
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
+ index=1
+ for valeur in self.listeValeursCourantes :
+ val=self.politique.getValeurTexte(valeur)
+ nomLineEdit="lineEditVal"+str(index)
+ if hasattr(self,nomLineEdit) :
+ courant=getattr(self,nomLineEdit)
+ if 'R' in self.objSimp.definition.type and str(val) != repr(val) : courant.setText(repr(val))
+ else : courant.setText(str(val))
+ else :
+ self.ajoutLineEdit(val)
+ index=index+1
+ # ajout d'une ligne vide ou affichage commentaire
+ if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit()
+ else : self.scrollArea.setToolTip('nb max de valeurs atteint')
+ #self.adjustSize()
+ #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum)
+
+
+ def ajoutLineEdit(self,valeur=None,):
+ self.indexDernierLabel=self.indexDernierLabel+1
+ nomLineEdit="lineEditVal"+str(self.indexDernierLabel)
+ if hasattr(self,nomLineEdit) :
+ self.indexDernierLabel=self.indexDernierLabel-1
+ return
+ nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel)
+ self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+ nouveauLE.setText("")
+ if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)")
+ else : nouveauLE.setStyleSheet("background:rgb(235,235,235)")
+ nouveauLE.setFrame(False)
+ nouveauLE.returnPressed.connect(self.changeValeur)
+
+ setattr(self,nomLineEdit,nouveauLE)
+ self.listeAffichageWidget.append(nouveauLE)
+ self.etablitOrdre()
+ if valeur != None : nouveauLE.setText(str(valeur))
+ # deux lignes pour que le ensureVisible fonctionne
+ self.estVisible=nouveauLE
+ if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
+
+ def etablitOrdre(self):
+ i=0
+ while(i +1 < len(self.listeAffichageWidget)):
+ self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
+ self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+ i=i+1
+ # si on boucle on perd l'ordre
+
+
+ def rendVisibleLigne(self):
+ QApplication.processEvents()
+ self.estVisible.setFocus()
+ self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
+
+
+ def finCommentaire(self):
+ return self.finCommentaireListe()
+
+ def ajout1Valeur(self,valeur=None):
+ if valeur == None : return
+ liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
+ if validite == 0 : return
+ if liste ==[] : return
+ listeVal=[]
+ for valeur in self.listeValeursCourantes : listeVal.append(valeur)
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
+ if (comm2 != "" and comm != None) : return comm2
+ if validite :
+ self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
+ if len(self.listeValeursCourantes) > self.monSimpDef.min :
+ self.node.item.setValeur(self.listeValeursCourantes)
+ self.reaffiche()
+ return None
+ else :
+ return(comm2+" "+comm)
+
+ def reaffiche(self):
+ # A priori, on ne fait rien
+ pass
+
+
+ def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+
+ listeFormatee=list(liste)
+
+ min,max=self.node.item.getMinMax()
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
+ texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+ self.editor.afficheInfos(texte,Qt.red)
+ return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.affiche_infos(texte,Qt.red)
+ return
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
+ indexDernierRempli=0
+ while ( indexDernierRempli < len(liste) ) :
+ texte=liste[indexDernierRempli]
+ if indexDernierRempli < self.indexDernierLabel:
+ nomLineEdit="lineEditVal"+str(indexDernierRempli+1)
+ courant=getattr(self,nomLineEdit)
+ courant.setText(str(texte))
+ else :
+ self.ajoutLineEdit(texte)
+ indexDernierRempli = indexDernierRempli + 1
+
+
+ def changeValeur(self,changeDePlace=True,oblige=False):
+ donneFocus=None
+ derniereValeur=None
+ self.listeValeursCourantes = []
+ fin=self.indexDernierLabel
+ for i in range (1, fin):
+ nomLineEdit="lineEditVal"+str(i)
+ courant=getattr(self,nomLineEdit)
+ valeur=courant.text()
+ lval=valeur.split(',')
+ if len (lval) > 1 :
+ msgBox=QMessageBox()
+ msgBox.setText("separator ',' ")
+ msgBox.setInformativeText("Do you want to enter " + str (lval) + "?")
+ msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel)
+ msgBox.setDefaultButton(QMessageBox.Ok)
+ ret = msgBox.exec_()
+ if ret != 1024 :
+ courant.setText("")
+ return
+ courant.setText(lval[0])
+ self.ajoutNValeur(lval[1:])
+ self.listeValeursCourantes = []
+
+ for i in range (1, self.indexDernierLabel+1):
+ nomLineEdit="lineEditVal"+str(i)
+ courant=getattr(self,nomLineEdit)
+ valeur=courant.text()
+ if valeur != None and valeur != "" :
+ commentaire=self.ajout1Valeur(valeur)
+ if (commentaire != None ):
+ self.editor.afficheInfos(commentaire,Qt.red)
+ courant.setText("")
+ donneFocus=courant
+ self.reaffiche()
+ return
+ else :
+ self.editor.afficheInfos("")
+ elif donneFocus==None : donneFocus=courant
+
+ nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel)
+ dernier=getattr(self,nomDernierLineEdit)
+ derniereValeur=dernier.text()
+ if changeDePlace:
+ if donneFocus != None :
+ donneFocus.setFocus()
+ self.scrollArea.ensureWidgetVisible(donneFocus)
+ elif self.indexDernierLabel < self.monSimpDef.max :
+ self.ajoutLineEdit()
+ if self.listeValeursCourantes == [] : return
+ min,max = self.node.item.getMinMax()
+ if len(self.listeValeursCourantes) < self.monSimpDef.min :
+ self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
+ if len(self.listeValeursCourantes) < min and oblige==True: return
+ if len(self.listeValeursCourantes) > max : return
+ self.node.item.setValeur(self.listeValeursCourantes)
+ if len(self.listeValeursCourantes) == self.monSimpDef.max :
+ self.editor.afficheInfos(tr('nb max de valeurs atteint'))
+ self.setValide()
+ self.reaffiche()
+
+
+
+# Avertissement quand on quitte le widget
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+ from builtins import str
+ from builtins import range
+except : pass
+
+import re
+import types,sys,os
+import traceback
+from . import typeNode
+
+import six
+from six.moves import range
+
+from PyQt5.QtWidgets import QTreeWidget , QTreeWidgetItem, QApplication, QMessageBox
+from PyQt5.QtGui import QIcon
+from PyQt5.QtCore import Qt
+from Extensions.i18n import tr
+from .gereRegles import GereRegles
+from .monChoixCommande import MonChoixCommande
+
+#------------------------------------------
+class JDCTree( QTreeWidget,GereRegles ):
+#------------------------------------------
+
+ def __init__( self, jdc_item, QWParent):
+ #if hasattr(QWParent,'widgetTree') :
+ self.editor = QWParent
+ self.plie=False
+ if self.editor.widgetTree !=None :
+ QTreeWidget.__init__(self, self.editor.widgetTree )
+ self.editor.verticalLayout_2.addWidget(self)
+ if self.editor.enteteQTree=='complet':
+ self.headerItem().setText(0, "Commande ")
+ self.headerItem().setText(1, "Concept/Valeur")
+ else :
+ self.headerItem().setText(0, "Commande ")
+ self.setColumnWidth(0,200)
+ self.setExpandsOnDoubleClick(False)
+ self.setSelectionMode(3)
+ else :
+ QTreeWidget.__init__(self, None )
+ self.item = jdc_item
+ self.tree = self
+ self.appliEficas = self.editor.appliEficas
+ self.childrenComplete=[]
+ self.racine=self.item.itemNode(self,self.item)
+
+ self.itemCourant=None
+
+ self.itemClicked.connect(self.handleOnItem)
+ self.itemCollapsed.connect(self.handleCollapsedItem)
+ self.itemExpanded.connect(self.handleExpandedItem)
+
+ #PNPNPN verifier dans quel cas on se trouve : affiche l arbre ou la commande
+ self.node_selected=self.racine
+ self.inhibeExpand=True
+ self.expandItem(self.racine)
+ self.inhibeExpand=False
+ #print ("self.editor.maConfiguration.afficheCommandesPliees", self.editor.maConfiguration.afficheCommandesPliees)
+ if self.racine.children !=[] :
+ #self.editor.initSplitterSizes(3)
+ if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
+ else : self.racine.children[0].deplieToutEtReaffiche()
+ self.racine.children[0].fenetre.donnePremier()
+ else :
+ #self.editor.initSplitterSizes(2)
+ self.racine.affichePanneau()
+ #print self.editor.splitter.sizes()
+ #PNPNPN
+ #pdb.set_trace()
+
+ def contextMenuEvent(self,event) :
+ #print "contextMenuEvent"
+ coord=event.globalPos()
+ item= self.currentItem()
+ self.handleContextMenu(item,coord)
+
+ def handleContextMenu(self,item,coord):
+ """
+ Private slot to show the context menu of the listview.
+
+ @param itm the selected listview item (QListWidgetItem)
+ @param coord the position of the mouse pointer (QPoint)
+ Attention : existeMenu permet de savoir si un menu est associe a cet item
+ """
+ #print "handleContextMenu"
+ if item == None : return
+ self.itemCourant=item
+ if item.existeMenu == 0 : return
+ if item.menu == None:
+ item.createPopUpMenu()
+ if item.menu != None:
+ if item.item.getNom() == "DISTRIBUTION" and item.item.isValid() :
+ item.Graphe.setEnabled(1)
+ item.menu.exec_(coord)
+
+
+ def handleCollapsedItem(self,item):
+ #print "dans CollapsedItem", self.inhibeExpand
+ if self.inhibeExpand == True : return
+ self.itemCourant=item
+ # On traite le cas de l item non selectionne
+ itemParent=item
+ while not (hasattr (itemParent,'getPanel')) :
+ itemParent=itemParent.treeParent
+ if self.tree.node_selected != itemParent :
+ item.setExpanded(False)
+ return
+
+ itemParent=item
+ item.setPlie()
+ item.plieToutEtReaffiche()
+ item.select()
+
+ def handleExpandedItem(self,item):
+ #print ("handleExpandedItem pour ", item.item.nom, self.inhibeExpand)
+ #import traceback
+ #traceback.print_stack()
+ if self.inhibeExpand == True : return
+ self.itemCourant=item
+ self.inhibeExpand = True
+ itemParent=item
+ while not (hasattr (itemParent,'getPanel')) :
+ if itemParent.plie==True : itemParent.setDeplie()
+ itemParent=itemParent.treeParent
+ if self.tree.node_selected != itemParent :
+ item.setExpanded(True)
+ self.inhibeExpand = False
+ return
+ item.deplieToutEtReaffiche()
+ self.inhibeExpand = False
+
+
+ def handleOnItem(self,item,int):
+ #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText())
+
+ from InterfaceQT4 import composimp
+ self.inhibeExpand = True
+ self.itemCourant=item
+ itemParent=item
+
+ while not (hasattr (itemParent,'getPanel')) :
+ if itemParent.plie==True : itemParent.setDeplie()
+ itemParent=itemParent.treeParent
+
+ if itemParent.fenetre != self.editor.fenetreCentraleAffichee :
+ estUneFeuille=(isinstance(item,composimp.Node))
+ # il faut afficher le parent
+ if estUneFeuille : itemParent.affichePanneau()
+ elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
+ else : itemParent.affichePanneau()
+
+
+ elif (isinstance(item,composimp.Node)) and item.fenetre : item.fenetre.rendVisible()
+ elif itemParent!=item:
+ self.tree.handleExpandedItem(item)
+ #item.fenetre.donnePremier()
+ #item.fenetre.rendActif()
+ #print 'il faut afficher le 1er'
+
+ try :
+ fr = item.item.getFr()
+ chaineDecoupee= fr.split('\n')
+ if len(chaineDecoupee) > 3 :
+ txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget'
+ else : txt=fr
+
+ if self.editor:
+ self.editor.afficheCommentaire(six.text_type(txt))
+ except:
+ pass
+ item.select()
+ self.inhibeExpand = False
+ #print "je mets inhibeExpand a false handleOnItem"
+
+
+ def choisitPremier(self,name):
+ self.editor.layoutJDCCHOIX.removeWidget(self.racine.fenetre)
+ self.racine.fenetre.close()
+ new_node=self.racine.appendBrother(name,'after')
+
+# type de noeud
+COMMENT = "COMMENTAIRE"
+PARAMETERS = "PARAMETRE"
+
+#------------------------------------------
+class JDCNode(QTreeWidgetItem,GereRegles):
+#------------------------------------------
+ def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
+ #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, self)
+ #self.a=0
+
+
+ self.item = item
+ self.vraiParent = treeParent
+ self.treeParent = treeParent
+ self.tree = self.treeParent.tree
+ self.editor = self.treeParent.editor
+ self.appliEficas = treeParent.appliEficas
+ self.JESUISOFF=0
+ self.childrenComplete=[]
+
+
+ from InterfaceQT4 import compocomm
+ from InterfaceQT4 import compoparam
+ from InterfaceQT4 import composimp
+ if (isinstance(self.item,compocomm.COMMTreeItem)) : name=tr("Commentaire")
+ elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.getLabelText()[0]))
+ #else: name = tr(str(tr(item.getLabelText()[0]))+" :")
+ else: name = tr(item.getLabelText()[0])
+ if item.nom != tr(item.nom) : name = str(tr(item.nom)+" :")
+ value = tr(str( item.getText() ) )
+
+ # si specialisation de la fenetre
+ if self.item.object.definition == None : self.fenetreIhm = None
+ # Cas des listes de mots_clefs
+ else : self.fenetreIhm = self.item.object.definition.fenetreIhm
+
+ if self.editor.enteteQTree=='complet':mesColonnes=(name,value)
+ else : mesColonnes=(name,)
+
+ if self.treeParent.plie==True :
+ self.plie = True
+ self.appartientAUnNoeudPlie=True
+ if self.treeParent.item.isMCList() : self.appartientAUnNoeudPlie = self.treeParent.appartientAUnNoeudPlie
+ else :
+ self.plie = False
+ self.appartientAUnNoeudPlie = False
+
+ #if item.nom == "POUTRE" :print "creation d'un noeud : ", item, " ",item.nom,"", self.treeParent, self.appartientAUnNoeudPlie , self.plie
+
+ if ancien and itemExpand : self.plie = False
+ if ancien and not itemExpand : self.plie = True
+ if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False
+
+ from InterfaceQT4 import compobloc
+ from InterfaceQT4 import compomclist
+
+ ajoutAuParentduNoeud=0
+ self.treeParent=treeParent
+ while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) :
+ self.treeParent.childrenComplete.append(self)
+ self.treeParent=self.treeParent.vraiParent
+ self.treeParent.childrenComplete.append(self)
+
+
+ if (isinstance(self,compobloc.Node) or (isinstance(self,compomclist.Node) and self.item.isMCList()) or ( hasattr(self.item.parent,'inhibeValidator') and isinstance(self,compomclist.Node) and self.item.parent.inhibeValidator)) :
+ # Le dernier or ne sert que lorsqu'on est en train de creer une liste par les validator
+ QTreeWidgetItem.__init__(self,None,mesColonnes)
+ else :
+ QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
+
+ self.setToolTip(0,self.item.getFr())
+ self.setToolTip(1,self.item.getFr())
+ repIcon=self.appliEficas.repIcon
+
+ couleur=self.item.getIconName()
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
+
+ self.setIcon(0,monIcone)
+
+ self.children = []
+ self.buildChildren()
+ self.menu=None
+ self.existeMenu=1
+
+ self.item.connect("valid",self.onValid,())
+ self.item.connect("supp" ,self.onSupp,())
+ self.item.connect("add" ,self.onAdd,())
+
+ self.state=""
+ self.fenetre=None
+ try :
+ if self.item.getObject().isBLOC() :
+ self.setExpanded(True)
+ self.plie=False
+ except :
+ pass
+
+
+ def buildChildren(self,posInsertion=10000):
+ """ Construit la liste des enfants de self """
+ """ Se charge de remettre les noeuds Expanded dans le meme etat """
+ #print ("*********** buildChildren ",self,self.item, self.item.nom)
+ #print (poum)
+
+ self.listeItemExpanded=[]
+ self.listeItemPlie=[]
+
+ for enfant in self.childrenComplete :
+ if enfant.plie : self.listeItemPlie.append(enfant.item)
+ else : self.listeItemExpanded.append(enfant.item)
+
+ for enfant in self.childrenComplete :
+ parent=enfant.treeParent
+ parent.removeChild(enfant)
+ enfant.JESUISOFF=1
+
+
+ self.children = []
+ self.childrenComplete = []
+ sublist = self.item._getSubList()
+ ind=0
+
+ for item in sublist :
+ itemExpand=False
+ ancien=False
+ if item in self.listeItemExpanded : itemExpand=True; ancien=True
+ if item in self.listeItemPlie : itemExpand=False; ancien=True
+ nouvelItem=item.itemNode(self,item,itemExpand,ancien)
+ self.children.append(nouvelItem)
+
+ #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
+
+
+ def chercheNoeudCorrespondant(self,objSimp):
+ sublist = self.item._getSubList()
+ for node in self.childrenComplete:
+ if node.item.object==objSimp : return node
+ return None
+
+
+ def afficheCeNiveau(self):
+ #print ('afficheCeNiveau pour ', self.item.nom, self.item.getLabelText())
+ for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+ widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+ self.editor.widgetCentraleLayout.removeItem(widget)
+ if self.editor.fenetreCentraleAffichee != None :
+ self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+ self.editor.fenetreCentraleAffichee.setParent(None)
+ self.editor.fenetreCentraleAffichee.close()
+ self.editor.fenetreCentraleAffichee.deleteLater()
+
+ from monWidgetNiveauFact import MonWidgetNiveauFact, MonWidgetNiveauFactTableau
+ maDefinition=self.item.get_definition()
+ monObjet=self.item.object
+ if maDefinition.fenetreIhm=='Tableau' : self.maFenetreCadre=MonWidgetNiveauFactTableau(self,self.editor,maDefinition,monObjet)
+ else : self.maFenetreCadre=MonWidgetNiveauFact(self,self.editor,maDefinition,monObjet)
+ self.fenetre=self.maFenetreCadre
+ self.editor.widgetCentraleLayout.addWidget(self.maFenetreCadre)
+ self.editor.fenetreCentraleAffichee=self.maFenetreCadre
+ self.select()
+ #print ('fin afficheCeNiveau pour ', self.item.nom)
+
+
+ def getPanelModifie(self):
+
+ if self.fenetreIhm == None : return None
+ if self.fenetreIhm=='deplie1Niveau':
+ from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau
+ return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object)
+ return None
+
+
+ def affichePanneau(self) :
+ #if self.editor.code == 'ASTER' and not(self.item.isActif()) :
+ # posera des pb si un code decide d appeler FIN un mot clef
+ # on resoudera a ce moment la
+ # pour l pas de poussiere sous le tapis
+ #print ('_________________ds affichePanneau pour', self.item.nom)
+ if not(self.item.isActif()) :
+ from .monWidgetInactif import MonWidgetInactif
+ self.fenetre = MonWidgetInactif(self,self.editor)
+ else:
+ itemParent=self
+ while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent
+ if itemParent!=self :
+ #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom)
+ itemParent.affichePanneau()
+ #print ('fin _________________ds affichePanneau pour', self.item.nom)
+ return
+ self.fenetre=self.getPanelModifie()
+ if self.fenetre == None : self.fenetre=self.getPanel()
+ self.editor.restoreSplitterSizes()
+
+ for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+ widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+ self.editor.widgetCentraleLayout.removeItem(widget)
+ # ceinture et bretelle
+ #print 'old fenetre = ',self.editor.fenetreCentraleAffichee
+ if self.editor.fenetreCentraleAffichee != None :
+ self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+ self.editor.fenetreCentraleAffichee.setParent(None)
+ self.editor.fenetreCentraleAffichee.close()
+ self.editor.fenetreCentraleAffichee.deleteLater()
+
+ self.editor.widgetCentraleLayout.addWidget(self.fenetre)
+ #print ("j ajoute ", self.fenetre, self.fenetre.node.item.nom)
+ self.editor.fenetreCentraleAffichee=self.fenetre
+ self.tree.node_selected= self
+
+ if self.editor.first :
+ if not(isinstance(self.fenetre,MonChoixCommande)): self.editor.first=False
+ self.tree.inhibeExpand=True
+ self.tree.expandItem(self)
+ self.tree.inhibeExpand=False
+ #print( '_________________fin affichePanneau pour', self.item.nom)
+
+
+ def createPopUpMenu(self):
+ #implemente dans les noeuds derives si necessaire
+ self.existeMenu = 0
+
+ def commentIt(self):
+ """
+ Cette methode a pour but de commentariser la commande pointee par self
+ """
+ # On traite par une exception le cas ou l'utilisateur final cherche a desactiver
+ # (commentariser) un commentaire.
+ try :
+ pos=self.treeParent.children.index(self)
+ commande_comment = self.item.getObjetCommentarise()
+ # On signale a l editeur du panel (le JDCDisplay) une modification
+ self.editor.initModif()
+ self.treeParent.buildChildren()
+ self.treeParent.children[pos].select()
+ self.treeParent.children[pos].affichePanneau()
+ except Exception as e:
+ traceback.print_exc()
+ QMessageBox.critical( self.editor, "TOO BAD",str(e))
+
+ def unCommentIt(self):
+ """
+ Realise la decommentarisation de self
+ """
+ try :
+ pos=self.treeParent.children.index(self)
+ commande,nom = self.item.unComment()
+ self.editor.initModif()
+ self.treeParent.buildChildren()
+ self.treeParent.children[pos].select()
+ self.treeParent.children[pos].affichePanneau()
+ except Exception as e:
+ QMessageBox.critical( self.editor, "Erreur !",str(e))
+
+ def addComment( self, after=True ):
+ """
+ Ajoute un commentaire a l'interieur du JDC :
+ """
+ self.editor.initModif()
+ if after:
+ pos = 'after'
+ else:
+ pos = 'before'
+ return self.appendBrother( COMMENT, pos )
+
+ def addParameters( self, after=True ):
+ """
+ Ajoute un parametre a l'interieur du JDC :
+ """
+ self.editor.initModif()
+ if after: pos = 'after'
+ else: pos = 'before'
+ child=self.appendBrother( PARAMETERS, pos )
+ return child
+
+
+ def select( self ):
+ """
+ Rend le noeud courant (self) selectionne et deselectionne
+ tous les autres
+ """
+ #print "select pour", self.item.nom
+ for item in self.tree.selectedItems() :
+ item.setSelected(0)
+ self.tree.setCurrentItem( self )
+
+ #------------------------------------------------------------------
+ # Methodes de creation et destruction de noeuds
+ # Certaines de ces methodes peuvent etre appelees depuis l'externe
+ #------------------------------------------------------------------
+ def appendBrother(self,name,pos='after',plier=False):
+ """
+ Permet d'ajouter un objet frere a l'objet associe au noeud self
+ par defaut on l'ajoute immediatement apres
+ Methode externe
+ """
+ self.editor.initModif()
+
+ from InterfaceQT4 import compojdc
+ if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos) : return 0
+
+ if self.treeParent != self.vraiParent :
+ index = self.vraiParent.children.index(self)
+ if pos == 'before': index = index
+ elif pos == 'after': index = index +1
+ return self.vraiParent.appendChild(name,pos=index,plier=plier)
+ else :
+ index = self.treeParent.children.index(self)
+ if pos == 'before': index = index
+ elif pos == 'after': index = index +1
+ else:
+ print(six.text_type(pos), tr(" n'est pas un index valide pour appendBrother"))
+ return 0
+ return self.treeParent.appendChild(name,pos=index,plier=plier)
+
+ def verifiePosition(self,name,pos,aLaRacine=False):
+ if name not in self.editor.readercata.Classement_Commandes_Ds_Arbre : return True
+ indexName=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(name)
+
+ etapes=self.item.getJdc().etapes
+ if etapes == [] : return True
+
+ if aLaRacine == False :indexOu=etapes.index(self.item.object)
+ else : indexOu=0
+
+ if pos=="after" : indexOu = indexOu+1
+ for e in etapes[:indexOu] :
+ nom=e.nom
+ if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape > indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ for e in etapes[indexOu:] :
+ nom=e.nom
+ if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape < indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ return True
+
+ def appendChild(self,name,pos=None,plier=False):
+ """
+ Methode pour ajouter un objet fils a l'objet associe au noeud self.
+ On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
+ ou en position intermediaire.
+ Si pos vaut None, on le place a la position du catalogue.
+ """
+ #print ("************** appendChild ",self.item.getLabelText(), pos, plier)
+ #import traceback
+ #traceback.print_stack()
+
+
+ self.editor.initModif()
+ if pos == 'first':
+ index = 0
+ elif pos == 'last':
+ index = len(self.children)
+ elif type(pos) == int :
+ # position fixee
+ index = pos
+ elif type(pos) == types.InstanceType:
+ # pos est un item. Il faut inserer name apres pos
+ index = self.item.getIndex(pos) +1
+ elif type(name) == types.InstanceType:
+ index = self.item.getIndexChild(name.nom)
+ else:
+ index = self.item.getIndexChild(name)
+
+ # si on essaye d inserer a la racine
+ if (isinstance(self.treeParent,JDCTree) and index==0) :
+ verifiePosition=self.verifiePosition(name,'first',aLaRacine=True)
+ if not verifiePosition : return 0
+
+ self.tree.inhibeExpand=True
+ obj=self.item.addItem(name,index) # emet le signal 'add'
+ if obj is None:obj=0
+ if obj == 0:return 0
+ try :
+ #if 1 :
+ child=self.children[index]
+ if plier == True : child.setPlie()
+ else : child.setDeplie()
+ except :
+ child=self.children[index]
+ try :
+ if len(obj) > 1 : self.buildChildren()
+ except : pass
+ self.tree.inhibeExpand=False
+ #print (" fin append child")
+ return child
+
+ def deplace(self):
+ self.editor.initModif()
+ index = self.treeParent.children.index(self) - 1
+ if index < 0 : index =0
+ ret=self.treeParent.item.deplaceEntite(self.item.getObject())
+
+ def delete(self):
+ """
+ Methode externe pour la destruction de l'objet associe au noeud
+ """
+ self.editor.initModif()
+ index = self.vraiParent.children.index(self) - 1
+ if index < 0 : index =0
+ recalcule=0
+ if self.item.nom == "VARIABLE" :
+ recalcule=1
+ jdc=self.item.jdc
+ ret,commentaire=self.vraiParent.item.suppItem(self.item)
+ if ret==0 :
+ self.editor.afficheInfos(commentaire,Qt.red)
+ else :
+ self.editor.afficheInfos(commentaire)
+ self.treeParent.buildChildren()
+ if self.treeParent.childrenComplete : toselect=self.treeParent.childrenComplete[index]
+ else: toselect=self.treeParent
+ if recalcule : jdc.recalculeEtatCorrelation()
+ if ret==0 :
+ if self.treeParent.childrenComplete :
+ notdeleted=self.treeParent.childrenComplete[index+1]
+ notdeleted.select()
+ else :
+ toselect.select()
+ from InterfaceQT4 import compojdc
+ # cas ou on detruit dans l arbre sans affichage
+ if isinstance(self.treeParent,compojdc.Node) :
+ toselect.affichePanneau()
+ else :
+ if self.treeParent.fenetre== None : return
+ #print "J appelle reaffiche de browser apres delete"
+ self.treeParent.fenetre.reaffiche(toselect)
+
+ def deleteMultiple(self,liste=()):
+ """
+ Methode externe pour la destruction d une liste de noeud
+ """
+ from InterfaceQT4 import compojdc
+ self.editor.initModif()
+ index=9999
+ recalcule=0
+ jdc=self.treeParent
+ parentPosition=jdc
+ while not(isinstance(jdc,compojdc.Node)):
+ jdc=jdc.treeParent
+ for noeud in liste :
+ if not( isinstance(noeud.treeParent, compojdc.Node)): continue
+ if noeud.item.nom == "VARIABLE" : recalcule=1
+ if noeud.treeParent.children.index(noeud) < index : index=noeud.treeParent.children.index(noeud)
+ if index < 0 : index =0
+
+ # Cas ou on detruit dans une ETape
+ if index == 9999 :
+ parentPosition=self.treeParent
+ while not(isinstance(parentPosition, compojdc.Node)):
+ index=parentPosition.treeParent.children.index(parentPosition)
+ parentPosition=parentPosition.treeParent
+
+ for noeud in liste:
+ noeud.treeParent.item.suppItem(noeud.item)
+
+ jdc.buildChildren()
+ if recalcule : jdc.recalculeEtatCorrelation()
+ try : toselect=parentPosition.children[index]
+ except : toselect=jdc
+ toselect.select()
+ toselect.affichePanneau()
+#
+# #------------------------------------------------------------------
+ def onValid(self):
+
+ #print ("onValid pour ", self.item.nom)
+ if self.JESUISOFF==1 : return
+ if hasattr(self,'fenetre') and self.fenetre:
+ try :
+ self.fenetre.setValide()
+ except :
+ # print "onValid pour ", self.item.nom, self,'pb'
+ pass
+
+ if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isValid():
+ self.item.jdc.recalculeEtatCorrelation()
+ if hasattr(self.item,'forceRecalcul'):
+ self.forceRecalculChildren(self.item.forceRecalcul)
+ self.editor.initModif()
+
+ self.updateNodeValid()
+ self.updateNodeLabel()
+ self.updateNodeTexte()
+
+ def onAdd(self,object):
+ if self.JESUISOFF==1 : return
+ #print "onAdd pour ", self.item.nom, object.nom
+ self.editor.initModif()
+ self.updateNodes()
+ # PN -- non necessaire si item=jdc
+ if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
+
+ def onSupp(self,object):
+ if self.JESUISOFF==1 : return
+ #print "onSup pour ", self.item.nom, object.nom
+ self.editor.initModif()
+ self.updateNodes()
+ # PN -- non necessaire si item=jdc
+ if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
+
+
+
+ def updateNodeValid(self):
+ """Cette methode remet a jour la validite du noeud (icone)
+ Elle appelle isValid
+ """
+ repIcon=self.appliEficas.repIcon
+ couleur=self.item.getIconName()
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
+ self.setIcon(0,monIcone)
+
+
+
+ def updateNodeLabel(self):
+ """ Met a jour le label du noeud """
+ #print "NODE updateNodeLabel", self.item.getLabelText()
+ labeltext,fonte,couleur = self.item.getLabelText()
+ # PNPN a reflechir
+ self.setText(0, labeltext)
+
+ def updateNodeLabelInBlack(self):
+ if hasattr(self.appliEficas,'noeudColore'):
+ self.appliEficas.noeudColore.setForeground(0,Qt.black)
+ self.appliEficas.noeudColore.updateNodeLabel
+
+ def updateNodeLabelInBlue(self):
+ if hasattr(self.appliEficas,'noeudColore'): self.appliEficas.noeudColore.setForeground(0,Qt.black)
+ self.setForeground(0,Qt.blue)
+ labeltext,fonte,couleur = self.item.getLabelText()
+ self.setText(0, labeltext)
+ self.appliEficas.noeudColore=self
+
+ def updatePlusieursNodeLabelInBlue(self,liste):
+ if hasattr(self.appliEficas,'listeNoeudsColores'):
+ for noeud in self.appliEficas.listeNoeudsColores:
+ noeud.setTextColor( 0,Qt.black)
+ noeud.updateNodeLabel()
+ self.appliEficas.listeNoeudsColores=[]
+ for noeud in liste :
+ noeud.setTextColor( 0,Qt.blue )
+ labeltext,fonte,couleur = noeud.item.getLabelText()
+ noeud.setText(0, labeltext)
+ self.appliEficas.listeNoeudsColores.append(noeud)
+
+ def updateNodeTexteInBlack(self):
+ """ Met a jour les noms des SD et valeurs des mots-cles """
+ self.setTextColor( 1,Qt.black )
+ value = self.item.getText()
+ self.setText(1, value)
+
+ def updateNodeTexte(self):
+ """ Met a jour les noms des SD et valeurs des mots-cles """
+ value = self.item.getText()
+ self.setText(1, value)
+
+
+ def updateNodeTexteInBlue(self):
+ self.setTextColor( 1,Qt.blue )
+ value = self.item.getText()
+ self.setText(1, value)
+
+ def updateNodes(self):
+ #print 'NODE updateNodes', self.item.getLabelText()
+ self.buildChildren()
+
+ def updateValid(self) :
+ """Cette methode a pour but de mettre a jour la validite du noeud
+ et de propager la demande de mise a jour a son parent
+ """
+ #print "NODE updateValid", self.item.getLabelText()
+ self.updateNodeValid()
+ try :
+ self.treeParent.updateValid()
+ except:
+ pass
+
+ def updateTexte(self):
+ """ Met a jour les noms des SD et valeurs des mots-cles """
+ #print "NODE updateTexte", self.item.getLabelText()
+ self.updateNodeVexte()
+ if self.isExpanded() :
+ for child in self.children:
+ if child.isHidden() == false : child.updateTexte()
+
+
+ def forceRecalculChildren(self,niveau):
+ if self.state=='recalcule' :
+ self.state=""
+ return
+ self.state='recalcule'
+ if hasattr(self.item,'object'):
+ self.item.object.state="modified"
+ for child in self.children:
+ if niveau > 0 : child.forceRecalculChildren(niveau - 1)
+
+
+
+ def doPaste(self,node_selected,pos='after'):
+ """
+ Declenche la copie de l'objet item avec pour cible
+ l'objet passe en argument : node_selected
+ """
+ objet_a_copier = self.item.getCopieObjet()
+ child=node_selected.doPasteCommande(objet_a_copier,pos)
+ if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
+ self.updateNodeLabelInBlack()
+ return child
+
+ def doPasteCommande(self,objet_a_copier,pos='after'):
+ """
+ Realise la copie de l'objet passe en argument qui est necessairement
+ un onjet
+ """
+ child=None
+ try :
+ #if 1 :
+ child = self.appendBrother(objet_a_copier,pos)
+ except :
+ pass
+ return child
+
+ def doPastePremier(self,objet_a_copier):
+ """
+ Realise la copie de l'objet passe en argument (objet_a_copier)
+ """
+ objet = objet_a_copier.item.getCopieObjet()
+ child = self.appendChild(objet,pos='first')
+ return child
+
+ def plieToutEtReafficheSaufItem(self, itemADeplier):
+ self.inhibeExpand=True
+ from InterfaceQT4 import compojdc
+ if (isinstance(self, compojdc.Node)) :
+ self.affichePanneau()
+ self.inhibeExpand=False
+ return
+ self.editor.deplier = False
+ for item in self.children :
+ # il ne faut pas plier les blocs
+ from InterfaceQT4 import compobloc
+ if (isinstance(item,compobloc.Node)) : continue
+ item.setPlie()
+ if item==itemADeplier :
+ itemADeplier.setDeplie()
+ self.affichePanneau()
+ self.inhibeExpand=False
+
+ def plieToutEtReaffiche(self):
+ #print ('plieToutEtReaffiche', self.item.getNom())
+ from InterfaceQT4 import compojdc
+ if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return
+ self.inhibeExpand=True
+ self.editor.deplier = False
+ for item in self.children :
+ # il ne faut pas plier les blocs
+ from InterfaceQT4 import compobloc
+ if (isinstance(item,compobloc.Node)) : continue
+ item.setPlie()
+ self.affichePanneau()
+ #print ("fin plieToutEtReaffiche", self.item.getNom())
+
+ def deplieToutEtReaffiche(self):
+ self.editor.deplier = True
+ for item in self.children :
+ item.setDeplie()
+ self.affichePanneau()
+
+ def setPlie(self):
+ #print "je mets inhibeExpand a true dans setPlie"
+ #print ("je suis dans plieTout", self.item.getNom())
+ from . import compojdc
+ if self.fenetre == self.editor.fenetreCentraleAffichee and isinstance(self.treeParent,compojdc.Node):
+ return
+ self.tree.inhibeExpand=True
+ self.tree.collapseItem(self)
+ self.setPlieChildren()
+ self.tree.inhibeExpand=False
+ #print "je mets inhibeExpand a false dans setPlie"
+
+
+ # on ne plie pas au niveau 1
+ # self.plie=False
+ # for item in self.children :
+ # item.appartientAUnNoeudPlie=False
+
+ def setPlieChildren(self):
+ self.plie=True
+ from InterfaceQT4 import composimp
+ if isinstance(self,composimp.Node) : return
+ for c in self.children :
+ c.setPlieChildren()
+ #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0]
+ c.appartientAUnNoeudPlie=True
+ c.plie=True
+ #print "dans setPlieChildren plie", c.item.nom
+ # 01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire
+ #if not (isinstance(c,composimp.Node)) :c.setExpanded(False)
+
+ # Pour les blocs et les motcles list
+ # on affiche un niveau de plus
+ from InterfaceQT4 import compobloc
+ from InterfaceQT4 import compomclist
+ if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) :
+ niveauPere=self.treeParent
+ while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) :
+ niveauPere=niveauPere.treeParent
+ for c in self.children :
+ c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
+ #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie)
+ c.setExpanded(False)
+
+
+ def setDeplie(self):
+ #print "dans setPlieChildren pour", self.item.nom
+ #print "je mets inhibeExpand a true dans setDeplie"
+ self.tree.inhibeExpand=True
+ self.plie=False
+ self.tree.expandItem(self)
+ self.setDeplieChildren()
+ self.tree.inhibeExpand=False
+ #print "je mets inhibeExpand a false dans setDePlie"
+
+ def setDeplieChildren(self):
+ #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.getLabelText()
+ for c in self.children :
+ c.setDeplieChildren()
+ #print "dans setDeplieChildren ", c.item.nom
+ c.appartientAUnNoeudPlie=False
+ c.setExpanded(True)
+ c.plie=False
+
+ def selectAvant(self):
+ i=self.item.jdc.etapes.index(self.item.object)
+ try :
+ cherche=self.item.jdc.etapes[i-1]
+ except :
+ cherche=self.item.jdc.etapes[-1]
+ node=None
+ for i in self.tree.racine.children :
+ if i.item.object== cherche :
+ node=i
+ break
+ if node :
+ node.affichePanneau()
+ node.select()
+
+ def selectApres(self):
+ i=self.item.jdc.etapes.index(self.item.object)
+ try :
+ cherche=self.item.jdc.etapes[i+1]
+ except :
+ cherche=self.item.jdc.etapes[0]
+ node=None
+ for i in self.tree.racine.children :
+ if i.item.object== cherche :
+ node=i
+ break
+ if node :
+ node.affichePanneau()
+ node.select()
+
+ def ouvreLesNoeudsDsLArbre(self):
+ return
+ self.inhibeExpand = True
+ for i in range(self.childCount()):
+ self.child(i).inhibeExpand=True
+ self.child(i).setExpanded(True)
+ self.child(i).ouvreLesNoeudsDsLArbre()
+ self.child(i).inhibeExpand=False
+ self.inhibeExpand = False
from builtins import str
from builtins import range
except : pass
+
import re
import types,sys,os
import traceback
from . import typeNode
-#import pdb
import six
from six.moves import range
+
from PyQt5.QtWidgets import QTreeWidget , QTreeWidgetItem, QApplication, QMessageBox
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
from .gereRegles import GereRegles
from .monChoixCommande import MonChoixCommande
+#------------------------------------------
class JDCTree( QTreeWidget,GereRegles ):
+#------------------------------------------
+
def __init__( self, jdc_item, QWParent):
#if hasattr(QWParent,'widgetTree') :
self.editor = QWParent
self.childrenComplete=[]
self.racine=self.item.itemNode(self,self.item)
- self.itemCourrant=None
+ self.itemCourant=None
self.itemClicked.connect(self.handleOnItem)
self.itemCollapsed.connect(self.handleCollapsedItem)
self.inhibeExpand=True
self.expandItem(self.racine)
self.inhibeExpand=False
- #print "self.editor.afficheCommandesPliees", self.editor.afficheCommandesPliees
+ #print ("self.editor.maConfiguration.afficheCommandesPliees", self.editor.maConfiguration.afficheCommandesPliees)
if self.racine.children !=[] :
#self.editor.initSplitterSizes(3)
- if self.editor.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
+ if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
else : self.racine.children[0].deplieToutEtReaffiche()
self.racine.children[0].fenetre.donnePremier()
else :
"""
#print "handleContextMenu"
if item == None : return
+ self.itemCourant=item
if item.existeMenu == 0 : return
if item.menu == None:
item.createPopUpMenu()
if item.menu != None:
- if item.item.get_nom() == "DISTRIBUTION" and item.item.isvalid() :
+ if item.item.getNom() == "DISTRIBUTION" and item.item.isValid() :
item.Graphe.setEnabled(1)
item.menu.exec_(coord)
def handleCollapsedItem(self,item):
#print "dans CollapsedItem", self.inhibeExpand
if self.inhibeExpand == True : return
+ self.itemCourant=item
# On traite le cas de l item non selectionne
itemParent=item
while not (hasattr (itemParent,'getPanel')) :
item.select()
def handleExpandedItem(self,item):
- #print "handleExpandedItem pour ", item.item.nom, self.inhibeExpand
+ #print ("handleExpandedItem pour ", item.item.nom, self.inhibeExpand)
#import traceback
#traceback.print_stack()
if self.inhibeExpand == True : return
+ self.itemCourant=item
self.inhibeExpand = True
itemParent=item
while not (hasattr (itemParent,'getPanel')) :
def handleOnItem(self,item,int):
- #print "je passe dans handleOnItem pour ",self, item.item.nom, item, item.item
+ #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText())
from InterfaceQT4 import composimp
self.inhibeExpand = True
- self.itemCourrant=item
+ self.itemCourant=item
itemParent=item
while not (hasattr (itemParent,'getPanel')) :
if itemParent.plie==True : itemParent.setDeplie()
+ itemAvant=itemParent
itemParent=itemParent.treeParent
if itemParent.fenetre != self.editor.fenetreCentraleAffichee :
-
estUneFeuille=(isinstance(item,composimp.Node))
# il faut afficher le parent
- #print "estUneFeuille", estUneFeuille
- #print "afficheCommandesPliees", self.editor.afficheCommandesPliees
+ if estUneFeuille and itemParent.fenetreIhm=='deplie1Niveau' :
+ itemAvant.afficheCeNiveau()
+ return
if estUneFeuille : itemParent.affichePanneau()
- elif self.editor.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
+ elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
else : itemParent.affichePanneau()
#print 'il faut afficher le 1er'
try :
- fr = item.item.get_fr()
- if self.editor: self.editor.affiche_commentaire(six.text_type(fr))
+ fr = item.item.getFr()
+ chaineDecoupee= fr.split('\n')
+ if len(chaineDecoupee) > 3 :
+ txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget'
+ else : txt=fr
+
+ if self.editor:
+ self.editor.afficheCommentaire(six.text_type(txt))
except:
pass
item.select()
COMMENT = "COMMENTAIRE"
PARAMETERS = "PARAMETRE"
+#------------------------------------------
class JDCNode(QTreeWidgetItem,GereRegles):
+#------------------------------------------
def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
- #print "creation d'un noeud : ", item, " ",item.nom,"", treeParent, self
+ #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, self)
#self.a=0
+
+
self.item = item
self.vraiParent = treeParent
self.treeParent = treeParent
from InterfaceQT4 import compoparam
from InterfaceQT4 import composimp
if (isinstance(self.item,compocomm.COMMTreeItem)) : name=tr("Commentaire")
- elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.GetLabelText()[0]))
- #else: name = tr(str(tr(item.GetLabelText()[0]))+" :")
- else: name = tr(item.GetLabelText()[0])
+ elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.getLabelText()[0]))
+ #else: name = tr(str(tr(item.getLabelText()[0]))+" :")
+ else: name = tr(item.getLabelText()[0])
if item.nom != tr(item.nom) : name = str(tr(item.nom)+" :")
- value = tr(str( item.GetText() ) )
+ value = tr(str( item.getText() ) )
+
+ # si specialisation de la fenetre
+ if self.item.object.definition == None : self.fenetreIhm = None
+ # Cas des listes de mots_clefs
+ else : self.fenetreIhm = self.item.object.definition.fenetreIhm
-
if self.editor.enteteQTree=='complet':mesColonnes=(name,value)
else : mesColonnes=(name,)
else :
QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
- self.setToolTip(0,self.item.get_fr())
- self.setToolTip(1,self.item.get_fr())
+ self.setToolTip(0,self.item.getFr())
+ self.setToolTip(1,self.item.getFr())
repIcon=self.appliEficas.repIcon
- monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+ couleur=self.item.getIconName()
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
+
self.setIcon(0,monIcone)
self.children = []
- self.build_children()
+ self.buildChildren()
self.menu=None
self.existeMenu=1
pass
- def build_children(self,posInsertion=10000):
+ def buildChildren(self,posInsertion=10000):
""" Construit la liste des enfants de self """
""" Se charge de remettre les noeuds Expanded dans le meme etat """
- #print "*********** build_children ",self,self.item, self.item.nom
+ #print ("*********** buildChildren ",self,self.item, self.item.nom)
+ #print (poum)
self.listeItemExpanded=[]
self.listeItemPlie=[]
self.children = []
self.childrenComplete = []
- sublist = self.item._GetSubList()
+ sublist = self.item._getSubList()
ind=0
for item in sublist :
nouvelItem=item.itemNode(self,item,itemExpand,ancien)
self.children.append(nouvelItem)
- #print "fin *********** build_children ",self,self.item, self.item.nom, self.children
+ #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
def chercheNoeudCorrespondant(self,objSimp):
- sublist = self.item._GetSubList()
+ sublist = self.item._getSubList()
for node in self.childrenComplete:
if node.item.object==objSimp : return node
return None
+ def afficheCeNiveau(self):
+ #print ('afficheCeNiveau pour ', self.item.nom, self.item.getLabelText())
+ for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+ widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+ self.editor.widgetCentraleLayout.removeItem(widget)
+ if self.editor.fenetreCentraleAffichee != None :
+ self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+ self.editor.fenetreCentraleAffichee.setParent(None)
+ self.editor.fenetreCentraleAffichee.close()
+ self.editor.fenetreCentraleAffichee.deleteLater()
+
+ from monWidgetNiveauFact import MonWidgetNiveauFact, MonWidgetNiveauFactTableau
+ maDefinition=self.item.get_definition()
+ monObjet=self.item.object
+ if maDefinition.fenetreIhm=='Tableau' : self.maFenetreCadre=MonWidgetNiveauFactTableau(self,self.editor,maDefinition,monObjet)
+ else : self.maFenetreCadre=MonWidgetNiveauFact(self,self.editor,maDefinition,monObjet)
+
+ self.fenetre=self.maFenetreCadre
+ self.editor.widgetCentraleLayout.addWidget(self.maFenetreCadre)
+ self.editor.fenetreCentraleAffichee=self.maFenetreCadre
+ self.select()
+ #print ('fin afficheCeNiveau pour ', self.item.nom)
+
+
+ def getPanelModifie(self):
+
+ if self.fenetreIhm == None : return None
+ if self.fenetreIhm=='deplie1Niveau':
+ from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau
+ return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object)
+ return None
+
+
def affichePanneau(self) :
- #if self.editor.code == 'ASTER' and not(self.item.isactif()) :
+ #if self.editor.code == 'ASTER' and not(self.item.isActif()) :
# posera des pb si un code decide d appeler FIN un mot clef
# on resoudera a ce moment la
- # pour l instant pas de poussiere sous le tapis
- if not(self.item.isactif()) :
+ # pour l pas de poussiere sous le tapis
+ #print ('_________________ds affichePanneau pour', self.item.nom)
+ if not(self.item.isActif()) :
from .monWidgetInactif import MonWidgetInactif
self.fenetre = MonWidgetInactif(self,self.editor)
else:
itemParent=self
while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent
if itemParent!=self :
+ #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom)
itemParent.affichePanneau()
+ #print ('fin _________________ds affichePanneau pour', self.item.nom)
return
- self.fenetre=self.getPanel()
- #self.editor.restoreSplitterSizes()
+ self.fenetre=self.getPanelModifie()
+ if self.fenetre == None : self.fenetre=self.getPanel()
+ self.editor.restoreSplitterSizes()
for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
self.tree.inhibeExpand=True
self.tree.expandItem(self)
self.tree.inhibeExpand=False
- #print( 'fin affichePanneau pour', self.item.nom)
+ #print( '_________________fin affichePanneau pour', self.item.nom)
def createPopUpMenu(self):
# (commentariser) un commentaire.
try :
pos=self.treeParent.children.index(self)
- commande_comment = self.item.get_objet_commentarise()
+ commande_comment = self.item.getObjetCommentarise()
# On signale a l editeur du panel (le JDCDisplay) une modification
- self.editor.init_modif()
- self.treeParent.build_children()
+ self.editor.initModif()
+ self.treeParent.buildChildren()
self.treeParent.children[pos].select()
self.treeParent.children[pos].affichePanneau()
except Exception as e:
"""
try :
pos=self.treeParent.children.index(self)
- commande,nom = self.item.uncomment()
- self.editor.init_modif()
- self.treeParent.build_children()
+ commande,nom = self.item.unComment()
+ self.editor.initModif()
+ self.treeParent.buildChildren()
self.treeParent.children[pos].select()
self.treeParent.children[pos].affichePanneau()
except Exception as e:
"""
Ajoute un commentaire a l'interieur du JDC :
"""
- self.editor.init_modif()
+ self.editor.initModif()
if after:
pos = 'after'
else:
"""
Ajoute un parametre a l'interieur du JDC :
"""
- self.editor.init_modif()
+ self.editor.initModif()
if after: pos = 'after'
else: pos = 'before'
child=self.appendBrother( PARAMETERS, pos )
par defaut on l'ajoute immediatement apres
Methode externe
"""
- self.editor.init_modif()
+ self.editor.initModif()
from InterfaceQT4 import compojdc
if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos) : return 0
index = self.vraiParent.children.index(self)
if pos == 'before': index = index
elif pos == 'after': index = index +1
- return self.vraiParent.append_child(name,pos=index,plier=plier)
+ return self.vraiParent.appendChild(name,pos=index,plier=plier)
else :
index = self.treeParent.children.index(self)
if pos == 'before': index = index
else:
print(six.text_type(pos), tr(" n'est pas un index valide pour appendBrother"))
return 0
- return self.treeParent.append_child(name,pos=index,plier=plier)
+ return self.treeParent.appendChild(name,pos=index,plier=plier)
def verifiePosition(self,name,pos,aLaRacine=False):
- if name not in self.editor.Classement_Commandes_Ds_Arbre : return True
- indexName=self.editor.Classement_Commandes_Ds_Arbre.index(name)
+ if name not in self.editor.readercata.Classement_Commandes_Ds_Arbre : return True
+ indexName=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(name)
- etapes=self.item.get_jdc().etapes
+ etapes=self.item.getJdc().etapes
if etapes == [] : return True
if aLaRacine == False :indexOu=etapes.index(self.item.object)
if pos=="after" : indexOu = indexOu+1
for e in etapes[:indexOu] :
nom=e.nom
- if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
- indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
if indexEtape > indexName :
comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
QMessageBox.information( None,tr('insertion impossible'),comment, )
return False
for e in etapes[indexOu:] :
nom=e.nom
- if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
- indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
if indexEtape < indexName :
comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
QMessageBox.information( None,tr('insertion impossible'),comment, )
return False
return True
- def append_child(self,name,pos=None,plier=False):
+ def appendChild(self,name,pos=None,plier=False):
"""
Methode pour ajouter un objet fils a l'objet associe au noeud self.
On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
ou en position intermediaire.
Si pos vaut None, on le place a la position du catalogue.
"""
- #print ("************** append_child ",self.item.GetLabelText(), plier)
+ #print ("************** appendChild ",self.item.getLabelText(), pos, plier)
#import traceback
#traceback.print_stack()
- self.editor.init_modif()
+ self.editor.initModif()
if pos == 'first':
index = 0
elif pos == 'last':
index = pos
elif type(pos) == types.InstanceType:
# pos est un item. Il faut inserer name apres pos
- index = self.item.get_index(pos) +1
+ index = self.item.getIndex(pos) +1
elif type(name) == types.InstanceType:
- index = self.item.get_index_child(name.nom)
+ index = self.item.getIndexChild(name.nom)
else:
- index = self.item.get_index_child(name)
+ index = self.item.getIndexChild(name)
# si on essaye d inserer a la racine
if (isinstance(self.treeParent,JDCTree) and index==0) :
if not verifiePosition : return 0
self.tree.inhibeExpand=True
- obj=self.item.additem(name,index) # emet le signal 'add'
+ obj=self.item.addItem(name,index) # emet le signal 'add'
if obj is None:obj=0
if obj == 0:return 0
try :
except :
child=self.children[index]
try :
- if len(obj) > 1 : self.build_children()
+ if len(obj) > 1 : self.buildChildren()
except : pass
self.tree.inhibeExpand=False
#print (" fin append child")
return child
def deplace(self):
- self.editor.init_modif()
+ self.editor.initModif()
index = self.treeParent.children.index(self) - 1
if index < 0 : index =0
ret=self.treeParent.item.deplaceEntite(self.item.getObject())
"""
Methode externe pour la destruction de l'objet associe au noeud
"""
- self.editor.init_modif()
+ self.editor.initModif()
index = self.vraiParent.children.index(self) - 1
if index < 0 : index =0
recalcule=0
if self.item.nom == "VARIABLE" :
recalcule=1
jdc=self.item.jdc
- ret,commentaire=self.vraiParent.item.suppitem(self.item)
+ ret,commentaire=self.vraiParent.item.suppItem(self.item)
if ret==0 :
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
else :
- self.editor.affiche_infos(commentaire)
- self.treeParent.build_children()
+ self.editor.afficheInfos(commentaire)
+ self.treeParent.buildChildren()
if self.treeParent.childrenComplete : toselect=self.treeParent.childrenComplete[index]
else: toselect=self.treeParent
- if recalcule : jdc.recalcule_etat_correlation()
+ if recalcule : jdc.recalculeEtatCorrelation()
if ret==0 :
if self.treeParent.childrenComplete :
notdeleted=self.treeParent.childrenComplete[index+1]
Methode externe pour la destruction d une liste de noeud
"""
from InterfaceQT4 import compojdc
- self.editor.init_modif()
+ self.editor.initModif()
index=9999
recalcule=0
jdc=self.treeParent
parentPosition=parentPosition.treeParent
for noeud in liste:
- noeud.treeParent.item.suppitem(noeud.item)
+ noeud.treeParent.item.suppItem(noeud.item)
- jdc.build_children()
- if recalcule : jdc.recalcule_etat_correlation()
+ jdc.buildChildren()
+ if recalcule : jdc.recalculeEtatCorrelation()
try : toselect=parentPosition.children[index]
except : toselect=jdc
toselect.select()
# #------------------------------------------------------------------
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 "onValid pour ", self.item.nom, self,'pb'
pass
- if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isvalid():
- self.item.jdc.recalcule_etat_correlation()
+ if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isValid():
+ self.item.jdc.recalculeEtatCorrelation()
if hasattr(self.item,'forceRecalcul'):
self.forceRecalculChildren(self.item.forceRecalcul)
- self.editor.init_modif()
+ self.editor.initModif()
- self.update_node_valid()
- self.update_node_label()
- self.update_node_texte()
+ self.updateNodeValid()
+ self.updateNodeLabel()
+ self.updateNodeTexte()
def onAdd(self,object):
if self.JESUISOFF==1 : return
- #print "onAdd pour ", self.item.nom, object.nom
- self.editor.init_modif()
- self.update_nodes()
+ #print ("onAdd pour ", self.item.nom, object)
+ self.editor.initModif()
+ self.updateNodes()
# PN -- non necessaire si item=jdc
if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
def onSupp(self,object):
if self.JESUISOFF==1 : return
- #print "onSup pour ", self.item.nom, object.nom
- self.editor.init_modif()
- self.update_nodes()
+ #print "onSup pour ", self.item.nom, object
+ self.editor.initModif()
+ self.updateNodes()
# PN -- non necessaire si item=jdc
if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
- def update_node_valid(self):
+ def updateNodeValid(self):
"""Cette methode remet a jour la validite du noeud (icone)
- Elle appelle isvalid
+ Elle appelle isValid
"""
repIcon=self.appliEficas.repIcon
- monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+ couleur=self.item.getIconName()
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
self.setIcon(0,monIcone)
- def update_node_label(self):
+
+ def updateNodeLabel(self):
""" Met a jour le label du noeud """
- #print "NODE update_node_label", self.item.GetLabelText()
- labeltext,fonte,couleur = self.item.GetLabelText()
+ #print "NODE updateNodeLabel", self.item.getLabelText()
+ labeltext,fonte,couleur = self.item.getLabelText()
# PNPN a reflechir
self.setText(0, labeltext)
- def update_node_label_in_black(self):
+ def updateNodeLabelInBlack(self):
if hasattr(self.appliEficas,'noeudColore'):
self.appliEficas.noeudColore.setForeground(0,Qt.black)
- self.appliEficas.noeudColore.update_node_label
+ self.appliEficas.noeudColore.updateNodeLabel
- def update_node_label_in_blue(self):
+ def updateNodeLabelInBlue(self):
if hasattr(self.appliEficas,'noeudColore'): self.appliEficas.noeudColore.setForeground(0,Qt.black)
self.setForeground(0,Qt.blue)
- labeltext,fonte,couleur = self.item.GetLabelText()
+ labeltext,fonte,couleur = self.item.getLabelText()
self.setText(0, labeltext)
self.appliEficas.noeudColore=self
- def update_plusieurs_node_label_in_blue(self,liste):
+ def updatePlusieursNodeLabelInBlue(self,liste):
if hasattr(self.appliEficas,'listeNoeudsColores'):
for noeud in self.appliEficas.listeNoeudsColores:
noeud.setTextColor( 0,Qt.black)
- noeud.update_node_label()
+ noeud.updateNodeLabel()
self.appliEficas.listeNoeudsColores=[]
for noeud in liste :
noeud.setTextColor( 0,Qt.blue )
- labeltext,fonte,couleur = noeud.item.GetLabelText()
+ labeltext,fonte,couleur = noeud.item.getLabelText()
noeud.setText(0, labeltext)
self.appliEficas.listeNoeudsColores.append(noeud)
- def update_node_texte_in_black(self):
+ def updateNodeTexteInBlack(self):
""" Met a jour les noms des SD et valeurs des mots-cles """
self.setTextColor( 1,Qt.black )
- value = self.item.GetText()
+ value = self.item.getText()
self.setText(1, value)
- def update_node_texte(self):
+ def updateNodeTexte(self):
""" Met a jour les noms des SD et valeurs des mots-cles """
- value = self.item.GetText()
+ value = self.item.getText()
self.setText(1, value)
- def update_node_texte_in_blue(self):
+ def updateNodeTexteInBlue(self):
self.setTextColor( 1,Qt.blue )
- value = self.item.GetText()
+ value = self.item.getText()
self.setText(1, value)
- def update_nodes(self):
- #print 'NODE update_nodes', self.item.GetLabelText()
- self.build_children()
+ def updateNodes(self):
+ #print 'NODE updateNodes', self.item.getLabelText()
+ self.buildChildren()
- def update_valid(self) :
+ def updateValid(self) :
"""Cette methode a pour but de mettre a jour la validite du noeud
et de propager la demande de mise a jour a son parent
"""
- #print "NODE update_valid", self.item.GetLabelText()
- self.update_node_valid()
+ #print "NODE updateValid", self.item.getLabelText()
+ self.updateNodeValid()
try :
- self.treeParent.update_valid()
+ self.treeParent.updateValid()
except:
pass
- def update_texte(self):
+ def updateTexte(self):
""" Met a jour les noms des SD et valeurs des mots-cles """
- #print "NODE update_texte", self.item.GetLabelText()
- self.update_node_texte()
+ #print "NODE updateTexte", self.item.getLabelText()
+ self.updateNodeVexte()
if self.isExpanded() :
for child in self.children:
- if child.isHidden() == false : child.update_texte()
+ if child.isHidden() == false : child.updateTexte()
def forceRecalculChildren(self,niveau):
Declenche la copie de l'objet item avec pour cible
l'objet passe en argument : node_selected
"""
- objet_a_copier = self.item.get_copie_objet()
+ objet_a_copier = self.item.getCopieObjet()
child=node_selected.doPasteCommande(objet_a_copier,pos)
if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
- self.update_node_label_in_black()
+ self.updateNodeLabelInBlack()
return child
def doPasteCommande(self,objet_a_copier,pos='after'):
"""
Realise la copie de l'objet passe en argument (objet_a_copier)
"""
- objet = objet_a_copier.item.get_copie_objet()
- child = self.append_child(objet,pos='first')
+ objet = objet_a_copier.item.getCopieObjet()
+ child = self.appendChild(objet,pos='first')
return child
def plieToutEtReafficheSaufItem(self, itemADeplier):
- #print "je suis dans plieToutEtReaffiche", self.item.get_nom()
self.inhibeExpand=True
from InterfaceQT4 import compojdc
if (isinstance(self, compojdc.Node)) :
self.inhibeExpand=False
def plieToutEtReaffiche(self):
+ #print ('plieToutEtReaffiche', self.item.getNom())
from InterfaceQT4 import compojdc
if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return
self.inhibeExpand=True
if (isinstance(item,compobloc.Node)) : continue
item.setPlie()
self.affichePanneau()
+ #print ("fin plieToutEtReaffiche", self.item.getNom())
def deplieToutEtReaffiche(self):
self.editor.deplier = True
def setPlie(self):
#print "je mets inhibeExpand a true dans setPlie"
- #print "je suis dans plieTout", self.item.get_nom()
+ #print ("je suis dans plieTout", self.item.getNom())
from . import compojdc
if self.fenetre == self.editor.fenetreCentraleAffichee and isinstance(self.treeParent,compojdc.Node):
return
# item.appartientAUnNoeudPlie=False
def setPlieChildren(self):
- #print ("dans setPlieChildren pour", self.item.nom)
self.plie=True
+ from InterfaceQT4 import composimp
+ if isinstance(self,composimp.Node) : return
for c in self.children :
c.setPlieChildren()
- #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
+ #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0]
c.appartientAUnNoeudPlie=True
c.plie=True
#print "dans setPlieChildren plie", c.item.nom
- c.setExpanded(False)
+ # 01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire
+ #if not (isinstance(c,composimp.Node)) :c.setExpanded(False)
# Pour les blocs et les motcles list
# on affiche un niveau de plus
niveauPere=niveauPere.treeParent
for c in self.children :
c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
- #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie
+ #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie)
c.setExpanded(False)
- # on affiche un niveau de plus
- #if isinstance(self,compomclist.Node) :
- #if isinstance(self,compobloc.Node) :
- # niveauPere=self.treeParent
- # while (isinstance(niveauPere,compobloc.Node)):
- # niveauPere=niveauPere.treeParent
- # for c in self.children :
- # c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
def setDeplie(self):
#print "dans setPlieChildren pour", self.item.nom
#print "je mets inhibeExpand a false dans setDePlie"
def setDeplieChildren(self):
- #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
+ #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.getLabelText()
for c in self.children :
c.setDeplieChildren()
#print "dans setDeplieChildren ", c.item.nom
class BLOCTreeItem(compofact.FACTTreeItem):
itemNode=Node
- def get_objet(self,name) :
- for v in self.object.mc_liste:
- if v.nom == name : return v
- return None
+ #def get_objet(self,name) :
+ # for v in self.object.mcListe:
+ # if v.nom == name : return v
+ # return None
- def iscopiable(self):
+ def isCopiable(self):
return 0
def createPopUpMenu(self):
typeNode.PopUpMenuNodePartiel.createPopUpMenu(self)
- self.Decommente = QAction(tr("Decommenter"),self.tree)
- self.Decommente.triggered.connect(self.Decommenter)
+ self.Decommente = QAction(tr("decommenter"),self.tree)
+ self.Decommente.triggered.connect(self.decommenter)
self.Decommente.setStatusTip(tr("Decommente la commande "))
- if hasattr(self.item,'uncomment'):
+ if hasattr(self.item,'unComment'):
self.menu.addAction(self.Decommente)
- def Decommenter(self) :
+ def decommenter(self) :
item= self.tree.currentItem()
item.unCommentIt()
- def update_node_label(self) :
+ def updateNodeLabel(self) :
"""
"""
- debComm=self.item.GetText()
+ debComm=self.item.getText()
self.setText(1,debComm)
itemNode=Node
def init(self):
- self.setfunction = self.set_valeur
+ self.setFunction = self.setValeur
- def GetIconName(self):
+ def getIconName(self):
"""
Retourne le nom de l'icone associee au noeud qui porte self,
dependant de la validite de l'objet
"""
return "ast-white-percent"
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
"""
return tr('Commentaire'),None,None
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la valeur de l'objet Commentaire cad son texte
"""
- return self.object.get_valeur() or ''
+ return self.object.getValeur() or ''
- def GetText(self):
+ def getText(self):
texte = self.object.valeur
texte = texte.split('\n')[0]
if len(texte) < 25 :
else :
return texte[0:24]
- def set_valeur(self,valeur):
+ def setValeur(self,valeur):
"""
Affecte valeur a l'objet COMMENTAIRE
"""
- self.object.set_valeur(valeur)
+ self.object.setValeur(valeur)
- def GetSubList(self):
+ def getSubList(self):
"""
Retourne la liste des fils de self
"""
return []
- def get_objet_commentarise(self):
+ def getObjetCommentarise(self):
"""
- La methode get_objet_commentarise() de la classe compocomm.COMMTreeItem
- surcharge la methode get_objet_commentarise de la classe Objecttreeitem.ObjectTreeItem
+ La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem
+ surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem
elle a pour but d'empecher l'utilisateur final de commentariser un commentaire.
"""
raise EficasException( 'Impossible de commentariser un commentaire' )
itemNode=compocomm.Node
def init(self):
- self.setfunction = self.set_valeur
+ self.setFunction = self.setValeur
- def GetIconName(self):
+ def getIconName(self):
"""
Retourne le nom de l'icone associee au noeud qui porte self,
dependant de la validite de l'objet
NB : une commande commentarisee est toujours valide ...
"""
- if self.isvalid():
+ if self.isValid():
return "ast-green-percent"
else:
return "ast-red-percent"
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
"""
return 'commentaire'
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la valeur de la commande commentarisee cad son texte
"""
- return self.object.get_valeur() or ''
+ return self.object.getValeur() or ''
- def GetText(self):
+ def getText(self):
texte = self.object.valeur
texte = texte.split('\n')[0]
if len(texte) < 25 :
else :
return texte[0:24]
- def set_valeur(self,valeur):
+ def setValeur(self,valeur):
"""
Afefcte valeur a l'objet commande commentarisee
"""
- self.object.set_valeur(valeur)
+ self.object.setValeur(valeur)
- def GetSubList(self):
+ def getSubList(self):
"""
Retourne la liste des fils de self
"""
return []
- def uncomment(self):
+ def unComment(self):
"""
Demande a l'objet commande commentarisee de se decommentariser.
Si l'operation s'effectue correctement, retourne l'objet commande
et eventuellement le nom de la sd produite, sinon leve une exception
"""
try:
- commande,nom = self.object.uncomment()
+ commande,nom = self.object.unComment()
#self.parent.children[pos].select()
except Exception as e:
traceback.print_exc()
#
from __future__ import absolute_import
-from . import browser
-from . import typeNode
+from InterfaceQT4 import browser
+from InterfaceQT4 import typeNode
from Extensions.i18n import tr
from Editeur import Objecttreeitem
import six
+import traceback
class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
def getPanelGroupe(self,parentQt,commande,insertIn=-1):
- import traceback
maDefinition=self.item.get_definition()
monObjet=self.item.object
monNom=self.item.nom
if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
else : self.niveau=1
#if hasattr(self,'plie') :print self.item.nom, self.plie
- #if maDefinition.sensLayout == 'horizontal':
- # from .monWidgetFact import MonWidgetFactHorizontal
- # widget=MonWidgetFactHorizontal(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+ #if maDefinition.fenetreIhm == 'Tableau':
+ # from InterfaceQt4.monWidgetFact import MonWidgetFactTableau
+ # widget=MonWidgetFactTableau(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
#elif hasattr(self,'plie') and self.plie==True :
if hasattr(self,'plie') and self.plie==True :
- from .monWidgetFactPlie import MonWidgetFactPlie
+ from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
else:
- from .monWidgetFact import MonWidgetFact
+ from InterfaceQT4.monWidgetFact import MonWidgetFact
widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
return widget
class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
itemNode=Node
- def IsExpandable(self):
+ def isExpandable(self):
return 1
- def GetText(self):
+ def getText(self):
return ''
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte à afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
- la couleur du texte
"""
# None --> fonte et couleur par defaut
- if not(hasattr(self.object,'getlabeltext')): return self.object.nom,None,None
- return self.object.getlabeltext(),None,None
+ if not(hasattr(self.object,'getLabelText')): return self.object.nom,None,None
+ return self.object.getLabelText(),None,None
- def isvalid(self):
- return self.object.isvalid()
+ def isValid(self):
+ return self.object.isValid()
- def iscopiable(self):
+ def isCopiable(self):
return 1
- def GetIconName(self):
- if self.object.isvalid():
+ def getIconName(self):
+ if self.object.isValid():
return "ast-green-los"
- elif self.object.isoblig():
+ elif self.object.isOblig():
return "ast-red-los"
else:
return "ast-yel-los"
# keys=self.object.mc_dict
# return keys
- def GetSubList(self):
+ def getSubList(self):
"""
Reactualise la liste des items fils stockes dans self.sublist
"""
- liste=self.object.mc_liste
+ liste=self.object.mcListe
sublist=[None]*len(liste)
# suppression des items lies aux objets disparus
for item in self.sublist:
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
- def setfunction(value, object=obj):
+ def setFunction(value, object=obj):
object.setval(value)
- item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+ item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
sublist[pos]=item
pos=pos+1
self.sublist=sublist
return self.sublist
- def additem(self,name,pos):
- objet = self.object.addentite(name,pos)
+ def addItem(self,name,pos):
+ objet = self.object.addEntite(name,pos)
return objet
- def suppitem(self,item) :
+ def suppItem(self,item) :
"""
Cette methode a pour fonction de supprimer l'item passee en argument
des fils de l'item FACT qui est son pere
- item.getObject() = MCSIMP ou MCBLOC
"""
itemobject=item.getObject()
- if itemobject.isoblig() :
- #self.editor.affiche_infos(tr('Impossible de supprimer un mot-cle obligatoire '),Qt.red)
+ if itemobject.isOblig() :
return (0, tr('Impossible de supprimer un mot-cle obligatoire '))
- if self.object.suppentite(itemobject):
+ if self.object.suppEntite(itemobject):
message = tr("Mot-cle %s supprime")+ six.text_type(itemobject.nom)
- #self.editor.affiche_commentaire(message)
return (1, message)
else:
- #self.editor.affiche_infos(tr('Pb interne : impossible de supprimer ce mot-cle'),Qt.red)
return (0,tr('Pb interne : impossible de supprimer ce mot-cle'))
import Accas
itemNode=FormuleNode
def init(self):
- self.setfunction = self.set_valeur
+ self.setFunction = self.setValeur
# ---------------------------------------------------------------------------
# API de FORMULE pour l'arbre
# ---------------------------------------------------------------------------
- def GetSubList(self):
+ def getSubList(self):
"""
Retourne la liste des fils de self
On considere que FORMULE n'a pas de fils
# de facon traditionnelle
return []
- def GetIconName(self):
+ def getIconName(self):
"""
Retourne le nom de l'icone a afficher dans l'arbre
Ce nom depend de la validite de l'objet
"""
- if self.object.isactif():
- if self.object.isvalid():
+ if self.object.isActif():
+ if self.object.isValid():
return "ast-green-square"
else:
return "ast-red-square"
else:
return "ast-white-text"
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
- la couleur du texte
"""
return self.labeltext,None,None
- #if self.object.isactif():
+ #if self.object.isActif():
# None --> fonte et couleur par defaut
# return tr(self.labeltext),None,None
#else:
# du parametre = API graphique de la FORMULE pour Panel et EFICAS
# ---------------------------------------------------------------------------
- def get_nom(self):
+ def getNom(self):
"""
Retourne le nom de la FORMULE
"""
- return self.object.get_nom()
+ return self.object.getNom()
- def get_type(self):
+ def getType(self):
"""
Retourne le type de la valeur retournee par la FORMULE
"""
return self.object.type_retourne
- def get_args(self):
+ def getArgs(self):
"""
Retourne les arguments de la FORMULE
"""
args=""
- for mot in self.object.mc_liste:
+ for mot in self.object.mcListe:
if mot.nom == 'NOM_PARA':
args=mot.valeur
break
pass
return args
- def get_corps(self):
+ def getCorps(self):
"""
Retourne le corps de la FORMULE
"""
corps=""
- for mot in self.object.mc_liste:
+ for mot in self.object.mcListe:
if mot.nom == 'VALE':
corps=mot.valeur
break
return corps
- def get_liste_types_autorises(self):
+ def getListeTypesAutorises(self):
"""
Retourne la liste des types autorises pour les valeurs de sortie
d'une FORMULE
"""
return self.object.l_types_autorises
- def save_formule(self,new_nom,new_typ,new_arg,new_exp):
+ def saveFormule(self,new_nom,new_typ,new_arg,new_exp):
"""
Verifie si (new_nom,new_typ,new_arg,new_exp) definit bien une FORMULE
licite :
- si non, laisse les parametres anciens de la FORMULE inchanges et
retourne 0
"""
- test,erreur = self.object.verif_formule_python(formule=(new_nom,new_typ,new_arg,
+ test,erreur = self.object.verifFormule_python(formule=(new_nom,new_typ,new_arg,
new_exp))
if test :
# la formule est bien correcte : on sauve les nouveaux parametres
- test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
+ test=self.object.updateFormulePython(formule=(new_nom,new_typ,new_exp,new_arg))
return test,erreur
# ---------------------------------------------------------------------------
# Acces aux methodes de verification de l'objet FORM_ETAPE
# ---------------------------------------------------------------------------
- def verif_nom(self,nom):
+ def verifNom(self,nom):
"""
Lance la verification du nom passe en argument
"""
- return self.object.verif_nom(nom)
+ return self.object.verifNom(nom)
- def verif_arguments(self,arguments):
+ def verifArguments(self,arguments):
"""
Lance la verification des arguments passes en argument
"""
- return self.object.verif_arguments('('+arguments+')')
+ return self.object.verifArguments('('+arguments+')')
- def verif_formule(self,formule):
+ def verifFormule(self,formule):
"""
Lance la verification de FORMULE passee en argument
"""
- return self.object.verif_formule(formule=formule)
+ return self.object.verifFormule(formule=formule)
- def verif_formule_python(self,formule):
+ def verifFormule_python(self,formule):
"""
Lance la verification de FORMULE passee en argument
"""
- return self.object.verif_formule_python(formule=formule)
+ return self.object.verifFormule_python(formule=formule)
import Accas
treeitem =FORMULETreeItem
typeNode.PopUpMenuRacine.createPopUpMenu(self)
def addParameters(self,apres):
- param=self.append_child("PARAMETRE",pos=0)
+ param=self.appendChild("PARAMETRE",pos=0)
return param
class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
itemNode=Node
- def IsExpandable(self):
+ def isExpandable(self):
return 1
- def GetText(self):
+ def getText(self):
return " "
- def GetLabelText(self):
+ def getLabelText(self):
# None --> fonte et couleur par defaut
return tr(self.object.nom),None,None
- def get_jdc(self):
+ def getJdc(self):
"""
Retourne l'objet pointe par self
"""
return self.object
- def GetIconName(self):
- if self.object.isvalid():
+ def getIconName(self):
+ if self.object.isValid():
return "ast-green-square"
else:
return "ast-red-square"
# else:
# return range(len(self.object.etapes))
- def additem(self,name,pos):
- cmd = self._object.addentite(name,pos)
+ def addItem(self,name,pos):
+ cmd = self._object.addEntite(name,pos)
return cmd
- def suppitem(self,item) :
+ def suppItem(self,item) :
# item = item de l'ETAPE a supprimer du JDC
# item.getObject() = ETAPE ou COMMENTAIRE
# self.object = JDC
itemobject=item.getObject()
- if self.object.suppentite(itemobject):
+ if self.object.suppEntite(itemobject):
if itemobject.nature == "COMMENTAIRE" :
message = tr("Commentaire supprime")
else :
message=tr("Pb interne : impossible de supprimer cet objet")
return 0,message
- def GetSubList(self):
+ def getSubList(self):
"""
Retourne la liste des items fils de l'item jdc.
Cette liste est conservee et mise a jour a chaque appel
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
- item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj)
+ item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj)
sublist[pos]=item
pos=pos+1
self.sublist=sublist
return self.sublist
- def get_l_noms_etapes(self):
+ def getLNomsEtapes(self):
""" Retourne la liste des noms des etapes de self.object"""
- return self.object.get_l_noms_etapes()
+ return self.object.getLNomsEtapes()
- def get_liste_cmd(self):
- listeCmd = self.object.niveau.definition.get_liste_cmd()
+ def getListeCmd(self):
+ listeCmd = self.object.niveau.definition.getListeCmd()
return listeCmd
import Accas
# Modules Eficas
from Editeur import Objecttreeitem
from Extensions.i18n import tr
-from . import compooper
-from . import browser
-from . import typeNode
+from InterfaceQT4 import compooper
+from InterfaceQT4 import browser
+from InterfaceQT4 import typeNode
from PyQt5.QtWidgets import QAction
from PyQt5.QtCore import Qt
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
- if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
+ if ("AFFE_CARA_ELEM" in self.item.getGenealogie()) and self.editor.salome:
self.ViewElt = QAction(tr('View3D'),self.tree)
self.ViewElt.triggered.connect(self.view3D)
self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
self.menu.addAction(self.ViewElt)
- if self.item.isvalid() :
+ if self.item.isValid() :
self.ViewElt.setEnabled(1)
else:
self.ViewElt.setEnabled(0)
class INCLUDETreeItemBase(MACROTreeItem):
- def __init__(self,appli, labeltext, object, setfunction):
- MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
+ def __init__(self,appli, labeltext, object, setFunction):
+ MACROTreeItem.__init__(self,appli, labeltext, object, setFunction)
- def iscopiable(self):
+ def isCopiable(self):
return 0
if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
#L'include n'est pas initialise
- self.item.object.build_include(None,"")
+ self.item.object.buildInclude(None,"")
# On cree un nouvel onglet dans le bureau
self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
text="""DEBUT()
FIN()"""
- self.object.build_poursuite(None,text)
+ self.object.buildPoursuite(None,text)
# On cree un nouvel onglet dans le bureau
self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
# ------------------------------------
-def treeitem(appli, labeltext, object, setfunction=None):
+def treeitem(appli, labeltext, object, setFunction=None):
""" Factory qui retourne l'item adapte au type de macro :
INCLUDE, POURSUITE, MACRO
"""
if object.nom == "INCLUDE_MATERIAU":
- return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setfunction)
+ return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setFunction)
elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
- return INCLUDETreeItem(appli, labeltext, object, setfunction)
+ return INCLUDETreeItem(appli, labeltext, object, setFunction)
elif object.nom == "POURSUITE":
- return POURSUITETreeItem(appli, labeltext, object, setfunction)
+ return POURSUITETreeItem(appli, labeltext, object, setFunction)
else:
- return MACROTreeItem(appli, labeltext, object, setfunction)
+ return MACROTreeItem(appli, labeltext, object, setFunction)
import Accas
objet=Accas.MACRO_ETAPE
monObjet=self.item.object
monNom=self.item.nom
maCommande=commande
- #print "ds getPanelGroupe" , self.item.nom
if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
else : self.niveau=1
+ # attention si l objet est une mclist on utilise bloc
if not (monObjet.isMCList()) :
if hasattr(self,'plie') and self.plie==True :
- from .monWidgetFactPlie import MonWidgetFactPlie
+ from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
else:
- from .monWidgetFact import MonWidgetFact
+ from InterfaceQT4.monWidgetFact import MonWidgetFact
widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
else :
- from .monWidgetBloc import MonWidgetBloc
+ from InterfaceQT4.monWidgetBloc import MonWidgetBloc
widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
return widget
def doPaste(self,node_selected,pos):
- objet_a_copier = self.item.get_copie_objet()
+ objet_a_copier = self.item.getCopieObjet()
# before est un effet de bord heureux sur l index
child=self.appendBrother(objet_a_copier,'before')
if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
- self.update_node_label_in_black()
- self.parent().build_children()
+ self.update_NodeLabelInBlack()
+ self.parent().buildChildren()
return child
def updateDelegate(self):
if len(self._object) > 1:
- self.setdelegate(self._object)
+ self.setDelegate(self._object)
else:
- self.setdelegate(self._object.data[0])
+ self.setDelegate(self._object.data[0])
def panel(self,jdcdisplay,pane,node):
""" Retourne une instance de l'objet panneau associe a l'item (self)
else:
return compofact.FACTPanel(jdcdisplay,pane,node)
- def IsExpandable(self):
+ def isExpandable(self):
if len(self._object) > 1:
- return Objecttreeitem.SequenceTreeItem.IsExpandable(self)
+ return Objecttreeitem.SequenceTreeItem.isExpandable(self)
else:
- return compofact.FACTTreeItem.IsExpandable(self)
+ return compofact.FACTTreeItem.isExpandable(self)
- def GetSubList(self):
+ def getSubList(self):
self.updateDelegate()
if len(self._object) <= 1:
self._object.data[0].alt_parent=self._object
- return compofact.FACTTreeItem.GetSubList(self)
+ return compofact.FACTTreeItem.getSubList(self)
liste=self._object.data
sublist=[None]*len(liste)
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
- def setfunction(value, object=obj):
+ def setFunction(value, object=obj):
object=value
- item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+ item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
sublist[pos]=item
#Attention : on ajoute une information supplementaire pour l'actualisation de
# la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE
self.sublist=sublist
return self.sublist
- def GetIconName(self):
- if self._object.isvalid():
+ def getIconName(self):
+ if self._object.isValid():
return "ast-green-los"
- elif self._object.isoblig():
+ elif self._object.isOblig():
return "ast-red-los"
else:
return "ast-yel-los"
- def get_docu(self):
+ def getDocu(self):
""" Retourne la clef de doc de l'objet pointe par self """
- return self.object.get_docu()
+ return self.object.getDocu()
- def iscopiable(self):
+ def isCopiable(self):
if len(self._object) > 1:
- return Objecttreeitem.SequenceTreeItem.iscopiable(self)
+ return Objecttreeitem.SequenceTreeItem.isCopiable(self)
else:
- return compofact.FACTTreeItem.iscopiable(self)
+ return compofact.FACTTreeItem.isCopiable(self)
def isMCFact(self):
"""
"""
return len(self._object) > 1
- def get_copie_objet(self):
+ def getCopieObjet(self):
return self._object.data[0].copy()
- def additem(self,obj,pos):
- #print "compomclist.additem",obj,pos
+ def addItem(self,obj,pos):
+ #print "compomclist.addItem",obj,pos
if len(self._object) <= 1:
- return compofact.FACTTreeItem.additem(self,obj,pos)
+ return compofact.FACTTreeItem.addItem(self,obj,pos)
- o= self.object.addentite(obj,pos)
+ o= self.object.addEntite(obj,pos)
return o
- def suppitem(self,item):
+ def suppItem(self,item):
"""
Retire un objet MCFACT de la MCList (self.object)
"""
- #print "compomclist.suppitem",item
+ #print "compomclist.suppItem",item
obj=item.getObject()
if len(self._object) <= 1:
- return compofact.FACTTreeItem.suppitem(self,item)
+ return compofact.FACTTreeItem.suppItem(self,item)
- if self.object.suppentite(obj):
+ if self.object.suppEntite(obj):
if len(self._object) == 1: self.updateDelegate()
message = "Mot-clef " + obj.nom + " supprime"
- #self.editor.affiche_commentaire(message)
return (1,message)
else:
return (0,tr('Impossible de supprimer ce mot-clef'))
import Accas
objet = Accas.MCList
-def treeitem(appli,labeltext,object,setfunction):
+def treeitem(appli,labeltext,object,setFunction):
""" Factory qui produit un objet treeitem adapte a un objet
Accas.MCList (attribut objet de ce module)
"""
- return MCListTreeItem(appli,labeltext,object,setfunction)
+ return MCListTreeItem(appli,labeltext,object,setFunction)
self.treeParent.tree.openPersistentEditor(self,1)
self.monWidgetNom=self.treeParent.tree.itemWidget(self,1)
self.monWidgetNom.returnPressed.connect(self.nomme)
- if self.item.GetIconName() == "ast-red-square" : self.monWidgetNom.setDisabled(True)
+ if self.item.getIconName() == "ast-red-square" : self.monWidgetNom.setDisabled(True)
#else : self.monWidgetNom.setFocus() ;self.monWidgetNom.setDisabled(False)
def nomme(self):
nom=str(self.monWidgetNom.text())
- self.editor.init_modif()
- test,mess = self.item.nomme_sd(nom)
+ self.editor.initModif()
+ test,mess = self.item.nommeSd(nom)
if (test== 0):
- self.editor.affiche_infos(mess,Qt.red)
- old=self.item.GetText()
+ self.editor.afficheInfos(mess,Qt.red)
+ old=self.item.getText()
self.monWidgetNom.setText(old)
else :
- self.editor.affiche_commentaire(tr("Nommage du concept effectue"))
+ self.editor.afficheCommentaire(tr("Nommage du concept effectue"))
self.onValid()
try :
self.fenetre.LENom.setText(nom)
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
- if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
+ if ("AFFE_CARA_ELEM" in self.item.getGenealogie()) and self.editor.salome:
self.ViewElt = QAction(tr('View3D'),self.tree)
self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D)
self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
self.menu.addAction(self.ViewElt)
- if self.item.isvalid() :
+ if self.item.isValid() :
self.ViewElt.setEnabled(1)
else:
self.ViewElt.setEnabled(0)
- if self.item.get_nom() == "DISTRIBUTION" :
+ if self.item.getNom() == "DISTRIBUTION" :
self.Graphe = QAction(tr('Graphique'),self.tree)
self.Graphe.triggered.connect(self.viewPng)
self.Graphe.setStatusTip(tr("affiche la distribution "))
self.menu.addAction(self.Graphe)
- if self.item.isvalid() :
+ if self.item.isValid() :
self.Graphe.setEnabled(1)
else:
self.Graphe.setEnabled(0)
g.gener(self.item.object, format='beautifie')
stdGener = g.getGenerateur()
loi = list(g.dictMCLois.keys())[0]
- nomLoi = loi.get_name()
+ nomLoi = loi.getName()
(fd, fichier) = tempfile.mkstemp(prefix = "openturns_graph_", suffix = ".png")
os.close(fd)
chemin = os.path.dirname(fichier)
"""
itemNode=Node
- def IsExpandable(self):
+ def isExpandable(self):
return 1
- def GetIconName(self):
+ def getIconName(self):
"""
Retourne le nom de l'icone a afficher dans l'arbre
Ce nom depend de la validite de l'objet
"""
- if not self.object.isactif():
+ if not self.object.isActif():
return "ast-white-square"
- elif self.object.isvalid():
+ elif self.object.isValid():
return "ast-green-square"
else:
- valid=self.valid_child()
- valid=valid * self.valid_regles("non")
+ valid=self.validChild()
+ valid=valid * self.validRegles("non")
if self.reste_val != {}:
valid=0
if valid==0 :
pass
return "ast-yellow-square"
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud représentant l'item
- la fonte dans laquelle afficher ce texte
- la couleur du texte
"""
return self.labeltext,None,None
- #if self.object.isactif():
+ #if self.object.isActif():
# None --> fonte et couleur par défaut
# return self.labeltext,None,None
#else:
# return self.labeltext, None, None #CS_pbruno todo
- def get_objet(self,name) :
- for v in self.object.mc_liste:
- if v.nom == name : return v
- return None
+ #def get_objet(self,name) :
+ # for v in self.object.mcListe:
+ # if v.nom == name : return v
+ # return None
- def get_type_sd_prod(self):
- """
- Retourne le nom du type du concept résultat de l'étape
- """
- sd_prod=self.object.get_type_produit()
- if sd_prod:
- return sd_prod.__name__
- else:
- return ""
-
- def additem(self,name,pos):
- mcent = self._object.addentite(name,pos)
+ # def getType_sd_prod(self):
+ # """
+ # Retourne le nom du type du concept résultat de l'étape
+ # """
+ # sd_prod=self.object.getType_produit()
+ # if sd_prod:
+ # return sd_prod.__name__
+ # else:
+ # return ""
+
+ def addItem(self,name,pos):
+ mcent = self._object.addEntite(name,pos)
return mcent
- def suppitem(self,item) :
+ def suppItem(self,item) :
# item : item du MOCLE de l'ETAPE a supprimer
# item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList
itemobject=item.getObject()
- if itemobject.isoblig() :
- #self.editor.affiche_infos(tr('Impossible de supprimer un mot-clef obligatoire '),Qt.red)
+ if itemobject.isOblig() :
return (0,tr('Impossible de supprimer un mot-clef obligatoire '))
- if self.object.suppentite(itemobject):
+ if self.object.suppEntite(itemobject):
message = tr("Mot-clef %s supprime " , itemobject.nom)
- #self.editor.affiche_commentaire(message)
return (1,message)
else :
- #self.editor.affiche_commentaire(tr('Pb interne : impossible de supprimer ce mot-clef'),Qt.red)
return (0,tr('Pb interne : impossible de supprimer ce mot-clef'))
- def GetText(self):
+ def getText(self):
try:
- return self.object.get_sdname()
+ return self.object.getSdname()
except:
return ''
# keys=self.object.mc_dict
# return keys
- def GetSubList(self):
+ def getSubList(self):
"""
Reactualise la liste des items fils stockes dans self.sublist
"""
- if self.isactif():
- liste=self.object.mc_liste
+ if self.isActif():
+ liste=self.object.mcListe
else:
liste=[]
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
- def setfunction(value, object=obj):
+ def setFunction(value, object=obj):
object.setval(value)
- item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+ item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
sublist[pos]=item
pos=pos+1
self.sublist=sublist
return self.sublist
- def isvalid(self):
- return self.object.isvalid()
+ def isValid(self):
+ return self.object.isValid()
- def iscopiable(self):
+ def isCopiable(self):
"""
Retourne 1 si l'objet est copiable, 0 sinon
"""
def update(self,item):
if item.sd and item.sd.nom:
- self.nomme_sd(item.sd.nom)
+ self.nommeSd(item.sd.nom)
- def nomme_sd(self,nom):
+ def nommeSd(self,nom):
""" Lance la méthode de nommage de la SD """
oldnom=""
if self.object.sd != None :
oldnom=self.object.sd.nom
- test,mess= self.object.nomme_sd(nom)
- if test:self.object.parent.reset_context()
+ test,mess= self.object.nommeSd(nom)
+ if test:self.object.parent.resetContext()
if (test and oldnom in self.appli.dict_reels ):
self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
return test,mess
- def is_reentrant(self):
- return self.object.is_reentrant()
+ def isReentrant(self):
+ return self.object.isReentrant()
- def get_noms_sd_oper_reentrant(self):
- return self.object.get_noms_sd_oper_reentrant()
+ def getNomsSdOperReentrant(self):
+ return self.object.getNomsSdOperReentrant()
- def get_objet_commentarise(self):
+ def getObjetCommentarise(self):
"""
Cette méthode retourne un objet commentarisé
représentatif de self.object
"""
# Format de fichier utilisé
format=self.appli.appliEficas.format_fichier
- return self.object.get_objet_commentarise(format)
+ return self.object.getObjetCommentarise(format)
- def get_objet_commentarise_BAK(self):
+ def getObjetCommentarise_BAK(self):
"""
Cette méthode retourne un objet commentarisé
représentatif de self.object
pos=self.object.parent.etapes.index(self.object)
parent=self.object.parent
- self.object.parent.suppentite(self.object)
- parent.addentite(commande_comment,pos)
+ self.object.parent.suppEntite(self.object)
+ parent.addEntite(commande_comment,pos)
return commande_comment
itemNode=Node
def init(self):
- self.setfunction = self.set_valeur
+ self.setFunction = self.setValeur
# ---------------------------------------------------------------------------
# API du PARAMETRE pour l'arbre
# ---------------------------------------------------------------------------
- def GetIconName(self):
+ def getIconName(self):
"""
Retourne le nom de l'icone associee au noeud qui porte self,
dependant de la validite de l'objet
NB : un PARAMETRE est toujours valide ...
"""
- if self.isactif():
- if self.isvalid():
+ if self.isActif():
+ if self.isValid():
return "ast-green-square"
else:
return "ast-red-square"
else:
return "ast-white-square"
- def GetLabelText(self):
+ def getLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud representant l'item
- la fonte dans laquelle afficher ce texte
"""
return tr('PARAMETRE'),None,None
- def GetText(self):
+ def getText(self):
"""
Retourne le texte a afficher apres le nom de la commande (ici apres 'parametre')
Ce texte est tronque a 25 caracteres
else :
return texte[0:24]+'...'
- def GetSubList(self):
+ def getSubList(self):
"""
Retourne la liste des fils de self
"""
# du parametre = API graphique du PARAMETRE pour Panel et EFICAS
# ---------------------------------------------------------------------------
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la valeur de l'objet PARAMETRE cad son texte
"""
if self.object.valeur is None: return ''
else: return self.object.valeur
- def get_nom(self):
+ def getNom(self):
"""
Retourne le nom du parametre
"""
return self.object.nom
- def set_valeur(self,new_valeur):
+ def setValeur(self,new_valeur):
"""
Affecte valeur a l'objet PARAMETRE
"""
- self.object.set_valeur(new_valeur)
+ self.object.setValeur(new_valeur)
- def set_nom(self,new_nom):
+ def setNom(self,new_nom):
"""
Renomme le parametre
"""
- self.object.set_nom(new_nom)
- #self.object.set_attribut('nom',new_nom)
+ self.object.setNom(new_nom)
+ #self.object.setAttribut('nom',new_nom)
- def get_fr(self):
+ def getFr(self):
"""
Retourne le fr associe au parametre, cad la bulle d'aide pour EFICAS
"""
from copy import copy,deepcopy
import traceback
-from . import typeNode
+from InterfaceQT4 import typeNode
# Modules Eficas
-from Editeur import Objecttreeitem
-from . import browser
-from Noyau.N_CR import justify_text
+from Editeur import Objecttreeitem
+from InterfaceQT4 import browser
+from Noyau.N_CR import justifyText
from Accas import SalomeEntry
class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
# label informatif
if monObjet.isInformation():
- from .monWidgetInfo import MonWidgetInfo
+ from InterfaceQT4.monWidgetInfo import MonWidgetInfo
widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande)
self.widget=widget
return widget
# Attention il faut gerer les blocs et les facteurs
# a gerer comme dans composimp
# Gestion des matrices
- if self.item.wait_matrice ():
- from .monWidgetMatrice import MonWidgetMatrice
+ if self.item.waitMatrice ():
+ from InterfaceQT4.monWidgetMatrice import MonWidgetMatrice
widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande)
self.widget=widget
return widget
- #print "____________________________", monNom, self.item.wait_co()
- #print "____________________________", monNom, self.item.wait_assd()
+ #print "____________________________", monNom, self.item.waitCo()
+ #print "____________________________", monNom, self.item.waitAssd()
# Gestion d'une seule valeur (eventuellement un tuple ou un complexe)
if maDefinition.into != [] and maDefinition.into != None:
if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into()
if maDefinition.max == 1 :
# A verifier
- if maDefinition.into != [] and maDefinition.into != None:
- if len(monInto) < 4 :
- from .monWidgetRadioButton import MonWidgetRadioButton
+ if maDefinition.intoSug != [] and maDefinition.intoSug != None:
+ from InterfaceQT4.monWidgetCBIntoSug import MonWidgetCBIntoSug
+ widget=MonWidgetCBIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ elif maDefinition.into != [] and maDefinition.into != None:
+ if maDefinition.fenetreIhm=='menuDeroulant' :
+ from InterfaceQT4.monWidgetCB import MonWidgetCB
+ widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ elif len(monInto) < 4 :
+ from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButton
widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
elif len(monInto) < 7 :
- from .monWidget4a6RadioButton import MonWidget4a6RadioButton
+ from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButton
widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetCB import MonWidgetCB
+ from InterfaceQT4.monWidgetCB import MonWidgetCB
widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_bool() :
- from .monWidgetSimpBool import MonWidgetSimpBool
+ elif self.item.waitBool() :
+ from InterfaceQT4.monWidgetSimpBool import MonWidgetSimpBool
widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_fichier():
- from .monWidgetSimpFichier import MonWidgetSimpFichier
+ elif self.item.waitFichier():
+ from InterfaceQT4.monWidgetSimpFichier import MonWidgetSimpFichier
widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande)
# PNPNPN - a faire
- elif self.item.wait_date():
- from .monWidgetDate import MonWidgetDate
+ elif self.item.waitDate():
+ from InterfaceQT4.monWidgetDate import MonWidgetDate
widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_heure():
- from .monWidgetHeure import MonWidgetHeure
+ elif self.item.waitHeure():
+ from InterfaceQT4.monWidgetHeure import MonWidgetHeure
widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_tuple() :
- if self.item.object.definition.type[0].ntuple == 2:
- from .monWidgetSimpTuple2 import MonWidgetSimpTuple2
- widget=MonWidgetSimpTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.object.definition.type[0].ntuple == 3 :
- from .monWidgetSimpTuple3 import MonWidgetSimpTuple3
- widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- else :
- print ("Pas de Tuple de longueur > 3")
- print ("Prevenir la maintenance ")
-
- elif self.item.wait_complex():
- from .monWidgetSimpComplexe import MonWidgetSimpComplexe
+ elif self.item.waitTuple() :
+ num=self.item.object.definition.type[0].ntuple
+ nomDeLaClasse = 'MonWidgetSimpTuple'+str(num)
+ nomDuFichier = 'InterfaceQT4.monWidgetSimpTupleN'
+ try :
+ #if 1 :
+ _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0)
+ #print (_temp)
+ MonWidgetSimpTuple = getattr(_temp,nomDeLaClasse)
+ except :
+ print ("Pas de Tuple de longueur : ", num)
+ # print ("Prevenir la maintenance ")
+ widget=MonWidgetSimpTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+ elif self.item.waitComplex():
+ from InterfaceQT4.monWidgetSimpComplexe import MonWidgetSimpComplexe
widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_co():
- if len(self.item.get_sd_avant_du_bon_type()) == 0 :
- from .monWidgetUniqueSDCO import MonWidgetUniqueSDCO
+ elif self.item.waitCo():
+ if len(self.item.getSdAvantDuBonType()) == 0 :
+ from InterfaceQT4.monWidgetUniqueSDCO import MonWidgetUniqueSDCO
widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetSDCOInto import MonWidgetSDCOInto
+ from InterfaceQT4.monWidgetSDCOInto import MonWidgetSDCOInto
widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_assd():
- if len(self.item.get_sd_avant_du_bon_type()) == 0 :
- from .monWidgetVide import MonWidgetVide
+ elif self.item.waitAssd():
+ if len(self.item.getSdAvantDuBonType()) == 0 :
+ from InterfaceQT4.monWidgetVide import MonWidgetVide
widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif len(self.item.get_sd_avant_du_bon_type()) < 4 :
- from .monWidgetRadioButton import MonWidgetRadioButtonSD
+ elif len(self.item.getSdAvantDuBonType()) < 4 :
+ from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButtonSD
widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif len(self.item.get_sd_avant_du_bon_type()) < 7 :
- from .monWidget4a6RadioButton import MonWidget4a6RadioButtonSD
+ elif len(self.item.getSdAvantDuBonType()) < 7 :
+ from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButtonSD
widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetCB import MonWidgetCBSD
+ from InterfaceQT4.monWidgetCB import MonWidgetCBSD
widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_Salome() and self.editor.salome:
- from .monWidgetSimpSalome import MonWidgetSimpSalome
+ elif self.item.waitSalome() and self.editor.salome:
+ from InterfaceQT4.monWidgetSimpSalome import MonWidgetSimpSalome
widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_TXM():
- from .monWidgetSimpTxt import MonWidgetSimpTxt
+ elif self.item.waitTxm():
+ from InterfaceQT4.monWidgetSimpTxt import MonWidgetSimpTxt
widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetSimpBase import MonWidgetSimpBase
+ from InterfaceQT4.monWidgetSimpBase import MonWidgetSimpBase
widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
# Gestion des listes
else :
if maDefinition.intoSug != [] and maDefinition.intoSug != None:
if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) :
- from .monWidgetIntoSug import MonWidgetIntoSug
+ from InterfaceQT4.monWidgetIntoSug import MonWidgetIntoSug
widget=MonWidgetIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+ from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
#if maDefinition.into != [] and maDefinition.into != None:
# Attention pas fini --> on attend une liste de ASSD avec ordre
- elif self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon():
- #if self.item.is_list_Chargement():
- #from monWidgetPlusieursTuple2AvecChargement import MonWidgetPlusieursTuple2AvecChargement
- #widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- # pass
- #else :
- listeAAfficher = self.item.get_sd_avant_du_bon_type()
+ elif self.item.waitAssd() and self.item.isListSansOrdreNiDoublon():
+ listeAAfficher = self.item.getSdAvantDuBonType()
if len(listeAAfficher) == 0:
- from .monWidgetVide import MonWidgetVide
+ from InterfaceQT4.monWidgetVide import MonWidgetVide
widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursInto import MonWidgetPlusieursInto
+ from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto
widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_assd() :
- listeAAfficher = self.item.get_sd_avant_du_bon_type()
- if len(listeAAfficher) == 0:
- from .monWidgetVide import MonWidgetVide
+ elif self.item.waitAssd() :
+ listeAAfficher = self.item.getSdAvantDuBonType()
+ mctype=maDefinition.type[0]
+ enable_salome_selection = self.editor.salome and \
+ (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \
+ (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection))
+ if enable_salome_selection:
+ from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
+ widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ elif len(listeAAfficher) == 0:
+ from InterfaceQT4.monWidgetVide import MonWidgetVide
widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) :
- from .monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne
+ from InterfaceQT4.monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne
widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD
+ from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD
widget=MonWidgetPlusieursPlieASSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.wait_tuple() :
- if self.item.object.definition.type[0].ntuple == 2:
- from .monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2
- widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif self.item.object.definition.type[0].ntuple == 3 :
- from .monWidgetPlusieursTuple3 import MonWidgetPlusieursTuple3
- widget=MonWidgetPlusieursTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- else :
- print ("Pas de Tuple de longueur > 3")
- print ("Prevenir la maintenance ")
- elif self.item.has_into():
- if self.item.is_list_SansOrdreNiDoublon():
+ elif self.item.waitTuple() :
+ if self.item.object.definition.fenetreIhm == 'Tableau' :
+ from InterfaceQT4.monWidgetTableau import MonWidgetTableau
+ widget=MonWidgetTableau(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ else :
+ num=self.item.object.definition.type[0].ntuple
+ nomDeLaClasse = 'MonWidgetPlusieursTuple'+str(num)
+ nomDuFichier = 'InterfaceQT4.monWidgetPlusieursTupleN'
+ #try:
+ if 1 :
+ _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0)
+ MonWidgetPlusieursTuple = getattr(_temp,nomDeLaClasse)
+ #except :
+ # print ("Pas de Tuple de longueur : ", num)
+ # print ("Prevenir la maintenance ")
+ widget=MonWidgetPlusieursTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+ elif self.item.hasInto():
+ if self.item.isListSansOrdreNiDoublon():
if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) :
- from .monWidgetPlusieursInto import MonWidgetPlusieursInto
+ from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto
widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+ from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) :
- from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne
+ from InterfaceQT4.monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne
widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+ from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- #print 8
if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) :
- from .monWidgetPlusieursBase import MonWidgetPlusieursBase
+ from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
- from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+ from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
self.widget=widget
# ou au mot-clef simple
#
#-----------------------------------------------
- # is_list
- # get_into a priori inutile --> commentee
- # has_into
- # wait_into a priori inutile --> commentee
- # GetMinMax
- # GetMultiplicite
- # GetIntervalle
- # GetListeValeurs
- # get_liste_possible
-
- def is_list(self):
+ # isList
+ # hasInto
+ # getMinMax
+ # getMultiplicite
+ # getIntervalle
+ # getListeValeurs
+ # getListePossible
+
+ def isList(self):
"""
Cette methode indique si le mot cle simple attend une liste (valeur de retour 1)
ou s'il n'en attend pas (valeur de retour 0)
Dans le cas sans validateur, l'information est donnee par l'attribut max
de la definition du mot cle.
Dans le cas avec validateur, il faut combiner l'information precedente avec
- celle issue de l'appel de la methode is_list sur le validateur.On utilisera
+ celle issue de l'appel de la methode isList sur le validateur.On utilisera
l'operateur ET pour effectuer cette combinaison (AndVal).
"""
is_a_list=0
- min,max = self.GetMinMax()
+ min,max = self.getMinMax()
assert (min <= max)
if max > 1 :
is_a_list=1
# Dans le cas avec validateurs, pour que le mot cle soit considere
# comme acceptant une liste, il faut que max soit superieur a 1
- # ET que la methode is_list du validateur retourne 1. Dans les autres cas
+ # ET que la methode isList du validateur retourne 1. Dans les autres cas
# on retournera 0 (n'attend pas de liste)
if self.definition.validators :
- is_a_list= self.definition.validators.is_list() * is_a_list
+ is_a_list= self.definition.validators.isList() * is_a_list
return is_a_list
- def is_list_SansOrdreNiDoublon(self):
+ def isListSansOrdreNiDoublon(self):
if self.definition.homo=="SansOrdreNiDoublon" : return 1
return 0
- def is_list_Chargement(self):
- if self.definition.docu != "" : return 1
- return 0
- def has_into(self):
+ def hasInto(self):
"""
Cette methode indique si le mot cle simple propose un choix (valeur de retour 1)
ou s'il n'en propose pas (valeur de retour 0)
de la definition du mot cle.
Dans le cas avec validateurs, pour que le mot cle soit considere
comme proposant un choix, il faut que into soit present OU
- que la methode has_into du validateur retourne 1. Dans les autres cas
+ que la methode hasInto du validateur retourne 1. Dans les autres cas
on retournera 0 (ne propose pas de choix)
"""
has_an_into=0
if self.definition.into:
has_an_into=1
elif self.definition.validators :
- has_an_into= self.definition.validators.has_into()
+ has_an_into= self.definition.validators.hasInto()
return has_an_into
- def has_intoSug(self):
+ def hasIntoSug(self):
if self.definition.intoSug: return 1
return 0
- def GetMinMax(self):
+ def getMinMax(self):
""" Retourne les valeurs min et max de la definition de object """
- return self.object.get_min_max()
+ return self.object.getMinMax()
- def GetMultiplicite(self):
+ def getMultiplicite(self):
""" A preciser.
Retourne la multiplicite des valeurs affectees a l'objet
represente par l'item. Pour le moment retourne invariablement 1.
"""
return 1
- def GetIntervalle(self):
+ def getIntervalle(self):
"""
Retourne le domaine de valeur attendu par l'objet represente
par l'item.
"""
return self.object.getintervalle()
- def GetListeValeurs(self) :
+ def getListeValeurs(self) :
""" Retourne la liste des valeurs de object """
- valeurs=self.object.get_liste_valeurs()
+ valeurs=self.object.getListeValeurs()
try :
if "R" in self.object.definition.type:
- clef=self.object.GetNomConcept()
+ clef=self.object.getNomConcept()
if clef in self.appli.dict_reels:
if type(valeurs) == tuple:
valeurs_reelles=[]
pass
return valeurs
- def get_liste_possible(self,listeActuelle=[]):
+ def getListePossible(self,listeActuelle=[]):
if hasattr(self.definition.validators,'into'):
valeurspossibles = self.definition.validators.into
else:
else :
valeurspossibles=(valeurspossibles,)
for item in valeurspossibles:
- encorevalide=self.valide_item(item)
+ encorevalide=self.valideItem(item)
if encorevalide :
listevalideitem.append(item)
- #on ne garde que les choix possibles qui passent le test de valide_liste_partielle
+ #on ne garde que les choix possibles qui passent le test de valideListePartielle
listevalideliste=[]
for item in listevalideitem:
- encorevalide=self.valide_liste_partielle(item,listeActuelle)
+ encorevalide=self.valideListePartielle(item,listeActuelle)
if encorevalide :
listevalideliste.append(item)
#print listevalideliste
return listevalideliste
- def get_liste_possible_avecSug(self,listeActuelle=[]):
+ def getListePossibleAvecSug(self,listeActuelle=[]):
if hasattr(self.definition,'intoSug'):
valeurspossibles = self.definition.intoSug
else:
else :
valeurspossibles=(valeurspossibles,)
for item in valeurspossibles:
- encorevalide=self.valide_item(item)
+ encorevalide=self.valideItem(item)
if encorevalide :
listevalideitem.append(item)
- #on ne garde que les choix possibles qui passent le test de valide_liste_partielle
+ #on ne garde que les choix possibles qui passent le test de valideListePartielle
listevalideliste=[]
for item in listevalideitem:
- encorevalide=self.valide_liste_partielle(item,listeActuelle)
+ encorevalide=self.valideListePartielle(item,listeActuelle)
if encorevalide :
listevalideliste.append(item)
return listevalideliste
- def get_liste_param_possible(self):
+ def getListeParamPossible(self):
liste_param=[]
- l1,l2=self.jdc.get_parametres_fonctions_avant_etape(self.get_etape())
+ l1,l2=self.jdc.getParametresFonctionsAvantEtape(self.getEtape())
for param in self.object.jdc.params:
if param.nom not in l1 : continue
- encorevalide=self.valide_item(param.valeur)
+ encorevalide=self.valideItem(param.valeur)
if encorevalide:
type_param=param.valeur.__class__.__name__
for typ in self.definition.type:
# Methodes liees a la validite des valeurs saisies
#
#---------------------------------------------------
- # valide_item
- # valide_liste_partielle
- # valide_liste_complete
- # info_erreur_item
- # info_erreur_liste
- # IsInIntervalle
- # isvalid
-
- def valide_item(self,item):
+ # valideItem
+ # valideListePartielle
+ # valideListeComplete
+ # infoErreurItem
+ # infoErreurListe
+ # isInIntervalle
+ # isValid
+
+ def valideItem(self,item):
"""
La validation est realisee directement par l'objet
"""
- return self.object.valide_item(item)
+ return self.object.valideItem(item)
- def valide_liste_partielle(self,item,listecourante):
+ def valideListePartielle(self,item,listecourante):
#On protege la liste en entree en la copiant
- valeur=listecourante[:]
- valeur.append(item)
- return self.object.valid_valeur_partielle(valeur)
-
- def valide_liste_complete (self,valeur):
- return self.object.valid_valeur(valeur)
+ valeur=list(listecourante)
+ if item : valeur.append(item)
+ return self.object.validValeurPartielle(valeur)
- def valide_val (self,valeur):
- return self.object.valid_val(valeur)
+ def valideListeComplete (self,valeur):
+ return self.object.validValeur(valeur)
- def info_erreur_item(self) :
+ def infoErreurItem(self) :
commentaire=""
if self.definition.validators :
- commentaire=self.definition.validators.info_erreur_item()
+ commentaire=self.definition.validators.infoErreurItem()
return commentaire
def aide(self) :
commentaire=self.definition.validators.aide()
return commentaire
- def info_erreur_liste(self) :
+ def infoErreurListe(self) :
commentaire=""
if self.definition.validators :
- commentaire=self.definition.validators.info_erreur_liste()
+ commentaire=self.definition.validators.infoErreurListe()
return commentaire
- def IsInIntervalle(self,valeur):
+ def isInIntervalle(self,valeur):
"""
Retourne 1 si la valeur est dans l'intervalle permis par
l'objet represente par l'item.
"""
- return self.valide_item(valeur)
+ return self.valideItem(valeur)
- def isvalid(self):
- valide=self.object.isvalid()
+ def isValid(self):
+ valide=self.object.isValid()
return valide
#--------------------------------------------------
# Autres ...
#
#---------------------------------------------------
- # GetIconName
- # GetText
- # set_valeur_co
- # get_sd_avant_du_bon_type
- # delete_valeur_co
+ # getIconName
+ # getText
+ # setValeurCo
+ # getSdAvantDuBonType
- def GetIconName(self):
- if self.isvalid():
+ def getIconName(self):
+ if self.appli.maConfiguration.differencieSiDefaut and self.isValid():
+ if self.object.definition.defaut != None :
+ if self.object.valeur == self.object.definition.defaut : return "ast-green-dark-ball"
+ if self.object.definition.max > 1 and list(self.object.valeur) == list(self.object.definition.defaut) : return "ast-green-dark-ball"
return "ast-green-ball"
- elif self.object.isoblig():
+ elif self.isValid():
+ return "ast-green-ball"
+ elif self.object.isOblig():
return "ast-red-ball"
else:
return "ast-yel-ball"
- def GetText(self):
+ def getText(self):
"""
Classe SIMPTreeItem
Retourne le texte a afficher dans l'arbre representant la valeur de l'objet
pointe par self
"""
- text= self.object.GetText()
+ text= self.object.getText()
if text == None : text=""
return text
- def set_valeur_co(self,nom_co):
+ def setValeurCo(self,nom_co):
"""
Affecte au MCS pointé par self l'objet de type CO et de nom nom_co
"""
- ret = self.object.set_valeur_co(nom_co)
- #print "set_valeur_co",ret
+ ret = self.object.setValeurCo(nom_co)
+ #print "setValeurCo",ret
return ret
- def get_sd_avant_du_bon_type(self):
+ def getSdAvantDuBonType(self):
"""
Retourne la liste des noms des SD présentes avant l'étape qui contient
le MCS pointé par self et du type requis par ce MCS
"""
- a=self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape,self.object.definition.type)
+ a=self.object.etape.parent.getSdAvantDuBonType(self.object.etape,self.object.definition.type)
return a
- def get_sd_avant_du_bon_type_pour_type_de_base(self):
- a=self.object.jdc.get_sd_avant_du_bon_type_pour_type_de_base(self.object.etape,"LASSD")
+ def getSdAvantDuBonTypePourTypeDeBase(self):
+ a=self.object.jdc.getSdAvantDuBonTypePourTypeDe_Base(self.object.etape,"LASSD")
return a
-
- def delete_valeur_co(self,valeur=None):
+ def deleteValeurCo(self,valeur=None):
"""
Supprime la valeur du mot cle (de type CO)
il faut propager la destruction aux autres etapes
"""
if not valeur : valeur=self.object.valeur
- # XXX faut il vraiment appeler del_sdprod ???
- #self.object.etape.parent.del_sdprod(valeur)
- self.object.etape.parent.delete_concept(valeur)
+ # XXX faut il vraiment appeler delSdprod ???
+ #self.object.etape.parent.delSdprod(valeur)
+ self.object.etape.parent.deleteConcept(valeur)
#-----------------------------------------------
#
# Methodes liees au type de l objet attendu
#
#-----------------------------------------------
- # wait_co
- # wait_geom
- # wait_complex
- # wait_reel
- # wait_assd
- # GetType
-
- def wait_co(self):
+ # waitCo
+ # waitGeom
+ # waitComplex
+ # waitReel
+ # waitAssd
+ # getType
+
+ def waitCo(self):
"""
Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un objet de type ASSD qui n'existe pas encore (type CO()),
0 sinon
"""
- return self.object.wait_co()
+ return self.object.waitCo()
- def wait_fichier(self):
+ def waitFichier(self):
maDefinition=self.object.definition
try :
if ('Repertoire' in maDefinition.type[0]) or ('Fichier' in maDefinition.type[0]) :
except :
return 0
- def wait_geom(self):
+ def waitGeom(self):
"""
Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un objet GEOM, 0 sinon
"""
- return self.object.wait_geom()
+ return self.object.waitGeom()
- def wait_TXM(self):
- return self.object.wait_TXM()
+ def waitTxm(self):
+ return self.object.waitTxm()
- def wait_complex(self):
+ def waitComplex(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un complexe, 0 sinon """
if 'C' in self.object.definition.type:
else:
return 0
- def wait_reel(self):
+ def waitReel(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un réel, 0 sinon """
if 'R' in self.object.definition.type:
else:
return 0
- def wait_date(self):
+ def waitTuple(self) :
+ return self.object.waitTuple()
+
+ def waitDate(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un réel, 0 sinon """
if 'DateHHMMAAAA' in self.object.definition.type:
else:
return 0
- def wait_heure(self):
+ def waitHeure(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un réel, 0 sinon """
if 'HeureHHMMSS' in self.object.definition.type:
- def wait_tuple(self):
+ def waitTuple(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un Tuple, 0 sinon """
for ss_type in self.object.definition.type:
return 1
return 0
- def wait_matrice(self):
+ def waitMatrice(self):
""" Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un Tuple, 0 sinon """
for ss_type in self.object.definition.type:
return 1
return 0
- def wait_assd(self):
+ def waitAssd(self):
"""Méthode booléenne qui retourne 1 si l'objet pointé par self
attend un objet de type ASSD ou dérivé, 0 sinon """
- return self.object.wait_assd()
+ return self.object.waitAssd()
- def wait_assd_or_type_base(self) :
+ def waitAssdOrTypeBase(self) :
boo=0
if len(self.object.definition.type) > 1 :
- if self.wait_reel() :
+ if self.waitReel() :
boo = 1
if 'I' in self.object.definition.type :
boo = 1
return boo
- def wait_Salome(self):
+ def waitSalome(self):
monType = self.object.definition.type[0]
if 'grma' in repr(monType) : return True
if 'grno' in repr(monType) : return True
pass
return False
- def GetType(self):
+ def getType(self):
"""
Retourne le type de valeur attendu par l'objet représenté par l'item.
"""
- return self.object.get_type()
+ return self.object.getType()
#-----------------------------------------------------
#
# Methodes liees a l evaluation de la valeur saisie
#
#-----------------------------------------------------
- # eval_valeur
- # eval_valeur_item
- # is_CO
- # traite_reel
+ # evalValeur
+ # evalValeurItem
+ # isCO
+ # traiteReel
- def eval_valeur(self,valeur):
+ def evalValeur(self,valeur):
""" Lance l'interpretation de 'valeur' (chaine de caracteres) comme valeur de self :
- retourne l'objet associe si on a pu interpreter (entier, reel, ASSD,...)
- retourne 'valeur' (chaine de caracteres) sinon
"""
- newvaleur=self.eval_val(valeur)
+ newvaleur=self.evalVal(valeur)
return newvaleur,1
- def eval_valeur_BAK(self,valeur):
- """ Lance l'interpretation de 'valeur' (chaine de caractéres) comme valeur
- de l'objet pointé par self :
- - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...)
- - retourne 'valeur' (chaine de caractéres) sinon
- - retourne None en cas d invalidite
- - retourne invalide si 1 des objets du tuple l est
- """
- validite=1
- if type(valeur) in (list,tuple) :
- valeurretour=[]
- for item in valeur :
- newvaleur,validiteitem=self.eval_valeur_item(item)
- valeurretour.append(newvaleur)
- if validiteitem == 0:
- validite=0
- else :
- valeurretour,validite= self.eval_valeur_item(valeur)
- if validite == 0 :
- valeurretour = None
- return valeurretour,validite
- def eval_valeur_item(self,valeur):
+ def evalValeurItem(self,valeur):
""" Lance l'interprétation de 'valeur' qui doit ne pas etre un tuple
- va retourner la valeur de retour et la validite
selon le type de l objet attendu
- traite les reels et les parametres
"""
- #print "eval_valeur_item",valeur
+ #print "evalValeurItem",valeur
if valeur==None or valeur == "" :
return None,0
validite=1
- if self.wait_reel():
- valeurinter = self.traite_reel(valeur)
+ if self.waitReel():
+ valeurinter = self.traiteReel(valeur)
if valeurinter != None :
- valeurretour,validite= self.object.eval_valeur(valeurinter)
+ valeurretour,validite= self.object.evalValeur(valeurinter)
else:
- valeurretour,validite= self.object.eval_valeur(valeur)
- elif self.wait_geom():
+ valeurretour,validite= self.object.evalValeur(valeur)
+ elif self.waitGeom():
valeurretour,validite = valeur,1
else :
- valeurretour,validite= self.object.eval_valeur(valeur)
- #print "eval_valeur_item",valeurretour,validite
+ valeurretour,validite= self.object.evalValeur(valeur)
+ #print "evalValeurItem",valeurretour,validite
if validite == 0:
- if type(valeur) == bytes and self.object.wait_TXM():
+ if type(valeur) == bytes and self.object.waitTxm():
essai_valeur="'" + valeur + "'"
- valeurretour,validite= self.object.eval_valeur(essai_valeur)
+ valeurretour,validite= self.object.evalValeur(essai_valeur)
if hasattr(valeurretour,'__class__'):
#if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
if valeurretour.__class__.__name__ in ('PARAMETRE',):
validite=1
- #if self.wait_co():
+ #if self.waitCo():
# CCAR : il ne faut pas essayer de creer un concept
- # il faut simplement en chercher un existant ce qui a du etre fait par self.object.eval_valeur(valeur)
+ # il faut simplement en chercher un existant ce qui a du etre fait par self.object.evalValeur(valeur)
#try:
#valeurretour=Accas.CO(valeur)
#except:
#valeurretour=None
#validite=0
# on est dans le cas ou on a évalué et ou on n'aurait pas du
- if self.object.wait_TXM() :
+ if self.object.waitTxm() :
if type(valeurretour) != bytes:
valeurretour=str(valeur)
validite=1
return valeurretour,validite
- def is_CO(self,valeur=None):
+ def isCO(self,valeur=None):
"""
Indique si valeur est un concept produit de la macro
Cette méthode n'a de sens que pour un MCSIMP d'une MACRO
# ou si son nom de classe est CO.
# Il faut faire les 2 tests car une macro non valide peut etre
# dans un etat pas tres catholique avec des CO pas encore types
- # et donc pas dans sdprods (resultat d'une exception dans type_sdprod)
+ # et donc pas dans sdprods (resultat d'une exception dans typeSDProd)
if not valeur:valeur=self.object.valeur
if valeur in self.object.etape.sdprods:return 1
if type(valeur) is not types.InstanceType:return 0
if valeur.__class__.__name__ == 'CO':return 1
return 0
- def is_param(self,valeur) :
+ def isParam(self,valeur) :
for param in self.jdc.params:
if (repr(param) == valeur):
return 1
return 0
- def traite_reel(self,valeur):
+ def traiteReel(self,valeur):
"""
Cette fonction a pour but de rajouter le '.' en fin de chaine pour un réel
ou de détecter si on fait référence a un concept produit par DEFI_VALEUR
ou un EVAL ...
"""
valeur = valeur.strip()
- liste_reels = self.get_sd_avant_du_bon_type()
+ liste_reels = self.getSdAvantDuBonType()
if valeur in liste_reels:
return valeur
if len(valeur) >= 3 :
return valeur
if valeur.find('.') == -1 :
# aucun '.' n'a été trouvé dans valeur --> on en rajoute un a la fin
- if (self.is_param(valeur)):
+ if (self.isParam(valeur)):
return valeur
else:
if valeur.find('e') != -1:
from Extensions.i18n import tr
-class CONFIG_BASE(object):
+class configBase(object):
#-------------------------------
def __init__(self,appli,repIni):
# par celui de l utilisateur
# le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
# dans le fichier general sinon
+
self.appli = appli
self.code = appli.code
self.salome = appli.salome
else : self.name="editeur.ini"
self.rep_mat = None
self.repIni = repIni
+
+ if self.code == None : self.code=''
if sys.platform[0:5]=="linux" :
- self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)
+ self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
else :
- self.rep_user = os.path.join('C:/','.config/Eficas',appli.code)
+ self.rep_user = os.path.join('C:/','.config/Eficas',self.code)
-
self.setValeursParDefaut()
- self.lecture_fichier_ini_standard()
- self.lecture_fichier_ini_integrateur()
- self.lecture_fichier_ini_utilisateur()
+ if self.code != '' :
+ self.lectureFichierIniStandard()
+ self.lectureFichierIniIntegrateur()
+ self.lectureFichierIniUtilisateur()
+
+ if self.boutonDsMenuBar:
+ self.closeAutreCommande = True
+ self.closeFrameRechercheCommande = True
#Particularite des schemas MAP
if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
- if self.appli: self.parent=appli.top
- else: self.parent=None
+ #if self.appli: self.parent=appli.top
+ #else: self.parent=None
if not os.path.isdir(self.savedir) :
if sys.platform[0:5]=="linux" :
self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
else:
self.savedir = os.path.abspath('C:/')
- self.mode_nouv_commande='initial'
+ self.modeNouvCommande='initial'
self.affiche="alpha"
self.closeAutreCommande = False
self.closeFrameRechercheCommande = False
self.nombreDeBoutonParLigne=0
self.translatorFichier=None
self.dicoImages= {}
+ self.dicoIcones= {}
+ self.afficheCommandesPliees = True
self.simpleClic= False
self.afficheOptionnelVide=False
self.afficheListesPliees=True
+ self.boutonDsMenuBar=False
+ self.ficIcones=None
+ self.repIcones=None
+ self.differencieSiDefaut=False
+ self.typeDeCata='Python'
+ self.dumpXSD=False
+ self.withXSD=False
+ self.afficheIhm=True
+ self.closeParenthese=False
+ self.enleverActionStructures=False
+ self.enleverParametres=False
+ self.enleverSupprimer=False
+ self.ajoutExecution=False
+ self.utilParExtensions=False
+
+
#--------------------------------------
- def lecture_fichier_ini_standard(self):
+ def lectureFichierIniStandard(self):
#--------------------------------------
name='prefs_'+self.appli.code
#--------------------------------------
- def lecture_fichier_ini_integrateur(self):
+ def lectureFichierIniIntegrateur(self):
#--------------------------------------
# Verifie l'existence du fichier "standard"
# appelle la lecture de ce fichier
#--------------------------------------
- def lecture_fichier_ini_utilisateur(self):
+ def lectureFichierIniUtilisateur(self):
#--------------------------------------
# Surcharge les parametres standards par les parametres utilisateur s'ils existent
self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
setattr(self,k,d[k])
#--------------------------------------
- def save_params(self):
+ def saveParams(self):
#--------------------------------------
# sauvegarde
# les nouveaux parametres dans le fichier de configuration utilisateur
f.close()
#
+
import types,sys,os, re
import subprocess
import traceback
-
import six
-from six.moves import range
-from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter
-from PyQt5.QtGui import QPalette
-from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
-import time
-import pdb
-from datetime import date
-from Extensions.i18n import tr
+
+
+from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter, QLabel
+from PyQt5.QtGui import QPalette
+from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
import traceback
# Modules Eficas
+from Extensions.i18n import tr
-import convert, generator
from Editeur import session
from Editeur import comploader
from Editeur import Objecttreeitem
-from desBaseWidget import Ui_baseWidget
+from InterfaceQT4 import browser
+
+from desBaseWidget import Ui_baseWidget
from InterfaceQT4.monViewTexte import ViewText
from monWidgetCreeParam import MonWidgetCreeParam
-from . import browser
-from . import readercata
DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
debug = False
+from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
-class JDCEditor(Ui_baseWidget,QWidget):
+class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
# ----------------------------------------- #
"""
Editeur de jdc
"""
- def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):
- #----------------------------------------------------------------------------------------------------------#
+# ----------------------------------------
+# Methodes faisant appel a ssIhm
+# ----------------------------------------
+
+ def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+ #------------------------------------------------------------------------------------------
+
QWidget.__init__(self,None)
- self.i=0
self.setupUi(self)
+
self.inhibeSplitter=0
self.widgetOptionnel=None
self.fenetreCentraleAffichee=None
self.dejaDansPlieTout=False
- self.afficheCommandesPliees = True
self.listeDesListesOuvertes=set()
- self.appliEficas = appli
- self.appli = appli #---- attendu par IHM
- self.vm = vm
- self.fichier = fichier
- self.jdc = jdc
- self.first = True
- self.QWParent = QWParent
- self.couleur = Qt.black
- self.nodeEnCours=None
-
- if appli != None :
- self.salome = self.appliEficas.salome
- else :
- self.salome=0
- print ("dans JDC pas d appli ????????")
+ self.afficheListesPliees=True
+ if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+ else : self.sb = None
+ self.QWParent=QWParent
- # ces attributs sont mis a jour par definitCode appelee par newEditor
- self.code = self.appliEficas.CONFIGURATION.code
- self.initSplitterSizes()
+ JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
- #self.afficheListesPliees=False
- self.afficheListesPliees=True
+ # Particularites IHM : met la fenetre a jour
+
+ self.initSplitterSizes()
if self.code == "ASTER" or self.code == "monCode" : self.afficheListesPliees =True
if self.code == 'PSEN_N1' : self.afficheListesPliees = False
- self.mode_nouv_commande=self.appliEficas.CONFIGURATION.mode_nouv_commande
- self.closeAutreCommande=self.appliEficas.CONFIGURATION.closeAutreCommande
- self.closeFrameRechercheCommande=self.appliEficas.CONFIGURATION.closeFrameRechercheCommande
- self.closeArbre=self.appliEficas.CONFIGURATION.closeArbre
- self.affiche=self.appliEficas.CONFIGURATION.affiche
- self.afficheOptionnelVide=self.appliEficas.CONFIGURATION.afficheOptionnelVide
- self.nombreDeBoutonParLigne = self.appliEficas.CONFIGURATION.nombreDeBoutonParLigne
- self.dicoImages = self.appliEficas.CONFIGURATION.dicoImages
- self.simpleClic = self.appliEficas.CONFIGURATION.simpleClic
- #self.taille = self.appliEficas.taille
-
- #if self.code in ['MAP','CARMELCND','PSEN'] : self.afficheCommandesPliees=False
- if self.code in ['MAP','CARMELCND'] : self.afficheCommandesPliees=False
- if self.code in ['MAP',]:
- self.widgetTree.close()
- self.widgetTree=None
- if self.closeArbre: self.fermeArbre()
+ #self.affiche=self.appliEficas.maConfiguration.affiche
- self.version_code = session.d_env.cata
+ if self.code in ['MAP','CARMELCND','PSEN'] : self.maConfiguration.afficheCommandesPliees=False
+ if self.code in ['MAP',]: self.fermeArbre()
+ # self.widgetTree.close()
+ # self.widgetTree=None
+ if self.maConfiguration.closeArbre: self.fermeArbre()
+ if self.maConfiguration.boutonDsMenuBar : self.appliEficas.remplitIconesCommandes()
- if not hasattr ( self.appliEficas, 'readercata') or self.appliEficas.multi==True:
- self.readercata = readercata.READERCATA( self, self.appliEficas )
- self.appliEficas.readercata=self.readercata
- self.appliEficas.code=self.code
- else :
- self.readercata=self.appliEficas.readercata
- if self.readercata.fic_cata == None : return #Sortie Salome
- self.titre=self.readercata.titre
- self.Ordre_Des_Commandes=self.readercata.Ordre_Des_Commandes
- self.Classement_Commandes_Ds_Arbre=self.readercata.Classement_Commandes_Ds_Arbre
-
+ self.version_code = session.d_env.cata
+
self.format = self.appliEficas.format_fichier
- self.dict_reels={}
- self.liste_simp_reel=[]
- self.ihm="QT"
- self.dicoNouveauxMC={}
- self.dicoNouveauxFact={}
-
- nameConf='configuration_'+self.code
- configuration=__import__(nameConf)
- self.CONFIGURATION = self.appliEficas.CONFIGURATION
- self.CONFIGStyle = self.appliEficas.CONFIGStyle
-
- try:
- self.CONFIGURATION.generator_module
- _module = __import__(self.CONFIGURATION.generator_module)
- info = _module.entryPoint()
- generator.plugins.addEntryPoint(info)
- except:
- pass
-
- try:
- self.CONFIGURATION.convert_module
- #print self.CONFIGURATION.convert_module
- _module = __import__(self.CONFIGURATION.convert_module)
- info = _module.entryPoint()
- convert.plugins.addEntryPoint(info)
- except :
- pass
-
- self.sb = None
- if hasattr(self.appliEficas,"statusBar"):
- self.sb = self.appliEficas.statusBar()
-
- self.fileInfo = None
- self.lastModified = 0
-
- self.modified = False
- self.isReadOnly = False
self.node_selected = []
self.deplier = True
self.message=''
+ self.afficheApresInsert=False
+ if self.maConfiguration.closeArbre : self.afficheApresInsert=True
if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True
- else : self.afficheApresInsert=False
- if self.code in ['TELEMAC',] : self.enteteQTree='premier'
- else : self.enteteQTree='complet'
+ if self.code in ['TELEMAC',] : self.enteteQTree='premier'
+ else : self.enteteQTree='complet'
if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True
- else : self.affichePlie=False
+ else : self.affichePlie=False
self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue
- #------- construction du jdc --------------
+ if self.appliEficas.readercata.demandeCatalogue==True :
+ nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.versionCode)
+ if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) :
+ translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation)
+ from Extensions import localisation
+ localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier)
- jdc_item = None
- self.nouveau=0
- if self.fichier is not None: # fichier jdc fourni
- self.fileInfo = QFileInfo(self.fichier)
- self.fileInfo.setCaching(0)
- if jdc==None :
- try :
- self.jdc = self.readFile(self.fichier)
- if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
- except :
- print ("mauvaise lecture")
- else :
- self.jdc=jdc
- if self.jdc is not None and units is not None:
- self.jdc.recorded_units=units
- self.jdc.old_recorded_units=units
- else:
- if not self.jdc: # nouveau jdc
- if not include :
- self.jdc = self._newJDC(units=units)
- else :
- self.jdc = self._newJDCInclude(units=units)
- self.nouveau=1
-
- if self.jdc:
- self.jdc.appli = self # a resorber
- self.jdc.editor = self
- self.jdc.lang = self.appli.langue
- self.jdc.aReafficher=False
- txt_exception = None
- if not jdc:
- self.jdc.analyse()
- txt_exception = self.jdc.cr.get_mess_exception()
- if txt_exception:
- self.jdc = None
- QApplication.restoreOverrideCursor()
- self.affiche_infos(tr("Erreur fatale au chargement de %s",str(fichier)),Qt.red)
- if (self.appliEficas.ssIhm == False) : QMessageBox.critical( self, tr("Erreur fatale au chargement d'un fichier"), txt_exception)
- else:
- comploader.charger_composants("QT")
- jdc_item=Objecttreeitem.make_objecttreeitem( self, "nom", self.jdc )
- if (not self.jdc.isvalid()) and (not self.nouveau) and (self.appliEficas.ssIhm == False):
- self.viewJdcRapport()
-
-
-
- if jdc_item and self.appliEficas.ssIhm==False:
- self.tree = browser.JDCTree( jdc_item, self )
+ if self.jdc_item and self.appliEficas.ssIhm==False :
+ self.tree = browser.JDCTree( self.jdc_item, self )
self.appliEficas.construitMenu()
-
- #############
self.adjustSize()
- #-------------------# Pour execution avec output et error dans le bash
- def runPSEN(self):
- #-------------------#
-
- #if self.modified or self.fichier==None : self.saveFile()
- self.saveFile()
-
- #lancement avec le .bat
- path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN'))
- WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
- import subprocess
- p = subprocess.Popen(['python',WrapperFilePath])
- (out,err)=p.communicate()
- print (out)
- print (err)
-
- #-------------------# Pour execution avec output et error dans le bash
- def runPSEN_N1(self):
- #-------------------#
-
-
- self.saveFile()
- path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
- sys.path.append(path1)
-
- if not(self.jdc.isvalid()):
- QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
- if 'dicoImbrique' in generator.plugins:
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.generator.Dico
-
- ###to delete
- #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
- fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
- f = open( str(fileDico), 'w')
- f.write("Dico =" + str(dico) )
- f.close()
- ###
-
-
- print ('in runPSEN_N1', dico)
- print (dico)
- from Run import run
- run(dico)
- #res,txt_exception=run(dico)
- #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception)
- #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception)
-
- #-------------------# Pour execution avec output et error dans le bash
- def process_N1(self):
- #-------------------#
-
- path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
- sys.path.append(path1)
-
-
- if 'dicoImbrique' in generator.plugins:
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.get_Dico() #generator.Dico
-
-
- for k in dico['CONTINGENCY_PROCESSING']:
- #print (k)
- if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' :
- newK=k.replace('__',' ')
- l="'"+str(newK)+"'"
- dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k]
- del dico['CONTINGENCY_PROCESSING'][k]
-
- ###to delete
- fileDico = os.path.join(path1, 'dicoN1_process.py')
- f = open( str(fileDico), 'w')
- f.write("Dico =" + str(dico) )
- f.close()
- ###
- return dico
-
- #return self.get_Dico()
-
- #-------------------# Pour execution avec output et error dans le bash
- def process_VP(self):
- #-------------------#
- if 'dicoImbrique' in generator.plugins:
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.get_Dico() #generator.Dico
- return dico
-
-
- #--------------------------------#
- def ajoutCommentaire(self):
- #--------------------------------#
- if self.tree.selectedItems()==[] :
- QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne"))
- return
- noeudAvantCommentaire=self.tree.selectedItems()[0]
- if noeudAvantCommentaire ==self.tree.racine :
- self.tree.racine.append_child("COMMENTAIRE",pos=0)
- return
- noeudAvantCommentaire.addComment(True)
-
-
-
- #--------------------------------#
- def _newJDC( self ,units = None):
- #--------------------------------#
- """
- Initialise un nouveau JDC vierge
- """
- self.modified=1
- CONTEXT.unset_current_step()
-
- texte=""
- if self.code == "CARMELCND" : texte=self._newJDCCND()
- if self.code == "ZCRACKS" : texte=self._newZCRACKS()
- if self.code == "TELEMAC" : texte=self._newTELEMAC()
- if self.code == "PSEN" : texte = self._newPSEN()
- if self.code == "PSEN_N1" : texte = self._newPSEN_N1()
-
- if hasattr(self.readercata.cata[0],'TEXTE_NEW_JDC') : texte=self.readercata.cata[0].TEXTE_NEW_JDC
-
- #if self.code == "CF" : texte = self._new_CF()
- # texte=self.newTexteCND
-
- jdc=self.readercata.cata[0].JdC( procedure =texte,
- appli=self,
- cata=self.readercata.cata,
- cata_ord_dico=self.readercata.cata_ordonne_dico,
- rep_mat=self.CONFIGURATION.rep_mat
- )
- jdc.lang = self.appli.langue
- if units is not None:
- jdc.recorded_units=units
- jdc.old_recorded_units=units
- ## PNPN est ce que la ligne suivante est bien utile ?
- if texte == "" :jdc.analyse()
- return jdc
-
- #--------------------------------#
- def _newJDCInclude( self ,units = None):
- #--------------------------------#
- """
- Initialise un nouveau JDC vierge
- """
- import Extensions.jdc_include
- JdC_aux=Extensions.jdc_include.JdC_include
- CONTEXT.unset_current_step()
-
- jaux=self.readercata.cata[0].JdC( procedure="",
- appli=self,
- cata=self.readercata.cata,
- cata_ord_dico=self.readercata.cata_ordonne_dico,
- rep_mat=self.CONFIGURATION.rep_mat,
- )
- jaux.analyse()
-
- J=JdC_aux( procedure="",
- appli=self,
- cata=self.readercata.cata,
- cata_ord_dico=self.readercata.cata_ordonne_dico,
- jdc_pere=jaux,
- rep_mat=self.CONFIGURATION.rep_mat,
- )
- J.analyse()
- if units is not None:
- J.recorded_units=units
- J.old_recorded_units=units
- return J
-
-
#-------------------------------#
def readFile(self, fn):
#--------------------------------#
Public slot to read the text from a file.
@param fn filename to read from (string or QString)
"""
- fn = six.text_type(fn)
-
- # ------------------------------------------------------------------------------------
- # charge le JDC
- # ------------------------------------------------------------------------------------
-
- jdcName=os.path.basename(fn)
- # Il faut convertir le contenu du fichier en fonction du format
- if self.appliEficas.format_fichier_in in convert.plugins:
- # Le convertisseur existe on l'utilise
- #appli = self
- p=convert.plugins[self.appliEficas.format_fichier_in]()
-
- p.readfile(fn)
-
- if p.text=="" : self.nouveau=1
- pareil,texteNew=self.verifieCHECKSUM(p.text)
- #if texteNew == ""
- if pareil == False and (self.appliEficas.ssIhm == False) :
- QMessageBox.warning( self, tr("fichier modifie"),tr("Attention! fichier change hors EFICAS"))
- p.text=texteNew
- memeVersion,texteNew=self.verifieVersionCataDuJDC(p.text)
- if memeVersion == 0 : texteNew=self.traduitCatalogue(texteNew)
- p.text=texteNew
-
- #import cProfile, pstats, StringIO
- #pr = cProfile.Profile()
- #pr.enable()
-
- text=p.convert('exec',self.appliEficas)
- #pr.disable()
- #s = StringIO.StringIO()
- #sortby = 'cumulative'
- #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
- #ps.print_stats()
- #print (s.getvalue())
-
- if not p.cr.estvide():
- self.affiche_infos("Erreur a la conversion",Qt.red)
- else :
- self.affiche_infos("Type de fichier non reconnu",Qt.red)
- if self.appliEficas.ssIhm == False:
- QMessageBox.critical( self, tr("Type de fichier non reconnu"),
- tr("EFICAS ne sait pas ouvrir le type de fichier %s" ,self.appliEficas.format_fichier_in))
- return None
-
- CONTEXT.unset_current_step()
- jdc=self.readercata.cata[0].JdC(procedure=text,
- appli=self,
- cata=self.readercata.cata,
- cata_ord_dico=self.readercata.cata_ordonne_dico,
- nom=jdcName,
- rep_mat=self.CONFIGURATION.rep_mat
- )
- # ----------------------------------------------------
- # charge le JDC fin
- # ----------------------------------------------------
- self.modified = False
+ jdc=JDCEditorSsIhm.readFile(self, fn)
+
+ # Particularites IHM : met le titre de la fenetre a jour
# qApp.restoreOverrideCursor()
- if self.fileInfo!= None :
- self.lastModified = self.fileInfo.lastModified()
- else :
- self.lastModified = 1
+ if self.fileInfo!= None : self.lastModified = self.fileInfo.lastModified()
nouveauTitre=self.titre+" "+os.path.basename(self.fichier)
self.appliEficas.setWindowTitle(nouveauTitre)
- return jdc
+ return jdc
- #-----------------------#
- def get_source(self,file):
- #-----------------------#
-
- # Il faut convertir le contenu du fichier en fonction du format
- if self.format in convert.plugins :
- # Le convertisseur existe on l'utilise
- p=convert.plugins[self.format]()
- p.readfile(file)
- text=p.convert('execnoparseur')
- if not p.cr.estvide():
- self.affiche_infos("Erreur a la conversion",Qt.red)
- return text
- else:
- # Il n'existe pas c'est une erreur
- self.affiche_infos("Type de fichier non reconnu",Qt.red)
- QMessageBox.critical( self, tr("Type de fichier non reconnu"),tr("EFICAS ne sait pas ouvrir ce type de fichier"))
- return None
+# ---------------------------------------------
+# Methodes Inchangees
+# ---------------------------------------------
+# _newJDC
+# _newJDCInclude
+# __generateTempFilename
+# getSource
+# generDico
+# viewJdcSource
+# viewJdcPy
+# viewJdcRapport
+# getFileName
+# initModif
+# writeFile
+# getTextJDC
+# verifieChecksum
+# getChecksum
+# getDico
+# chercheGroupes
+# chercheDico
+# saveFileLegerAs
+
+# ---------------------------------------------
+# Methodes Surchargees
+# ---------------------------------------------
#-----------------------------------------------------------------------#
def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
#--------------------------------------------------------------------#
w = ViewText( self.QWParent,self ,caption,txt,largeur,hauteur)
w.show()
- #
- #----------------------------------------------#
- def __generateTempFilename(self, prefix, suffix):
- #----------------------------------------------#
- import tempfile
- (fd, filename) = tempfile.mkstemp(prefix=prefix, suffix=suffix)
- os.close(fd)
- return filename
- #
+ #--------------------------------#
+ def informe(self,titre,txt,critique=True):
+ #--------------------------------#
+ if critique :
+ self.afficheInfos(tr(txt),Qt.red)
+ QMessageBox.critical( self, tr(titre), tr(txt))
+ else :
+ QMessageBox.warning( self, tr(titre),tr(txt))
+
+ #--------------------------------#
+ def ajoutCommentaire(self):
+ #--------------------------------#
+ if self.tree.selectedItems()==[] :
+ QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne"))
+ return
+ noeudAvantCommentaire=self.tree.selectedItems()[0]
+ if noeudAvantCommentaire ==self.tree.racine :
+ self.tree.racine.appendChild("COMMENTAIRE",pos=0)
+ return
+ noeudAvantCommentaire.addComment(True)
#----------------------------------------------#
a=self.monExe.readAllStandardOutput()
self.w.view.append(str(a.data()))
- def readFromStdErrQT4(self):
- a=self.monExe.readAllStandardError()
- self.w.view.append(QString.fromUtf8(a.data(),len(a))) ;
-
- def readFromStdOutQT4(self) :
- a=self.monExe.readAllStandardOutput()
- self.w.view.append(QString.fromUtf8(a.data(),len(a))) ;
- #-----------------------#
- def generDico(self):
- #-----------------------#
- if 'dico' in generator.plugins:
- self.generator=generator.plugins['dico']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.generator.Dico
- return dico
-
#-----------------------#
def gestionParam(self):
#-----------------------#
w = MonWidgetCreeParam( self)
w.show()
- #-----------------------#
- def viewJdcSource(self):
- #-----------------------#
- if self.fichier == None : return
- f=open(self.fichier,'r')
- texteSource=f.read()
- f.close()
- self._viewText(texteSource, "JDC_SOURCE")
-
- #-----------------------#
- def viewJdcPy(self):
- #-----------------------#
- strSource = str( self.get_text_JDC(self.format) )
- self._viewText(strSource, "JDC_RESULTAT")
-
- #-----------------------#
- def viewJdcRapport(self):
- #-----------------------#
- strRapport = six.text_type( self.jdc.report() )
- # on ajoute les regles
-
- self._viewText(strRapport, "JDC_RAPPORT")
-
- #-----------------------#
- def viewJdcRegles(self):
- #-----------------------#
- if self.tree :self.tree.AppelleBuildLBRegles()
-
#----------------#
def closeIt(self):
"""
Public method called by the viewmanager to finally get rid of us.
"""
- if self.jdc:
- self.jdc.supprime()
+ if self.jdc: self.jdc.supprime()
self.close()
#----------------------------------------------#
- def affiche_infos(self,message,couleur=Qt.black):
+ def afficheInfos(self,message,couleur=Qt.black):
#----------------------------------------------#
+ if couleur=='red' : couleur = Qt.red
if self.sb:
mapalette=self.sb.palette()
mapalette.setColor( QPalette.WindowText, couleur )
self.couleur=couleur
#------------------------------#
- def affiche_alerte(self,titre,message):
+ def afficheAlerte(self,titre,message):
#------------------------------#
# appele par I_MACRO_ETAPE
QMessageBox.information( self, titre, message)
#-----------------------------------#
- def affiche_commentaire(self,message):
+ def afficheCommentaire(self,message):
#-----------------------------------#
self.labelCommentaire.setText(message)
QTimer.singleShot(6000, self.rendInvisible)
#----------------------#
self.labelCommentaire.setText("")
- #-------------------#
- def init_modif(self):
- #-------------------#
- """
- Met l'attribut modified a 'o' : utilise par Eficas pour savoir
- si un JDC doit etre sauvegarde avant destruction ou non
- """
- self.modified = True
-
#---------------------------------------#
def chercheNoeudSelectionne(self,copie=1):
#---------------------------------------#
"""
self.chercheNoeudSelectionne()
if len(self.node_selected) == 0 : return
- if len(self.node_selected) == 1 : self.node_selected[0].update_node_label_in_blue()
- else : self.node_selected[0].update_plusieurs_node_label_in_blue(self.node_selected)
+ if len(self.node_selected) == 1 : self.node_selected[0].updateNodeLabelInBlue()
+ else : self.node_selected[0].updatePlusieursNodeLabelInBlue(self.node_selected)
self.QWParent.edit="copier"
self.QWParent.noeud_a_editer = self.node_selected
noeudACopier=self.QWParent.noeud_a_editer[0]
if (self.QWParent.edit != "couper"):
- #print (noeudOuColler.item.parent.get_child(noeudOuColler.item.nom))
+ #print (noeudOuColler.item.parent.getChild(noeudOuColler.item.nom))
try:
if noeudOuColler == self.tree.racine :
child=noeudOuColler.doPastePremier(noeudACopier)
if child==None or child==0:
QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet'))
self.message = ''
- self.affiche_infos("Copie refusee",Qt.red)
+ self.afficheInfos("Copie refusee",Qt.red)
if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
try :
nom=noeudACopier.item.sd.nom
- child.item.nomme_sd(nom)
+ child.item.nommeSd(nom)
except :
pass
return
- self.init_modif()
+ self.initModif()
child.select()
except :
traceback.print_exc()
QMessageBox.critical( self,tr( "Copie refusee"),tr('Copie refusee pour ce type d objet'))
self.message = ''
- self.affiche_infos("Copie refusee",Qt.red)
+ self.afficheInfos("Copie refusee",Qt.red)
return
# il faut declarer le JDCDisplay_courant modifie
# si possible on renomme l objet comme le noeud couper
if (self.QWParent.edit == "couper"):
- print ('je pass la')
+ #print ('je pass la')
if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee '))
# indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
indexNoeudACopier=self.getTreeIndex(noeudACopier)
noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
- noeudACopier.treeParent.build_children()
+ noeudACopier.treeParent.buildChildren()
#else:
except:
listeASupprimer.append(noeud)
for i in range(len(listeChild)):
- self.tree.item.suppitem(listeItem[i])
+ self.tree.item.suppItem(listeItem[i])
listeChild[i].item.update(listeItem[i])
self.QWParent.noeud_a_editer = []
+ #----------------------------------#
+ def handleAjoutEtape(self,nomEtape):
+ #----------------------------------#
+ self.chercheNoeudSelectionne()
+ if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine :
+ nodeOuAjouter=self.tree.racine
+ nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first')
+ else :
+ nodeOuAjouter=self.node_selected[0]
+ if nodeOuAjouter != self.tree.racine :
+ while nodeOuAjouter.treeParent != self.tree.racine:
+ #print (nodeOuAjouter)
+ nodeOuAjouter=nodeOuAjouter.treeParent
+ #print (nodeOuAjouter.parent == self.tree.racine)
+ nouveau=nodeOuAjouter.appendBrother(nomEtape)
+ try :
+ self.node_selected[0].setSelected(False)
+ except : pass
+ nouveau.setSelected(True)
+ nouveau.affichePanneau()
- #---------------------#
- def getFileName(self):
- #---------------------#
- return self.fichier
#---------------------------#
- def get_file_variable(self) :
+ def getFileVariable(self) :
#---------------------------#
titre = tr("Choix d'un fichier XML")
texte = tr("Le fichier contient une commande MODEL\n")
fichier = QFileDialog.getOpenFileName(self.appliEficas,
tr('Ouvrir Fichier'),
- self.appliEficas.CONFIGURATION.savedir,
+ self.appliEficas.maConfiguration.savedir,
tr('Wrapper Files (*.xml);;''All Files (*)'))
return fichier
- #--------------------------------------------------#
- def writeFile(self, fn, txt = None,formatLigne="beautifie"):
- #--------------------------------------------------#
- """
- Public slot to write the text to a file.
-
- @param fn filename to write to string
- @return flag indicating success
- """
-
- fn = six.text_type(fn)
-
- if txt == None :
- txt = self.get_text_JDC(self.format,formatLigne=formatLigne)
- eol = '\n'
- if len(txt) >= len(eol):
- if txt[-len(eol):] != eol:
- txt += eol
- else:
- txt += eol
- txt=self.ajoutVersionCataDsJDC(txt)
- if self.code != 'PSEN' and self.code != 'PSEN_N1' : checksum=self.get_checksum(txt)
- else : checksum=''
- txt=txt+checksum
- if self.code=="TELEMAC" : return 1
- try:
- f = open(fn, 'w')
- f.write(txt)
- f.close()
- return 1
- except IOError as why:
- if (self.appliEficas.ssIhm == False):
- QMessageBox.critical(self, tr('Sauvegarde du Fichier'),
- tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why))
- else :
- print (why)
- return 0
-
- #-----------------------------------------------------------#
- def get_text_JDC(self,format,pourRun=0,formatLigne="beautifie"):
- #-----------------------------------------------------------#
- if self.code == "MAP" and not(format in generator.plugins): format = "MAP"
- if format in generator.plugins:
-
- # Le generateur existe on l'utilise
- self.generator=generator.plugins[format]()
- try :
- jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas)
- if pourRun : jdc_formate=self.generator.textePourRun
- if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
- except ValueError as e:
- QMessageBox.critical(self, tr("Erreur a la generation"),str(e))
- return
-
- if not self.generator.cr.estvide():
- self.affiche_infos(tr("Erreur a la generation"),Qt.red)
- QMessageBox.critical( self, tr("Erreur a la generation"),tr("EFICAS ne sait pas convertir ce JDC"))
- return ""
- else:
- return jdc_formate
- else:
- # Il n'existe pas c'est une erreur
- self.affiche_infos(tr("Format %s non reconnu" , self.format),Qt.red)
- QMessageBox.critical( self, "Format non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
- return ""
-
- #----------------------#
- def get_Dico(self):
- #---------------------#
- if 'dicoImbrique' in generator.plugins:
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.generator.Dico
- return dico
- else :
- self.affiche_infos(tr("Format %s non reconnu" , self.format),Qt.red)
- QMessageBox.critical( self, "Format non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
- return ""
-
-
#------------#
def run(self):
#------------#
fonction="saveRun"+self.code
if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
+
+# ---------------------------------------------
+# Methodes Non Crees dans ssIHM
+# ---------------------------------------------
+
#---------------#
def runMAP(self):
#---------------#
- if not(self.jdc.isvalid()):
+ if not(self.jdc.isValid()):
QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP"))
return
if len(self.jdc.etapes) != 1 :
return
if self.modified or self.fichier==None :
self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
- texte=self.get_text_JDC("MAP")
+ texte=self.getTextJDC("MAP")
self.writeFile( self.fichierMapInput, txt = texte)
else :
self.fichierMapInput=self.fichier
#-------------------#
def runZCRACKS(self):
#-------------------#
- if not(self.jdc.isvalid()):
+ if not(self.jdc.isValid()):
QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
return
if self.modified or self.fichier==None :
#if 1:
self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p")
- texte=self.get_text_JDC("ZCRACKS",pourRun=1)
+ texte=self.getTextJDC("ZCRACKS",pourRun=1)
self.writeFile( self.fichierZcracksInput, txt = texte)
else :
self.fichierZcracksInput=self.fichier
#-------------------#
def runCARMELCND(self):
#-------------------#
- #if not(self.jdc.isvalid()):
+ #if not(self.jdc.isValid()):
# QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
# return
if self.modified or self.fichier==None :
QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution "))
return
- if not hasattr(self,'generator'): texte=self.get_text_JDC(self.format)
+ if not hasattr(self,'generator'): texte=self.getTextJDC(self.format)
from PrepareRunCarmel import prepareRunCarmel
fichierGenerique=os.path.basename(self.fichier).split(".")[0]
repMed=os.path.dirname(self.fichier)
def saveRunMAP(self):
#-----------------#
extension=".input"
- if not(self.jdc.isvalid()):
+ if not(self.jdc.isValid()):
QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
tr("Un JdC valide est necessaire pour creer un .input")
)
tr("Choix du composant obligatoire")
)
return
- if hasattr(self.CONFIGURATION, "savedir"): path=self.CONFIGURATION.savedir
+ if hasattr(self.maConfiguration, "savedir"): path=self.maConfiguration.savedir
else : path='C:/'
monNomFichier=""
if not hasattr(self, 'fichierMapInput') or not self.fichierMapInput or not os.path.exists(self.fichierMapInput):
self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
- texte=self.get_text_JDC("MAP")
+ texte=self.getTextJDC("MAP")
self.writeFile( self.fichierMapInput, txt = texte)
cmd = ("map gen -t dat -n " + composant + " -i " + self.fichierMapInput + " -o " + fn)
self.saveFile()
- #-----------------------------------------#
- def cherche_Groupes(self):
- #-----------------------------------------#
- listeMA,listeNO=self.get_text_JDC("GroupMA")
- return listeMA,listeNO
-
- #-----------------------------------------#
- def cherche_Dico(self):
- #-----------------------------------------#
- dicoCourant={}
- format = self.appliEficas.format_fichier
- if format in generator.plugins:
- # Le generateur existe on l'utilise
- self.generator=generator.plugins[format]()
- jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
- dicoCourant=self.generator.dico
- return dicoCourant
-
-
#-----------------------------------------#
def handleAjoutGroup(self,listeGroup):
#else :
pass
- #-----------------------------------------------------------------#
- def saveFileLegerAs(self, fileName = None) :
- #-----------------------------------------------------------------#
- if fileName != None :
- self.fichier = fileName
- return self.saveFileLeger()
- return self.saveFileLeger()
#-----------------------------------------------------------------#
- def saveFileLeger(self, path = None, saveas= 0,formatLigne="beautifie"):
+ def saveCompleteFile(self, path = None, saveas= 0,formatLigne="beautifie"):
#-----------------------------------------------------------------#
extension='.casR'
- fn = self.fichier
+ fn = self.fichierComplet
#saveas=True # Pour forcer le nom
- self.generator=generator.plugins[self.format]()
- if self.fichier is None or saveas:
- if path is None: path=self.CONFIGURATION.savedir
+ self.generator=self.maConfiguration.mesGenerators.plugins[self.format]()
+ if self.fichierComplet is None or saveas:
+ if path is None: path=self.maConfiguration.savedir
bOK, fn=self.determineNomFichier(path,extension)
if bOK == 0 : return (0, None)
if fn == None : return (0, None)
if fn== '' : return (0, None)
ulfile = os.path.abspath(six.text_type(fn))
- self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
fn = six.text_type(QDir.toNativeSeparators(fn))
- self.fichier = os.path.splitext(fn)[0]+extension
+ self.fichierComplet = os.path.splitext(fn)[0]+extension
- if hasattr(self.generator, "writeLeger"):
- self.generator.writeLeger(self.fichier,self.jdc,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas)
+ if hasattr(self.generator, "writeComplet"):
+ self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
- if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
+ if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
self.modified = 0
- nouveauTitre=self.titre+" "+str(os.path.basename(self.fichier))
+ nouveauTitre=self.titre+" "+str(os.path.basename(self.fichierComplet))
self.appliEficas.setWindowTitle(nouveauTitre)
- return (1, self.fichier)
+ return (1, self.fichierComplet)
#-----------------------------------------------------------------#
def saveFile(self, path = None, saveas= 0,formatLigne="beautifie"):
newName = None
fn = self.fichier
if self.fichier is None or saveas:
- if path is None: path=self.CONFIGURATION.savedir
+ if path is None: path=self.maConfiguration.savedir
bOK, fn=self.determineNomFichier(path,extension)
if bOK == 0 : return (0, None)
if fn == None : return (0, None)
if fn== '' : return (0, None)
ulfile = os.path.abspath(six.text_type(fn))
- self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
fn = six.text_type(QDir.toNativeSeparators(fn))
newName = fn
if newName is not None:
self.appliEficas.addToRecentList(newName)
self.tree.racine.item.getObject().nom=os.path.basename(newName)
- self.tree.racine.update_node_label()
+ self.tree.racine.updateNodeLabel()
+
+ #print ('sortie du XML')
+ #self.jdc.toXml()
- if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
+ if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+ #if hasattr(self.generator, "writeDefault"):
self.generator.writeDefault(fn)
elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
- self.generator.writeDefault(fn)
+ msgBox = QMessageBox(None)
+ msgBox.setWindowTitle(tr("Fichier .cas invalide / incomplet"))
+ msgBox.setText(tr("Le fichier .cas est invalide / incomplet"))
+ msgBox.addButton(tr("&Sauvegarder"),1)
+ msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+ msgBox.addButton(tr("&Annuler"),2)
+ res=msgBox.exec_()
+ if res == 0 :
+ self.generator.writeDefault(fn)
+ return (1, self.fichier)
+ if res == 2 : return (0, None)
+ if self.appliEficas.salome : self.appliEficas.close()
+ else : sys.exit(1)
if self.salome :
self.appliEficas.addJdcInSalome( self.fichier)
#---------------------------------------------#
- def get_file(self,unite=None,fic_origine = ''):
+ def getFile(self,unite=None,fic_origine = ''):
#---------------------------------------------#
# appele par I_JDC
ulfile = None
QMessageBox.information( self, titre,texte)
fn = QFileDialog.getOpenFileName(self.appliEficas,
titre,
- self.appliEficas.CONFIGURATION.savedir)
+ self.appliEficas.maConfiguration.savedir)
- # ce retour est impose par le get_file d'I_JDC
+ # ce retour est impose par le getFile d'I_JDC
if fn== '' : return None," "
if not fn : return (0, " ")
fn=fn[0]
ulfile = os.path.abspath(six.text_type(fn))
- self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
# On utilise le convertisseur defini par format_fichier
- source=self.get_source(ulfile)
+ source=self.getSource(ulfile)
if source:
# On a reussia convertir le fichier self.ulfile
jdcText = source
return ulfile, jdcText
#-----------------------------------#
- def updateJdc(self, itemApres,texte):
+ def updateJdc(self, etape,texte):
#------------------------------------#
# ajoute une etape de JdC a partir d un texte
- monItem=itemApres
- etape=monItem.item.object
- CONTEXT.set_current_step(etape)
- etape.build_includeInclude(texte)
- self.tree.racine.build_children()
+ CONTEXT.setCurrentStep(etape)
+ etape.buildIncludeEtape(texte)
+ self.tree.racine.buildChildren()
#-----------------------------------#
def updateJdcEtape(self, itemApres,texte):
# ajoute une etape de JdC a partir d un texte
monItem=itemApres
etape=monItem.item.object
- CONTEXT.set_current_step(etape)
+
+ CONTEXT.setCurrentStep(etape)
try :
- ok=etape.build_includeEtape(texte)
+ ok=etape.buildIncludeEtape(texte)
except :
ok=0
if not ok :
QMessageBox.information( self,
tr("Import texte"),
tr("Impossible d importer le texte"))
- self.tree.racine.build_children()
+ self.tree.racine.buildChildren()
return ok
+ #-------------------------------------------#
+ def updateJdcAfterEtape(self, etape,texte):
+ #--------------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ CONTEXT.setCurrentStep(etape)
+ try :
+ ok=etape.buildIncludeEtape(texte,doitEtreValide=0)
+ except :
+ ok=0
+ if not ok :
+ QMessageBox.information( self,
+ tr("Import texte"),
+ tr("Impossible d importer le texte"))
+ self.tree.racine.buildChildren()
+ return ok
#-------------------------------------#
def deleteEtape(self,etape):
#-------------------------------------#
# dans le JDC
- self.jdc.suppentite(etape)
+ self.jdc.suppEntite(etape)
#-------------------------------------#
def deleteMC(self,etape,MCFils,listeAvant=()):
# dans le JDC
ouChercher=etape
for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- if monMC != None : ouChercher.suppentite(monMC)
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ monMC=ouChercher.getChild(MCFils,restreint="oui")
+ if monMC != None : ouChercher.suppEntite(monMC)
ouChercher.state='changed'
- ouChercher.isvalid()
+ ouChercher.isValid()
#-------------------------------------#
def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
# dans le JDC
ouChercher=etape
for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- monMC=etape.get_child(ouChercher,restreint="oui")
- if monMC== None : monMC= ouChercher.addentite(MCFils)
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ monMC=etape.getChild(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addEntite(MCFils)
monMC.valeur=valeurs
monMC.val=valeurs
monMC.state='changed'
- monMC.isvalid()
+ monMC.isValid()
#----------------------------------------------#
def ajoutMCFact(self,etape,MCFils,listeAvant=()):
#----------------------------------------------#
# dans le JDC
- print ('ajoutMCFact')
- ouChercher=etape
- print (ouChercher)
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- print (mot)
- print (ouChercher)
- monMC=etape.get_child(ouChercher,restreint="oui")
- if monMC== None : monMC= ouChercher.addentite(MCFils)
- monMC.isvalid()
-
- #-------------------------------------------------#
- def getValeur(self,nomEtape,MCFils,listeAvant=()):
- #-------------------------------------------------#
- # dans le JDC
-
- ouChercher=None
- for e in self.jdc.etapes:
- if e.nom == nomEtape : ouChercher=e; break
- if debug : print ('etape trouvee', ouChercher)
- if ouChercher==None : return None
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- if debug : print (mot, ouChercher)
- if ouChercher==None : return None
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- if debug : print ('monMC', monMC)
- if monMC== None : return None
- return monMC.valeur
-
- #-----------------------------------------------------------#
- def setValeur(self,nomEtape,MCFils,valeur,listeAvant=()):
- #--------------------------------------------------------#
- # dans le JDC
-
- ouChercher=None
- for e in self.jdc.etapes:
- if e.nom == nomEtape : ouChercher=e; break
- if ouChercher==None : return None
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- #print (mot, ouChercher)
- if ouChercher==None : return None
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- monMC.set_valeur(valeur)
- monMC.isvalid()
-
- #-----------------------------------------------------------#
- def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
- #-----------------------------------------------------------#
- # dans le JDC
+ #print ('ajoutMCFact')
ouChercher=etape
- if isinstance (etape, str):
- ouChercher=None
- for e in self.jdc.etapes:
- if e.nom == etape : ouChercher=e; break
- if ouChercher==None : return
-
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- if ouChercher==None : return
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- if monMC== None : monMC= ouChercher.addentite(MCFils)
-
- monMC.definition.into=valeurs
- from Noyau.N_VALIDATOR import IntoProtocol
- monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
- monMC.state='changed'
- monMC.isvalid()
-
- #-------------------------------------------------------------------#
- def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
- #-------------------------------------------------------------------#
- # dans le JDC
- for e in self.jdc.etapes:
- if e.nom == nomEtape : ouChercher=e; break
-
+ #print (ouChercher)
for mot in listeAvant :
- try :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- # Le mot clef n est pas la
- except : return 0
- try :
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- # Le mot clef n est pas la
- except : return 0
- if monMC == None : return 0
-
- if hasattr(monMC.definition,'into') :
- if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
- else : maListeDeValeur=monMC.definition.into
- else :
- return 0
-
- monMC.state='changed'
- return 1
-
- #-------------------------------------#
- def changeDefautDefMC(self,nomEtape,listeMC,valeurs):
- #-------------------------------------#
- # dans le MDD
-
- #if isinstance (etape, str):
- # for e in self.jdc.etapes:
- # if e.nom == etape : etape=e; break
- #if etape == None : return
- definitionEtape=getattr(self.jdc.cata[0],nomEtape)
- ouChercher=definitionEtape
- if len(listeMC) > 1 :
-
- for mc in listeMC[0:-1]:
- mcfact=ouChercher.entites[mc]
- ouChercher=mcfact
-
- mcAccas=ouChercher.entites[listeMC[-1]]
- mcAccas.defaut=valeurs
- return 1
-
- #------------------------------------------------#
- def changeIntoDefMC(self,nomEtape,listeMC,valeurs):
- #------------------------------------------------#
- # dans le MDD
- definitionEtape=getattr(self.jdc.cata[0],nomEtape)
- ouChercher=definitionEtape
-
- if len(listeMC) > 1 :
- for mc in listeMC[0:-1]:
- mcfact=ouChercher.entites[mc]
- ouChercher=mcfact
- mcAccas=ouChercher.entites[listeMC[-1]]
-
- if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
- else : oldValeurs=None
- if oldValeurs==valeurs : return 0
-
- mcAccas.into=valeurs
- from Noyau.N_VALIDATOR import IntoProtocol
- mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
- return 1
-
- #-------------------------------------------------------------#
- def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
- #-------------------------------------------------------------#
- # dans le MDD
- #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
- if isinstance (etape, str):
- for e in self.jdc.etapes:
- if e.nom == etape : etape=e; break
- if etape == None : return
- definitionEtape=getattr(self.jdc.cata[0],etape)
- ouChercher=definitionEtape
- for k in listeAvant :
- ouChercher=ouChercher.entites[k]
- MCADetruire=ouChercher.entites[nomDuMC]
- ouChercher.ordre_mc.remove(nomDuMC)
- print ('remove de ', nomDuMC)
- del ouChercher.entites[nomDuMC]
- del self.dicoNouveauxMC[nomDuMC]
-
-
- #-------------------------------------------------------------#
- def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
- #-------------------------------------------------------------#
- # dans le MDD
- definitionEtape=getattr(self.jdc.cata[0],nomEtape)
- ouChercher=definitionEtape
- for k in listeAvant :
- ouChercher=ouChercher.entites[k]
- from Accas import A_SIMP
- Nouveau=A_SIMP.SIMP(typ,**args)
- Nouveau.pere=ouChercher
- Nouveau.nom=nomDuMC
- #Nouveau.ordre_mc=[]
- ouChercher.entites[nomDuMC]=Nouveau
- ouChercher.ordre_mc.append(nomDuMC)
- #print ('ajout de ', nomDuMC)
- #traceback.print_stack()
- # ajout CIST sauvegarde
- if nomDuMC in self.dicoNouveauxMC : del self.dicoNouveauxMC[nomDuMC]
- self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
- #print self.dicoNouveauxMC
-
- #---------------------------------------------------------------------#
- def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
- #---------------------------------------------------------------------#
- # dans le MDD
- print ('ajoutDefinitionMCFact', nomDuMC)
- definitionEtape=getattr(self.jdc.cata[0],nomEtape)
- ouChercher=definitionEtape
- for k in listeAvant :
- ouChercher=ouChercher.entites[k]
- from Accas import A_SIMP
- for mc in listeMC :
- nomMC=mc[0]
- typMC=mc[1]
- argsMC=mc[2]
- nouveauMC=A_SIMP.SIMP(typMC,**argsMC)
- nouveauMC.nom=nomMC
- args[nomMC]=nouveauMC
- from Accas import A_FACT
- nouveauFact=A_FACT.FACT(**args)
- nouveauFact.pere=ouChercher
- nouveauFact.nom=nomDuMC
- from Editeur.autre_analyse_cata import traite_entite
- traite_entite(nouveauFact,[])
- ouChercher.entites[nomDuMC]=nouveauFact
- ouChercher.ordre_mc.append(nomDuMC)
- self.dicoNouveauxFact[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,listeMC,args)
- #print self.dicoNouveauxMC
-
- #----------------------------------------------------#
-
- #----------------------------------------------------#
- def changeIntoMCandSet(self,etape,listeMC,into,valeurs):
- #----------------------------------------------------#
- # dans le MDD et le JDC
-
- self.changeIntoDefMC(etape,listeMC,into)
-
- if isinstance (etape, str):
- for e in self.jdc.etapes:
- if e.nom == etape : etape=e; break
- if etape == None : return
-
- ouChercher = etape
- for mot in listeMC[:-1] :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- if ouChercher==None : return
- MCFils=listeMC[-1]
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- if monMC== None : monMC= etape.addentite(MCFils)
-
- monMC.definition.into=into
- monMC.valeur=valeurs
- monMC.val=valeurs
- monMC.state='changed'
- monMC.isvalid()
-
- #-------------------------------------#
- def ajoutVersionCataDsJDC(self,txt):
- #-------------------------------------#
- if not hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): return txt
- ligneVersion="#VERSION_CATALOGUE:"+self.readercata.cata[0].VERSION_CATALOGUE+":FIN VERSION_CATALOGUE\n"
- texte=txt+ligneVersion
- return texte
-
- #-------------------------------------#
- def verifieVersionCataDuJDC(self,text):
- #-------------------------------------#
- memeVersion=False
- indexDeb=text.find("#VERSION_CATALOGUE:")
- indexFin=text.find(":FIN VERSION_CATALOGUE")
- if indexDeb < 0 :
- self.versionCataDuJDC="sans"
- textJDC=text
- else :
- self.versionCataDuJDC=text[indexDeb+19:indexFin]
- textJDC=text[0:indexDeb]+text[indexFin+23:-1]
-
- self.versionCata="sans"
- if hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): self.versionCata=self.readercata.cata[0].VERSION_CATALOGUE
-
- if self.versionCata==self.versionCataDuJDC : memeVersion=True
- return memeVersion,textJDC
-
- #-------------------------------#
- def traduitCatalogue(self,texte):
- #-------------------------------#
- nomTraducteur="traduit"+self.readercata.code+self.versionCataDuJDC+"To"+self.versionCata
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"../Traducteur")))
- try :
- traducteur=__import__(nomTraducteur)
- monTraducteur=traducteur.MonTraducteur(texte)
- nouveauTexte=monTraducteur.traduit()
- return nouveauTexte
- except :
- return texte
-
-
- #------------------------------#
- def verifieCHECKSUM(self,text):
- #------------------------------#
- indexDeb=text.find("#CHECKSUM:")
- if indexDeb < 0 :
- return 1, text
- indexFin=text.find(":FIN CHECKSUM")
- checkAvant=text[indexDeb:indexFin+13]
- textJDC=text[0:indexDeb]+text[indexFin+13:-1]
- if self.code != 'PSEN' and self.code != 'PSEN_N1':
- checksum=self.get_checksum(textJDC)
- pareil=(checkAvant==checksum)
- else :
- pareil=1
- #if self.code=='PSEN'
- return pareil, textJDC
-
- #---------------------------#
- def get_checksum(self,texte):
- #---------------------------#
- newtexte=texte.replace('"','\\"')
- commande='echo "'+newtexte+'"|md5sum'
- a=os.popen(commande)
- checksum=a.read()
- a.close()
- ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM"
- return ligne
-
-
- #---------------------------#
- def _new_CF(self):
- #---------------------------#
- texte="CONDUITE_FORCEE();"
- return texte
-
-
- #---------------------------#
- def _newTELEMAC(self):
- #---------------------------#
- #texte="INITIALIZATION();BOUNDARY_CONDITIONS();GENERAL_PARAMETERS();PHYSICAL_PARAMETERS();NUMERICAL_PARAMETERS();"
- texte="COMPUTATION_ENVIRONMENT();HYDRO();GENERAL_PARAMETERS();NUMERICAL_PARAMETERS()"
- #texte="TRACERS();"
- return texte
-
- #---------------------------#
- def _newPSEN(self):
- #---------------------------#
- texte="DIRECTORY() ; PSSE_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
- #texte=""
- return texte
-
- #---------------------------#
- def _newPSEN_N1(self):
- #---------------------------#
- texte="CASE_SELECTION();N_PROCESSING_OPTIONS();CONTINGENCY_OPTIONS();CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
- #texte="CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
- return texte
-
- #---------------------------#
-
- #---------------------------#
- def _newZCRACKS(self):
- #---------------------------#
- texte="MAILLAGES();REMESHING();"
- return texte
-
- #---------------------------#
- def _newJDCCND(self):
- #---------------------------#
- extensions=tr('Fichiers Med (*.med);;''Tous les Fichiers (*)')
-
- #if self.salome == 0 :
- QMessageBox.information( self,
- tr("Fichier Med"),
- tr("Veuillez selectionner un fichier Med"))
- QSfichier = QFileDialog.getOpenFileName(self.appliEficas,
- caption='Fichier Med',
- filter=extensions)
- QSfichier=QSfichier[0]
- self.fichierMED=QSfichier
- from acquiertGroupes import getGroupes
- erreur,self.listeGroupes,self.nomMaillage,self.dicoCoord=getGroupes(self.fichierMED)
- if erreur != "" : print ("a traiter")
- texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n"
- texteSources=""
- texteCond=""
- texteNoCond=""
- texteVcut=""
- texteZs=""
- for groupe in self.listeGroupes :
- if groupe[0:8]=='CURRENT_':
- texteSources +=groupe[8:]+"=SOURCE("
- texteSources +="VecteurDirecteur=(1.0,2.0,3.0,),);\n"
- if groupe[0:5]=='COND_': texteCond +=groupe[5:]+"=CONDUCTEUR();\n"
- if groupe[0:7]=='NOCOND_': texteNoCond +=groupe[7:]+"=NOCOND();\n"
- if groupe[0:5]=='VCUT_': texteVcut +='V_'+groupe[5:]+"=VCUT();\n"
- if groupe[0:3]=='ZS_': texteZs +=groupe[3:]+"=ZS();\n"
- texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut+texteZs
- self.newTexteCND=texte
- self.modified=1
- return texte
-
-
- #---------------------------#
- def BoutonFileSelected(self):
- #---------------------------#
-
- QSfichier=self.openfile.selectedFiles()[0]
- self.fichierMED=str(QSfichier)
- from acquiertGroupes import getGroupes
- erreur,self.listeGroupes,self.nomMaillage=getGroupes(self.fichierMED)
- if erreur != "" : print ("a traiter")
-
- #-----------------------------
- def BoutonSalomePressed(self):
- #----------------------------
- Msg,self.listeGroupes=self.appliEficas.ChercheGrpMailleInSalome()
- self.fichierMED="A_partir_de_SMESH"
- self.nomMaillage="A_partir_de_SMESH"
- self.openfile.close()
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ #print (mot)
+ #print (ouChercher)
+ monMC=etape.getChild(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addEntite(MCFils)
+ monMC.isValid()
#-----------------------------------------
#-----------------------------------------
#print ("je passe ds initSplitterSizes", nbWidget)
- if self.code in [ 'Adao', 'ADAO', ] : self.splitterSizes3=[1,1550,150]
- elif self.code in [ 'MAP'] : self.splitterSizes3=[700,300]
+ if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,150]
+ #elif self.code in [ 'MAP'] : self.splitterSizes3=[700,300]
else : self.splitterSizes3=[150,1000,300]
- if self.code in [ 'Adao', 'ADAO', ] : self.splitterSizes2=[5,1500]
+ if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes2=[5,1500]
else : self.splitterSizes2=[300,1000]
-
#-----------------------------------------
def restoreSplitterSizes(self,nbWidget=3):
#----------------------------------------
self.widgetTree.show()
#self.restoreSplitterSizes(3)
+ #-----------------------
+ def getEtapeCourante(self) :
+ #-----------------------
+ #print (self.tree.selectedItems())
+ if len(self.tree.selectedItems()) != 1 : return None
+ etape=self.tree.selectedItems()[0].item.object.getEtape()
+ return etape
#-----------------------------
def getTreeIndex(self,noeud):
#----------------------------
pass
return indexNoeud
-if __name__ == "__main__":
- self.code='ASTER'
- name='prefs_'+prefs.code
- prefsCode=__import__(name)
+ #-------------------# Pour execution avec output et error dans le bash
+ def runPSEN(self):
+ #-------------------#
+
+ #if self.modified or self.fichier==None : self.saveFile()
+ self.saveFile()
+
+ #lancement avec le .bat
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN'))
+ WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
+ import subprocess
+ p = subprocess.Popen(['python',WrapperFilePath])
+ (out,err)=p.communicate()
+ print (out)
+ print (err)
+ #-------------------# Pour execution avec output et error dans le bash
+ def runPSEN_N1(self):
+ #-------------------#
+
- if hasattr(prefsCode,'encoding'):
- # Hack pour changer le codage par defaut des strings
- import sys
- reload(sys)
- sys.setdefaultencoding(prefs.encoding)
- del sys.setdefaultencoding
- # Fin hack
+ self.saveFile()
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
-# code=options.code
-#
- app = QApplication(sys.argv)
- mw = JDCEditor(None,'azAster.comm')
- app.setMainWidget(mw)
- app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
- mw.show()
-
- res = app.exec_loop()
- sys.exit(res)
+ if not(self.jdc.isValid()):
+ QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.generator.Dico
+
+ ###to delete
+ #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+
+
+ print ('in runPSEN_N1', dico)
+ print (dico)
+ from Run import run
+ run(dico)
+ #res,txt_exception=run(dico)
+ #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception)
+ #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception)
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_N1(self):
+ #-------------------#
+
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
+
+
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.getDico() #generator.Dico
+
+
+ for k in dico['CONTINGENCY_PROCESSING']:
+ #print (k)
+ if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' :
+ newK=k.replace('__',' ')
+ l="'"+str(newK)+"'"
+ dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k]
+ del dico['CONTINGENCY_PROCESSING'][k]
+
+ ###to delete
+ fileDico = os.path.join(path1, 'dicoN1_process.py')
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+ return dico
+
+ #return self.getDico()
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_VP(self):
+ #-------------------#
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.getDico() #generator.Dico
+ return dico
+
+if __name__ == "__main__":
+ print ('in main')
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+ from builtins import str
+ from builtins import range
+except : pass
+
+import types,sys,os, re
+import subprocess
+import traceback
+import six
+
+from monCodeMeteoAppelRun import Profil_Neutre
+
+
+from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter, QLabel
+from PyQt5.QtGui import QPalette
+from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
+
+import traceback
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from Editeur import session
+from Editeur import comploader
+from Editeur import Objecttreeitem
+from InterfaceQT4 import browser
+
+from desBaseWidget import Ui_baseWidget
+from InterfaceQT4.monViewTexte import ViewText
+from monWidgetCreeParam import MonWidgetCreeParam
+
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
+debug = False
+
+
+from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
+
+
+class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
+# ----------------------------------------- #
+ """
+ Editeur de jdc
+ """
+
+# ----------------------------------------
+# Methodes faisant appel a ssIhm
+# ----------------------------------------
+
+ def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+ #------------------------------------------------------------------------------------------
+
+
+ QWidget.__init__(self,None)
+ self.setupUi(self)
+
+ self.inhibeSplitter=0
+ self.widgetOptionnel=None
+ self.fenetreCentraleAffichee=None
+ self.dejaDansPlieTout=False
+ self.listeDesListesOuvertes=set()
+ self.afficheListesPliees=True
+ if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+ else : self.sb = None
+ self.QWParent=QWParent
+
+ JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
+
+ # Particularites IHM : met la fenetre a jour
+
+ self.initSplitterSizes()
+ if self.code == "ASTER" or self.code == "monCode" : self.afficheListesPliees =True
+ if self.code == 'PSEN_N1' : self.afficheListesPliees = False
+
+ #self.affiche=self.appliEficas.maConfiguration.affiche
+
+ if self.code in ['MAP','CARMELCND','PSEN'] : self.maConfiguration.afficheCommandesPliees=False
+ if self.code in ['MAP',]: self.fermeArbre()
+ # self.widgetTree.close()
+ # self.widgetTree=None
+
+ if self.maConfiguration.closeArbre: self.fermeArbre()
+ if self.maConfiguration.boutonDsMenuBar : self.appliEficas.remplitIconesCommandes()
+
+ self.version_code = session.d_env.cata
+
+ self.format = self.appliEficas.format_fichier
+
+ self.node_selected = []
+ self.deplier = True
+ self.message=''
+ self.afficheApresInsert=False
+ if self.maConfiguration.closeArbre : self.afficheApresInsert=True
+ if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True
+ if self.code in ['TELEMAC',] : self.enteteQTree='premier'
+ else : self.enteteQTree='complet'
+ if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True
+ else : self.affichePlie=False
+
+ self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue
+
+ if self.appliEficas.readercata.demandeCatalogue==True :
+ nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.versionCode)
+ if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) :
+ translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation)
+ from Extensions import localisation
+ localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier)
+
+
+ if self.jdc_item and self.appliEficas.ssIhm==False :
+ self.tree = browser.JDCTree( self.jdc_item, self )
+ self.appliEficas.construitMenu()
+
+ self.adjustSize()
+
+
+ #-------------------------------#
+ def readFile(self, fn):
+ #--------------------------------#
+ """
+ Public slot to read the text from a file.
+ @param fn filename to read from (string or QString)
+ """
+
+ jdc=JDCEditorSsIhm.readFile(self, fn)
+
+ # Particularites IHM : met le titre de la fenetre a jour
+# qApp.restoreOverrideCursor()
+ if self.fileInfo!= None : self.lastModified = self.fileInfo.lastModified()
+ nouveauTitre=self.titre+" "+os.path.basename(self.fichier)
+ self.appliEficas.setWindowTitle(nouveauTitre)
+
+ return jdc
+
+# ---------------------------------------------
+# Methodes Inchangees
+# ---------------------------------------------
+# _newJDC
+# _newJDCInclude
+# __generateTempFilename
+# getSource
+# generDico
+# viewJdcSource
+# viewJdcPy
+# viewJdcRapport
+# getFileName
+# initModif
+# writeFile
+# getTextJDC
+# verifieChecksum
+# getChecksum
+# getDico
+# chercheGroupes
+# chercheDico
+# saveFileLegerAs
+
+# ---------------------------------------------
+# Methodes Surchargees
+# ---------------------------------------------
+
+ #-----------------------------------------------------------------------#
+ def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
+ #--------------------------------------------------------------------#
+ w = ViewText( self.QWParent,self ,caption,txt,largeur,hauteur)
+ w.show()
+
+ #--------------------------------#
+ def informe(self,titre,txt,critique=True):
+ #--------------------------------#
+ if critique :
+ self.afficheInfos(tr(txt),Qt.red)
+ QMessageBox.critical( self, tr(titre), tr(txt))
+ else :
+ QMessageBox.warning( self, tr(titre),tr(txt))
+
+ #--------------------------------#
+ def ajoutCommentaire(self):
+ #--------------------------------#
+ if self.tree.selectedItems()==[] :
+ QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne"))
+ return
+ noeudAvantCommentaire=self.tree.selectedItems()[0]
+ if noeudAvantCommentaire ==self.tree.racine :
+ self.tree.racine.appendChild("COMMENTAIRE",pos=0)
+ return
+ noeudAvantCommentaire.addComment(True)
+
+
+ #----------------------------------------------#
+ def _viewTextExecute(self, txt, prefix, suffix):
+ #----------------------------------------------#
+ self.w = ViewText( self.QWParent )
+ self.w.setWindowTitle( "execution" )
+ self.monExe=QProcess(self.w)
+ pid=self.monExe.pid()
+ nomFichier = self.__generateTempFilename(prefix, suffix = ".sh")
+ f=open(nomFichier,'w')
+ f.write(txt)
+ f.close()
+ self.monExe.readyReadStandardOutput.connect( self.readFromStdOut)
+ self.monExe.readyReadStandardError.connect( self.readFromStdErr)
+ exe='sh ' + nomFichier
+ self.monExe.start(exe)
+ self.monExe.closeWriteChannel()
+ self.w.exec_()
+ try:
+ commande="rm "+ nomFichier
+ os.system(commande)
+ except :
+ pass
+
+ def readFromStdErr(self):
+ a=self.monExe.readAllStandardError()
+ self.w.view.append(str(a.data()))
+
+ def readFromStdOut(self) :
+ a=self.monExe.readAllStandardOutput()
+ self.w.view.append(str(a.data()))
+
+
+ #-----------------------#
+ def gestionParam(self):
+ #-----------------------#
+ w = MonWidgetCreeParam( self)
+ w.show()
+
+
+ #----------------#
+ def closeIt(self):
+ #----------------#
+ """
+ Public method called by the viewmanager to finally get rid of us.
+ """
+ if self.jdc: self.jdc.supprime()
+ self.close()
+
+ #----------------------------------------------#
+ def afficheInfos(self,message,couleur=Qt.black):
+ #----------------------------------------------#
+ if couleur=='red' : couleur = Qt.red
+ if self.sb:
+ mapalette=self.sb.palette()
+ mapalette.setColor( QPalette.WindowText, couleur )
+ self.sb.setPalette( mapalette );
+ self.sb.showMessage(message,4000)
+ self.couleur=couleur
+
+ #------------------------------#
+ def afficheAlerte(self,titre,message):
+ #------------------------------#
+ # appele par I_MACRO_ETAPE
+ QMessageBox.information( self, titre, message)
+
+ #-----------------------------------#
+ def afficheCommentaire(self,message):
+ #-----------------------------------#
+ self.labelCommentaire.setText(message)
+ QTimer.singleShot(6000, self.rendInvisible)
+
+ #----------------------#
+ def rendInvisible(self):
+ #----------------------#
+ self.labelCommentaire.setText("")
+
+ #---------------------------------------#
+ def chercheNoeudSelectionne(self,copie=1):
+ #---------------------------------------#
+ """
+ appele par Cut et Copy pour positionner self.node_selected
+ """
+ self.node_selected=[]
+ if len(self.tree.selectedItems()) == 0 : return
+ self.node_selected=self.tree.selectedItems()
+
+
+ #---------------------#
+ def handleSupprimer(self):
+ #---------------------#
+ self.chercheNoeudSelectionne()
+ if len(self.node_selected) == 0 : return
+ self.QWParent.noeud_a_editer = []
+ if self.node_selected[0]==self.tree.racine: return
+ if len(self.node_selected) == 1 : self.node_selected[0].delete()
+ else : self.node_selected[0].deleteMultiple(self.node_selected)
+
+ #---------------------#
+ def handleRechercher(self):
+ #---------------------#
+ from .monRecherche import DRecherche
+ monRechercheDialg=DRecherche(parent=self,fl=0)
+ monRechercheDialg.show()
+
+
+ #--------------------------------#
+ def handleRechercherDsCatalogue(self):
+ #-----------------------------#
+ from .monRechercheCatalogue import DRechercheCatalogue
+ monRechercheDialg=DRechercheCatalogue(self.QWParent,self)
+ monRechercheDialg.show()
+
+ #---------------------#
+ def handleDeplier(self):
+ #---------------------#
+ if self.tree == None : return
+ #self.tree.collapseAll()
+ if self.deplier :
+ #print "je plie"
+ self.tree.expandItem(self.tree.topLevelItem(0))
+ self.deplier = False
+ if self.fenetreCentraleAffichee != None :
+ if hasattr(self.fenetreCentraleAffichee.node,'plieToutEtReaffiche'):
+ self.fenetreCentraleAffichee.node.plieToutEtReaffiche()
+ else:
+ #print "je deplie"
+ self.tree.expandItem(self.tree.topLevelItem(0))
+ self.deplier = True
+ if self.fenetreCentraleAffichee != None :
+ if hasattr(self.fenetreCentraleAffichee.node,'deplieToutEtReaffiche'):
+ self.fenetreCentraleAffichee.node.deplieToutEtReaffiche()
+
+ #---------------------#
+ def handleEditCut(self):
+ #---------------------#
+ """
+ Stocke dans Eficas.noeud_a_editer le noeud a couper
+ """
+ #print "handleEditCut"
+ self.chercheNoeudSelectionne()
+ self.QWParent.edit="couper"
+ self.QWParent.noeud_a_editer = self.node_selected
+
+ #-----------------------#
+ def handleEditCopy(self):
+ #-----------------------#
+ """
+ Stocke dans Eficas.noeud_a_editer le noeud a copier
+ """
+ self.chercheNoeudSelectionne()
+ if len(self.node_selected) == 0 : return
+ if len(self.node_selected) == 1 : self.node_selected[0].updateNodeLabelInBlue()
+ else : self.node_selected[0].updatePlusieursNodeLabelInBlue(self.node_selected)
+ self.QWParent.edit="copier"
+ self.QWParent.noeud_a_editer = self.node_selected
+
+ #------------------------#
+ def handleEditPaste(self):
+ #------------------------#
+ """
+ Lance la copie de l'objet place dans self.QWParent.noeud_a_editer
+ Ne permet que la copie d'objets de type Commande ou MCF
+ """
+ self.chercheNoeudSelectionne()
+ if (not(hasattr(self.QWParent,'noeud_a_editer'))) or len(self.QWParent.noeud_a_editer)==0:
+ QMessageBox.information( self,
+ tr("Copie impossible"),
+ tr("Veuillez selectionner un objet a copier"))
+ return
+ if len(self.node_selected) != 1 :
+ QMessageBox.information( self,
+ tr("Copie impossible"),
+ tr("Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne"))
+ return
+ noeudOuColler=self.node_selected[0]
+
+ if len(self.QWParent.noeud_a_editer)!=1:
+ #self.handleEditPasteMultiple()
+ QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe"))
+ return
+
+ noeudACopier=self.QWParent.noeud_a_editer[0]
+
+ if (self.QWParent.edit != "couper"):
+ #print (noeudOuColler.item.parent.getChild(noeudOuColler.item.nom))
+ try:
+ if noeudOuColler == self.tree.racine :
+ child=noeudOuColler.doPastePremier(noeudACopier)
+ else :
+ child=noeudACopier.doPaste(noeudOuColler,'after')
+
+ if child==None or child==0:
+ QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet'))
+ self.message = ''
+ self.afficheInfos("Copie refusee",Qt.red)
+ if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
+ try :
+ nom=noeudACopier.item.sd.nom
+ child.item.nommeSd(nom)
+ except :
+ pass
+ return
+ self.initModif()
+ child.select()
+ except :
+ traceback.print_exc()
+ QMessageBox.critical( self,tr( "Copie refusee"),tr('Copie refusee pour ce type d objet'))
+ self.message = ''
+ self.afficheInfos("Copie refusee",Qt.red)
+ return
+
+ # il faut declarer le JDCDisplay_courant modifie
+ # suppression eventuelle du noeud selectionne
+ # si possible on renomme l objet comme le noeud couper
+
+ if (self.QWParent.edit == "couper"):
+ print ('je pass la')
+ if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
+ QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee '))
+
+ #if 1:
+ try :
+ # indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
+ indexNoeudACopier=self.getTreeIndex(noeudACopier)
+ noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
+ noeudACopier.treeParent.buildChildren()
+
+ #else:
+ except:
+ pass
+ self.QWParent.noeud_a_editer=[]
+
+ # on rend la copie a nouveau possible en liberant le flag edit
+ self.QWParent.edit="copier"
+ noeudACopier.select()
+
+ #----------------------------------#
+ def handleDeplaceMultiple(self):
+ #----------------------------------#
+ pass
+
+ #----------------------------------#
+ def handleEditPasteMultiple(self):
+ #----------------------------------#
+
+ # On ne garde que les niveaux "Etape"
+ # On insere dans l'ordre du JDC
+ listeNoeudsACouper=[]
+ listeIndex=[]
+ listeChild=[]
+ listeItem=[]
+ from InterfaceQT4 import compojdc
+ noeudOuColler=self.node_selected[0]
+ if not (isinstance(noeudOuColler.treeParent, compojdc.Node)):
+ QMessageBox.information( self,
+ tr("Copie impossible a cet endroit",),
+ tr("Veuillez selectionner une commande, un parametre, un commentaire ou une macro"))
+ return
+ indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler)
+
+ for noeud in self.QWParent.noeud_a_editer :
+ if not (isinstance(noeud.treeParent, compojdc.Node)): continue
+ indexInTree=noeud.treeParent.children.index(noeud)
+ indice = 0
+ for index in listeIndex:
+ if index < indexInTree : indice = indice +1
+ listeIndex.insert(indice, indexInTree)
+ listeNoeudsACouper.insert(indice, noeud)
+
+ noeudJdc=noeudOuColler.treeParent
+ dejaCrees=0
+ # on les cree a l'envers parcequ'on ajoute a NoeudOuColler
+ listeIndex.reverse()
+ for index in listeIndex:
+ indexTravail=index
+ if indexNoeudOuColler < index:
+ indexTravail=indexTravail+dejaCrees
+ noeudOuColler=noeudJdc.children[indexNoeudOuColler]
+ noeud=noeudJdc.children[indexTravail]
+ child=noeud.doPaste(noeudOuColler)
+ listeChild.append(child)
+ dejaCrees=dejaCrees+1
+
+ self.QWParent.noeud_a_editer = []
+ for i in range(len(listeIndex)):
+ noeud=noeudJdc.children[indexNoeudOuColler+1+i]
+ self.QWParent.noeud_a_editer.append(noeud)
+
+ listeASupprimer=[]
+ if self.QWParent.edit !="couper" : return
+
+ for index in listeIndex:
+ indexTravail=index
+ if indexNoeudOuColler < index:
+ indexTravail=indexTravail+(len(listeIndex))
+ noeud=noeudJdc.children[indexTravail]
+
+ listeItem.append(noeud.item)
+ listeASupprimer.append(noeud)
+
+ for i in range(len(listeChild)):
+ self.tree.item.suppItem(listeItem[i])
+ listeChild[i].item.update(listeItem[i])
+
+ self.QWParent.noeud_a_editer = []
+
+ #----------------------------------#
+ def handleAjoutEtape(self,nomEtape):
+ #----------------------------------#
+ self.chercheNoeudSelectionne()
+ if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine :
+ nodeOuAjouter=self.tree.racine
+ nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first')
+ else :
+ nodeOuAjouter=self.node_selected[0]
+ if nodeOuAjouter != self.tree.racine :
+ while nodeOuAjouter.treeParent != self.tree.racine:
+ print (nodeOuAjouter)
+ nodeOuAjouter=nodeOuAjouter.treeParent
+ print (nodeOuAjouter.parent == self.tree.racine)
+ nouveau=nodeOuAjouter.appendBrother(nomEtape)
+ try :
+ self.node_selected[0].setSelected(False)
+ except : pass
+ nouveau.setSelected(True)
+ nouveau.affichePanneau()
+
+
+ #---------------------------#
+ def getFileVariable(self) :
+ #---------------------------#
+ titre = tr("Choix d'un fichier XML")
+ texte = tr("Le fichier contient une commande MODEL\n")
+ texte = texte+tr('Donnez le nom du fichier XML qui contient la description des variables')
+ QMessageBox.information( self, titre,tr(texte))
+
+ fichier = QFileDialog.getOpenFileName(self.appliEficas,
+ tr('Ouvrir Fichier'),
+ self.appliEficas.maConfiguration.savedir,
+ tr('Wrapper Files (*.xml);;''All Files (*)'))
+ return fichier
+
+ #------------#
+ def run(self):
+ #------------#
+ fonction="run"+self.code
+ #print fonction
+ if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
+
+ #------------#
+ def saveRun(self):
+ #------------#
+ fonction="saveRun"+self.code
+ if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
+
+
+# ---------------------------------------------
+# Methodes Non Crees dans ssIHM
+# ---------------------------------------------
+
+ #---------------#
+ def runMAP(self):
+ #---------------#
+
+ if not(self.jdc.isValid()):
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP"))
+ return
+ if len(self.jdc.etapes) != 1 :
+ QMessageBox.critical( self, tr("Execution impossible "),tr("le JDC doit contenir un et un seul composant"))
+ return
+ if self.modified or self.fichier==None :
+ self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
+ texte=self.getTextJDC("MAP")
+ self.writeFile( self.fichierMapInput, txt = texte)
+ else :
+ self.fichierMapInput=self.fichier
+ composant=self.jdc.etapes[0].nom.lower()[0:-5]
+
+
+ # :TRICKY: to determine if a component requires SALOME, loads the component from Eficas catalog
+ # then instantiate corresponding class and call getUseSalome() method
+ try:
+ from mapengine.spec import factory
+ mapComponent = factory.new(composant)[0]
+
+ command = "map"
+ if mapComponent.getUseSalome():
+ command += " -r sappli"
+ textePython=(command + " run -n "+composant +" -i "+self.fichierMapInput)
+
+ #textePython="ls -l"
+ self._viewTextExecute( textePython,"map_run",".sh")
+ #try:
+ # commande="rm "+self.fichierMapInput
+ # os.system(commande)
+ #except :
+ # pass
+ except Exception as e:
+ print((traceback.print_exc()))
+
+ #-------------------#
+ def runZCRACKS(self):
+ #-------------------#
+ if not(self.jdc.isValid()):
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
+ return
+ if self.modified or self.fichier==None :
+ #if 1:
+ self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p")
+ texte=self.getTextJDC("ZCRACKS",pourRun=1)
+ self.writeFile( self.fichierZcracksInput, txt = texte)
+ else :
+ self.fichierZcracksInput=self.fichier
+ try :
+ #commande ="Zrun -zp "
+ commande="more "
+ textePython=(commande + self.fichierZcracksInput)
+ self._viewTextExecute( textePython,"run_zcracks",".sh")
+ except Exception as e:
+ print((traceback.print_exc()))
+
+ #-------------------#
+ def runCARMELCND(self):
+ #-------------------#
+ #if not(self.jdc.isValid()):
+ # QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
+ # return
+ if self.modified or self.fichier==None :
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution "))
+ return
+ if not hasattr(self,'generator'): texte=self.getTextJDC(self.format)
+ from PrepareRunCarmel import prepareRunCarmel
+ fichierGenerique=os.path.basename(self.fichier).split(".")[0]
+ repMed=os.path.dirname(self.fichier)
+ repExeCarmel=self.generator.get_repExeCarmel()
+ textePython=prepareRunCarmel(repExeCarmel,repMed,fichierGenerique)
+ nomFichier = self.__generateTempFilename("carmel_run", suffix = ".sh")
+ f=open(nomFichier,'w')
+ f.write(textePython)
+ f.close()
+ commande="xterm -e sh "+nomFichier +"\n"
+ os.system(commande)
+
+ #-------------------#
+ def runCarmelCS(self):
+ #-------------------#
+ try :
+ commande="runSession pilotyacsCS.py"
+ os.system(commande)
+ except Exception as e:
+ print((traceback.print_exc()))
+
+ #-----------------------------------------------------#
+ def determineNomFichier(self,path,extension):
+ #-----------------------------------------------------#
+ if self.appli.code in DictExtensions:
+ chaine1=DictExtensions[self.appli.code]+" (*."+DictExtensions[self.appli.code]+");;"
+ extensions= tr(chaine1+ "All Files (*)")
+ else :
+ extensions= tr("JDC (*.comm);;" "All Files (*)")
+
+ if self.appli.code == "MAP" :
+ extensions = extensions + ";; Run (*.input);;"
+
+ fn = QFileDialog.getSaveFileName( self,
+ tr("sauvegarde"), path,
+ extensions,None,
+ QFileDialog.DontConfirmOverwrite)
+ if fn == None : return (0, None)
+ fn=fn[0]
+ if fn=='': return (0, None)
+
+ ext = QFileInfo(fn).suffix()
+ if ext == '': fn+=extension
+
+ if QFileInfo(fn).exists():
+ msgBox = QMessageBox(self)
+ msgBox.setWindowTitle(tr("Sauvegarde du Fichier"))
+ msgBox.setText(tr("Le fichier <b>%s</b> existe deja.", six.text_type(fn)))
+ msgBox.addButton(tr("&Ecraser"),0)
+ msgBox.addButton(tr("&Abandonner"),1)
+ abort=msgBox.exec_()
+ if abort == 1 : return (0, "")
+ return (1,fn)
+
+ #-----------------#
+ def saveRunMAP(self):
+ #-----------------#
+ extension=".input"
+ if not(self.jdc.isValid()):
+ QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
+ tr("Un JdC valide est necessaire pour creer un .input")
+ )
+ return
+ try :
+ composant=self.jdc.etapes[0].nom.lower()[0:-5]
+ except :
+ QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
+ tr("Choix du composant obligatoire")
+ )
+ return
+ if hasattr(self.maConfiguration, "savedir"): path=self.maConfiguration.savedir
+ else : path='C:/'
+
+ monNomFichier=""
+ if self.fichier is not None and self.fichier != "" :
+ maBase=str(QFileInfo(self.fichier).baseName())+".input"
+ monPath=str(QFileInfo(self.fichier).absolutePath())
+ monNomFichier=os.path.join(monPath,maBase)
+ elif hasattr(self,'monNomFichierInput'):
+ monNomFichier=self.monNomFichierInput
+
+
+ monDialog=QFileDialog(self.appliEficas)
+ monDialog.setDirectory (path)
+ monDialog.setWindowTitle ("Save")
+
+ for c in monDialog.children():
+ if isinstance(c,QDialogButtonBox):
+ for b in c.children():
+ if isinstance(b,QPushButton):
+ avant=b.text()
+ if avant=="&Open": b.setText("Save")
+ mesFiltres= "input Map (*.input);;All Files (*)"
+ monDialog.setNameFilters(mesFiltres)
+ if monNomFichier!="" : monDialog.selectFile(monNomFichier)
+ BOk=monDialog.exec_()
+ if BOk==0: return
+ fn=str(monDialog.selectedFiles()[0])
+ if fn == "" or fn == None : return
+ if not fn.endswith(".input"):
+ fn += ".input"
+ self.monNomFichierInput=fn
+
+ if not hasattr(self, 'fichierMapInput') or not self.fichierMapInput or not os.path.exists(self.fichierMapInput):
+ self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
+ texte=self.getTextJDC("MAP")
+ self.writeFile( self.fichierMapInput, txt = texte)
+
+ cmd = ("map gen -t dat -n " + composant + " -i " + self.fichierMapInput + " -o " + fn)
+ p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
+ (output, err) = p.communicate()
+
+
+ #-----------------#
+ def saveRunPSEN(self):
+ #-----------------#
+ #print ("saveRunPSEN")
+ self.saveFile()
+
+
+
+ #-----------------------------------------#
+ def handleAjoutGroup(self,listeGroup):
+ #-----------------------------------------#
+ try :
+ #if 1:
+ from ajoutGroupe import handleAjoutGroupFiltre
+ #print listeGroup
+ handleAjoutGroupFiltre(self,listeGroup)
+ #print "apres handleAjoutGroupFiltre"
+ except :
+ #else :
+ pass
+
+
+ #-----------------------------------------------------------------#
+ def saveCompleteFile(self, path = None, saveas= 0,formatLigne="beautifie"):
+ #-----------------------------------------------------------------#
+ extension='.casR'
+ fn = self.fichierComplet
+ #saveas=True # Pour forcer le nom
+ self.generator=self.maConfiguration.mesGenerators.plugins[self.format]()
+ if self.fichierComplet is None or saveas:
+ if path is None: path=self.maConfiguration.savedir
+ bOK, fn=self.determineNomFichier(path,extension)
+ if bOK == 0 : return (0, None)
+ if fn == None : return (0, None)
+ if fn== '' : return (0, None)
+
+ ulfile = os.path.abspath(six.text_type(fn))
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
+ fn = six.text_type(QDir.toNativeSeparators(fn))
+
+ self.fichierComplet = os.path.splitext(fn)[0]+extension
+
+ if hasattr(self.generator, "writeComplet"):
+ self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+
+ if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
+
+ self.modified = 0
+ nouveauTitre=self.titre+" "+str(os.path.basename(self.fichierComplet))
+ self.appliEficas.setWindowTitle(nouveauTitre)
+ return (1, self.fichierComplet)
+
+ #-----------------------------------------------------------------#
+ def saveFile(self, path = None, saveas= 0,formatLigne="beautifie"):
+ #-----------------------------------------------------------------#
+ """
+ Public slot to save the text to a file.
+
+ @param path directory to save the file in (string or QString)
+ @return tuple of two values (boolean, string) giving a success indicator and
+ the name of the saved file
+ """
+
+ self.modified=1
+ if not self.modified and not saveas:
+ return (0, None) # do nothing if text wasn't changed
+
+ if self.appli.code in DictExtensions :
+ extension=DictExtensions[self.appli.code]
+ else :
+ extension='.comm'
+
+ newName = None
+ fn = self.fichier
+ if self.fichier is None or saveas:
+ if path is None: path=self.maConfiguration.savedir
+ bOK, fn=self.determineNomFichier(path,extension)
+ if bOK == 0 : return (0, None)
+ if fn == None : return (0, None)
+ if fn== '' : return (0, None)
+
+ ulfile = os.path.abspath(six.text_type(fn))
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
+ fn = six.text_type(QDir.toNativeSeparators(fn))
+ newName = fn
+
+
+ if not (self.writeFile(fn,formatLigne=formatLigne)): return (0, None)
+ self.fichier = fn
+ self.modified = False
+ if self.fileInfo is None or saveas:
+ self.fileInfo = QFileInfo(self.fichier)
+ self.fileInfo.setCaching(0)
+ self.lastModified = self.fileInfo.lastModified()
+ if newName is not None:
+ self.appliEficas.addToRecentList(newName)
+ self.tree.racine.item.getObject().nom=os.path.basename(newName)
+ self.tree.racine.updateNodeLabel()
+
+ self.jdc.toXml()
+
+ if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+ #if hasattr(self.generator, "writeDefault"):
+ self.generator.writeDefault(fn)
+ elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
+ msgBox = QMessageBox(None)
+ msgBox.setWindowTitle(tr("Fichier .cas invalide / incomplet"))
+ msgBox.setText(tr("Le fichier .cas est invalide / incomplet"))
+ msgBox.addButton(tr("&Sauvegarder"),1)
+ msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+ msgBox.addButton(tr("&Annuler"),2)
+ res=msgBox.exec_()
+ if res == 0 :
+ self.generator.writeDefault(fn)
+ return (1, self.fichier)
+ if res == 2 : return (0, None)
+ if self.appliEficas.salome : self.appliEficas.close()
+ else : sys.exit(1)
+
+ if self.salome :
+ self.appliEficas.addJdcInSalome( self.fichier)
+ self.modified = 0
+ nouveauTitre=self.titre+" "+str(os.path.basename(self.fichier))
+ self.appliEficas.setWindowTitle(nouveauTitre)
+
+ return (1, self.fichier)
+#
+
+ #----------------------------------------------#
+ def sauveLigneFile(self):
+ #----------------------------------------------#
+ self.modified=1
+ return self.saveFile(formatLigne="Ligne")
+
+
+ #----------------------------------------------#
+ def saveFileAs(self, path = None,fileName=None):
+ #----------------------------------------------#
+ """
+ Public slot to save a file with a new name.
+
+ @param path directory to save the file in (string or QString)
+ @return tuple of two values (boolean, string) giving a success indicator and
+ the name of the saved file
+ """
+ if fileName != None :
+ self.fichier = fileName
+ return self.saveFile()
+ return self.saveFile(path,1,"beautifie")
+
+
+
+ #---------------------------------------------#
+ def getFile(self,unite=None,fic_origine = ''):
+ #---------------------------------------------#
+ # appele par I_JDC
+ ulfile = None
+ jdcText = ""
+
+ titre = ""
+
+ if unite :
+ titre = tr("Choix unite %d ", unite)
+ texte = tr("Le fichier %s contient une commande INCLUDE \n", str(fic_origine)) +"\n"
+ texte = texte+ tr("Donnez le nom du fichier correspondant a l unite logique ") + repr(unite)
+ labeltexte = tr('Fichier pour unite ') + repr( unite)
+ else:
+ titre = tr("Choix d'un fichier de poursuite")
+ texte = tr("Le fichier %s contient une commande POURSUITE\n", fic_origine)
+ texte = texte+tr('Donnez le nom du fichier dont vous \n voulez faire une poursuite')
+
+ QMessageBox.information( self, titre,texte)
+ fn = QFileDialog.getOpenFileName(self.appliEficas,
+ titre,
+ self.appliEficas.maConfiguration.savedir)
+
+ # ce retour est impose par le getFile d'I_JDC
+ if fn== '' : return None," "
+ if not fn : return (0, " ")
+ fn=fn[0]
+
+ ulfile = os.path.abspath(six.text_type(fn))
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
+
+ # On utilise le convertisseur defini par format_fichier
+ source=self.getSource(ulfile)
+ if source:
+ # On a reussia convertir le fichier self.ulfile
+ jdcText = source
+ else:
+ # Une erreur a ete rencontree
+ jdcText = ''
+ return ulfile, jdcText
+
+ #-----------------------------------#
+ def updateJdc(self, etape,texte):
+ #------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ CONTEXT.setCurrentStep(etape)
+ etape.buildIncludeEtape(texte)
+ self.tree.racine.buildChildren()
+
+ #-----------------------------------#
+ def updateJdcEtape(self, itemApres,texte):
+ #------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ monItem=itemApres
+ etape=monItem.item.object
+
+ CONTEXT.setCurrentStep(etape)
+ try :
+ ok=etape.buildIncludeEtape(texte)
+ except :
+ ok=0
+ if not ok :
+ QMessageBox.information( self,
+ tr("Import texte"),
+ tr("Impossible d importer le texte"))
+ self.tree.racine.buildChildren()
+ return ok
+
+ #-------------------------------------------#
+ def updateJdcAfterEtape(self, etape,texte):
+ #--------------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ CONTEXT.setCurrentStep(etape)
+ try :
+ ok=etape.buildIncludeEtape(texte,doitEtreValide=0)
+ except :
+ ok=0
+ if not ok :
+ QMessageBox.information( self,
+ tr("Import texte"),
+ tr("Impossible d importer le texte"))
+ self.tree.racine.buildChildren()
+ return ok
+
+
+ #-------------------------------------#
+ def deleteEtape(self,etape):
+ #-------------------------------------#
+ # dans le JDC
+ self.jdc.suppEntite(etape)
+
+ #-------------------------------------#
+ def deleteMC(self,etape,MCFils,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ monMC=ouChercher.getChild(MCFils,restreint="oui")
+ if monMC != None : ouChercher.suppEntite(monMC)
+ ouChercher.state='changed'
+ ouChercher.isValid()
+
+ #-------------------------------------#
+ def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ monMC=etape.getChild(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addEntite(MCFils)
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isValid()
+
+ #----------------------------------------------#
+ def ajoutMCFact(self,etape,MCFils,listeAvant=()):
+ #----------------------------------------------#
+ # dans le JDC
+ print ('ajoutMCFact')
+ ouChercher=etape
+ print (ouChercher)
+ for mot in listeAvant :
+ ouChercher=ouChercher.getChild(mot,restreint="oui")
+ print (mot)
+ print (ouChercher)
+ monMC=etape.getChild(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addEntite(MCFils)
+ monMC.isValid()
+
+
+ #-----------------------------------------
+ def initSplitterSizes(self, nbWidget=3):
+ #-----------------------------------------
+ #print ("je passe ds initSplitterSizes", nbWidget)
+
+ if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes3=[1,1550,150]
+ #elif self.code in [ 'MAP'] : self.splitterSizes3=[700,300]
+ else : self.splitterSizes3=[150,1000,300]
+
+ if self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes2=[5,1500]
+ else : self.splitterSizes2=[300,1000]
+
+
+ #-----------------------------------------
+ def restoreSplitterSizes(self,nbWidget=3):
+ #----------------------------------------
+
+ #traceback.print_stack()
+ #print ("je passe ds restoreSplitterSizes")
+ if not(hasattr(self,'splitter')) : return
+ if nbWidget==2 : newSizes=self.splitterSizes2
+ if nbWidget==3 : newSizes=self.splitterSizes3
+ #self.inhibeSplitter = 1
+ self.splitter.setSizes(newSizes)
+ #self.inhibeSplitter = 0
+ QApplication.processEvents()
+ # seule la fentetre du milieu est necessaire
+ self.splitter.widget(1).resizeEvent=self.saveSplitterSizes
+
+ #-----------------------------------------
+ def saveSplitterSizes(self,event):
+ #-----------------------------------------
+ #print ("je passe ds saveSplitterSizes")
+ if self.inhibeSplitter : return
+ if self.widgetOptionnel == None : self.splitterSizes2 = self.splitter.sizes()[0:2]
+ else : self.splitterSizes3 = self.splitter.sizes()[0:3]
+
+ #------------------------
+ def fermeOptionnel(self):
+ #------------------------
+ if self.widgetOptionnel == None : return
+
+ self.inhibeSplitter=1
+ self.widgetOptionnel.setParent(None)
+ self.widgetOptionnel.close()
+ self.widgetOptionnel.deleteLater()
+ self.widgetOptionnel=None
+ self.inhibeSplitter=0
+ self.restoreSplitterSizes(2)
+
+ #------------------------
+ def ajoutOptionnel(self):
+ #------------------------
+ #if len(self.splitterSizes) == 2 : self.splitterSizes.append(self.oldSizeWidgetOptionnel)
+ #else : self.splitterSizes[2] = self.oldSizeWidgetOptionnel # ceinture pour les close bizarres
+ #self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2]
+
+ self.restoreSplitterSizes(3)
+
+
+ #------------------------
+ def fermeArbre(self):
+ #------------------------
+ #print (self.widgetTree)
+ self.oldWidgetTree=self.widgetTree
+ self.widgetTree.hide()
+ #self.widgetTree=None
+
+ #------------------------
+ def ouvreArbre(self):
+ #------------------------
+ #print ('je passe la')
+ #print (self.widgetTree)
+ #self.widgetTree=self.oldWidgetTree
+ self.widgetTree.show()
+ #self.restoreSplitterSizes(3)
+
+ #-----------------------
+ def getEtapeCourante(self) :
+ #-----------------------
+ print (self.tree.selectedItems())
+ if len(self.tree.selectedItems()) != 1 : return None
+ etape=self.tree.selectedItems()[0].item.object.getEtape()
+ return etape
+ #-----------------------------
+ def getTreeIndex(self,noeud):
+ #----------------------------
+ indexNoeud=-1
+ if noeud in noeud.treeParent.children :
+ indexNoeud=noeud.treeParent.children.index(noeud)
+ else :
+ if hasattr(noeud,'vraiParent') :
+ noeudVrai = noeud
+ noeudVraiParent = noeud.vraiParent
+ while noeudVraiParent != noeud.treeParent and hasattr(noeudVraiParent,'vraiParent') :
+ noeudVrai = noeudVraiParent
+ noeudVraiParent = noeudVraiParent.vraiParent
+ pass
+ if noeudVraiParent == noeud.treeParent :
+ indexNoeud=noeud.treeParent.children.index(noeudVrai)
+ pass
+ pass
+ pass
+ return indexNoeud
+
+ #-------------------#
+ def runMeteo(self):
+ #-------------------#
+
+ if not(self.jdc.isValid()):
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution Meteo"))
+ return
+ strSource = str( self.getTextJDC(self.format) )
+ code = compile(strSource, strSource, 'exec')
+ exec(code, globals(), {})
+
+
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def runPSEN(self):
+ #-------------------#
+
+ #if self.modified or self.fichier==None : self.saveFile()
+ self.saveFile()
+
+ #lancement avec le .bat
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN'))
+ WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
+ import subprocess
+ p = subprocess.Popen(['python',WrapperFilePath])
+ (out,err)=p.communicate()
+ print (out)
+ print (err)
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def runPSEN_N1(self):
+ #-------------------#
+
+
+ self.saveFile()
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
+
+ if not(self.jdc.isValid()):
+ QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.generator.Dico
+
+ ###to delete
+ #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+
+
+ print ('in runPSEN_N1', dico)
+ print (dico)
+ from Run import run
+ run(dico)
+ #res,txt_exception=run(dico)
+ #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception)
+ #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception)
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_N1(self):
+ #-------------------#
+
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
+
+
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.getDico() #generator.Dico
+
+
+ for k in dico['CONTINGENCY_PROCESSING']:
+ #print (k)
+ if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' :
+ newK=k.replace('__',' ')
+ l="'"+str(newK)+"'"
+ dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k]
+ del dico['CONTINGENCY_PROCESSING'][k]
+
+ ###to delete
+ fileDico = os.path.join(path1, 'dicoN1_process.py')
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+ return dico
+
+ #return self.getDico()
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_VP(self):
+ #-------------------#
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.getDico() #generator.Dico
+ return dico
+
+
+if __name__ == "__main__":
+ print ('in main')
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+ from builtins import str
+ from builtins import range
+except : pass
+
+import types,sys,os, re
+import subprocess
+import traceback
+
+import six
+from six.moves import range
+
+import traceback
+
+# Modules Eficas
+
+import convert, generator
+from Editeur import session
+from Editeur import comploader
+from Editeur import Objecttreeitem
+
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
+debug = False
+
+
+
+class JDCEditorSsIhm :
+# ------------------- #
+ """
+ Editeur de jdc
+ """
+
+# ---------------------------------------------
+# Methodes Communes ou appelees depuis avec Ihm
+# ---------------------------------------------
+
+ def __init__ (self,appli,fichier = None, jdc = None, units = None, include=0 ):
+ #------------------------------------------------------------------------------#
+ # paticularisee avec Ihm
+
+ if debug : print ('dans le init de JDCEditorSsIhm')
+ self.appliEficas = appli
+ self.appli = appli
+ self.fichier = fichier
+ self.fichierComplet = fichier
+ self.jdc = jdc
+ self.first = True
+ self.jdc_item = None
+ self.dicoNouveauxMC = {}
+ self.dicoNouveauxFact = {}
+ self.dict_reels = {}
+ self.liste_simp_reel = []
+
+ if appli != None : self.salome = self.appliEficas.salome
+ else : self.salome = 0
+
+ # ces attributs sont mis a jour par definitCode appelee par newEditor
+ self.code = self.appliEficas.maConfiguration.code
+ self.maConfiguration = self.appliEficas.maConfiguration
+
+ self.version_code = session.d_env.cata
+
+
+ if not hasattr ( self.appliEficas, 'readercata') or self.appliEficas.readercata.demandeCatalogue==True or self.appliEficas.multi==True:
+ if self.maConfiguration.typeDeCata == 'XML' :
+ from InterfaceQT4 import readercataXML as readercata
+ else :
+ from InterfaceQT4 import readercata
+ self.readercata = readercata.ReaderCata( self, self.appliEficas )
+ self.appliEficas.readercata=self.readercata
+ self.appliEficas.code=self.code
+ else :
+ self.readercata=self.appliEficas.readercata
+ if self.readercata.fic_cata == None : return #Sortie Salome
+ self.titre=self.readercata.titre
+
+ self.format = self.appliEficas.format_fichier
+
+ if self.appliEficas.maConfiguration.dumpXSD==True : self.appliEficas.dumpXsd()
+ self.dict_reels={}
+ self.liste_simp_reel=[]
+ self.dicoNouveauxMC={}
+ self.dicoNouveauxFact={}
+
+
+ try:
+ self.maConfiguration.generator_module
+ _module = __import__(self.maConfiguration.generator_module)
+ info = _module.entryPoint()
+ generator.plugins.addEntryPoint(info)
+ except:
+ pass
+
+ try:
+ self.maConfiguration.convert_module
+ #print self.maConfiguration.convert_module
+ _module = __import__(self.maConfiguration.convert_module)
+ info = _module.entryPoint()
+ convert.plugins.addEntryPoint(info)
+ except :
+ pass
+
+ self.maConfiguration.mesGenerators = generator
+ self.maConfiguration.mesconvertisseurs = convert
+
+ self.fileInfo = None
+ self.lastModified = 0
+
+ self.modified = False
+ self.isReadOnly = False
+
+ #------- construction du jdc --------------
+
+
+ self.nouveau=0
+ if self.fichier is not None: # fichier jdc fourni
+ if jdc==None :
+ #print ('PNPN : chgt try en if')
+ try :
+ #if 1 :
+ self.jdc = self.readFile(self.fichier)
+ except :
+ print ("mauvaise lecture du fichier")
+ if self.salome :
+ try :
+ self.appliEficas.addJdcInSalome( self.fichier)
+ except :
+ print ("mauvais enregistrement dans Salome")
+ else :
+ self.jdc=jdc
+
+ if self.jdc is not None and units is not None:
+ self.jdc.recorded_units=units
+ self.jdc.old_recorded_units=units
+
+ else:
+ if not self.jdc: # nouveau jdc
+ if not include :
+ self.jdc = self._newJDC(units=units)
+ else :
+ self.jdc = self._newJDCInclude(units=units)
+ self.nouveau=1
+
+ if self.jdc:
+ self.jdc.appli = self # a resorber
+ self.jdc.editor = self
+ self.jdc.lang = self.appli.langue
+ self.jdc.aReafficher=False
+ txt_exception = None
+ if not jdc:
+# si on est en XMML ne faut-il pas passer en Accas ?
+ self.jdc.analyse()
+ txt_exception = self.jdc.cr.getMessException()
+ if txt_exception :
+ self.jdc = None
+ self.informe('pb chargement jdc',txt_exception)
+ else:
+ comploader.chargerComposants()
+ self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
+
+ #-------------------------------#
+ def readFile(self, fn):
+ #--------------------------------#
+ """
+ Public slot to read the text from a file.
+ @param fn filename to read from (string or QString)
+ """
+
+ # charge un JDC
+ # paticularisee avec Ihm
+
+ fn = six.text_type(fn)
+ jdcName=os.path.basename(fn)
+
+ # Il faut convertir le contenu du fichier en fonction du format
+ if self.appliEficas.format_fichier_in in convert.plugins:
+ # Le convertisseur existe on l'utilise
+
+ p=convert.plugins[self.appliEficas.format_fichier_in]()
+ p.readfile(fn)
+
+ if p.text=="" : self.nouveau=1
+ #print ('PNPN --> CIST a faire')
+
+ pareil,texteNew=self.verifieChecksum(p.text)
+ if not pareil :
+ self.informe(("fichier modifie"),("Attention! fichier change hors EFICAS"),False)
+
+ p.text=texteNew
+ memeVersion,texteNew=self.verifieVersionCataDuJDC(p.text)
+ if memeVersion == 0 : texteNew=self.traduitCatalogue(texteNew)
+ p.text=texteNew
+
+ text=p.convert('exec',self.appliEficas)
+
+ if not p.cr.estvide(): self.afficheInfos("Erreur a la conversion",'red')
+ else :
+ self.afficheInfos("Type de fichier non reconnu",'red')
+ self.informe( "Type de fichier non reconnu",
+ "EFICAS ne sait pas ouvrir le type de fichier " + self.appliEficas.format_fichier_in)
+ return None
+
+ CONTEXT.unsetCurrentStep()
+
+ #if elf.appliEficas.maConfiguration
+ jdc=self.readercata.cata.JdC(procedure=text,
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ nom=jdcName,
+ rep_mat=self.maConfiguration.rep_mat
+ )
+ self.modified = False
+ return jdc
+
+
+ #--------------------------------#
+ def _newJDC( self ,units = None):
+ #--------------------------------#
+ """
+ Initialise un nouveau JDC vierge
+ """
+ self.modified=1
+ CONTEXT.unsetCurrentStep()
+
+ texte=""
+ if self.code == "CARMELCND" : texte=self._newJDCCND()
+ if self.code == "ZCRACKS" : texte=self._newZCRACKS()
+ if self.code == "PSEN" : texte = self._newPSEN()
+ if self.code == "PSEN_N1" : texte = self._newPSEN_N1()
+
+ #if hasattr(self.readercata.cata[0],'TEXTE_NEW_JDC') : texte=self.readercata.cata[0].TEXTE_NEW_JDC
+ if hasattr(self.readercata.cata,'TEXTE_NEW_JDC') : texte=self.readercata.cata.TEXTE_NEW_JDC
+
+
+ #jdc=self.readercata.cata[0].JdC( procedure =texte,
+ #print (self.readercata.cata)
+ jdc=self.readercata.cata.JdC( procedure =texte,
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ rep_mat=self.maConfiguration.rep_mat
+ )
+
+ jdc.lang = self.appli.langue
+ if units is not None:
+ jdc.recorded_units=units
+ jdc.old_recorded_units=units
+ ## PNPN est ce que la ligne suivante est bien utile ?
+ # elle positionne le contexte
+ # est ce qu on ne doit pas changer le format en Accas si on vient d accas ?
+ if self.format == 'xml' : return jdc
+ if texte == "" :
+ jdc.editor=self
+ jdc.analyse()
+ return jdc
+
+ #--------------------------------#
+ def _newJDCInclude( self ,units = None):
+ #--------------------------------#
+ """
+ Initialise un nouveau JDC vierge
+ """
+ import Extensions.jdc_include
+ JdC_aux=Extensions.jdc_include.JdC_include
+ CONTEXT.unsetCurrentStep()
+
+ #jaux=self.readercata.cata[0].JdC( procedure="",
+ jaux=self.readercata.cata.JdC( procedure="",
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ rep_mat=self.maConfiguration.rep_mat,
+ )
+ jaux.analyse()
+
+ J=JdC_aux( procedure="",
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ jdc_pere=jaux,
+ rep_mat=self.maConfiguration.rep_mat,
+ )
+ J.analyse()
+ if units is not None:
+ J.recorded_units=units
+ J.old_recorded_units=units
+ return J
+
+
+
+ #-----------------------#
+ def getSource(self,file):
+ #-----------------------#
+
+ # Il faut convertir le contenu du fichier en fonction du format
+ if self.format in convert.plugins :
+ # Le convertisseur existe on l'utilise
+ p=convert.plugins[self.format]()
+ p.readfile(file)
+ text=p.convert('execnoparseur')
+ if not p.cr.estvide():
+ self.afficheInfos("Erreur a la conversion",'red')
+ return text
+ else:
+ # Il n'existe pas c'est une erreur
+ self.afficheInfos("Type de fichier non reconnu",'red')
+ self.informe( "Type de fichier non reconnu",
+ "EFICAS ne sait pas ouvrir le type de fichier " + self.appliEficas.format_fichier_in)
+ return None
+
+ #----------------------------------------------#
+ def __generateTempFilename(self, prefix, suffix):
+ #----------------------------------------------#
+ import tempfile
+ (fd, filename) = tempfile.mkstemp(prefix=prefix, suffix=suffix)
+ os.close(fd)
+ return filename
+
+ #-----------------------#
+ def generDico(self):
+ #-----------------------#
+ if 'dico' in generator.plugins:
+ self.generator=generator.plugins['dico']()
+ #print (self.generator)
+ jdc_formate=self.generator.gener(self.jdc)
+ #print (jdc_formate)
+ dico=self.generator.Dico
+ #print (dico)
+ return dico
+
+ #-----------------------#
+ def viewJdcSource(self):
+ #-----------------------#
+ if self.fichier == None : return
+ f=open(self.fichier,'r')
+ texteSource=f.read()
+ f.close()
+ self._viewText(texteSource, "JDC_SOURCE")
+
+ #-----------------------#
+ def viewJdcPy(self):
+ #-----------------------#
+ strSource = str( self.getTextJDC(self.format) )
+ self._viewText(strSource, "JDC_RESULTAT")
+
+ #-----------------------#
+ def viewJdcRapport(self):
+ #-----------------------#
+ # on ajoute les regles
+ strRapport = six.text_type( self.jdc.report() )
+ self._viewText(strRapport, "JDC_RAPPORT")
+
+ #-----------------------#
+ def viewJdcRegles(self):
+ #-----------------------#
+ # on ajoute les regles
+ texte_global, test_global = self.jdc.verifRegles()
+ self._viewText(texte_global, "JDC_REGLES")
+
+ #-----------------------#
+ def getJdcRapport(self):
+ #-----------------------#
+ # on ajoute les regles
+ strRapport = six.text_type( self.jdc.report() )
+ return strRapport
+
+ #---------------------#
+ def getFileName(self):
+ #---------------------#
+ return self.fichier
+
+ #-------------------#
+ def initModif(self):
+ #-------------------#
+ """
+ Met l'attribut modified a 'o' : utilise par Eficas pour savoir
+ si un JDC doit etre sauvegarde avant destruction ou non
+ """
+ self.modified = True
+
+
+ #--------------------------------------------------#
+ def writeFile(self, fn, txt = None,formatLigne="beautifie"):
+ #--------------------------------------------------#
+ """
+ Public slot to write the text to a file.
+
+ @param fn filename to write to string
+ @return flag indicating success
+ """
+
+ fn = six.text_type(fn)
+
+ if txt == None :
+ txt = self.getTextJDC(self.format,formatLigne=formatLigne)
+ eol = '\n'
+ if len(txt) >= len(eol):
+ if txt[-len(eol):] != eol:
+ txt += eol
+ else:
+ txt += eol
+ txt=self.ajoutVersionCataDsJDC(txt)
+ if self.code != 'PSEN' and self.code != 'PSEN_N1' : checksum=self.getChecksum(txt)
+ else : checksum=''
+ txt=txt+checksum
+ if self.code=="TELEMAC" : return 1
+ try:
+ f = open(fn, 'w')
+ f.write(txt)
+ f.close()
+ return 1
+ except IOError as why:
+ self.afficheInfos('Sauvegarde du Fichier', 'Le fichier'+str(fn) + 'n a pas pu etre sauvegarde :' + str(why))
+ return 0
+
+ #-----------------------------------------------------------#
+ def getTextJDC(self,format,pourRun=0,formatLigne="beautifie"):
+ #-----------------------------------------------------------#
+ if self.code == "MAP" and not(format in generator.plugins): format = "MAP"
+
+ if format in generator.plugins:
+
+ # Le generateur existe on l'utilise
+ self.generator=generator.plugins[format]()
+ try :
+ jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+ if pourRun : jdc_formate=self.generator.textePourRun
+ if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
+ except ValueError as e:
+ self.informe( "Erreur a la generation",str(e),'red')
+ return
+
+ if not self.generator.cr.estvide():
+ self.informe("Erreur a la generation","EFICAS ne sait pas convertir ce JDC",'red')
+ return ""
+ else:
+ return jdc_formate
+ else:
+ # Il n'existe pas c'est une erreur
+ self.informe("Format inconnu", self.format + " non reconnu" )
+ return ""
+
+ #------------------------------#
+ def verifieChecksum(self,text):
+ #------------------------------#
+ # Attention : souci sous Windows
+ #
+ indexDeb=text.find("#CHECKSUM:")
+ if indexDeb < 0 : return 1, text
+ indexFin=text.find(":FIN CHECKSUM")
+ checkAvant=text[indexDeb:indexFin+13]
+ textJDC=text[0:indexDeb]+text[indexFin+13:-1]
+ if self.code != 'PSEN' and self.code != 'PSEN_N1':
+ checksum=self.getChecksum(textJDC)
+ pareil=(checkAvant==checksum)
+ else :
+ pareil=1
+ return pareil, textJDC
+
+ #---------------------------#
+ def getChecksum(self,texte):
+ #---------------------------#
+ newtexte=texte.replace('"','\\"')
+ commande='echo "'+newtexte+'"|md5sum'
+ a=os.popen(commande)
+ checksum=a.read()
+ a.close()
+ ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM"
+ return ligne
+
+ #----------------------#
+ def getDico(self):
+ #---------------------#
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ #print (self.generator)
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.generator.Dico
+ return dico
+ else :
+ self.afficheInfos(tr("Format %s non reconnu" , self.format),Qt.red)
+ return ""
+
+ #-----------------------------------------#
+ def chercheGroupes(self):
+ #-----------------------------------------#
+ listeMA,listeNO=self.getTextJDC("GroupMA")
+ return listeMA,listeNO
+
+ #-----------------------------------------#
+ def chercheDico(self):
+ #-----------------------------------------#
+ dicoCourant={}
+ format = self.appliEficas.format_fichier
+ if format in generator.plugins:
+ # Le generateur existe on l'utilise
+ self.generator=generator.plugins[format]()
+ jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.maConfiguration)
+ dicoCourant=self.generator.dico
+ return dicoCourant
+
+ #-----------------------------------------------------------------#
+ def saveFileLegerAs(self, fileName = None) :
+ #-----------------------------------------------------------------#
+ if fileName != None :
+ self.fichier = fileName
+ return self.saveFileLeger(fileName)
+ return self.saveFileLeger()
+
+ #-----------------------------------------------------------------#
+ def saveFileComplet(self, fichier = None, formatLigne="beautifie"):
+ #-----------------------------------------------------------------#
+ fn = fichier
+ self.generator=generator.plugins[self.format]()
+ print (self.generator)
+ if hasattr(self.generator, "writeComplet"):
+ self.generator.writeComplet(fichier,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+
+
+# ---------------------------------------------
+# Methodes Surchargees par avecIhm
+# ---------------------------------------------
+
+ #--------------------------------#
+ def ajoutCommentaire(self):
+ #--------------------------------#
+ print ('pas programme sans Ihm')
+ print ('prevenir la maintenance du besoin')
+
+
+ #--------------------------------------#
+ def informe(self,titre,txt,critique=True):
+ #--------------------------------------#
+ # methode differenre avec et sans ihm
+ if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!')
+ print (titre)
+ print (txt)
+ if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!')
+
+ #--------------------------------------#
+ def afficheInfos(self,txt,couleur=None):
+ #--------------------------------------#
+ # methode differenre avec et sans ihm
+ print (txt)
+
+ #-----------------------------------------------------------------------#
+ def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
+ #--------------------------------------------------------------------#
+ print ('_____________________________')
+ print (txt)
+ print ('_____________________________')
+
+
+ #-----------------------------------------------------------------#
+ def saveFile(self, fichier, formatLigne="beautifie"):
+ #-----------------------------------------------------------------#
+ """
+ Public slot to save the text to a file.
+
+ @param path directory to save the file in (string or QString)
+ @return tuple of two values (boolean, string) giving a success indicator and
+ the name of the saved file
+ """
+
+
+ if not (self.writeFile(fichier,formatLigne=formatLigne)): return (0, None)
+ self.fichierOut = fichier
+
+ if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+ self.generator.writeDefault(fichier)
+ elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
+ self.generator.writeDefault(fichier)
+
+ self.modified = 0
+
+ return (1, self.fichier)
+#
+
+ #----------------------------------------------#
+ def sauveLigneFile(self):
+ #----------------------------------------------#
+ self.modified=1
+ return self.saveFile(formatLigne="Ligne")
+
+
+ #-----------------------------------#
+ def updateJdc(self, itemApres,texte):
+ #------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ monItem=itemApres
+ etape=monItem.item.object
+ CONTEXT.setCurrentStep(etape)
+ etape.buildIncludeInclude(texte)
+ self.tree.racine.buildChildren()
+
+ #-----------------------------------#
+ def updateJdcEtape(self, itemApres,texte):
+ #------------------------------------#
+ # ajoute une etape de JdC a partir d un texte
+ monItem=itemApres
+ etape=monItem.item.object
+ CONTEXT.set_current_step(etape)
+ try :
+ ok=etape.build_includeEtape(texte)
+ except :
+ ok=0
+ if not ok :
+ QMessageBox.information( self,
+ tr("Import texte"),
+ tr("Impossible d importer le texte"))
+ self.tree.racine.build_children()
+ return ok
+
+
+
+ #-------------------------------------#
+ def deleteEtape(self,etape):
+ #-------------------------------------#
+ # dans le JDC
+ self.jdc.suppentite(etape)
+
+ #-------------------------------------#
+ def deleteMC(self,etape,MCFils,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC != None : ouChercher.suppentite(monMC)
+ ouChercher.state='changed'
+ ouChercher.isvalid()
+
+ #-------------------------------------#
+ def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ monMC=etape.get_child(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isvalid()
+
+ #----------------------------------------------#
+ def ajoutMCFact(self,etape,MCFils,listeAvant=()):
+ #----------------------------------------------#
+ # dans le JDC
+ print ('ajoutMCFact')
+ ouChercher=etape
+ print (ouChercher)
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ print (mot)
+ print (ouChercher)
+ monMC=etape.get_child(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+ monMC.isvalid()
+
+ #-------------------------------------------------#
+ def getValeur(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------------------#
+ # dans le JDC
+
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+ if debug : print ('etape trouvee', ouChercher)
+ if ouChercher==None : return None
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if debug : print (mot, ouChercher)
+ if ouChercher==None : return None
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if debug : print ('monMC', monMC)
+ if monMC== None : return None
+ return monMC.valeur
+
+ #-----------------------------------------------------------#
+ def setValeur(self,nomEtape,MCFils,valeur,listeAvant=()):
+ #--------------------------------------------------------#
+ # dans le JDC
+
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+ if ouChercher==None : return None
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ #print (mot, ouChercher)
+ if ouChercher==None : return None
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ monMC.set_valeur(valeur)
+ monMC.isvalid()
+
+ #-----------------------------------------------------------#
+ def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
+ #-----------------------------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ if isinstance (etape, str):
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == etape : ouChercher=e; break
+ if ouChercher==None : return
+
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+
+ monMC.definition.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
+ monMC.state='changed'
+ monMC.isvalid()
+
+ #-------------------------------------------------------------------#
+ def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------------------------------------#
+ # dans le JDC
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+
+ for mot in listeAvant :
+ try :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ try :
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ if monMC == None : return 0
+
+ if hasattr(monMC.definition,'into') :
+ if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
+ else : maListeDeValeur=monMC.definition.into
+ else :
+ return 0
+
+ monMC.state='changed'
+ return 1
+
+ #-------------------------------------#
+ def changeDefautDefMC(self,nomEtape,listeMC,valeurs):
+ #-------------------------------------#
+ # dans le MDD
+
+ #if isinstance (etape, str):
+ # for e in self.jdc.etapes:
+ # if e.nom == etape : etape=e; break
+ #if etape == None : return
+ definitionEtape=getattr(self.jdc.cata,nomEtape)
+ #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ if len(listeMC) > 1 :
+
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+
+ mcAccas=ouChercher.entites[listeMC[-1]]
+ mcAccas.defaut=valeurs
+ return 1
+
+ #------------------------------------------------#
+ def changeIntoDefMC(self,nomEtape,listeMC,valeurs):
+ #------------------------------------------------#
+ # dans le MDD
+ #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ definitionEtape=getattr(self.jdc.cata,nomEtape)
+ ouChercher=definitionEtape
+
+ if len(listeMC) > 1 :
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+ mcAccas=ouChercher.entites[listeMC[-1]]
+
+ if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
+ else : oldValeurs=None
+ if oldValeurs==valeurs : return 0
+
+ mcAccas.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
+ return 1
+
+ #-------------------------------------------------------------#
+ def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+ #definitionEtape=getattr(self.jdc.cata[0],etape)
+ definitionEtape=getattr(self.jdc.cata,etape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ MCADetruire=ouChercher.entites[nomDuMC]
+ ouChercher.ordre_mc.remove(nomDuMC)
+ print ('remove de ', nomDuMC)
+ del ouChercher.entites[nomDuMC]
+ del self.dicoNouveauxMC[nomDuMC]
+
+
+ #-------------------------------------------------------------#
+ def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ definitionEtape=getattr(self.jdc.cata,nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ Nouveau=A_SIMP.SIMP(typ,**args)
+ Nouveau.pere=ouChercher
+ Nouveau.nom=nomDuMC
+ #Nouveau.ordre_mc=[]
+ ouChercher.entites[nomDuMC]=Nouveau
+ ouChercher.ordre_mc.append(nomDuMC)
+ #print ('ajout de ', nomDuMC)
+ #traceback.print_stack()
+ # ajout CIST sauvegarde
+ if nomDuMC in self.dicoNouveauxMC : del self.dicoNouveauxMC[nomDuMC]
+ self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
+ #print self.dicoNouveauxMC
+
+ #---------------------------------------------------------------------#
+ def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
+ #---------------------------------------------------------------------#
+ # dans le MDD
+ print ('ajoutDefinitionMCFact', nomDuMC)
+ #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ definitionEtape=getattr(self.jdc.cata,nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ for mc in listeMC :
+ nomMC=mc[0]
+ typMC=mc[1]
+ argsMC=mc[2]
+ nouveauMC=A_SIMP.SIMP(typMC,**argsMC)
+ nouveauMC.nom=nomMC
+ args[nomMC]=nouveauMC
+ from Accas import A_FACT
+ nouveauFact=A_FACT.FACT(**args)
+ nouveauFact.pere=ouChercher
+ nouveauFact.nom=nomDuMC
+ from Editeur.autre_analyse_cata import traite_entite
+ traite_entite(nouveauFact,[])
+ ouChercher.entites[nomDuMC]=nouveauFact
+ ouChercher.ordre_mc.append(nomDuMC)
+ self.dicoNouveauxFact[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,listeMC,args)
+ #print self.dicoNouveauxMC
+
+ #----------------------------------------------------#
+
+ #----------------------------------------------------#
+ def changeIntoMCandSet(self,etape,listeMC,into,valeurs):
+ #----------------------------------------------------#
+ # dans le MDD et le JDC
+
+ self.changeIntoDefMC(etape,listeMC,into)
+
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+
+ ouChercher = etape
+ for mot in listeMC[:-1] :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ MCFils=listeMC[-1]
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= etape.addentite(MCFils)
+
+ monMC.definition.into=into
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isvalid()
+
+ #-------------------------------------#
+ def ajoutVersionCataDsJDC(self,txt):
+ #-------------------------------------#
+ #if not hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): return txt
+ if not hasattr(self.readercata.cata,'VERSION_CATALOGUE'): return txt
+ ligneVersion="#VERSION_CATALOGUE:"+self.readercata.cata.VERSION_CATALOGUE+":FIN VERSION_CATALOGUE\n"
+ texte=txt+ligneVersion
+ return texte
+
+ #-------------------------------------#
+ def verifieVersionCataDuJDC(self,text):
+ #-------------------------------------#
+ memeVersion=False
+ indexDeb=text.find("#VERSION_CATALOGUE:")
+ indexFin=text.find(":FIN VERSION_CATALOGUE")
+ if indexDeb < 0 :
+ self.versionCataDuJDC="sans"
+ textJDC=text
+ else :
+ self.versionCataDuJDC=text[indexDeb+19:indexFin]
+ textJDC=text[0:indexDeb]+text[indexFin+23:-1]
+
+ self.versionCata="sans"
+ if hasattr(self.readercata.cata,'VERSION_CATALOGUE'): self.versionCata=self.readercata.cata.VERSION_CATALOGUE
+
+ if self.versionCata==self.versionCataDuJDC : memeVersion=True
+ return memeVersion,textJDC
+
+ #-------------------------------#
+ def traduitCatalogue(self,texte):
+ #-------------------------------#
+ nomTraducteur="traduit"+self.readercata.code+self.versionCataDuJDC+"To"+self.versionCata
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"../Traducteur")))
+ try :
+ traducteur=__import__(nomTraducteur)
+ monTraducteur=traducteur.MonTraducteur(texte)
+ nouveauTexte=monTraducteur.traduit()
+ return nouveauTexte
+ except :
+ return texte
+
+
+# Methodes a resorber
+# il faut mettre a jour les catalogues avec
+# TEXTE_NEW_JDC
+#
+
+ #---------------------------#
+ def _new_CF(self):
+ #---------------------------#
+ texte="CONDUITE_FORCEE();"
+ return texte
+
+ #---------------------------#
+ def _newPSEN(self):
+ #---------------------------#
+ texte="DIRECTORY() ; PSSE_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
+ #texte=""
+ return texte
+
+ #---------------------------#
+ def _newPSEN_N1(self):
+ #---------------------------#
+ texte="CASE_SELECTION();N_PROCESSING_OPTIONS();CONTINGENCY_OPTIONS();CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
+ #texte="CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
+ return texte
+
+ #---------------------------#
+ def _newZCRACKS(self):
+ #---------------------------#
+ texte="MAILLAGES();REMESHING();"
+ return texte
+
+
+ #---------------------------#
+ def _newJDCCND(self):
+ #---------------------------#
+ extensions=tr('Fichiers Med (*.med);;''Tous les Fichiers (*)')
+
+ #if self.salome == 0 :
+ QMessageBox.information( self,
+ tr("Fichier Med"),
+ tr("Veuillez selectionner un fichier Med"))
+ QSfichier = QFileDialog.getOpenFileName(self.appliEficas,
+ caption='Fichier Med',
+ filter=extensions)
+ QSfichier=QSfichier[0]
+ self.fichierMED=QSfichier
+ from acquiertGroupes import getGroupes
+ erreur,self.listeGroupes,self.nomMaillage,self.dicoCoord=getGroupes(self.fichierMED)
+ if erreur != "" : print ("a traiter")
+ texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n"
+ texteSources=""
+ texteCond=""
+ texteNoCond=""
+ texteVcut=""
+ texteZs=""
+ for groupe in self.listeGroupes :
+ if groupe[0:8]=='CURRENT_':
+ texteSources +=groupe[8:]+"=SOURCE("
+ texteSources +="VecteurDirecteur=(1.0,2.0,3.0,),);\n"
+ if groupe[0:5]=='COND_': texteCond +=groupe[5:]+"=CONDUCTEUR();\n"
+ if groupe[0:7]=='NOCOND_': texteNoCond +=groupe[7:]+"=NOCOND();\n"
+ if groupe[0:5]=='VCUT_': texteVcut +='V_'+groupe[5:]+"=VCUT();\n"
+ if groupe[0:3]=='ZS_': texteZs +=groupe[3:]+"=ZS();\n"
+ texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut+texteZs
+ self.newTexteCND=texte
+ self.modified=1
+ return texte
+
+
+if __name__ == "__main__":
+ print ('a faire')
if ihmQTDir not in sys.path : sys.path.append(ihmQTDir)
if editeurDir not in sys.path :sys.path.append(editeurDir)
+def getEficasSsIhm(code=None,fichier=None,ssCode=None,multi=False,langue='en',versionCode=None):
+ #print (versionCode)
+ from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
+ Eficas=AppliSsIhm(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue,versionCode=versionCode)
+ from Editeur import session
+ options=session.parse(['ssIhm','-k',code,'-v',versionCode])
+ return Eficas
-def lance_eficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
+
+def lanceEficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
"""
Lance l'appli EFICAS
"""
from InterfaceQT4.qtEficas import Appli
app = QApplication(sys.argv)
+
+ #import cProfile, pstats, StringIO
+ #pr = cProfile.Profile()
+ #pr.enable()
+
Eficas=Appli(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue)
+ #pr.disable()
+ #s = StringIO.StringIO()
+ #sortby = 'cumulative'
+ #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
+ #ps.print_stats()
+ #print (s.getValue())
+
Eficas.show()
res=app.exec_()
sys.exit(res)
-def lance_eficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
+def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
"""
Lance l'appli EFICAS pour trouver les noms des groupes
"""
from . import readercata
if not hasattr ( Eficas, 'readercata'):
- monreadercata = readercata.READERCATA( parent, Eficas )
+ monreadercata = readercata.ReaderCata( parent, Eficas )
Eficas.readercata=monreadercata
from .editor import JDCEditor
monEditeur=JDCEditor(Eficas,fichier)
return monEditeur
-def lance_eficas_ssIhm_cherche_Groupes(code=None,fichier=None,ssCode=None,version=None):
- monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
- print((monEditeur.cherche_Groupes()))
+def lanceEficas_ssIhm_chercheGroupes(code=None,fichier=None,ssCode=None,version=None):
+ monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version)
+ print((monEditeur.chercheGroupes()))
-def lance_eficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=None):
- monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
+def lanceEficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=None):
+ monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version)
print((monEditeur.jdc.cr))
-def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False,debug=False,leger=False,langue='ang'):
- #print 'lance_eficas_ssIhm_reecrit', fichier
- monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version,langue=langue)
+def lanceEficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False,debug=False,leger=False,langue='ang'):
+ #print 'lanceEficas_ssIhm_reecrit', fichier
+ monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version,langue=langue)
if ou == None :
fileName=fichier.split(".")[0]+"_reecrit.comm"
fn=fichier.split(".")[0]+"_cr.txt"
sortby = 'cumulative'
ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
ps.print_stats()
- print (s.getvalue())
+ print (s.getValue())
elif not leger : monEditeur.saveFileAs(fileName=fileName)
else : monEditeur.saveFileLegerAs(fileName=fileName)
f.write(str(monEditeur.jdc.report()))
f.close()
-def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'):
+def lanceEficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'):
"""
Lance l'appli EFICAS pour trouver les noms des groupes
"""
from . import readercata
if not hasattr ( Eficas, 'readercata'):
- monreadercata = readercata.READERCATA( parent, Eficas )
+ monreadercata = readercata.ReaderCata( parent, Eficas )
Eficas.readercata=monreadercata
from .editor import JDCEditor
parameters=getJdcParameters(texte,macro)
return parameters
-def getEficasSsIhm(code='Adao',version='V0'):
- from .qtEficasSsIhm import AppliSsIhm
- app = QApplication(sys.argv)
- Eficas=Appli(code=code,ssCode=None,salome=0)
- return Eficas
+#def getEficasSsIhm(code='Adao',versionCode='V0'):
+# from .qtEficasSsIhm import AppliSsIhm
+# Eficas=AppliSsIhm(code=code,ssCode=None,salome=0)
+# return Eficas
def getJdcParameters(jdc,macro):
"""
if __name__ == "__main__":
import sys
sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
- lance_eficas(code=None,fichier=None,ssCode=None,multi=True)
+ lanceEficas(code=None,fichier=None,ssCode=None,multi=True)
import traceback
from PyQt5.QtWidgets import QToolButton ,QWidget
-from PyQt5.QtGui import QFont, QFontMetrics
+from PyQt5.QtGui import QFont, QFontMetrics, QFontInfo, QPalette
from PyQt5.QtCore import Qt
from Extensions.i18n import tr
from .gereIcones import FacultatifOuOptionnel
from .qtSaisie import SaisieValeur
-nomMax=250
+nomMax=230
+# empirique les metrics ne fonctionnent pas
# ---------------------------------------------------------------------- #
class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
# --------------------------------------------------------------------- #
def setNom(self):
self.debutToolTip=""
nomTraduit=tr(self.objSimp.nom)
+ #metrix= QFontMetrics(self.label.font())
+ #maxLongueur = self.label.width() - 2
+ #print ('______________________')
+ #print (nomTraduit)
+ #print (self.label.font().pixelSize())
+ #longueur2 = metrix.boundingRect(nomTraduit).width()
longueur=QFontMetrics(self.label.font()).width(nomTraduit)
if longueur >= nomMax :
nouveauNom=self.formate(nomTraduit)
self.label.setText(nouveauNom)
else :
self.label.setText(nomTraduit)
+ #clidedText = metrics.elidedText(text, Qt.ElideRight, label.width());
+ #if (clippedText != nomTraduit): self.label.setToolTip(nomTraduit)
+ #self.label.setText(clippedText)
- def agrandit(self):
+ #def agrandit(self):
# inutile pour certains widgets
- if self.height() < 40 :
- self.setMinimumHeight(50)
- self.resize(self.width(),200)
+ # if self.height() < 40 :
+ # self.setMinimumHeight(50)
+ # self.resize(self.width(),200)
#def mousePressEvent(self, event):
#print 'mousePressEvent'
else :
if mc.min == mc.max:
commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])+'\n'
+ elif mc.max == float('inf') :
+ commentaire=tr("Entrez une liste de ") + tr(d_aides[type])+'\n'
else :
commentaire=tr("Entrez entre ")+"\n"+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type])+'\n'
aideval=self.node.item.aide()
commentaire=commentaire + tr(aideval)
- self.monCommentaireLabel.setText(str(commentaire))
return str(commentaire)
def setSuggestion(self):
- if self.monSimpDef.get_sug() != None and self.monSimpDef.get_sug() != "":
- suggere=str('<html><head/><body><p><span style=" font-size:8pt;">suggestion : ')+str(self.monSimpDef.get_sug())+"</span></p></body></html>"
+ if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "":
+ suggere=str('<html><head/><body><p><span style=" font-size:8pt;">suggestion : ')+str(self.monSimpDef.getSug())+"</span></p></body></html>"
if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere)
def setCommentaire(self):
c = self.debutToolTip
#if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide()
self.aide=c
- if self.objSimp.get_fr() != None and self.objSimp.get_fr() != "":
- #c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr().decode('latin-1','replace')+"</p></body></html>"
- c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr()
- #c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr()+"</p></body></html>"
+ if self.objSimp.getFr() != None and self.objSimp.getFr() != "":
+ #c2 = '<html><head/><body><p>'+c+self.objSimp.getFr().decode('latin-1','replace')+"</p></body></html>"
+ c2 = '<html><head/><body><p>'+c+self.objSimp.getFr()
+ #c2 = '<html><head/><body><p>'+c+self.objSimp.getFr()+"</p></body></html>"
self.label.setToolTip(c2)
- #self.aide=self.objSimp.get_fr().decode('latin-1','ignore')+" "+c
- self.aide=self.objSimp.get_fr()+" "+c
+ #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c
+ self.aide=self.objSimp.getFr()+" "+c
else :
c+=self.finCommentaire()
if c != "" and c != None :
def setZoneInfo(self):
# info=str(self.nom)+' '
- # if self.monSimpDef.get_fr() != None and self.monSimpDef.get_fr() != "": info+=self.monSimpDef.get_sug() +" "
- # if self.monSimpDef.get_sug() != None and self.monSimpDef.get_sug() != "": info+="Valeur suggeree : "self.monSimpDef.get_sug()
+ # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" "
+ # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug()
pass
def reaffiche(self):
#nodeAVoir.fenetre.setFocus()
# return # on est bien postionne
- if self.objSimp.isvalid() and hasattr(self, 'AAfficher'):
+ if self.objSimp.isValid() and hasattr(self, 'AAfficher'):
nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp)
try :
index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher)
except :
pass
else :
- if self.objSimp.isvalid() and hasattr(self, 'AAfficher'):
+ if self.objSimp.isValid() and hasattr(self, 'AAfficher'):
try :
self.setValeursApresBouton()
except :
# QWidget.enterEvent(self,event)
def traiteClicSurLabel(self,texte):
- aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1')
- self.editor.affiche_commentaire(aide)
+ #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1')
+ try :
+ aide=self.aide+"\n"+self.aideALaSaisie()
+ except :
+ aide=self.aideALaSaisie()
+ self.editor.afficheCommentaire(aide)
def formate(self,t):
- if t.find('_')==0 :
- newText=t[0:19]+'\n'+t[19:]
- else:
- listeNom=t.split('_')
- newTexte=""
- ligne=""
- for n in listeNom:
- if len(ligne)+len(n) < 25 :
- newTexte=newTexte+"_"+n
- ligne+="_"+n
- else :
- newTexte=newTexte+"\n_"+n
- ligne=""
- #newTexte=t[0:t.rfind('_')]+'\n'+ t[t.rfind('_'):]
- newText=newTexte[1:]
+ l=len(t)//2
+ newText=t[0:l]+'-\n'+t[l:]
return newText
def setReglesEtAide(self):
listeRegles=()
try :
- listeRegles = self.node.item.get_regles()
+ listeRegles = self.node.item.getRegles()
except :
pass
if hasattr(self,"RBRegle"):
if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP":
self.cle_doc = self.chercheDocMAP()
else :
- self.cle_doc = self.node.item.get_docu()
+ self.cle_doc = self.node.item.getDocu()
if self.cle_doc == None : self.RBInfo.close()
else : self.RBInfo.clicked.connect (self.viewDoc)
def chercheDocMAP(self):
try :
- clef=self.editor.CONFIGURATION.adresse+"/"
+ clef=self.editor.maConfiguration.adresse+"/"
except :
return None
- for k in self.editor.readercata.cata[0].JdC.dict_groupes:
- if self.obj.nom in self.editor.readercata.cata[0].JdC.dict_groupes[k]:
+ for k in self.editor.readercata.cata.JdC.dict_groupes:
+ if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]:
clef+=k
break
clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html"
QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee "))
def viewRegles(self):
- self.node.AppelleBuildLBRegles()
+ self.node.appellebuildLBRegles()
def setIconePoubelle(self):
if not(hasattr(self,"RBPoubelle")):return
- if self.node.item.object.isoblig() and not( hasattr(self.node.item.object,'isDeletable') ):
+ if self.node.item.object.isOblig() and not( hasattr(self.node.item.object,'isDeletable') ):
icon=QIcon(self.repIcon+"/deleteRondVide.png")
self.RBPoubelle.setIcon(icon)
return
self.node.delete()
def setValide(self):
- #print " c est le moment de gerer le passage au suivant"
if not(hasattr (self,'RBValide')) : return
- icon = QIcon()
- if self.node.item.object.isvalid() :
- icon=QIcon(self.repIcon+"/ast-green-ball.png")
- else :
- icon=QIcon(self.repIcon+"/ast-red-ball.png")
- self.RBValide.setIcon(icon)
+ couleur=self.node.item.getIconName()
+ monIcone = QIcon(self.repIcon+"/" + couleur + ".png")
+ self.RBValide.setIcon(monIcone)
# il faut chercher la bonne fenetre
def rendVisible(self):
def choixSaisi(self):
fction=str(self.CBScripts.currentText())
numero= self.dictCommandes[fction]
- self.node.AppelleFonction(numero,nodeTraite=self.node)
+ self.node.appelleFonction(numero,nodeTraite=self.node)
#self.reaffiche()
class ContientIcones(object):
from .monViewTexte import ViewText
try :
if sys.platform[0:5]=="linux" :
- cmd="xdg-open "+ str(fichier)
+ #cmd="xdg-open "+ str(fichier)
+ #changer pour marcher dans l'EDC
+ #cmd="gedit "+ str(fichier)
+ from os.path import splitext
+ fileName,extension = splitext(fichier)
+ if extension in self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions:
+ cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier)
+ else: cmd="xdg-open "+ str(fichier)
os.system(cmd)
else :
os.startfile(str(fichier))
if len(mctype) > 2 and mctype[2] == "Sauvegarde":
fichier = QFileDialog.getSaveFileName(self.appliEficas,
tr('Sauvegarder Fichier'),
- self.appliEficas.CONFIGURATION.savedir,
+ self.appliEficas.maConfiguration.savedir,
filters)
else:
- print(filters)
+ #print(filters)
fichier = QFileDialog.getOpenFileName(self.appliEficas,
tr('Ouvrir Fichier'),
- self.appliEficas.CONFIGURATION.savedir,
+ self.appliEficas.maConfiguration.savedir,
filters)
fichier=fichier[0]
if not(fichier == ""):
ulfile = os.path.abspath(six.text_type(fichier))
- self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
self.lineEditVal.setText(fichier)
- self.editor.affiche_commentaire(tr("Fichier selectionne"))
- self.LEValeurPressed()
+ self.editor.afficheCommentaire(tr("Fichier selectionne"))
+ self.LEvaleurPressed()
if (QFileInfo(fichier).suffix() in listeSuffixe ):
self.image=fichier
if (not hasattr(self,"BSelectInFile")):
def BFichierOuRepertoirePressed(self):
self.fileName=""
- print (0)
self.file_dialog=QFileDialog()
- print (1)
self.file_dialog.setFileMode(QFileDialog.Directory);
- print (2)
self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles)
- print (3)
self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True);
self.file_dialog.setWindowTitle('Choose File or Directory')
self.explore(self.file_dialog)
self.file_dialog.exec_()
if self.fileName == "" : return
self.lineEditVal.setText(self.fileName)
- self.LEValeurPressed()
+ self.LEvaleurPressed()
def explore(self,widget):
def BRepertoirePressed(self):
directory = QFileDialog.getExistingDirectory(self.appliEficas,
- directory = self.appliEficas.CONFIGURATION.savedir,
+ directory = self.appliEficas.maConfiguration.savedir,
options = QFileDialog.ShowDirsOnly)
if not (directory == "") :
absdir = os.path.abspath(six.text_type(directory))
- self.appliEficas.CONFIGURATION.savedir = os.path.dirname(absdir)
+ self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir)
self.lineEditVal.setText(directory)
- self.LEValeurPressed()
+ self.LEvaleurPressed()
def BSelectInFilePressed(self):
from monSelectImage import MonSelectImage
def BSalomePressed(self):
- self.editor.affiche_commentaire("")
+ self.editor.afficheCommentaire("")
selection=[]
commentaire=""
- genea=self.node.item.get_genealogie()
+ genea=self.node.item.getGenealogie()
kwType = self.node.item.get_definition().type[0]
for e in genea:
if "GROUP_NO" in e: kwType = "GROUP_NO"
selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor)
if commentaire !="" :
- self.editor.affiche_infos(tr(str(commentaire)))
+ self.editor.afficheInfos(tr(str(commentaire)))
if selection == [] : return
- min,max=self.node.item.GetMinMax()
+ min,max=self.node.item.getMinMax()
if max > 1 :
self.ajoutNValeur(selection)
return
for geomElt in selection: monTexte=geomElt+","
monTexte= monTexte[0:-1]
self.lineEditVal.setText(str(monTexte))
- self.LEValeurPressed()
+ self.LEvaleurPressed()
def BView2DPressed(self):
try :
if valeur :
ok, msgError = self.appliEficas.displayShape(valeur)
if not ok:
- self.editor.affiche_infos(msgError,Qt.red)
+ self.editor.afficheInfos(msgError,Qt.red)
def BParametresPressed(self):
- liste=self.node.item.get_liste_param_possible()
+ liste=self.node.item.getListeParamPossible()
from monListeParamPanel import MonListeParamPanel
MonListeParamPanel(liste=liste,parent=self).show()
import six
from six.moves import range
from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog
-from PyQt5.QtCore import QEvent, Qt
+from PyQt5.QtCore import QEvent, Qt, QTimer
from PyQt5.QtGui import QIcon, QPalette
from Extensions.i18n import tr
self.num=i
self.dansUnTuple=False
self.numDsLaListe=-1
+ self.parentTuple=None
+ self.valeur=None
def focusInEvent(self,event):
- #print "dans focusInEvent de LECustom"
+ #print ("dans focusInEvent de LECustom")
+ self.parentQt.aEuLeFocus=True
+ self.aEuLeFocus=True
self.parentQt.LineEditEnCours=self
- self.parentQt.NumLineEditEnCours=self.num
+ self.parentQt.numLineEditEnCours=self.num
self.parentQt.textSelected=self.text()
self.setStyleSheet("border: 2px solid gray")
QLineEdit.focusInEvent(self,event)
def focusOutEvent(self,event):
+ #print (self.aEuLeFocus)
self.setStyleSheet("border: 0px")
if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
else : self.setStyleSheet("background:rgb(235,235,235)")
+ if self.aEuLeFocus:
+ self.aEuLeFocus=False
+ self.litValeur()
+ if self.dansUnTuple : self.parentTuple.getValeur()
+ QLineEdit.focusOutEvent(self,event)
-
- from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
+ def litValeur(self):
+ #print ("dans litValeur de LECustom")
+ self.aEuLeFocus=False
+ val=str(self.text())
+ if str(val)=="" or val==None :
+ self.valeur=None
+ return
try :
- #if isinstance (self.parentQt, MonWidgetPlusieursBase) and not self.parentQt.inFocusOutEvent :
- # self.parentQt.inFocusOutEvent=True
- # self.parentQt.changeValeur(changeDePlace=True,oblige=False)
- # self.parentQt.inFocusOutEvent=False
-
- #if isinstance(self,LECustomTuple) and not self.tupleCustomParent.inFocusOutEvent:
- # self.tupleCustomParent.inFocusOutEvent=True
- # self.tupleCustomParent.valueChange()
- # self.tupleCustomParent.inFocusOutEvent=False
- QLineEdit.focusOutEvent(self,event)
- except : pass
-
+ valeur=eval(val,{})
+ except :
+ try :
+ d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+ valeur=eval(val,d)
+ except :
+ valeur=val
+ self.valeur=valeur
+ #print ('self.valeur', self.valeur)
+
+
def clean(self):
self.setText("")
def getValeur(self):
- return self.text()
+ #return self.text()
+ return self.valeur
def setValeur(self,valeur):
self.setText(valeur)
def __init__(self):
self.connecterSignaux()
- def connecterSignauxQT4(self):
- if hasattr(self,'RBHaut'):
- self.connect(self.RBHaut,SIGNAL("clicked()"),self.hautPushed)
- self.connect(self.RBBas,SIGNAL("clicked()"),self.basPushed)
- self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed)
- self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed)
- self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed)
- if hasattr(self,'PBAlpha'):
- self.connect(self.PBAlpha,SIGNAL("clicked()"),self.alphaPushed)
- self.connect(self.PBCata,SIGNAL("clicked()"),self.cataPushed)
- self.connect(self.PBFind,SIGNAL("clicked()"),self.findPushed)
- self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEFiltreReturnPressed)
def connecterSignaux(self):
if hasattr(self,'RBHaut'):
self.PBAlpha.clicked.connect(self.alphaPushed)
self.PBFind.clicked.connect(self.findPushed)
self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+ if hasattr(self, 'PBValideFeuille'):
+ self.PBValideFeuille.clicked.connect(self.changeValeur)
def filtreListe(self):
l=[]
self.prepareListeResultat()
def hautPushed(self):
- if self.NumLineEditEnCours == 1 : return
- else : numEchange=self.NumLineEditEnCours-1
- self.echange(self.NumLineEditEnCours,numEchange)
+ if self.numLineEditEnCours == 1 : return
+ else : numEchange=self.numLineEditEnCours-1
+ self.echange(self.numLineEditEnCours,numEchange)
self.LineEditEnCours.setFocus(True)
self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
def basPushed(self):
- if self.NumLineEditEnCours == self.indexDernierLabel : return
- else : numEchange=self.NumLineEditEnCours+1
- self.echange(self.NumLineEditEnCours,numEchange)
+ if self.numLineEditEnCours == self.indexDernierLabel : return
+ else : numEchange=self.numLineEditEnCours+1
+ self.echange(self.numLineEditEnCours,numEchange)
self.LineEditEnCours.setFocus(True)
self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
courant.setText(courant2.text())
courant2.setText(valeurAGarder)
self.changeValeur(changeDePlace=False)
- self.NumLineEditEnCours=num2
+ self.numLineEditEnCours=num2
self.LineEditEnCours=courant2
self.LineEditEnCours.setFocus(True)
def moinsPushed(self):
# on supprime le dernier
- if self.NumLineEditEnCours == 0 : return
+ if self.numLineEditEnCours == 0 : return
if self.indexDernierLabel == 0 : return
- if self.NumLineEditEnCours==self.indexDernierLabel :
+ if self.numLineEditEnCours==self.indexDernierLabel :
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
courant=getattr(self,nomLineEdit)
courant.clean()
else :
- for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
+ for i in range (self.numLineEditEnCours, self.indexDernierLabel):
aRemonter=i+1
nomLineEdit=self.nomLine+str(aRemonter)
courant=getattr(self,nomLineEdit)
def plusPushed(self):
if self.indexDernierLabel == self.monSimpDef.max:
if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
- else : self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+ else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
return
self.ajoutLineEdit()
self.descendLesLignes()
+ self.chercheLigneVide()
+ QTimer.singleShot(1, self.rendVisibleLigne)
def chercheLigneVide(self):
for i in range(self.indexDernierLabel) :
nomLineEdit=self.nomLine+str(i+1)
courant=getattr(self,nomLineEdit)
valeur=courant.getValeur()
- if valeur=="" : courant.setFocus(7);return
+ if valeur=="" :
+ courant.setFocus(True)
+ self.estVisible=courant
+ return
def descendLesLignes(self):
- if self.NumLineEditEnCours==self.indexDernierLabel : return
- nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
+ if self.numLineEditEnCours==self.indexDernierLabel : return
+ nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
courant=getattr(self,nomLineEdit)
valeurADescendre=courant.getValeur()
courant.clean()
- for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel):
+ for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
aDescendre=i+1
nomLineEdit=self.nomLine+str(aDescendre)
courant=getattr(self,nomLineEdit)
def voisListePushed(self):
texteValeurs=""
- for v in self.node.item.GetListeValeurs():
+ for v in self.node.item.getListeValeurs():
texteValeurs+=str(v)+", "
entete="Valeurs pour "+self.nom
f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
def selectInFile(self):
- init=str( self.editor.CONFIGURATION.savedir)
+ init=str( self.editor.maConfiguration.savedir)
fn = QFileDialog.getOpenFileName(self.node.appliEficas,
tr("Fichier de donnees"),
init,
if fn == None : return
if fn == "" : return
ulfile = os.path.abspath(six.text_type(fn))
- self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
from .monSelectVal import MonSelectVal
MonSelectVal(file=fn,parent=self).show()
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import range
+ from builtins import object
+except : pass
+
+import types,os
+import traceback
+
+
+import six
+from six.moves import range
+from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog, QWidget
+from PyQt5.QtCore import QEvent, Qt, QTimer
+from PyQt5.QtGui import QIcon, QPalette
+
+from Extensions.i18n import tr
+from InterfaceQT4.monViewTexte import ViewText
+
+
+# ---------------------- #
+class LECustom(QLineEdit):
+# ---------------------- #
+ def __init__(self,parent,parentQt,i):
+ """
+ Constructor
+ """
+ QLineEdit.__init__(self,parent)
+
+ self.valeur=None
+ self.aEuLeFocus=False
+ self.parentQt=parentQt
+ self.parent=parent
+ self.num=i
+ self.dansUnTuple=False
+ self.numDsLaListe=-1
+ self.returnPressed.connect(self.litValeur)
+
+ def focusInEvent(self,event):
+ #print ("dans focusInEvent de LECustom",self.parentQt)
+ print ("dans focusInEvent de LECustom",self.num,self.numDsLaListe)
+ self.parentQt.aEuLeFocus=True
+ self.aEuLeFocus=True
+ self.parentQt.LineEditEnCours=self
+ self.parentQt.numLineEditEnCours=self.num
+ self.parentQt.textSelected=self.text()
+ self.setStyleSheet("border: 2px solid gray")
+ QLineEdit.focusInEvent(self,event)
+
+ def focusOutEvent(self,event):
+ #print ("dans focusOutEvent de LECustom",self.num,self.numDsLaListe, self.aEuLeFocus)
+ self.setStyleSheet("border: 0px")
+ if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
+ elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
+ else : self.setStyleSheet("background:rgb(235,235,235)")
+
+ if self.aEuLeFocus:
+ self.aEuLeFocus=False
+ self.litValeur()
+ QLineEdit.focusOutEvent(self,event)
+
+ def litValeur(self):
+ self.aEuLeFocus=False
+ val=str(self.text())
+ if str(val)=="" or val==None :
+ self.valeur=None
+ return
+ try :
+ valeur=eval(val,{})
+ except :
+ try :
+ d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+ valeur=eval(val,d)
+ except :
+ valeur=val
+
+ self.valeur=valeur
+
+ def clean(self):
+ self.setText("")
+
+ def getValeur(self):
+ return self.text()
+
+ def setValeur(self,valeur):
+ self.setText(valeur)
+ self.valeur=valeur
+
+ #def leaveEvent(self,event):
+ # ne sert a rien. quand on modifie la valeur on prend le focus
+
+
+
+# --------------------------- #
+class LECustomTuple(LECustom):
+# --------------------------- #
+ def __init__(self,parent):
+ # index sera mis a jour par TupleCustom
+ parentQt=parent.parent().parent().parent()
+ LECustom. __init__(self,parent,parentQt,0)
+ #print (dir(self))
+
+# ---------------------------- #
+class MonLabelListeClic(QLabel):
+# ---------------------------- #
+ def __init__(self,parent):
+ QLabel.__init__(self,parent)
+ self.parent=parent
+
+ def event(self,event) :
+ if event.type() == QEvent.MouseButtonRelease:
+ self.texte=self.text()
+ self.parent.traiteClicSurLabelListe(self.texte)
+ return QLabel.event(self,event)
+
+
+
+
+# ------------- #
+class GereListe(object):
+# ------------- #
+
+ def __init__(self):
+ self.aEuLeFocus=False
+ self.connecterSignaux()
+
+
+ def leaveEvent(self,event):
+ if self.aEuLeFocus :
+ print ('appel de changeValeur')
+ self.changeValeur()
+ self.aEuLeFocus=False
+ QWidget.leaveEvent(self,event)
+
+ def connecterSignaux(self):
+ if hasattr(self,'RBHaut'):
+ self.RBHaut.clicked.connect(self.hautPushed)
+ self.RBBas.clicked.connect(self.basPushed)
+ self.RBMoins.clicked.connect(self.moinsPushed)
+ self.RBPlus.clicked.connect(self.plusPushed)
+ self.RBVoisListe.clicked.connect(self.voisListePushed)
+ if hasattr(self,'PBAlpha'):
+ self.PBCata.clicked.connect(self.cataPushed)
+ self.PBAlpha.clicked.connect(self.alphaPushed)
+ self.PBFind.clicked.connect(self.findPushed)
+ self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+
+ def filtreListe(self):
+ l=[]
+ if self.filtre != "" :
+ for i in self.listeAAfficher :
+ if i.find(self.filtre) == 0 :l.append(i)
+ self.listeAAfficher=l
+ if self.alpha : self.listeAAfficher.sort()
+
+ def LEFiltreReturnPressed(self):
+ self.filtre= self.LEFiltre.text()
+ self.prepareListeResultatFiltre()
+
+ def findPushed(self):
+ self.filtre= self.LEFiltre.text()
+ self.prepareListeResultatFiltre()
+
+ def alphaPushed(self):
+ #print "alphaPushed" ,self.alpha
+ if self.alpha == 1 : return
+ self.alpha=1
+ self.prepareListeResultat()
+
+ def cataPushed(self):
+ if self.alpha == 0 : return
+ self.alpha=0
+ self.prepareListeResultat()
+
+ def hautPushed(self):
+ if self.numLineEditEnCours == 1 : return
+ else : numEchange=self.numLineEditEnCours-1
+ self.echange(self.numLineEditEnCours,numEchange)
+ self.LineEditEnCours.setFocus(True)
+ self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+
+ def basPushed(self):
+ if self.numLineEditEnCours == self.indexDernierLabel : return
+ else : numEchange=self.numLineEditEnCours+1
+ self.echange(self.numLineEditEnCours,numEchange)
+ self.LineEditEnCours.setFocus(True)
+ self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+ def echange(self,num1,num2):
+ # on donne le focus au a celui ou on a bouge
+ # par convention le 2
+ nomLineEdit=self.nomLine+str(num1)
+ #print nomLineEdit
+ courant=getattr(self,nomLineEdit)
+ valeurAGarder=courant.text()
+ nomLineEdit2=self.nomLine+str(num2)
+ #print nomLineEdit2
+ courant2=getattr(self,nomLineEdit2)
+ courant.setText(courant2.text())
+ courant2.setText(valeurAGarder)
+ self.changeValeur(changeDePlace=False)
+ self.numLineEditEnCours=num2
+ self.LineEditEnCours=courant2
+ self.LineEditEnCours.setFocus(True)
+
+ def moinsPushed(self):
+ # on supprime le dernier
+ if self.numLineEditEnCours == 0 : return
+ if self.indexDernierLabel == 0 : return
+ if self.numLineEditEnCours==self.indexDernierLabel :
+ nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+ courant=getattr(self,nomLineEdit)
+ courant.clean()
+ else :
+ for i in range (self.numLineEditEnCours, self.indexDernierLabel):
+ aRemonter=i+1
+ nomLineEdit=self.nomLine+str(aRemonter)
+ courant=getattr(self,nomLineEdit)
+ valeurARemonter=courant.getValeur()
+ nomLineEdit=self.nomLine+str(i)
+ courant=getattr(self,nomLineEdit)
+ if valeurARemonter != None : courant.setValeur(valeurARemonter)
+ else : courant.clean()
+ nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+ courant=getattr(self,nomLineEdit)
+ courant.clean()
+ self.changeValeur(changeDePlace=False,oblige=True)
+ self.setValide()
+
+ def plusPushed(self):
+ if self.indexDernierLabel == self.monSimpDef.max:
+ if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
+ else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+ return
+ self.ajoutLineEdit()
+ self.descendLesLignes()
+ self.chercheLigneVide()
+ QTimer.singleShot(1, self.rendVisibleLigne)
+
+ def chercheLigneVide(self):
+ for i in range(self.indexDernierLabel) :
+ nomLineEdit=self.nomLine+str(i+1)
+ courant=getattr(self,nomLineEdit)
+ valeur=courant.getValeur()
+ if valeur=="" :
+ courant.setFocus(True)
+ self.estVisible=courant
+ return
+
+
+ def descendLesLignes(self):
+ if self.numLineEditEnCours==self.indexDernierLabel : return
+ nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
+ courant=getattr(self,nomLineEdit)
+ valeurADescendre=courant.getValeur()
+ courant.clean()
+ for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
+ aDescendre=i+1
+ nomLineEdit=self.nomLine+str(aDescendre)
+ courant=getattr(self,nomLineEdit)
+ valeurAGarder=courant.getValeur()
+ courant.setValeur(valeurADescendre)
+ valeurADescendre=valeurAGarder
+ self.changeValeur(changeDePlace=False)
+ if hasattr (self, 'LineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+ def voisListePushed(self):
+ texteValeurs=""
+ for v in self.node.item.getListeValeurs():
+ texteValeurs+=str(v)+", "
+ entete="Valeurs pour "+self.nom
+ f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
+ f.show()
+
+
+ def selectInFile(self):
+ init=str( self.editor.maConfiguration.savedir)
+ fn = QFileDialog.getOpenFileName(self.node.appliEficas,
+ tr("Fichier de donnees"),
+ init,
+ tr('Tous les Fichiers (*)',))
+ fn=fn[0]
+ if fn == None : return
+ if fn == "" : return
+ ulfile = os.path.abspath(six.text_type(fn))
+ self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
+
+ from .monSelectVal import MonSelectVal
+ MonSelectVal(file=fn,parent=self).show()
+
+ def noircirResultatFiltre(self):
+ filtre=str(self.LEFiltre.text())
+ for cb in self.listeCbRouge:
+ palette = QPalette(Qt.red)
+ palette.setColor(QPalette.WindowText,Qt.black)
+ cb.setPalette(palette)
+ t=cb.text()
+ cb.setText(t)
+ self.LEFiltre.setText("")
+ self.listeCbRouge = []
+
+
+# ----------- #
+class GerePlie(object):
+# ----------- #
+
+ def gereIconePlier(self):
+ if not(hasattr(self,'BFermeListe')) : return
+ self.editor.listeDesListesOuvertes.add(self.node.item)
+ repIcon=self.node.editor.appliEficas.repIcon
+ if not (self.editor.afficheListesPliees):
+ fichier=os.path.join(repIcon, 'empty.png')
+ icon = QIcon(fichier)
+ self.BFermeListe.setIcon(icon)
+ return
+ fichier=os.path.join(repIcon, 'minusnode.png')
+ icon = QIcon(fichier)
+ self.BFermeListe.setIcon(icon)
+ self.BFermeListe.clicked.connect( self.selectWidgetPlie)
+
+ def selectWidgetPlie(self):
+ self.editor.listeDesListesOuvertes.remove(self.node.item)
+ self.reaffichePourDeplier()
+
+
+
class GereRegles(object) :
- def AppelleBuildLBRegles(self):
+ def appellebuildLBRegles(self):
from .browser import JDCTree
if isinstance(self,JDCTree):
- self.AppelleBuildLBReglesForJdC()
+ self.appellebuildLBReglesForJdC()
else :
- self.AppelleBuildLBReglesForCommand()
- self.BuildLBRegles(self.listeRegles,self.listeNomsEtapes)
- self.AfficheRegles()
+ self.appellebuildLBReglesForCommand()
+ self.buildLBRegles(self.listeRegles,self.listeNomsEtapes)
+ self.afficheRegles()
- def AppelleBuildLBReglesForCommand(self):
- self.listeRegles = self.item.get_regles()
- self.listeNomsEtapes = self.item.get_mc_presents()
+ def appellebuildLBReglesForCommand(self):
+ self.listeRegles = self.item.getRegles()
+ self.listeNomsEtapes = self.item.getMcPresents()
- def AppelleBuildLBReglesForJdC(self):
- self.listeRegles=self.item.get_regles()
- self.listeNomsEtapes = self.item.get_l_noms_etapes()
+ def appellebuildLBReglesForJdC(self):
+ self.listeRegles=self.item.getRegles()
+ self.listeNomsEtapes = self.item.getLNomsEtapes()
- def BuildLBRegles(self,listeRegles,listeNomsEtapes):
+ def buildLBRegles(self,listeRegles,listeNomsEtapes):
self.liste=[]
if len(listeRegles) > 0:
for regle in listeRegles :
- texteRegle=regle.gettext()
+ texteRegle=regle.getText()
texteMauvais,test = regle.verif(listeNomsEtapes)
for ligne in texteRegle.split("\n") :
if ligne == "" : continue
if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black))
- def AfficheRegles(self):
+ def afficheRegles(self):
titre="Regles pour "+self.item.nom
w = ViewRegles( self.editor,self.liste,titre )
w.exec_()
__version = {
'major': 8,
- 'minor': 4
+ 'minor': 5
}
def getEficasVersion():
from __future__ import absolute_import
from __future__ import print_function
-from PyQt5.QtWidgets import QWidget
+from PyQt5.QtWidgets import QWidget, QSpacerItem, QSizePolicy
from PyQt5.QtCore import Qt
from Extensions.i18n import tr
"""
"""
def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None):
+ #print ("groupe : ",self.node.item.nom," ",self.node.fenetre)
QWidget.__init__(self,None)
self.node=node
self.node.fenetre=self
- #print "groupe : ",self.node.item.nom," ",self.node.fenetre
self.setupUi(self)
self.editor=editor
self.obj=obj
self.listeFocus=[]
self.appliEficas=self.editor.appliEficas
self.repIcon=self.appliEficas.repIcon
- self.jdc=self.node.item.get_jdc()
+ self.jdc=self.node.item.getJdc()
self.setIconePoubelle()
self.setIconesGenerales()
self.setRun()
self.afficheMots()
self.listeMCAAjouter=[]
self.dictMCVenantDesBlocs={}
- if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.Deplie)
- if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.Plie)
+ if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.setDeplie)
+ if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.setPlie)
self.setAcceptDrops(True)
+ if hasattr (self, 'commandesLayout'):
+ spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
+ self.commandesLayout.addItem(spacerItem)
def donneFocus(self):
for fenetre in self.listeFocus:
if fenetre==None : return
- if fenetre.node.item.isvalid() == 0 :
+ if fenetre.node.item.isValid() == 0 :
fenetre.prendLeFocus=1
fenetre.hide()
fenetre.show()
def afficheMots(self):
- #print "ds afficheMots ",self.node.item.nom
+ #print ("ds afficheMots ",self.node.item.nom,self.node.plie)
for node in self.node.children:
- #if node.item.nom == "Background" :print "afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie,node.getPanelGroupe
- #if node.item.nom == "BackgroundError" :print "afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie,node.getPanelGroupe
# non return mais continue car il faut tenir compte des blocs
if node.appartientAUnNoeudPlie==True : continue
#print "je suis apres le if pour ",node.item.nom
widget=node.getPanelGroupe(self,self.maCommande)
- #print "widget pour ", node.item.nom, widget
+ #print ("widget pour ", node.item.nom, widget)
self.listeFocus.append(node.fenetre)
#print "fin pour " , self.node.item.nom
def calculOptionnel(self):
- self.liste_mc=[]
- genea =self.obj.get_genealogie()
+ self.listeMc=[]
+ self.listeMcRegle=[]
+ self.dictToolTipMc={}
+ genea =self.obj.getGenealogie()
# Attention : les mots clefs listes (+sieurs fact )
# n ont pas toutes ces methodes
try :
- self.liste_mc=self.obj.get_liste_mc_ordonnee(genea,self.jdc.cata_ordonne_dico)
+ #if 1 :
+ self.listeMc = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico)
+ listeNomsPresents=self.obj.dictMcPresents()
+ for regle in self.obj.getRegles():
+ (monToolTip,regleOk)=regle.verif(listeNomsPresents)
+ if regleOk : continue
+ for mc in regle.mcs :
+ self.listeMcRegle.append(mc)
+ self.dictToolTipMc[mc]=monToolTip
except :
+ #print ('in except')
+ #print (self)
return
def afficheOptionnel(self):
- liste=self.ajouteMCOptionnelDesBlocs()
+ liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
self.monOptionnel=self.editor.widgetOptionnel
- self.monOptionnel.afficheOptionnel(liste,self)
+ self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
#self.monOptionnel.affiche(liste)
self.dictMCVenantDesBlocs={}
i=0
self.calculOptionnel()
- liste=self.liste_mc
- for MC in self.liste_mc : self.dictMCVenantDesBlocs[MC]=self
+ liste=self.listeMc
+ liste_rouge=self.listeMcRegle
+ for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self
# ce cas est le cas machine tournant sr le plie
try :
while i < self.commandesLayout.count():
i=i+1
if not(isinstance(widget,MonWidgetBloc)) : continue
widget.calculOptionnel()
- listeW=widget.ajouteMCOptionnelDesBlocs()
+ listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs()
for MC in widget.dictMCVenantDesBlocs:
if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" )
else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC]
liste=liste+listeW
+ liste_rouge=liste_rouge+listeW_rouge
except :
pass
- return liste
+ return (liste,liste_rouge)
def reaffiche(self,nodeAVoir=None):
#on ajoute et on enleve
listeNode=[]
for name in listeMC :
- nodeAEnlever=self.node.append_child(name)
+ nodeAEnlever=self.node.appendChild(name)
if nodeAEnlever.item.isMCList():
nodeAEnlever=nodeAEnlever.children[-1]
listeNode.append(nodeAEnlever)
self.afficheOptionnel()
- self.monOptionnel.affiche(self.liste_mc)
+ self.monOptionnel.affiche(self.listeMc)
if len(listeNode) == 0 : return
if len(listeNode) == 1 :
listeNode[0].delete()
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
return
for noeud in listeNode:
- noeud.treeParent.item.suppitem(noeud.item)
- noeud.treeParent.build_children()
- self.editor.affiche_infos("")
+ noeud.treeParent.item.suppItem(noeud.item)
+ noeud.treeParent.buildChildren()
+ self.editor.afficheInfos("")
def ajoutMC(self,texteListeNom):
listeNom=texteListeNom.split("+")[1:]
for nom in listeNom:
if nom not in self.dictMCVenantDesBlocs:
#print "bizarre, bizarre"
- self.editor.init_modif()
- nouveau=self.node.append_child(nom)
+ self.editor.initModif()
+ nouveau=self.node.appendChild(nom)
else :
- self.editor.init_modif()
+ self.editor.initModif()
widget=self.dictMCVenantDesBlocs[nom]
- nouveau=widget.node.append_child(nom)
+ nouveau=widget.node.appendChild(nom)
if firstNode==None : firstNode=nouveau
if nouveau == None or nouveau == 0 :
- self.editor.affiche_infos(tr('insertion impossible a cet endroit pour '+nom),Qt.red)
- self.reaffiche(firstNode)
- if firstNode!=None and firstNode !=0 and firstNode.item!=None :
- firstNode.select()
+ self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red)
+ try :
+ self.reaffiche(firstNode)
+ if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select()
+ except :
+ pass
- def Plie(self):
+ def setPlie(self):
self.node.setPlie()
- if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
- #if (len(self.node.item.get_genealogie())==2):
- index=self.maCommande.commandesLayout.indexOf(self)
- self.maCommande.reafficheSeulement(self,index)
- return
- #else :
- # self.reaffiche(self.node)
- #return
- #print ('je reaffiche dans Plie')
self.reaffiche(self.node)
- def Deplie(self):
+ def setDeplie(self):
+ #print ('je passe ds setDeplie de groupe')
self.node.setDeplie()
- if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
- #if (len(self.node.item.get_genealogie())==2):
- index=self.parentQt.commandesLayout.indexOf(self)
- self.maCommande.reafficheSeulement(self,index)
- return
- #else :
- # self.reaffiche(self.node)
- #return
- #print ('je reaffiche dans Plie')
self.reaffiche(self.node)
-
- #def Plie(self):
- #print ('Deplie', self)
- #print (self.obj.nom)
- #print (self.node.setPlie)
- #print (self.parentQt)
- #print (self)
- # self.node.setPlie()
- #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
- # itemAtraiter = self.node.item
- # nodeAtraiter=self.node
- #while (len(itemAtraiter.get_genealogie()) > 2 ):
- # itemAtraiter=itemAtraiter.parent
- # nodeAtraiter=nodeAtraiter.vraiParent
- #ancien=nodeAtraiter.fenetre
- #panneau = nodeAtraiter.getPanelGroupe(self,self.maCommande,insertIn=False)
- #print (itemAtraiter,nodeAtraiter)
- #self.parentQt.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
- #nodeAtraiter.vraiParent.fenetre.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
- #return
- # if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
- # if (len(self.node.item.get_genealogie())==2):
- #print (self)
- #print (self.obj.nom)
- #print (self.node.item.getlabeltext())
- #print (self.parentQt)
- #print (self.editor.fenetreCentraleAffichee)
- #print (self.maCommande)
- # index=self.parentQt.commandesLayout.indexOf(self)
- #print (index)
- # self.maCommande.reafficheSeulement(self,index)
- #self.disconnect()
- #for c in self.children():
- # print (c)
- # try :
- # c.setParent(None)
- # c.deleteLater()
- # c.close()
- # c.disconnect()
- # except :
- # print('poum')
- #panneau = self.node.getPanelGroupe(self.parentQt,self.maCommande,insertIn=False)
- # print (self.parentQt)
- # print (self)
- #self.parentQt.commandesLayout.replaceWidget(self,panneau,Qt.FindDirectChildrenOnly)
- # self.parentQt.setUpdatesEnabled(True)
- # print (dir(self.parentQt.commandesLayout))
- #self.parentQt.commandesLayout.updateGeometry()
- # else :
- # self.reaffiche(self.node)
- # return
- #print ('je reaffiche dans Plie')
- # self.reaffiche(self.node)
-#
-# def Deplie(self):
-# print ('Deplie', self)
-# print (self.obj.nom)
-# print (self.node.item.GetLabelText())
-# self.node.setDeplie()
-# #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") and (len(self.node.item.get_genealogie())==2):
-# #print (self.node.vraiParent.children)
-# #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-# # itemAtraiter = self.node.item
-# # nodeAtraiter=self.node
-# # while (len(itemAtraiter.get_genealogie()) > 2 ):
-# # itemAtraiter=itemAtraiter.parent
-# # nodeAtraiter=nodeAtraiter.vraiParent
-# # ancien=nodeAtraiter.fenetre
-# # panneau = nodeAtraiter.getPanelGroupe(self,self.maCommande,insertIn=False)
-# #print (itemAtraiter,nodeAtraiter)
-# #self.parentQt.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-# # nodeAtraiter.vraiParent.fenetre.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-# # return
-# if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-# if (len(self.node.item.get_genealogie())==2):
-# #panneau = self.node.getPanelGroupe(self.parentQt,self.maCommande,insertIn=False)
-# #self.parentQt.commandesLayout.replaceWidget(self,panneau,Qt.FindDirectChildrenOnly)
-# #index=self.parentQt.commandesLayout.indexOf(self)
-# #index=self.maCommande.commandesLayout.indexOf(self)
-# #print ('index = ', index)
-# index=0
-# self.maCommande.reafficheSeulement(self,index)
-# else :
-# self.reaffiche(self.node)
-# return
-#
-# #print ('je reaffiche')
-# self.reaffiche(self.node)
def traiteClicSurLabel(self,texte):
if self.editor.code != "CARMELCND" : self.afficheOptionnel()
def mouseDoubleClickEvent(self, event):
#print "dans mouseDoubleClickEvent"
+ strAide=self.parent.node.item.object.getFr()
+ if hasattr(self.parent.node.item.object.definition, 'defaut') :
+ strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
strRapport=six.text_type(self.parent.node.item.object.report())
- self.parent.editor._viewText(strRapport, "JDC_RAPPORT")
+ self.parent.editor._viewText(strAide+"\n"+strRapport, "JDC_RAPPORT")
def mousePressEvent(self, event):
#print "dans mousePressEvent"
- if self.parent.node.item.object.isvalid() :
+ if self.parent.node.item.object.isValid() :
myToolTip=tr("objet valide")
+ if self.parent.editor.maConfiguration.differencieSiDefaut :
+ if hasattr(self.parent.node.item.object.definition, 'defaut') :
+ if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut :
+ myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
+
QToolTip.showText(event.globalPos(),myToolTip )
else :
t=""
self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata)))
if title is not None:
self.setWindowTitle(tr(title))
+ self.buttonOk.clicked.connect(self.cataChoisi)
+ self.buttonCancel.clicked.connect(self.sortSansChoix)
- def on_buttonCancel_clicked(self):
+
+ def sortSansChoix(self):
QDialog.reject(self)
- def on_buttonOk_clicked(self):
+ def cataChoisi(self):
QDialog.accept(self)
discretes
"""
def __init__(self, parentAppli=None):
- QDialog.__init__(self,parentAppli)
+ QDialog.__init__(self,parent=parentAppli,flags=Qt.Window)
self.setModal(True)
self.setupUi(self)
self.parentAppli=parentAppli
self.verifieInstall()
self.code=None
- self.pB_OK.clicked.connect(self.choisitCode)
- self.pB_cancel.clicked.connect(self.sortie)
+ self.buttonBox.accepted.disconnect(self.accept)
+ self.buttonBox.accepted.connect(self.choisitCode)
+ # self.pB_OK.clicked.connect(self.choisitCode)
+ #self.pB_cancel.clicked.connect(self.sortie)
def sortie(self):
QDialog.reject(self)
def verifieInstall(self):
self.groupCodes=QButtonGroup(self.groupBox)
vars=list(os.environ.items())
- listeCode=('Aster','Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',)
+ listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',)
for code in listeCode:
dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))
try :
"""
"""
def __init__(self,node, jdc_item, editor):
- QWidget.__init__(self,None)
+ QWidget.__init__(self,parent=None)
self.setupUi(self)
self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
self.item = jdc_item
self.node = node
self.editor = editor
- self.jdc = self.item.object.get_jdc_root()
+ self.simpleClic=self.editor.maConfiguration.simpleClic
+ self.jdc = self.item.object.getJdcRoot()
debutTitre=self.editor.titre
self.listeWidget=[]
self.dicoCmd={}
self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons)
self.LEFiltre.textChanged.connect(self.ajouteRadioButtons)
- if self.node.tree.item.get_regles() == () :
+ if self.node.tree.item.getRegles() == () :
self.RBRegle.close()
self.labelRegle.close()
else :
self.RBRegle.clicked.connect(self.afficheRegle)
- if self.editor.Ordre_Des_Commandes == None : self.RBOrdre.close()
+ if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close()
#self.editor.labelCommentaire.setText("")
self.editor.widgetOptionnel=None
self.name=None
- self.affiche_alpha=0
- self.affiche_groupe=0
- self.affiche_ordre=0
- if self.editor.affiche=="alpha" :
- self.affiche_alpha==1;
+ self.boolAlpha=0
+ self.boolGroupe=0
+ self.boolOrdre=0
+ if self.editor.maConfiguration.affiche=="alpha" :
+ self.boolAlpha==1;
self.RBalpha.setChecked(True);
self.afficheAlpha()
- elif self.editor.affiche=="groupe" :
- self.affiche_groupe==1;
+ elif self.editor.maConfiguration.affiche=="groupe" :
+ self.boolGroupe==1;
self.RBGroupe.setChecked(True);
self.afficheGroupe()
- elif self.editor.affiche=="ordre" :
- self.affiche_ordre==1;
+ elif self.editor.maConfiguration.affiche=="ordre" :
+ self.boolOrdre==1;
self.RBOrdre.setChecked(True);
self.afficheOrdre()
- if self.editor.closeFrameRechercheCommande == True : self.frameAffichage.close()
+ if self.editor.maConfiguration.closeFrameRechercheCommande == True : self.frameAffichage.close()
if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2)
else: self.editor.restoreSplitterSizes(3)
def afficheRegle(self):
- self.node.tree.AppelleBuildLBRegles()
+ self.node.tree.appellebuildLBRegles()
def afficheAlpha(self):
- self.affiche_alpha=1
- self.affiche_groupe=0
- self.affiche_ordre=0
+ self.boolAlpha=1
+ self.boolGroupe=0
+ self.boolOrdre=0
self.ajouteRadioButtons()
def afficheGroupe(self):
- self.affiche_alpha=0
- self.affiche_groupe=1
- self.affiche_ordre=0
+ self.boolAlpha=0
+ self.boolGroupe=1
+ self.boolOrdre=0
self.ajouteRadioButtons()
def afficheOrdre(self):
- self.affiche_alpha=0
- self.affiche_groupe=0
- self.affiche_ordre=1
+ self.boolAlpha=0
+ self.boolGroupe=0
+ self.boolOrdre=1
self.ajouteRadioButtons()
def insereNoeudApresClick(self,event):
nodeCourrant=self.node.tree.currentItem()
if nodeCourrant==None: nodeCourrant=self.node.tree.racine
if self.name != None :
- plier=self.editor.afficheCommandesPliees
- if nodeCourrant==self.node : nouveau=self.node.append_child(self.name,'first',plier)
+ plier=self.editor.maConfiguration.afficheCommandesPliees
+ if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier)
else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier)
else :
nouveau = 0
#if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche()
if self.editor.afficheApresInsert == True :
#if self.editor.affichePlie==True: nouveau.plieToutEtReaffiche()
- if self.editor.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche()
+ if self.editor.maConfiguration.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche()
else : nouveau.deplieToutEtReaffiche()
nouveau.fenetre.donnePremier()
#nouveau.deplieToutEtReaffiche()
def creeListeCommande(self,filtre):
- listeGroupes,dictGroupes=self.jdc.get_groups()
+ listeGroupes,dictGroupes=self.jdc.getGroups()
sensibleALaCasse=self.RBCasse.isChecked()
if "CACHE" in dictGroupes:
aExclure=dictGroupes["CACHE"]
else:
aExclure=()
listeACreer=[]
- for l in self.jdc.get_liste_cmd():
+ for l in self.jdc.getListeCmd():
if l not in aExclure :
if sensibleALaCasse and (filtre != None and not filtre in l) : continue
if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue
return listeACreer
def ajouteRadioButtons(self):
- if self.editor.nombreDeBoutonParLigne != 0 :
+ if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 :
self.ajoutePushButtons()
return
#print 'ds ajouteRadioButtons'
w.setParent(None)
w.close()
self.listeWidget=[]
- if self.affiche_alpha==1 :
+ if self.boolAlpha==1 :
liste=self.creeListeCommande(filtre)
for cmd in liste :
self.dicoCmd[tr(cmd)]=cmd
rbcmd=(QRadioButton(tr(cmd)))
self.buttonGroup.addButton(rbcmd)
self.commandesLayout.addWidget(rbcmd)
- #if self.editor.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick
+ #if self.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick
#else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
#self.buttonGroup.buttonClicked.connect(self.rbClique)
- if not(self.editor.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
- if self.editor.simpleClic :
+ if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+ if self.simpleClic :
self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere)
else :
self.buttonGroup.buttonClicked.connect(self.rbClique)
- elif self.affiche_groupe==1 :
- listeGroupes,dictGroupes=self.jdc.get_groups()
+ elif self.boolGroupe==1 :
+ listeGroupes,dictGroupes=self.jdc.getGroups()
for grp in listeGroupes:
if grp == "CACHE" : continue
label=QLabel(self)
rbcmd=(QRadioButton(tr(cmd)))
self.buttonGroup.addButton(rbcmd)
self.commandesLayout.addWidget(rbcmd)
- if not(self.editor.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
- if self.editor.simpleClic :
+ if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+ if self.simpleClic :
self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere)
else :
self.buttonGroup.buttonClicked.connect(self.rbClique)
label2.setText(" ")
self.listeWidget.append(label2)
self.commandesLayout.addWidget(label2)
- elif self.affiche_ordre==1 :
+ elif self.boolOrdre==1 :
listeFiltre=self.creeListeCommande(filtre)
liste=[]
- if self.editor.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
- else : Ordre_Des_Commandes=self.editor.Ordre_Des_Commandes
+ if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
+ else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes
for cmd in Ordre_Des_Commandes :
if cmd in listeFiltre :
liste.append(cmd)
rbcmd=(QRadioButton(tr(cmd)))
self.buttonGroup.addButton(rbcmd)
self.commandesLayout.addWidget(rbcmd)
- if not(self.editor.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
- if self.editor.simpleClic :
+ if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+ if self.simpleClic :
self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere)
else :
self.buttonGroup.buttonClicked.connect(self.rbClique)
col=-1
ligne = 0
- if self.affiche_alpha==1 :
+ if self.boolAlpha==1 :
liste=self.creeListeCommande(None)
- elif self.affiche_ordre:
+ elif self.boolOrdre:
liste=self.creeListeCommande(None)
listeFiltre=self.creeListeCommande(None)
liste=[]
- if self.editor.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
- else : Ordre_Des_Commandes=self.editor.Ordre_Des_Commandes
+ if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
+ else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes
for cmd in Ordre_Des_Commandes :
if cmd in listeFiltre :
liste.append(cmd)
for cmd in liste :
col=col+1
- if col == self.editor.nombreDeBoutonParLigne :
+ if col == self.editor.maConfiguration.nombreDeBoutonParLigne :
col=0
ligne=ligne+1
self.dicoCmd[tr(cmd)]=cmd
"border-width : 30 px;\n"
"border-color : beige;\n"
"text-align : center")
- if cmd in self.editor.dicoImages :
- fichier=self.editor.dicoImages[cmd]
+ #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages)
+ if cmd in self.editor.maConfiguration.dicoImages :
+ fichier=self.editor.maConfiguration.dicoImages[cmd]
icon = QIcon()
icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off)
rbcmd.setIcon(icon)
except :
print ('pb d accent : contacter la maintenance')
- definitionEtape=getattr(self.jdc.cata[0],self.name)
+ definitionEtape=getattr(self.jdc.cata,self.name)
#commentaire=getattr(definitionEtape,self.jdc.lang)
try :
commentaire=getattr(definitionEtape,self.jdc.lang)
commentaire=getattr(definitionEtape,"ang")
except :
commentaire=""
- self.editor.affiche_commentaire(commentaire)
+ self.editor.afficheCommentaire(commentaire)
def __init__(self,node, parent = None,name = None,fl = 0):
#print "MonFonctionPanel"
self.node=node
- self.SetNbValeurs()
+ self.setNbValeurs()
MonPlusieursBasePanel.__init__(self,node,parent,name,fl)
- def SetNbValeurs(self):
+ def setNbValeurs(self):
self.nbValeurs = 1
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
for a in self.node.item.definition.type :
try :
self.nbValeurs = a.ntuple
break
except :
pass
- genea=self.node.item.get_genealogie()
+ genea=self.node.item.getGenealogie()
self.nbValeursASaisir=self.nbValeurs
if "VALE" in genea: self.nbValeurs=2
if "VALE_C" in genea: self.nbValeurs=3
- def DecoupeListeValeurs(self,liste):
+ def decoupeListeValeurs(self,liste):
#decoupe la liste des valeurs en n ( les x puis les y)
l_valeurs=[]
if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))):
message=tr("La cardinalite n'est pas correcte, la derniere valeur est ignoree")
- self.editor.affiche_infos(message,Qt.red)
+ self.editor.afficheInfos(message,Qt.red)
i=0
while ( i < len(liste) ) :
try :
l_valeurs.append(t)
return l_valeurs
- def BuildLBValeurs(self,listeValeurs=None):
+ def buildLBValeurs(self,listeValeurs=None):
self.LBValeurs.clear()
if listeValeurs== None :
- listeValeurs=self.node.item.GetListeValeurs()
- if self.node.item.wait_tuple()== 1 :
+ listeValeurs=self.node.item.getListeValeurs()
+ if self.node.item.waitTuple()== 1 :
listeATraiter=listeValeurs
for valeur in listeATraiter:
str_valeur=str(valeur)
self.LBValeurs.addItem(str_valeur)
else :
- for valeur in self.DecoupeListeValeurs(listeValeurs):
+ for valeur in self.decoupeListeValeurs(listeValeurs):
if type(valeur) == tuple:
TupleEnTexte="("
for val in valeur :
- TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+ TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
TupleEnTexte = TupleEnTexte[0:-2] +")"
self.LBValeurs.addItem(TupleEnTexte)
else :
# Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
validite=1
if liste == [] :
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
liste=SaisieValeur.TraiteLEValeurTuple(self)
if liste == [''] : return
else :
if validite == 0 : return
if liste ==[] : return
- if (self.node.item.wait_tuple()== 1 and len(liste) != self.nbValeurs):
+ if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs):
commentaire = str(liste)
commentaire += tr(" n est pas un tuple de ")
commentaire += str(self.nbValeursASaisir)
commentaire += tr(" valeurs")
self.LEValeur.setText(str(liste))
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
liste2=tuple(liste)
liste=liste2
listeVal=[]
for valeur in self.listeValeursCourantes :
listeVal.append(valeur)
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
indexListe = index
- validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
+ validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal)
else :
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal)
self.Commentaire.setText(tr(comm2))
if not validite :
- self.editor.affiche_infos(comm,Qt.red)
+ self.editor.afficheInfos(comm,Qt.red)
else:
self.LEValeur.setText("")
l1=self.listeValeursCourantes[:indexListe]
l3=self.listeValeursCourantes[indexListe:]
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
listeATraiter=listeRetour
else :
- listeATraiter=self.DecoupeListeValeurs(listeRetour)
+ listeATraiter=self.decoupeListeValeurs(listeRetour)
for valeur in listeATraiter :
if type(valeur) == tuple:
TupleEnTexte="("
for val in valeur :
- TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+ TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
str_valeur = TupleEnTexte[0:-2] +")"
else :
str_valeur=str(valeur)
self.LBValeurs.setCurrentItem(item)
index=index+1
self.listeValeursCourantes=l1+listeRetour+l3
- self.BuildLBValeurs(self.listeValeursCourantes)
+ self.buildLBValeurs(self.listeValeursCourantes)
def ajoutNValeur(self,liste) :
if len(liste)%self.nbValeurs != 0 :
texte="Nombre de valeur incorrecte"
#self.Commentaire.setText(texte)
- self.editor.affiche_infos(texte,Qt.red)
+ self.editor.afficheInfos(texte,Qt.red)
return
- listeDecoupee=self.DecoupeListeValeurs(liste)
+ listeDecoupee=self.decoupeListeValeurs(liste)
for vals in listeDecoupee :
self.ajout1Valeur(vals)
- def Sup1Valeur(self):
+ def sup1Valeur(self):
index=self.LBValeurs.currentRow()
if index == None : return
removed_item = self.LBValeurs.takeItem(index)
for i in range(self.nbValeurs):
indexAOter=index*self.nbValeurs + i
indexInterdit.append(indexAOter)
- if self.node.item.wait_tuple()== 1 :
+ if self.node.item.waitTuple()== 1 :
indexInterdit=[index]
i=0
from __future__ import absolute_import
from PyQt5.QtWidgets import QCheckBox, QWidget, QLabel, QPushButton
-from PyQt5.QtCore import Qt, QRect
+from PyQt5.QtCore import Qt, QRect
+from PyQt5.QtGui import QPalette
-from Extensions.i18n import tr
+from Extensions.i18n import tr
from desGroupeOptionnel import Ui_groupeOptionnel
-from desPBOptionnelMT import Ui_customPB
+from desPBOptionnelMT import Ui_customPB
# Import des panels
-class monRBButtonCustom(QCheckBox):
+class MonRBButtonCustom(QCheckBox):
- def __init__(self,texte,monOptionnel,parent=None):
+ def __init__(self,texte,monOptionnel,parent=None,couleur=None):
QCheckBox.__init__(self,tr(texte),parent)
self.mousePressed=True
- self.texte=texte
self.monOptionnel=monOptionnel
self.setToolTip(tr("clicker: affichage aide, double-click: ajout"))
+ if couleur != None :
+ mapalette=self.palette()
+ mapalette.setColor( QPalette.WindowText, couleur )
+ mapalette.setColor( QPalette.Base, Qt.green )
+ self.setPalette( mapalette );
+ self.setText(tr(texte))
+ try :
+ monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
+ self.setToolTip(monToolTip)
+ except :
+ pass
+
def mouseDoubleClickEvent(self, event):
#print "dans mouseDoubleClickEvent", self
maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte]
maLangue = self.monOptionnel.parentMC.jdc.lang
if hasattr(maDefinition,maLangue):
- monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
+ self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
else :
- monAide = ""
+ self.monAide = ""
except :
- monAide = ""
- self.monOptionnel.parentMC.editor.affiche_commentaire(monAide)
+ self.monAide = ""
+ self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide)
-class monPBButtonCustom(QWidget,Ui_customPB):
+class MonPBButtonCustom(QWidget,Ui_customPB):
- def __init__(self,texte,monOptionnel,parent=None):
+ def __init__(self,texte,monOptionnel,parent=None,couleur=None):
QWidget.__init__(self)
self.setupUi(self)
+ if couleur != None :
+ self.monPb.setText(texte)
+ self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}')
+ #mapalette=self.monPb.palette()
+ #mapalette.setColor( QPalette.ButtonText, Qt.red )
+ #self.monPb.setPalette( mapalette )
+ self.monPb.update()
+ #self.update()
+ try :
+ monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
+ self.monPb.setToolTip(monToolTip)
+ except :
+ pass
self.monPb.setText(texte)
self.monPb.clicked.connect(self.ajoutMC)
class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
"""
"""
- def __init__(self,liste,parentQt,parentMC):
- #print "dans init de monWidgetOptionnel ", parentQt, liste,parentMC
+ def __init__(self,liste,liste_rouge,parentQt,parentMC):
+ #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC)
QWidget.__init__(self,None)
self.setupUi(self)
self.listeChecked=[]
self.cb=None
self.parentQt=parentQt
self.parentMC=parentMC
+
+
if liste != [] :
- self.affiche(liste)
+ self.affiche(liste,liste_rouge)
self.afficheTitre()
- elif self.parentQt.parentQt.afficheOptionnelVide != False :
+ elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False :
self.afficheTitre()
self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel')))
else :
def afficheTitre(self):
- labeltext,fonte,couleur = self.parentMC.node.item.GetLabelText()
+ labeltext,fonte,couleur = self.parentMC.node.item.getLabelText()
#print (labeltext)
l=tr(labeltext)
li=[]
texte=texte[0:-1]
self.MCLabel.setText(texte)
- def affiche(self,liste):
- #print "dans Optionnel ____ affiche", liste
+ def affiche(self,liste,liste_rouge):
+ #print ("dans Optionnel ____ affiche", liste,liste_rouge)
self.dicoCb={}
liste.reverse()
for mot in liste :
- if self.parentQt.parentQt.simpleClic == False :
- cb = monRBButtonCustom(mot,self)
+ #if mot in liste_rouge : print ('je dois afficher en rouge' , mot)
+ couleur=None
+ if mot in liste_rouge : couleur=Qt.red
+ if self.parentQt.parentQt.maConfiguration.simpleClic == False :
+ cb = MonRBButtonCustom(mot,self,couleur=couleur)
cb.clicked.connect(cb.ajoutAideMC)
else :
- cb = monPBButtonCustom(mot,self)
+ cb = MonPBButtonCustom(mot,self,couleur=couleur)
self.MCOptionnelLayout.insertWidget(0,cb)
self.dicoCb[cb]=mot
self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0)
-
-
--- /dev/null
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+# Modules Eficas
+
+from __future__ import absolute_import
+try :
+ from builtins import str
+except : pass
+
+from PyQt5.QtWidgets import QButtonGroup, QToolButton
+from PyQt5.QtGui import QIcon, QPixmap
+from Extensions.i18n import tr
+
+
+#----------------------
+class MonLayoutBouton :
+#----------------------
+
+# -------------------------------
+ def __init__(self,appliEficas):
+# -------------------------------
+
+ self.appliEficas = appliEficas
+ self.buttonGroup = QButtonGroup()
+
+ for etape in self.appliEficas.readercata.cata.JdC.commandes :
+ nomEtape = etape.nom
+ toolButton = QToolButton(self.appliEficas.toolBarCommande)
+ icon = QIcon()
+ if nomEtape in self.appliEficas.maConfiguration.dicoIcones:
+ fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape]
+ icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off)
+ toolButton.setIcon(icon)
+ else :
+ try : label = nomEtape[0:3]
+ except : label = nomEtape
+ toolButton.setText(label)
+
+ action = self.appliEficas.toolBarCommande.addWidget(toolButton)
+ action.setVisible(True)
+ toolButton.setObjectName(nomEtape)
+ toolButton.setToolTip(tr(nomEtape))
+ self.buttonGroup.addButton(toolButton)
+
+ self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere)
+
+ def rbCliqueEtInsere(self,id):
+ self.appliEficas.handleAjoutEtape(id.objectName())
+
+
#if self.motAChercher!=self.LERecherche.text(): self.recherche()
if self.listeTrouvee=={} : return
if self.surLigne > len(self.listeTrouvee) -1 : return
- if self.nodeSurligne!=None : self.nodeSurligne.update_node_texte_in_black()
- #self.listeTrouvee[self.surLigne].update_node_texte_in_blue()
+ if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack()
+ #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue()
#self.nodeSurligne=self.listeTrouvee[self.surLigne]
self.listeTrouvee[self.surLigne].select()
self.listeTrouvee[self.surLigne].affichePanneau()
from desSelectVal import Ui_DSelVal
from Extensions.i18n import tr
-from PyQt5.QtWidgets import QDialog, QFileDialog
+from PyQt5.QtWidgets import QDialog, QFileDialog, QMessageBox
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QPalette
self.connecterSignaux()
def connecterSignaux(self) :
- self.Bespace.clicked.connect(self.SelectEsp)
- self.BpointVirgule.clicked.connect(self.SelectPoint)
- self.Bvirgule.clicked.connect(self.SelectVir)
+ self.Bespace.clicked.connect(self.selectEsp)
+ self.BpointVirgule.clicked.connect(self.selectPoint)
+ self.Bvirgule.clicked.connect(self.selectVir)
self.BImportSel.clicked.connect(self.BImportSelPressed)
self.BImportTout.clicked.connect(self.BImportToutPressed)
self.parent.editor.sb.messageChanged.connect(self.messageAChanger)
def connecterSignauxQT4(self) :
- self.connect(self.Bespace,SIGNAL("clicked()"),self.SelectEsp)
- self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.SelectPoint)
- self.connect(self.Bvirgule,SIGNAL("clicked()"),self.SelectVir)
+ self.connect(self.Bespace,SIGNAL("clicked()"),self.selectEsp)
+ self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.selectPoint)
+ self.connect(self.Bvirgule,SIGNAL("clicked()"),self.selectVir)
self.connect(self.BImportSel,SIGNAL("clicked()"),self.BImportSelPressed)
self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed)
self.connect(self.parent.editor.sb,SIGNAL("messageChanged(QString)"),self.messageAChanger)
def readVal(self):
if self.file == "" : return
- f = open(self.file, "r")
- self.texte = f.read()
- f.close()
+ try :
+ f = open(self.file, "r")
+ self.texte = f.read()
+ f.close()
+ except :
+ QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible"))
+ self.texte=""
+ return
def initVal(self):
self.TBtext.clear()
self.TBtext.setText(self.texte)
- def SelectEsp(self):
+ def selectEsp(self):
self.separateur=" "
- def SelectVir(self):
+ def selectVir(self):
self.separateur=","
- def SelectPoint(self):
+ def selectPoint(self):
self.separateur=";"
def BImportSelPressed(self):
texte = self.TBtext.textCursor().selectedText()
textTraite=texte.replace(u'\u2029',"\n")
self.textTraite=str(textTraite)
- self.Traitement()
+ self.traitement()
def BImportToutPressed(self):
self.textTraite=self.texte
- self.Traitement()
+ self.traitement()
- def Traitement(self):
+ def traitement(self):
if self.textTraite == "" : return
if self.textTraite[-1]=="\n" : self.textTraite=self.textTraite[0:-1]
self.textTraite=self.textTraite.replace("\n",self.separateur)
if val != '' and val != ' ' and val != self.separateur :
val=str(val)
try :
+ #if 1 :
val2=eval(val,{})
liste.append(val2)
except :
pass
self.parent.ajoutNValeur(liste)
-
def saveFile(self):
#recuperation du nom du fichier
if self.editor != None :
- dir=self.editor.appliEficas.CONFIGURATION.savedir
+ dir=self.editor.appliEficas.maConfiguration.savedir
else:
dir='/tmp'
fn = QFileDialog.getSaveFileName(None,
ulfile = os.path.abspath(six.text_type(fn))
if self.editor != None :
- self.editor.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
try:
f = open(fn, 'w')
f.write(str(self.view.toPlainText()))
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
#print "dans le init de MonWidget4a6RadioButton",self
- self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+ self.maListeDeValeur=node.item.getSdAvantDuBonType()
MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def setMaxI(self):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
#print "dans le init de MonWidget4a6RadioButton",self
- self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+ self.maListeDeValeur=node.item.getSdAvantDuBonType()
MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def setMaxI(self):
"""
"""
def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
- #print "bloc : ",node.item.nom
+ #print ("bloc : ",node.item.nom)
Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
self.parentQt.commandesLayout.insertWidget(-1,self,1)
# Modules Eficas
from Extensions.i18n import tr
-from .feuille import Feuille
-from desWidgetCB import Ui_WidgetCB
-from .politiquesValidation import PolitiqueUnique
-from .qtSaisie import SaisieValeur
+from InterfaceQT4.feuille import Feuille
+from desWidgetCB import Ui_WidgetCB
+from InterfaceQT4.politiquesValidation import PolitiqueUnique
+from InterfaceQT4.qtSaisie import SaisieValeur
from PyQt5.QtWidgets import QComboBox, QCompleter
from PyQt5.QtCore import Qt
-class MonWidgetCBCommun (Ui_WidgetCB,Feuille):
+class MonWidgetCBCommun (Feuille):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
self.politique=PolitiqueUnique(self.node,self.editor)
self.determineChoix()
self.setValeursApresBouton()
- self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+ self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
#self.CBChoix.lineEdit().setText(tr("Select"))
self.parentQt.commandesLayout.insertWidget(-1,self)
self.maCommande.listeAffichageWidget.append(self.CBChoix)
def setValeursApresBouton(self):
- if self.objSimp.get_valeur()==None :
+ if self.objSimp.getValeur()==None :
self.CBChoix.setCurrentIndex(-1)
#self.CBChoix.lineEdit().setStyleSheet(("QLineEdit {" " background:yellow;\n" "font: italic ;\n" " }\n" " "))
self.CBChoix.lineEdit().setText(tr("Select"))
return
- valeur=self.objSimp.get_valeur()
+ valeur=self.objSimp.getValeur()
if not(type(valeur) == str) : valeur=str(valeur)
self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur))
def determineChoix(self):
listeChoix=[]
+ if self.maListeDeValeur == None : self.maListeDeValeur=[]
for choix in self.maListeDeValeur:
if not(type(choix) == str) : choix=str(choix)
listeChoix.append(choix)
monCompleteur.setCompletionMode(QCompleter.PopupCompletion)
self.CBChoix.setCompleter(monCompleteur)
- def ChoixSaisi(self):
+ def choixSaisi(self):
self.CBChoix.lineEdit().setStyleSheet(("\n"
"QLineEdit {\n"
" font : italic ;\n"
" background: rgb(235,235,235);\n"
" }"))
valeur=str(self.CBChoix.currentText())
- SaisieValeur.LEValeurPressed(self,valeur)
+ SaisieValeur.LEvaleurPressed(self,valeur)
self.reaffiche()
-class MonWidgetCB (MonWidgetCBCommun):
+class MonWidgetCB (Ui_WidgetCB, MonWidgetCBCommun):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
self.maListeDeValeur=monSimpDef.into
MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
-class MonWidgetCBSD (MonWidgetCBCommun):
+class MonWidgetCBSD (Ui_WidgetCB,MonWidgetCBCommun):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
- self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+ self.maListeDeValeur=node.item.getSdAvantDuBonType()
MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+ from builtins import str
+except : pass
+
+import types,os
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from .feuille import Feuille
+from .politiquesValidation import PolitiqueUnique
+from .qtSaisie import SaisieValeur
+from desWidgetCBIntoSug import Ui_WidgetCBIntoSug
+
+from PyQt5.QtWidgets import QComboBox, QCompleter
+from PyQt5.QtCore import Qt
+
+from monWidgetCB import MonWidgetCBCommun
+from monWidgetIntoSug import GereAjoutDsPossible
+
+
+class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.maListeDeValeur=monSimpDef.into
+ if node.item.hasIntoSug() : self.maListeDeValeur=node.item.getListePossibleAvecSug([])
+ if hasattr(node.item,'suggestion') : self.maListeDeValeur+= node.item.suggestion
+ MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
+
+ def ajouteValeurPossible(self,valeur):
+ self.CBChoix.addItem(valeur)
+ # on ne sait pas si on a deja ajouté une valeur
+ try : self.node.item.suggestion.append(valeur)
+ except : self.node.item.suggestion=(valeur,)
+ self.lineEditVal.setText('')
+ self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur));
+
+
self.politique=PolitiqueUnique(self.node,self.editor)
self.determineChoix()
self.setValeursApresBouton()
- self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+ self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
self.parentQt.commandesLayout.insertWidget(-1,self)
self.maCommande.listeAffichageWidget.append(self.CBChoix)
- #print self.objSimp.isoblig()
+ #print self.objSimp.isOblig()
def setValeursApresBouton(self):
- if self.objSimp.get_valeur()==None :
+ if self.objSimp.getValeur()==None :
self.CBChoix.setCurrentIndex(-1)
return
- valeur=self.objSimp.get_valeur()
+ valeur=self.objSimp.getValeur()
if not(type(valeur) == str) : valeur=str(valeur)
self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur))
def determineChoix(self):
- self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+ self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
for choix in self.monSimpDef.into:
if not(type(choix) == str) : choix=str(choix)
- self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+ self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
self.CBChoix.addItem(choix)
self.CBChoix.setEditable(True)
monCompleteur=QCompleter(listeChoix,self)
monCompleteur.setCompletionMode(QCompleter.PopupCompletion)
self.CBChoix.setCompleter(monCompleteur)
- def ChoixSaisi(self):
+ def choixSaisi(self):
valeur=str(self.CBChoix.currentText())
- SaisieValeur.LEValeurPressed(self,valeur)
+ SaisieValeur.LEvaleurPressed(self,valeur)
self.reaffiche()
Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self)
editor.inhibeSplitter=0
- self.frameAffichage.setMinimumHeight(20)
- if node.item.get_fr() != "" : self.labelDoc.setText(node.item.get_fr())
- else :
- self.labelDoc.close()
- self.frameAffichage.resize(self.frameAffichage.width(),50)
+ resize=0
+ if node.item.getFr() != "" :
+ self.labelDoc.setText(node.item.getFr())
+ resize=1
+ else : self.labelDoc.close()
- #if (etape.get_type_produit()==None): self.LENom.close()
- #test,mess = self.node.item.nomme_sd('ee')
if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close()
elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close()
- elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: self.LENom.setText(etape.sdnom)
- else : self.LENom.setText("")
+ elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None:
+ self.LENom.setText(etape.sdnom)
+ resize=resize*1
+ else :
+ self.LENom.setText("")
+ resize=resize*1
+ if resize :
+ nouvelleSize=self.frameAffichage.height()+60
+ self.frameAffichage.setMinimumHeight(nouvelleSize)
+ self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize)
+
maPolice= QFont("Times", 10,)
self.labelNomCommande.setText(tr(self.obj.nom))
- if self.editor.closeAutreCommande==True : self.closeAutreCommande()
+ if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande()
else :
try :
self.bCatalogue.clicked.connect(self.afficheCatalogue)
self.bApres.clicked.connect(self.afficheApres)
except :
pass
- self.LENom.returnPressed.connect(self.nomChange)
+
+ if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
- if self.editor.code in ['Adao','ADAO'] and self.editor.closeFrameRechercheCommande==True :
+ if self.editor.code in ['Adao','ADAO'] and self.editor.maConfiguration.closeFrameRechercheCommande==True :
self.frameAffichage.close()
+ if self.editor.maConfiguration.closeFrameRechercheCommande==True :
+ self.closeAutreCommande()
if self.editor.code in ['CARMELCND',] : self.closeAutreCommande()
self.racine=self.node.tree.racine
- if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True)
+ if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True)
self.setAcceptDrops(True)
self.etablitOrdre()
self.editor.splitter.addWidget(self.monOptionnel)
self.editor.ajoutOptionnel()
self.editor.inhibeSplitter=0
+ self.monOptionnel=self.editor.widgetOptionnel
self.afficheOptionnel()
+ spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding)
+ #spacerItem = QSpacerItem(21, 20, QSizePolicy.Preferred, QSizePolicy.Preferred)
+ #self.commandesLayout.addItem(spacerItem)
+ self.verticalLayoutCommande.addItem(spacerItem)
+
#self.editor.restoreSplitterSizes()
#print "fin init de widget Commande"
nom = str(self.LENom.text())
nom = nom.strip()
if nom == '' : return # si pas de nom, on ressort sans rien faire
- test,mess = self.node.item.nomme_sd(nom)
- self.editor.affiche_commentaire(mess)
+ test,mess = self.node.item.nommeSd(nom)
+ self.editor.afficheCommentaire(mess)
#Notation scientifique
if test :
from .politiquesValidation import Validation
validation=Validation(self.node,self.editor)
- validation.AjoutDsDictReelEtape()
+ validation.ajoutDsDictReelEtape()
def afficheOptionnel(self):
# N a pas de parentQt. doit donc etre redefini
- liste=self.ajouteMCOptionnelDesBlocs()
+ liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
#print "dans afficheOptionnel", self.monOptionnel
# dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple)
#if self.monOptionnel == None : return
self.monOptionnel.parentCommande=self
self.monOptionnel.titre(self.obj.nom)
- self.monGroupe=self.monOptionnel.afficheOptionnel(liste,self)
+ self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
def focusInEvent(self,event):
def setValide(self):
if not(hasattr (self,'RBValide')) : return
icon = QIcon()
- if self.node.item.object.isvalid() :
- icon=QIcon(self.repIcon+"/ast-green-ball.png")
- else :
- icon=QIcon(self.repIcon+"/ast-red-ball.png")
- if self.node.item.GetIconName() == "ast-yellow-square" :
- icon=QIcon(self.repIcon+"/ast-yel-ball.png")
+ if self.node.item.object.isValid() : icon=QIcon(self.repIcon+"/ast-green-ball.png")
+ else : icon=QIcon(self.repIcon+"/ast-red-ball.png")
+ nomIcone = self.node.item.getIconName()
+ if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png")
+ if nomIcone == "ast-red-square" : self.LENom.setDisabled(True)
+
self.LENom.setDisabled(False)
- if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True)
self.RBValide.setIcon(icon)
--- /dev/null
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+# Modules Eficas
+from __future__ import absolute_import
+try :
+ from builtins import str
+except : pass
+import types, os
+import traceback
+
+from PyQt5.QtGui import QIcon
+from InterfaceQT4.monWidgetCommande import MonWidgetCommande
+from PyQt5.QtWidgets import QSpacerItem, QSizePolicy
+
+class MonWidgetCommandeDeplie1Niveau(MonWidgetCommande):
+# Attention au MCLIST qui ne sont pas des MCFACT
+# il faut donc surcharger un certain nb de fonction ici pour eux
+
+
+ def __init__(self,node,editor,etape):
+ #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom)
+ MonWidgetCommande.__init__(self,node,editor,etape)
+ self.node.plieToutEtReaffiche=self.plieToutEtReaffiche
+ spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self.verticalLayoutCommande.addItem(spacerItem)
+
+ def afficheMots(self):
+ # Attention
+ # Attention --> cette methode surcharge les methodes des Nodes Fils
+ # Attention
+ #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom)
+ #traceback.print_stack()
+ repIcon=self.editor.appliEficas.repIcon
+ fichier=os.path.join(repIcon, 'deleteRondVide.png')
+ icon = QIcon(fichier)
+ for node in self.node.children:
+
+ node.plie=True
+ node.setPlieChildren()
+ if node.appartientAUnNoeudPlie==True : continue
+
+ node.plieToutEtReaffiche = self.plieToutEtReaffiche
+ node.deplieToutEtReaffiche = self.deplieToutEtReaffiche
+ node.affichePanneau = self.affichePanneau
+ node.getPanel = self.getPanel
+
+ widget=node.getPanelGroupe(self,self.maCommande)
+ self.listeFocus.append(node.fenetre)
+
+ try :
+ node.fenetre.RBDeplie.setCheckable(False)
+ node.fenetre.RBDeplie.setEnabled(False)
+ node.fenetre.RBDeplie.setIcon(icon)
+ except : pass
+
+ if node.item.object.isMCList() :
+ node.setDeplie = self.setDepliePourMCList
+
+ for c in node.children :
+ c.setDeplie = self.setDepliePourNode
+ c.plieToutEtReaffiche = self.plieToutEtReaffiche
+ c.deplieToutEtReaffiche = self.deplieToutEtReaffiche
+ c.getPanel = self.getPanel
+ c.affichePanneau = self.affichePanneau
+ try :
+ c.fenetre.RBDeplie.setCheckable(False)
+ c.fenetre.RBDeplie.setEnabled(False)
+ c.fenetre.RBDeplie.setIcon(icon)
+ except :
+ pass
+ else :
+ node.setDeplie=self.setDepliePourNode
+
+ #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom)
+
+ def afficheSuivant(self,aAfficher):
+ fenetre=self.node.tree.itemCourant.fenetre
+ fenetre.afficheSuivant(aAfficher)
+
+ def setDepliePourNode(self):
+ noeudCourant=self.node.tree.itemCourant
+ noeudCourant.setDeplieChildren()
+ if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return
+ noeudCourant.afficheCeNiveau()
+ pass
+
+
+# -------------------------------------------- Methodes qui surchargent les noeuds fils
+
+ def setDepliePourMCList(self):
+ #print ('je surcharge setDeplie pour MCList')
+ pass
+
+ def setPlieChildren(self):
+ #print ('je surcharge setPlieChildren')
+ pass
+
+ def setDeplieChildren(self):
+ #print ('je surcharge setDeplieChildren')
+ pass
+
+ def plieToutEtReaffiche(self):
+ #print ('je surcharge plieToutEtReaffiche', self.node.item.nom)
+ pass
+
+ def deplieToutEtReaffiche(self):
+ #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText())
+ pass
+
+ def plieToutEtReafficheSaufItem(self):
+ #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText())
+ pass
+
+ def affichePanneau(self):
+ #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText())
+ node=self.node.tree.itemCourant
+ while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') :
+ node=node.treeParent
+ self.node.tree.setCurrentItem(node)
+
+ item=node.item
+ if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text():
+ return
+ node.setDeplieChildren()
+ node.afficheCeNiveau()
+ self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0])
+ self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr())
+
+
+
+ def getPanel (self):
+ #print ('surcharge ds getPanel')
+ pass
else : self.node.tree.racine.select()
def remplitTexte(self):
- texte=self.node.item.get_valeur()
+ texte=self.node.item.getValeur()
self.commentaireTE.setText(texte)
if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" :
self.commentaireTE.setReadOnly(True)
def TexteCommentaireEntre(self):
texte=str(self.commentaireTE.toPlainText())
- self.editor.init_modif()
- self.node.item.set_valeur(texte)
- self.node.update_node_texte()
+ self.editor.initModif()
+ self.node.item.setValeur(texte)
+ self.node.updateNodeTexte()
"""
def __init__(self,editor, name = None,fl = 0):
self.editor=editor
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
QDialog.__init__(self,editor)
self.setupUi(self)
self.connecterSignaux()
return
param= self.dictListe[item.text()]
self.editor.nodeEnCours.lineEditVal.setText(param)
- self.editor.nodeEnCours.LEValeurPressed()
+ self.editor.nodeEnCours.LEvaleurPressed()
- def CreeParametre(self):
+ def creeParametre(self):
nom=str(self.lineEditNom.text())
val=str(self.lineEditVal.text())
if val == "" or None : return
else :
itemAvant=self.editor.tree.selectedItems()[0]
param=itemAvant.addParameters(True)
- param.item.set_nom(nom)
+ param.item.setNom(nom)
#PN self.val permet d entrer du texte
- param.item.set_valeur(self.val)
- param.update_node_texte()
- param.update_node_valid()
+ param.item.setValeur(self.val)
+ param.updateNodeTexte()
+ param.updateNodeValid()
self.LBParam.addItem((repr(param.item.object)))
self.dictListe[repr(param.item.object)] = param.item.object.nom
self.lineEditVal.setText("")
exec("from math import *", contexte)
jdc=self.editor.jdc
if jdc == None :
- self.editor.affiche_infos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red)
+ self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red)
return
for p in jdc.params :
monTexte="monParam='"+valString+"'"
self.val="'"+valString+"'"
except :
- self.editor.affiche_infos(tr("Valeur incorrecte"),Qt.red)
- if self.lineEditNom.text()!="" and self.dejaExistant==False : self.CreeParametre()
+ self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red)
+ if self.lineEditNom.text()!="" and self.dejaExistant==False : self.creeParametre()
def lineEditNomReturnPressed(self):
if not pattern_name.match(nom) :
self.lineEditNom.setText("")
commentaire=nom + tr(" n est pas un identifiant correct\n ")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
for p in self.editor.jdc.params :
if p.nom==nom :
commentaire=nom + tr(" existe deja\n ")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return
- if self.lineEditVal.text()!="" : self.CreeParametre()
+ if self.lineEditVal.text()!="" : self.creeParametre()
self.lineEditVal.setFocus(Qt.OtherFocusReason)
from .groupe import Groupe
from desWidgetFact import Ui_WidgetFact
-#from desWidgetFactHorizon import Ui_WidgetFactHorizon
+from desWidgetFactTableau import Ui_WidgetFactTableau
from Extensions.i18n import tr
# Import des panels
def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
#print "fact : ",node.item.nom
Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
- labeltext,fonte,couleur = self.node.item.GetLabelText()
+ labeltext,fonte,couleur = self.node.item.getLabelText()
self.GroupBox.setText(tr(labeltext))
self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.parentQt.commandesLayout.insertWidget(insertIn,self)
- #else : self.parentQt.commandesLayout.insertWidget(0,self)
self.doitAfficherOptionnel=False
+ min,max=obj.getMinMax()
+ if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close()
+ if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB)
def enterEvent(self,event):
- #print "enterEvent ", self.node.item.GetLabelText()[0]
+ #print "enterEvent ", self.node.item.getLabelText()[0]
self.doitAfficherOptionnel=True
QWidget.enterEvent(self,event)
QTimer.singleShot(500, self.delayAffiche)
def leaveEvent(self,event):
- #print "leaveEvent", self.node.item.GetLabelText()[0]
+ #print "leaveEvent", self.node.item.getLabelText()[0]
self.doitAfficherOptionnel=False
QWidget.leaveEvent(self,event)
#print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel
if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel()
+ def ajouteMCParPB(self):
+ texteListeNom="+"+self.obj.nom
+ parentOuAjouter=self.parentQt
+ from .monWidgetBloc import MonWidgetBloc
+ while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) :
+ parentOuAjouter=parentOuAjouter.parentQt
+ parentOuAjouter.ajoutMC(texteListeNom)
+
+
class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun):
- def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=True):
+ def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
-#class MonWidgetFactHorizontal(Ui_WidgetFactHorizon,MonWidgetFactCommun):
-# def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
-# MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
+#class MonWidgetFactTableau(Ui_WidgetFactTableau,MonWidgetFactCommun):
+class MonWidgetFactTableau(Ui_WidgetFact,MonWidgetFactCommun):
+ def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
+ MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
+ #print ('je passe dans FactTableau')
+ MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
"""
def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
#print "fact plie : ",node.item.nom
+ node.fenetreAAfficher=self
Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
- self.groupBox.setText(self.node.item.GetLabelText()[0])
+ self.groupBox.setText(self.node.item.getLabelText()[0])
self.parentQt.commandesLayout.insertWidget(insertIn,self)
def traiteClicSurLabel(self,texte):
self.bAvant.clicked.connect(self.afficheAvant)
self.bApres.clicked.connect(self.afficheApres)
self.LENom.returnPressed.connect(self.nomChange)
- self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
+ self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi)
self.LENomsArgs.returnPressed.connect(self.argsSaisis)
self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
def setValeurs(self):
- self.LENomFormule.setText(self.node.item.get_nom())
- self.LECorpsFormule.setText(self.node.item.get_corps())
+ self.LENomFormule.setText(self.node.item.getNom())
+ self.LECorpsFormule.setText(self.node.item.getCorps())
texte_args=""
- if self.node.item.get_args() != None :
- for i in self.node.item.get_args() :
+ if self.node.item.getArgs() != None :
+ for i in self.node.item.getArgs() :
if texte_args != "" : texte_args = texte_args +","
texte_args=texte_args + i
self.LENomsArgs.setText(texte_args)
def nomChange(self):
nom = str(self.LENom.text())
self.LENomFormule.setText(nom)
- self.NomFormuleSaisi()
+ self.nomFormuleSaisi()
def afficheCatalogue(self):
def setValide(self):
if not(hasattr (self,'RBValide')) : return
icon = QIcon()
- if self.node.item.object.isvalid() :
+ if self.node.item.object.isValid() :
icon=QIcon(self.repIcon+"/ast-green-ball.png")
else :
icon=QIcon(self.repIcon+"/ast-red-ball.png")
- if self.node.item.GetIconName() == "ast-yellow-square" :
+ if self.node.item.getIconName() == "ast-yellow-square" :
icon=QIcon(self.repIcon+"/ast-yel-ball.png")
self.RBValide.setIcon(icon)
- def NomFormuleSaisi(self):
+ def nomFormuleSaisi(self):
nomFormule = str(self.LENomFormule.text())
if nomFormule == '' : return
self.LENom.setText(nomFormule)
- test,erreur = self.node.item.verif_nom(nomFormule)
+ test,erreur = self.node.item.verifNom(nomFormule)
if test :
commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
else :
commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return
if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
self.LENomsArgs.setFocus(7)
def argsSaisis(self):
arguments = str(self.LENomsArgs.text())
if arguments == '' : return
- test,erreur = self.node.item.verif_arguments(arguments)
+ test,erreur = self.node.item.verifArguments(arguments)
if test:
commentaire=tr("Argument(s) valide(s) pour une FORMULE")
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
else:
commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
self.LECorpsFormule.setFocus(7)
arguments = str(self.LENomsArgs.text())
expression = str(self.LECorpsFormule.text())
if expression == '' : return
- test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
+ test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression))
if test:
commentaire=tr("Corps de FORMULE valide")
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
else:
commentaire=tr("Corps de FORMULE invalide")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
def BOkPressedFormule(self):
#print dir(self)
- #if self.parent.modified == 'n' : self.parent.init_modif()
+ #if self.parent.modified == 'n' : self.parent.initModif()
nomFormule = str(self.LENomFormule.text())
- test,erreur = self.node.item.verif_nom(nomFormule)
+ test,erreur = self.node.item.verifNom(nomFormule)
if not test :
- self.editor.affiche_infos(erreur,Qt.red)
+ self.editor.afficheInfos(erreur,Qt.red)
return
arguments = str(self.LENomsArgs.text())
- test,erreur = self.node.item.verif_arguments(arguments)
+ test,erreur = self.node.item.verifArguments(arguments)
if not test :
- self.editor.affiche_infos(erreur,Qt.red)
+ self.editor.afficheInfos(erreur,Qt.red)
return
expression = str(self.LECorpsFormule.text())
- test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
+ test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression))
if not test :
- self.editor.affiche_infos(erreur,Qt.red)
+ self.editor.afficheInfos(erreur,Qt.red)
return
- test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
- test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
+ test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression))
+ test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression)
if test :
- #self.node.update_texte()
- #self.node.update_label()
- #self.node.update_node()
self.node.onValid()
self.node.update_valid()
commentaire = "Formule saisie"
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
else:
commentaire ="Formule incorrecte : " + erreur
- self.editor.affiche_infos(commentaire,Qt.red)
- self.editor.init_modif()
+ self.editor.afficheInfos(commentaire,Qt.red)
+ self.editor.initModif()
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
QWidget.__init__(self,None)
self.setupUi(self)
- valeur=node.item.get_valeur()
+ valeur=node.item.getValeur()
self.lineEditVal.setText(str(valeur))
self.lineEditVal.setReadOnly(True)
parentQt.commandesLayout.insertWidget(-1,self)
from desWidgetIntoSug import Ui_WidgetIntoSug
from monWidgetPlusieursInto import MonWidgetPlusieursInto
-class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto):
+class GereAjoutDsPossible:
+ def LEValeurAjouteDsPossible(self):
+ text=str(self.lineEditVal.text())
+ if text == "" : return
+ # il faudrait essauer d en obtenir un reel, un tuple ou ...
+ # si cela est utilise pour autre chose que Telemac
+ # tout devrait etre fait ici
+ if not isinstance(text,str) :
+ self.lineEditVal.setText("")
+ return
+ if self.node.item.hasIntoSug() :
+ self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([]))
+ self.maListeDeValeur.insert(0,text)
+ else :
+ try :
+ self.monSimpDef.intoSug.insert(0,text)
+ except :
+ self.monSimpDef.intoSug=list(self.monSimpDef.intoSug)
+ self.monSimpDef.intoSug.insert(0,text)
+ # selon si on est une liste ou un combo
+ try : self.ajouteValeurPossible(text)
+ except : self.setValeurs()
+
+class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto,GereAjoutDsPossible):
# Attention Attention
# cette wdget ne fonctionne actuellement que pour Telemac
# on attend du texte . on n essaye pas de transformer
MonWidgetPlusieursInto.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
- def LEValeurAjouteDsPossible(self):
- text=str(self.lineEditVal.text())
- if text == "" : return
- # il faudrait essauer d en obtenir un reel, un tuple ou ...
- # si cela est utilise pour autre chose que Telemac
- if not isinstance(text,str) :
- self.lineEditVal.setText("")
- print ('jkjkl')
- return
- self.monSimpDef.intoSug.insert(0,text)
- self.setValeurs()
self.nomVariables={}
self.creeColonnes()
self.connecterSignaux()
- if self.node.item.get_valeur()== None: self.initialSsValeur()
+ if self.node.item.getValeur()== None: self.initialSsValeur()
else :
try : self.initialValeur()
except : self.initialSsValeur()
def afficheEntete(self):
self.objSimp.changeEnteteMatrice()
self.TBMatrice.clear()
- if self.node.item.get_valeur()== None: self.initialSsValeur()
+ if self.node.item.getValeur()== None: self.initialSsValeur()
else :
try : self.initialValeur()
except : self.initialSsValeur()
self.node.item.object.parent.state='changed'
self.setValide()
self.parentQt.setValide()
- self.node.item.jdc.isvalid()
+ self.node.item.jdc.isValid()
def itemChanged(self):
else :
ok=False
if ok == False :
- self.editor.affiche_infos(tr("Entrer un float SVP"),Qt.red)
+ self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red)
monItem.setText("")
return
if self.monType.valSup != None :
if val > self.monType.valSup :
- self.editor.affiche_infos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
+ self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
monItem.setText("")
return
if self.monType.valMin != None :
if val < self.monType.valMin :
- self.editor.affiche_infos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
+ self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
monItem.setText("")
return
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,))
self.acceptVal()
self.nbCols=self.monType.nbCols
- def NbDeVariables(self):
+ def nbDeVariables(self):
jdc=self.node.item.object.jdc
etape=self.node.item.object.etape
- self.listeVariables=jdc.get_variables(etape)
+ self.listeVariables=jdc.getVariables(etape)
if self.listeVariables == [] :
QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
return
self.nbLigs=len(self.listeVariables)
self.nbCols=len(self.listeVariables)
- def NbDeDistributions(self):
+ def nNbDeDistributions(self):
jdc=self.node.item.object.jdc
etape=self.node.item.object.etape
- self.listeVariables=jdc.get_distributions(etape)
+ self.listeVariables=jdc.getDistributions(etape)
if self.listeVariables == [] :
QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
return
self.TBMatrice.setHorizontalHeaderLabels(header)
def initialValeur(self):
- liste=self.node.item.get_valeur()
+ liste=self.node.item.getValeur()
dejaAffiche=0
if (len(liste)) != self.nbLigs +1 :
QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
listeCol.append(val)
liste.append(listeCol)
# on ajoute l ordre des variables aux valeurs
- self.node.item.set_valeur(liste)
+ self.node.item.setValeur(liste)
--- /dev/null
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+# Modules Eficas
+
+from __future__ import absolute_import
+try :
+ from builtins import str
+except : pass
+
+import types
+
+from desWidgetNiveauFact import Ui_WidgetNiveauFact
+from InterfaceQT4.monWidgetOptionnel import MonWidgetOptionnel
+from InterfaceQT4.groupe import Groupe
+
+from PyQt5.QtWidgets import QWidget
+from PyQt5.QtGui import QIcon
+
+
+from Extensions.i18n import tr
+import Accas
+import os
+
+
+# Import des panels
+
+class MonWidgetNiveauFact(Ui_WidgetNiveauFact,Groupe):
+ """
+ """
+ def __init__(self,node,editor,definition,obj):
+ self.listeAffichageWidget=[]
+ self.listeBoutonAChanger=[]
+ Groupe.__init__(self,node,editor,None,definition,obj,1,self)
+ from InterfaceQT4 import composimp
+ if isinstance(self.node ,composimp.Node):
+ widget=self.node.getPanelGroupe(self,self.maCommande)
+ self.listeBoutonAChanger.append(widget.RBValide)
+ self.afficheOptionnel()
+ self.inhibe=False
+ self.labelDoc.setText(self.node.item.getFr())
+ self.labelNomCommande.setText(self.node.item.getLabelText()[0])
+
+ def reaffiche(self,nodeAVoir=None):
+ self.node.setDeplieChildren()
+ self.node.afficheCeNiveau()
+ self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr())
+ self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0])
+
+ def getPanel(self):
+ # necessaire pour handleOnItem de browser.py
+ # non appele
+ pass
+
+ def donnePremier(self):
+ #print "dans donnePremier"
+ QApplication.processEvents()
+ if self.listeAffichageWidget != [] :
+ self.listeAffichageWidget[0].setFocus(7)
+ QApplication.processEvents()
+ #print self.focusWidget()
+
+
+ def focusNextPrevChild(self, next):
+ # on s assure que ce n est pas un chgt de fenetre
+ #print "je passe dans focusNextPrevChild"
+ if self.editor.fenetreCentraleAffichee != self : return True
+ f=self.focusWidget()
+
+ if f not in self.listeAffichageWidget :
+ i=0
+ while not hasattr (f,'AAfficher') :
+ if f==None :i=-1; break
+ f=f.parentWidget()
+ if hasattr(f,'AAfficher') : f=f.AAfficher
+ if i != -1 : i=self.listeAffichageWidget.index(f)
+ else :i=self.listeAffichageWidget.index(f)
+ if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe:
+ try :
+ self.listeAffichageWidget[1].setFocus(7)
+ w=self.focusWidget()
+ self.inhibe=1
+ w.focusPreviousChild()
+ self.inhibe=0
+ return True
+ except : pass
+
+ if i==0 and next==False and not self.inhibe:
+ if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'):
+ self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1])
+ self.listeAffichageWidget[-2].setFocus(7)
+ self.inhibe=1
+ w=self.focusWidget()
+ w.focusNextChild()
+ self.inhibe=0
+ return True
+
+ if i==0 and next==True and not self.inhibe:
+ self.listeAffichageWidget[0].setFocus(7)
+ self.inhibe=1
+ w=self.focusWidget()
+ w.focusNextChild()
+ self.inhibe=0
+ return True
+
+ if i>0 and next==False and not self.inhibe:
+ if isinstance(self.listeAffichageWidget[i-1],QRadioButton):
+ self.listeAffichageWidget[i-1].setFocus(7)
+ return True
+ return QWidget.focusNextPrevChild(self, next)
+
+ def etablitOrdre(self):
+ # si on boucle on perd l'ordre
+ i=0
+ while(i +1 < len(self.listeAffichageWidget)):
+ self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+ i=i+1
+
+ def afficheSuivant(self,f):
+ #print ('ds afficheSuivant')
+ try :
+ i=self.listeAffichageWidget.index(f)
+ next=i+1
+ except :
+ next=1
+ if (next==len(self.listeAffichageWidget) ): next =0
+ try :
+ self.listeAffichageWidget[next].setFocus(7)
+ except :
+ pass
+
+
+ def afficheOptionnel(self):
+ # N a pas de parentQt. doit donc etre redefini
+ #print ('ds afficheOptionnel')
+ if self.editor.widgetOptionnel!= None :
+ self.monOptionnel=self.editor.widgetOptionnel
+ else :
+ self.editor.inhibeSplitter=1
+ self.monOptionnel=MonWidgetOptionnel(self.editor)
+ self.editor.widgetOptionnel=self.monOptionnel
+ self.editor.splitter.addWidget(self.monOptionnel)
+ self.editor.ajoutOptionnel()
+ self.editor.inhibeSplitter=0
+ self.monOptionnel.vireTous()
+
+
+ liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
+ self.monOptionnel.parentCommande=self
+ self.monOptionnel.titre(self.obj.nom)
+ self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
+
+ def setValide(self):
+ Groupe.setValide(self)
+ for bouton in self.listeBoutonAChanger:
+ couleur=self.node.item.getIconName()
+ monIcone = QIcon(self.repIcon+"/" + couleur + ".png")
+ bouton.setIcon(monIcone)
+
+class MonWidgetNiveauFactTableau(MonWidgetNiveauFact):
+ def __init__(self,node,editor,definition,obj):
+ MonWidgetNiveauFact.__init__(self,node,editor,definition,obj)
+
+
self.dicoMCWidgetOptionnel={}
self.parentQt=parentQt
- def afficheOptionnel(self,liste,MC):
+ def afficheOptionnel(self,liste,liste_rouge,MC):
#print ('afficheOptionnel MonWidgetOptionnel', self,liste,MC)
- #import traceback
- #traceback.print_stack()
self.vireLesAutres(MC)
+
if MC.node.item.nom in self.dicoMCWidgetOptionnel :
+ #print (MC.node.item.nom)
self.dicoMCWidgetOptionnel[MC.node.item.nom].close()
self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None)
self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater()
- groupe = MonGroupeOptionnel(liste,self,MC)
+ del self.dicoMCWidgetOptionnel[MC.node.item.nom]
+ if liste==[] : return
+ groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC)
self.groupesOptionnelsLayout.insertWidget(0,groupe)
self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe
return groupe
def vireLesAutres(self,MC):
#print( "je passe dans vireLesAutres")
- genea =MC.obj.get_genealogie()
+ genea =MC.obj.getGenealogie()
#print (genea)
for k in list(self.dicoMCWidgetOptionnel.keys()):
+ #print (k)
#if k not in genea : print ( k)
if k not in genea :
self.dicoMCWidgetOptionnel[k].close()
del self.dicoMCWidgetOptionnel[k]
#print( "fin vireLesAutres")
+ def vireTous(self):
+ for k in list(self.dicoMCWidgetOptionnel.keys()):
+ self.dicoMCWidgetOptionnel[k].close()
+ del self.dicoMCWidgetOptionnel[k]
+
def afficheOptionnelVide(self):
self.GeneaLabel.setText("")
for k in list(self.dicoMCWidgetOptionnel.keys()):
del self.dicoMCWidgetOptionnel[k]
def titre(self,MC):
- if self.parentCommande.node.editor.code in ['Adao','ADAO'] and self.parentCommande.node.editor.closeFrameRechercheCommande==True :
+ if self.parentCommande.node.editor.code in ['Adao','ADAO'] and self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True :
self.frameLabelCommande.close()
return
- labeltext,fonte,couleur = self.parentCommande.node.item.GetLabelText()
+ labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText()
l=tr(labeltext)
li=[]
while len(l) > 25:
self.repIcon=self.appliEficas.repIcon
self.setIconePoubelle()
- if not(self.node.item.object.isvalid()) :
+ if not(self.node.item.object.isValid()) :
icon=QIcon(self.repIcon+"/ast-red-ball.png")
self.RBValide.setIcon(icon)
if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
- self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+ self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
self.lineEditNom.returnPressed.connect(self.LENomPressed)
self.bAvant.clicked.connect(self.afficheAvant)
self.bApres.clicked.connect(self.afficheApres)
else : self.node.tree.racine.select()
def remplit(self):
- nom=self.node.item.get_nom()
+ nom=self.node.item.getNom()
self.lineEditNom.setText(nom)
- valeur=self.node.item.get_valeur()
+ valeur=self.node.item.getValeur()
if valeur == None :
self.lineEditVal.clear()
elif type(valeur) == list :
def donnePremier(self):
self.lineEditVal.setFocus(7)
- def LEValeurPressed(self):
+ def LEvaleurPressed(self):
if self.verifiePressed() == False :
QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide"))
nom=str(self.lineEditNom.text())
val=str(self.lineEditVal.text())
- self.node.item.set_nom(nom)
- self.node.item.set_valeur(val)
- self.node.update_texte()
+ self.node.item.setNom(nom)
+ self.node.item.setValeur(val)
+ self.node.updateTexte()
def LENomPressed(self):
- self.LEValeurPressed()
+ self.LEvaleurPressed()
def verifiePressed(self):
nomString=str(self.lineEditNom.text())
contexte={}
exec("from math import *", contexte)
- jdc=self.node.item.get_jdc()
+ jdc=self.node.item.getJdc()
for p in jdc.params :
try:
tp=p.nom+'='+str(repr(p.valeur))
class MonWidgetPlusieursASSDIntoOrdonne (MonWidgetPlusieursIntoOrdonne):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
- self.NumLineEditEnCours=0
+ self.numLineEditEnCours=0
MonWidgetPlusieursIntoOrdonne.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
for i in self.listeLE: i.close()
self.listeLE=[]
self.vScrollBar = self.scrollArea.verticalScrollBar()
- self.listeAAfficher = self.node.item.get_sd_avant_du_bon_type()
+ self.listeAAfficher = self.node.item.getSdAvantDuBonType()
if len(self.listeAAfficher) == 0 :
self.ajoutLE(0)
# Modules Eficas
from Extensions.i18n import tr
-from .feuille import Feuille
-from desWidgetPlusieursBase import Ui_WidgetPlusieursBase
-from .politiquesValidation import PolitiquePlusieurs
-from .qtSaisie import SaisieValeur
-from .gereListe import GereListe
-from .gereListe import GerePlie
-from .gereListe import LECustom
+from InterfaceQT4.feuille import Feuille
+from desWidgetPlusieursBase import Ui_WidgetPlusieursBase
+from InterfaceQT4.politiquesValidation import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie import SaisieValeur
+from InterfaceQT4.gereListe import GereListe
+from InterfaceQT4.gereListe import GerePlie
+from InterfaceQT4.gereListe import LECustom
dicoLongueur={2:95,3:125,4:154,5:183,6:210,float('inf'):210}
hauteurMax=253
self.nomLine="lineEditVal"
self.inInit=True
self.indexDernierLabel=0
- self.NumLineEditEnCours=0
+ self.numLineEditEnCours=0
self.listeAffichageWidget=[]
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
GereListe.__init__(self)
self.RBVoisListe.setIcon(icon)
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
if self.monSimpDef.max != "**" and self.monSimpDef.max < 7:
hauteurMax=dicoLongueur[self.monSimpDef.max]
else :
self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
self.AAfficher=self.lineEditVal1
self.inInit=False
+ # PNPN a completer __ si tuple le type des tuples sinon le tuple
+ self.monCommentaireLabel.setText(self.finCommentaireListe())
def setValeurs(self):
self.ajoutLineEdit()
QApplication.processEvents()
self.scrollArea.ensureWidgetVisible(self.lineEditVal1)
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
index=1
for valeur in self.listeValeursCourantes :
- val=self.politique.GetValeurTexte(valeur)
+ val=self.politique.getValeurTexte(valeur)
nomLineEdit="lineEditVal"+str(index)
if hasattr(self,nomLineEdit) :
courant=getattr(self,nomLineEdit)
# deux lignes pour que le ensureVisible fonctionne
self.estVisible=nouveauLE
if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
- #if donneLeFocus==True : nouveauLE.setFocus()
def etablitOrdre(self):
i=0
if liste ==[] : return
listeVal=[]
for valeur in self.listeValeursCourantes : listeVal.append(valeur)
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
if (comm2 != "" and comm != None) : return comm2
if validite :
self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
if len(self.listeValeursCourantes) > self.monSimpDef.min :
- self.node.item.set_valeur(self.listeValeursCourantes)
+ self.node.item.setValeur(self.listeValeursCourantes)
self.reaffiche()
return None
else :
# A priori, on ne fait rien
pass
- def ajoutNValeur(self,liste) :
- for val in liste :
- i=1
- ajoute=False
- while i < self.indexDernierLabel+1:
- nomLineEdit="lineEditVal"+str(i)
- courant=getattr(self,nomLineEdit)
- valeur=courant.text()
- if valeur == None or valeur == "" :
- ajoute=True
- courant.setText(str(val))
- commentaire=self.ajout1Valeur(val)
- if (commentaire != None ):
- self.editor.affiche_infos(commentaire,Qt.red)
- courant.setText("")
- break
- else :
- i=i+1
- if ajoute : continue
- self.ajoutLineEdit(valeur=str(val))
- self.changeValeur()
+ def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+
+ listeFormatee=list(liste)
+
+ min,max=self.node.item.getMinMax()
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
+ texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+ self.editor.afficheInfos(texte,Qt.red)
+ return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.afficheInfos(comm2,Qt.red)
+ return
+
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
+ indexDernierRempli=0
+ while ( indexDernierRempli < len(liste) ) :
+ texte=liste[indexDernierRempli]
+ if indexDernierRempli < self.indexDernierLabel:
+ nomLineEdit="lineEditVal"+str(indexDernierRempli+1)
+ courant=getattr(self,nomLineEdit)
+ courant.setText(str(texte))
+ else :
+ self.ajoutLineEdit(texte)
+ indexDernierRempli = indexDernierRempli + 1
+
def changeValeur(self,changeDePlace=True,oblige=False):
donneFocus=None
if valeur != None and valeur != "" :
commentaire=self.ajout1Valeur(valeur)
if (commentaire != None ):
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
courant.setText("")
donneFocus=courant
self.reaffiche()
return
else :
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
elif donneFocus==None : donneFocus=courant
nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel)
elif self.indexDernierLabel < self.monSimpDef.max :
self.ajoutLineEdit()
if self.listeValeursCourantes == [] : return
- min,max = self.node.item.GetMinMax()
+ min,max = self.node.item.getMinMax()
if len(self.listeValeursCourantes) < self.monSimpDef.min :
- self.editor.affiche_infos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
+ self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
if len(self.listeValeursCourantes) < min and oblige==True: return
if len(self.listeValeursCourantes) > max : return
- self.node.item.set_valeur(self.listeValeursCourantes)
+ self.node.item.setValeur(self.listeValeursCourantes)
if len(self.listeValeursCourantes) == self.monSimpDef.max :
- self.editor.affiche_infos(tr('nb max de valeurs atteint'))
+ self.editor.afficheInfos(tr('nb max de valeurs atteint'))
self.setValide()
self.reaffiche()
self.alpha=0
self.listeCB=[]
self.listeCbRouge=[]
- self.listeValeursCourantes=node.item.GetListeValeurs()
+ self.listeValeursCourantes=node.item.getListeValeurs()
if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def changeTout(self,int):
+ #print ('changeTout')
if self.inhibe : return
self.inhibe=True
if not(self.CBCheck.isChecked()) :
- min,max = self.node.item.GetMinMax()
+ min,max = self.node.item.getMinMax()
if max < len(self.listeAAfficher) :
commentaire=tr('impossible de tout selectionner : max =')+str(max)
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
self.inhibe=False
return
for i in range(len(self.listeAAfficher)):
self.changeValeur()
def setValeurs(self):
- self.listeValeursCourantes =self.node.item.get_valeur()
+ #print ('setValeurs')
+ self.listeValeursCourantes =self.node.item.getValeur()
if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
- #print "ds set Valeur", self.listeValeursCourantes, self.node.item.get_valeur()
+ #print "ds set Valeur", self.listeValeursCourantes, self.node.item.getValeur()
self.politique=PolitiquePlusieurs(self.node,self.editor)
self.vScrollBar = self.scrollArea.verticalScrollBar()
if hasattr(self.node.item.definition.validators,'set_MCSimp'):
obj=self.node.item.getObject()
self.node.item.definition.validators.set_MCSimp(obj)
- if self.node.item.isvalid() == 0 :
+ if self.node.item.isValid() == 0 :
liste=[]
for item in self.listeValeursCourantes:
- if self.node.item.definition.validators.verif_item(item)==1:
+ if self.node.item.definition.validators.verifItem(item)==1:
liste.append(item)
- self.listeAAfficher=self.node.item.get_liste_possible(liste)
+ self.listeAAfficher=self.node.item.getListePossible(liste)
else:
- self.listeAAfficher=self.node.item.get_liste_possible([])
+ self.listeAAfficher=self.node.item.getListePossible([])
else :
- self.listeAAfficher=self.node.item.get_liste_possible([])
+ self.listeAAfficher=self.node.item.getListePossible([])
- if self.node.item.has_intoSug() : self.listeAAfficher=self.node.item.get_liste_possible_avecSug([])
+ if self.node.item.hasIntoSug() : self.listeAAfficher=self.node.item.getListePossibleAvecSug([])
- if self.objSimp.wait_assd() :
- self.listeAAfficher=self.node.item.get_sd_avant_du_bon_type()
+ if self.objSimp.waitAssd() :
+ self.listeAAfficher=self.node.item.getSdAvantDuBonType()
if self.listeAAfficher== None or self.listeAAfficher==[] : self.listeAAfficher=[]
#if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
#else : self.setMinimumHeight(len(self.listeAAfficher)*30)
self.PourEtreCoche=[]
- if self.objSimp.wait_assd() :
+ if self.objSimp.waitAssd() :
for concept in self.listeValeursCourantes: self.PourEtreCoche.append(concept.nom)
else :
for val in self.listeValeursCourantes: self.PourEtreCoche.append(val)
def ajoutCB(self,index,valeur=None):
+ #print ('ajoutCB')
nomCB="lineEditVal"+str(index)
if hasattr(self,nomCB) : return
nouveauCB = QCheckBox(self.scrollArea)
def ajout1Valeur(self,valeur=None):
+ #print ('ajout1Valeur')
if valeur == None : return
liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
if validite == 0 : return
if liste ==[] : return
listeVal=[]
for valeur in self.listeValeursCourantes : listeVal.append(valeur)
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
if (comm2 != "" and comm != None) : return comm2
if validite :
self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
def changeValeur(self):
+ #print ('changeValeur')
if self.inhibe == True: return
if hasattr(self,'LEFiltre') :self.noircirResultatFiltre()
self.listeValeursCourantesAvant=self.listeValeursCourantes
if valeur != None and valeur != "" :
commentaire=self.ajout1Valeur(valeur)
if (commentaire != None ):
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
self.listeValeursCourantesAvant=self.listeValeursCourantes
self.setValeurs()
- min,max = self.node.item.GetMinMax()
+ min,max = self.node.item.getMinMax()
if len(self.listeValeursCourantes) < min :
- self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+ self.editor.afficheInfos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
elif len(self.listeValeursCourantes) > max :
- self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+ self.editor.afficheInfos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
- if self.listeValeursCourantes== [] : self.node.item.set_valeur([])
- else : self.node.item.set_valeur(self.listeValeursCourantes)
+ if self.listeValeursCourantes== [] : self.node.item.setValeur([])
+ else : self.node.item.setValeur(self.listeValeursCourantes)
# Exception pour PSEN
- if min==0 and self.listeValeursCourantes== []: self.node.item.set_valeur([])
+ if min==0 and self.listeValeursCourantes== []: self.node.item.setValeur([])
self.setValide()
def prepareListeResultatFiltre(self):
+ #print ('prepareListeResultatFiltre')
filtre=str(self.LEFiltre.text())
for cb in self.listeCB:
texte=cb.text()
self.listeCbRouge.append(cb)
def prepareListeResultat(self):
+ #print ('prepareListeResultat')
self.clearAll()
self.setValeurs()
def clearAll(self):
+ #print ('clearAll')
for cb in self.listeCB :
cb.setText("")
GereListe.__init__(self)
#self.finCommentaireListe()
self.gereIconePlier()
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
try :
self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
except :
for i in self.listeLE: i.close()
self.listeLE=[]
self.vScrollBar = self.scrollArea.verticalScrollBar()
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
if hasattr(self.node.item.definition.validators,'set_MCSimp'):
obj=self.node.item.getObject()
self.node.item.definition.validators.set_MCSimp(obj)
- if self.node.item.isvalid() == 0 :
+ if self.node.item.isValid() == 0 :
liste=[]
for item in self.listeValeursCourantes:
- if self.node.item.definition.validators.verif_item(item)==1: liste.append(item)
- self.listeAAfficher=self.node.item.get_liste_possible(liste)
+ if self.node.item.definition.validators.verifItem(item)==1: liste.append(item)
+ self.listeAAfficher=self.node.item.getListePossible(liste)
else:
- self.listeAAfficher=self.node.item.get_liste_possible([])
+ self.listeAAfficher=self.node.item.getListePossible([])
else :
- self.listeAAfficher=self.node.item.get_liste_possible(self.listeValeursCourantes)
+ self.listeAAfficher=self.node.item.getListePossible(self.listeValeursCourantes)
if self.listeAAfficher==[] :
self.ajoutLE(0)
def setValeurs(self,first=True):
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
if first :
if self.monSimpDef.max == "**" or self.monSimpDef.max == float('inf') : aConstruire=7
else : aConstruire=self.monSimpDef.max
if len(self.listeValeursCourantes) > aConstruire : aConstruire=len(self.listeValeursCourantes)
self.indexDernierLabel = aConstruire
for i in range(1,aConstruire+1): self.ajoutLEResultat(i)
- else : self.indexDernierLabel= len(self.listeValeursCourantes)
index=1
for val in self.listeValeursCourantes :
nomLE="LEResultat"+str(index)
courant.setText(str(val))
courant.setReadOnly(True)
index=index+1
+ while (index < self.indexDernierLabel) :
+ nomLE="LEResultat"+str(index)
+ courant=getattr(self,nomLE)
+ courant.setText("")
+ courant.setReadOnly(True)
+ index=index+1
#self.prepareListeResultat()
def moinsPushed(self):
setattr(self,nomLE,nouveauLE)
def ajoutLineEdit(self):
- #print ('ajoutLineEdit')
+ print ('ajoutLineEdit')
self.indexDernierLabel=self.indexDernierLabel+1
self.ajoutLEResultat (self.indexDernierLabel)
if liste ==[] : return
listeVal=[]
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
- min,max = self.node.item.GetMinMax()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
+ min,max = self.node.item.getMinMax()
if len(self.listeValeursCourantes) +1 > max :
- self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+ self.editor.afficheInfos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
return
else :
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
affiche=False
for i in range(1,self.indexDernierLabel+1):
liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
listeVal.append(str(valeur))
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeVal,-1,[])
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeVal,-1,[])
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
- min,max = self.node.item.GetMinMax()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
+ min,max = self.node.item.getMinMax()
if len(self.listeValeursCourantes) < min :
- self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+ self.editor.afficheInfos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
else :
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
if len(listeRetour) == 0 :
- self.node.item.set_valeur(None)
+ self.node.item.setValeur(None)
elif validite :
- self.node.item.set_valeur(listeRetour)
+ self.node.item.setValeur(listeRetour)
else :
commentaire=comm+" "+comm2
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
self.setValide()
#
def rendVisibleLigneRE(self):
self.estVisibleRE.setFocus()
self.scrollArea.ensureWidgetVisible(self.estVisibleRE,0,0)
#
+ def rendVisibleLigne(self):
+ self.estVisibleRE=self.estVisible
+ #rendVisibleLigneRE()
self.parentQt.commandesLayout.insertWidget(-1,self)
self.AAfficher=self.lineEditVal
self.maCommande.listeAffichageWidget.append(self.lineEditVal)
- if self.node.item.has_into() :
+ if self.node.item.hasInto() :
self.lineEditVal.setReadOnly(True)
self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n")
self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle")
def setValeurs(self):
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes))
else : self.lineEditVal.setText("")
self.politique=PolitiquePlusieurs(self.node,self.editor)
def valeurEntree(self):
valeurTexte=self.lineEditVal.text()
- print (valeurTexte[0])
- print (valeurTexte[-1])
+ #print (valeurTexte[0])
+ #print (valeurTexte[-1])
if valeurTexte[0] == '[' or valeurTexte[0] == '(' : valeurTexte = valeurTexte[1:]
if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1]
- print (valeurTexte)
+ #print (valeurTexte)
listeValeursBrutes=valeurTexte.split(',')
if listeValeursBrutes == [] or listeValeursBrutes == None :
self.lineEditVal.setText(str(self.listeValeursCourantes))
listeValeur=[]
for v in listeValeursBrutes:
if v == None or pattern_blanc.match(v) :
- self.editor.affiche_infos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red)
+ self.editor.afficheInfos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red)
return
liste,validite=SaisieValeur.TraiteLEValeur(self,str(v))
if not validite :
- self.editor.affiche_infos(str(listeValeur) +' Valeurs saisies incorrectes',Qt.red)
+ self.editor.afficheInfos(str(listeValeur) +' Valeurs saisies incorrectes',Qt.red)
return
listeValeur.append(liste[0])
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeValeur,-1,[])
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeValeur,-1,[])
if validite :
- self.node.item.set_valeur(listeValeur)
- self.node.item.isvalid()
+ self.node.item.setValeur(listeValeur)
+ self.node.item.isValid()
self.setValeurs()
else :
- self.editor.affiche_infos(str(listeValeur) + ' ' +comm,Qt.red)
+ self.editor.afficheInfos(str(listeValeur) + ' ' +comm,Qt.red)
self.lineEditVal.setText('')
class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie):
self.lineEditVal.setReadOnly(True)
def setValeurs(self):
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ self.listeValeursCourantes=self.node.item.getListeValeurs()
self.politique=PolitiquePlusieurs(self.node,self.editor)
if self.listeValeursCourantes == [] : self.lineEditVal.setText(""); return
txt="["
from six.moves import range
from PyQt5.QtWidgets import QFrame,QApplication, QFrame, QWidget
-from PyQt5.QtGui import QIcon
-from PyQt5.QtCore import QSize, Qt, QTimer
+from PyQt5.QtGui import QIcon
+from PyQt5.QtCore import QSize, Qt, QTimer
from Extensions.i18n import tr
-from .feuille import Feuille
-from .politiquesValidation import PolitiquePlusieurs
-from .qtSaisie import SaisieValeur
-from .gereListe import GereListe
-from .gereListe import LECustom
-from Tuple2 import Ui_Tuple2
-from Tuple3 import Ui_Tuple3
+from InterfaceQT4.feuille import Feuille
+from InterfaceQT4.politiquesValidation import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie import SaisieValeur
+from InterfaceQT4.gereListe import GereListe
+from InterfaceQT4.gereListe import LECustom
+from Tuple2 import Ui_Tuple2
+from Tuple3 import Ui_Tuple3
+from Tuple4 import Ui_Tuple4
+from Tuple5 import Ui_Tuple5
+from Tuple6 import Ui_Tuple6
+from Tuple7 import Ui_Tuple7
+from Tuple8 import Ui_Tuple8
+from Tuple9 import Ui_Tuple9
+from Tuple10 import Ui_Tuple10
+#--------------------------
class TupleCustom(object) :
+#--------------------------
+
def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------------------------------------
QWidget.__init__(self,parent)
self.setupUi(self)
self.tailleTuple=tailleTuple
self.parent=parent
self.parentQt=parentQt
- self.valeur=None
+ self.valeur=[]
self.index=index
self.inFocusOutEvent=False
courant.returnPressed.connect(self.valueChange)
courant.numDsLaListe = i+1
courant.tupleCustomParent=self
+ courant.parentTuple = self
def valueChange(self):
+ #----------------------
+
listeVal=[]
-
for i in range(self.tailleTuple):
nomLE="lineEditVal_"+str(i+1)
courant=getattr(self,nomLE)
if str(val)=="" or val==None :
if not self.inFocusOutEvent : courant.setFocus()
return
+
try :
valeur=eval(val,{})
except :
try :
- d=self.parentQt.objSimp.jdc.get_contexte_avant(self.parentQt.objSimp. etape)
+ d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
valeur=eval(val,d)
except :
valeur=val
def setValeur(self,value):
+ #----------------------
+
listeVal=[]
valeurNulle=True
for i in range(self.tailleTuple):
valeur=eval(val,{})
except :
try :
- d=self.parentQt.objSimp.jdc.get_contexte_avant(self.parentQt.objSimp. etape)
+ d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
valeur=eval(val,d)
except :
valeur=val
else : self.valeur=listeVal
def getValeur(self):
+ #----------------------
+ self.valeur=[]
+ vide=True
+ for i in range(self.tailleTuple):
+ nomLE="lineEditVal_"+str(i+1)
+ courant=getattr(self,nomLE)
+ self.valeur.append(courant.valeur)
+ if courant.valeur!= None : vide = False
+ if vide : self.valeur=[]
return self.valeur
def text(self):
+ #--------------
return self.valeur
def setText(self,value):
+ #-----------------------
self.setValeur(value)
def clean(self):
+ #-------------------
self.valeur=None
for i in range(self.tailleTuple):
nomLE="lineEditVal_"+str(i+1)
courant.setText("")
def finCommentaire(self):
+ #-------------------
return self.finCommentaireListe()
+#-------------------------------------------------
class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom):
+#-------------------------------------------------
def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+ if self.parentQt.editor.maConfiguration.closeParenthese :
+ self.label_5.close()
+ self.label_7.close()
+
+#-------------------------------------------------
class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom):
+#-------------------------------------------------
def __init__(self,tailleTuple,parent,parentQt,index):
- TupleCustom. __init__(self,tailleTuple,parent,parentQt,index)
-
-# ---------------------------- #
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+ if self.parentQt.editor.maConfiguration.closeParenthese :
+ self.label_5.close()
+ self.label_7.close()
+
+
+
+# -------------------------------------------- #
class MonWidgetPlusieursTuple(Feuille,GereListe):
+# -------------------------------------------- #
+
+ def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande):
+ #-----------------------------------------------------
- def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
self.indexDernierLabel=0
+ self.numLineEditEnCours=0
self.nomLine="TupleVal"
self.listeAffichageWidget=[]
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
self.finCommentaireListe()
self.politique=PolitiquePlusieurs(self.node,self.editor)
self.parentQt.commandesLayout.insertWidget(-1,self)
+
if sys.platform[0:5]!="linux":
repIcon=self.node.editor.appliEficas.repIcon
fichier=os.path.join(repIcon, 'arrow_up.png')
self.BSelectFichier.setIcon(icon3)
self.BSelectFichier.setIconSize(QSize(32, 32))
self.BSelectFichier.clicked.connect(self.selectInFile)
-
-
+
+
def ajoutLineEdit(self,valeur=None,inInit=False):
+ #------------------------------------------------
self.indexDernierLabel=self.indexDernierLabel+1
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
if hasattr(self,nomLineEdit) :
self.indexDernierLabel=self.indexDernierLabel-1
return
- if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
- else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+ nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+ laClasseDuTuple=globals()[nomCustomTuple]
+ nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+ #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+ #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
setattr(self,nomLineEdit,nouveauLE)
if valeur != None : nouveauLE.setValeur(valeur)
- self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
- self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
- if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+ for i in range(self.nbValeurs) :
+ num=i+1
+ nomLineEdit='lineEditVal_'+str(num)
+ lineEditVal=getattr(nouveauLE,nomLineEdit)
+ self.listeAffichageWidget.append(lineEditVal)
+ #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
+ #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
+ #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+
self.etablitOrdre()
# deux lignes pour que le ensureVisible fonctionne
if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
def etablitOrdre(self):
+ # ---------------------
i=0
while(i +1 < len(self.listeAffichageWidget)):
self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
def setValeurs(self):
- self.RBListePush()
- valeurs=self.node.item.get_valeur()
- min,max=self.node.item.GetMinMax()
- if max == "**" or max > 5 : aCreer=5
+ # ---------------------
+ if self.editor.code == 'PSEN' : self.RBListePush()
+ valeurs=self.node.item.getValeur()
+ min,max=self.node.item.getMinMax()
+ if max == "**" or max > 8 : aCreer= 8
else : aCreer=max
if valeurs == () or valeurs == None :
for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True)
def rendVisibleLigne(self):
+ # -------------------------
QApplication.processEvents()
self.estVisible.setFocus(True)
self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
def changeValeur(self,changeDePlace=False,oblige=True):
+ # -----------------------------------------------------
#Pour compatibilite signature
+
aLeFocus=self.focusWidget()
listeComplete=[]
-
libre=False
+ #print (self.indexDernierLabel)
for i in range(self.indexDernierLabel) :
nom=self.nomLine+str(i+1)
courant=getattr(self,nom)
valeurTuple=courant.valeur
- if valeurTuple == None or valeurTuple== "":
+ #print (courant, i, valeurTuple)
+ if valeurTuple == None or valeurTuple== "" or valeurTuple==[]:
libre=True
continue
- validite,comm,comm2,listeRetour= self.politique.AjoutTuple(valeurTuple,listeComplete)
+ validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete)
if not validite:
if comm2 != '' : comm += " " + comm2
- self.editor.affiche_infos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+ self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
return
listeComplete.append(tuple(courant.valeur))
+ #print ('listeComplete', listeComplete)
if listeComplete == [] : listeComplete=None
- self.node.item.set_valeur(listeComplete)
+ self.node.item.setValeur(listeComplete)
if changeDePlace : return
- min,max=self.node.item.GetMinMax()
- if self.indexDernierLabel == max : self.editor.affiche_infos(tr('Nb maximum de valeurs atteint'))
+ min,max=self.node.item.getMinMax()
+ if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint'))
if self.indexDernierLabel < max and libre==False :
self.ajoutLineEdit()
self.listeAffichageWidget[-2].setFocus(True)
pass
def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
if len(liste)%self.nbValeurs != 0 :
texte="Nombre incorrect de valeurs"
- self.editor.affiche_infos(tr(texte),Qt.red)
+ self.editor.afficheInfos(tr(texte),Qt.red)
+ return
+
i=0
- min,max=self.node.item.GetMinMax()
- if self.objSimp.valeur == None : l = len(liste) and self.objSimp.valeur
- else : l = len(liste)+len(self.objSimp.valeur)
- if l > max :
+ longueur=len(liste)//self.nbValeurs
+ increment=self.nbValeurs
+ listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)]
+ listeFormatee=tuple(listeFormatee)
+
+ min,max=self.node.item.getMinMax()
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
- self.editor.affiche_infos(texte,Qt.red)
+ self.editor.afficheInfos(texte,Qt.red)
+ return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.afficheInfos(comm+comm2,Qt.red)
return
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
while ( i < len(liste) ) :
- if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
- else : indexDernierRempli=0
try :
t=tuple(liste[i:i+self.nbValeurs])
- i=i+self.nbValeurs
except:
t=tuple(liste[i:len(liste)])
+ i=i+self.nbValeurs
if indexDernierRempli < self.indexDernierLabel:
- nomLineEdit=self.nomLine+str(indexDernierRempli+1)
- LEARemplir=getattr(self,nomLineEdit)
- LEARemplir.lineEditVal_1.setText(str(t[0]))
- LEARemplir.lineEditVal_2.setText(str(t[1]))
- if self.nbValeurs== 3 : LEARemplir.lineEditVal_3.setText(str(t[2]))
- LEARemplir.valueChange()
+
+ nomLEARemplir=self.nomLine+str(indexDernierRempli+1)
+ LEARemplir=getattr(self,nomLEARemplir)
+ for n in range(self.nbValeurs) :
+ nomLineEdit='lineEditVal_'+str(n+1)
+ lineEditVal=getattr(LEARemplir,nomLineEdit)
+ lineEditVal.setText(str(t[n]))
else :
- self.ajoutLineEdit(t,False)
+ # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge
+ self.indexDernierLabel=self.indexDernierLabel+1
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
- LEARemplir=getattr(self,nomLineEdit)
- LEARemplir.valueChange()
+
+ nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+ laClasseDuTuple=globals()[nomCustomTuple]
+ nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+ self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+ setattr(self,nomLineEdit,nouveauLE)
+ nouveauLE.setValeur(t)
+
+ for n in range(self.nbValeurs) :
+ nomLineEdit='lineEditVal_'+str(n+1)
+ lineEditVal=getattr(nouveauLE,nomLineEdit)
+ self.listeAffichageWidget.append(lineEditVal)
+ indexDernierRempli = indexDernierRempli+1
+
+ self.etablitOrdre()
+
+
def RBListePush(self):
+ #----------------------
# PN a rendre generique avec un truc tel prerempli
+ # pour l instant specifique PSEN
+
if self.editor.code == 'VP' : return
if self.objSimp.valeur != None and self.objSimp.valeur != [] : return
- if not hasattr(self.editor.readercata.cata[0],'sd_ligne') : self.editor.readercata.cata[0].sd_ligne=None
- if not hasattr(self.editor.readercata.cata[0],'sd_generateur') : self.editor.readercata.cata[0].sd_generateur=None
- if not hasattr(self.editor.readercata.cata[0],'sd_transfo') : self.editor.readercata.cata[0].sd_transfo=None
- if not hasattr(self.editor.readercata.cata[0],'sd_charge') : self.editor.readercata.cata[0].sd_charge=None
- if not hasattr(self.editor.readercata.cata[0],'sd_moteur') : self.editor.readercata.cata[0].sd_moteur=None
- if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_ligne :
+ if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None
+ if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None
+ if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None
+ if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None
+ if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne :
val=[]
if hasattr(self.objSimp.jdc,'LineDico'):
for k in self.objSimp.jdc.LineDico :
try :
- valeur=self.objSimp.jdc.get_concept(k)
+ valeur=self.objSimp.jdc.getConcept(k)
val.append((valeur,0))
except :
pass
- self.node.item.set_valeur(val)
- if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_generateur :
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur :
val=[]
if hasattr(self.objSimp.jdc,'MachineDico'):
for k in self.objSimp.jdc.MachineDico :
try :
- valeur=self.objSimp.jdc.get_concept(k)
+ valeur=self.objSimp.jdc.getConcept(k)
val.append((valeur,0))
except :
pass
- self.node.item.set_valeur(val)
- if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_transfo :
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo :
val=[]
if hasattr(self.objSimp.jdc,'TransfoDico'):
for k in self.objSimp.jdc.TransfoDico :
try :
- valeur=self.objSimp.jdc.get_concept(k)
+ valeur=self.objSimp.jdc.getConcept(k)
val.append((valeur,0))
except :
pass
- self.node.item.set_valeur(val)
- if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_charge :
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge :
val=[]
if hasattr(self.objSimp.jdc,'LoadDico'):
for k in self.objSimp.jdc.LoadDico :
try :
- valeur=self.objSimp.jdc.get_concept(k)
+ valeur=self.objSimp.jdc.getConcept(k)
val.append((valeur,0))
except :
pass
- self.node.item.set_valeur(val)
- if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_moteur :
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur :
val=[]
if hasattr(self.objSimp.jdc,'MotorDico'):
for k in self.objSimp.jdc.MotorDico :
try :
- valeur=self.objSimp.jdc.get_concept(k)
+ valeur=self.objSimp.jdc.getConcept(k)
val.append((valeur,0))
except :
pass
- self.node.item.set_valeur(val)
+ self.node.item.setValeur(val)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import range
+ from builtins import object
+except : pass
+
+import types,os,sys
+
+from six.moves import range
+from PyQt5.QtWidgets import QFrame,QApplication, QFrame, QWidget
+from PyQt5.QtGui import QIcon
+from PyQt5.QtCore import QSize, Qt, QTimer
+
+from Extensions.i18n import tr
+
+
+from InterfaceQT4.feuille import Feuille
+from InterfaceQT4.politiquesValidation import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie import SaisieValeur
+from InterfaceQT4.gereListe import GereListe
+from InterfaceQT4.gereListe import LECustom
+from Tuple2 import Ui_Tuple2
+from Tuple3 import Ui_Tuple3
+from Tuple4 import Ui_Tuple4
+from Tuple5 import Ui_Tuple5
+from Tuple6 import Ui_Tuple6
+from Tuple7 import Ui_Tuple7
+from Tuple8 import Ui_Tuple8
+from Tuple9 import Ui_Tuple9
+from Tuple10 import Ui_Tuple10
+
+
+#--------------------------
+class TupleCustom(object) :
+#--------------------------
+
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------------------------------------
+ QWidget.__init__(self,parent)
+ self.setupUi(self)
+ self.tailleTuple=tailleTuple
+ self.parent=parent
+ self.parentQt=parentQt
+ self.valeur=None
+ self.index=index
+ self.inFocusOutEvent=False
+
+
+ for i in range(self.tailleTuple):
+ nomLE="lineEditVal_"+str(i+1)
+ courant=getattr(self,nomLE)
+ courant.num=index
+ courant.dansUnTuple=True
+ courant.numDsLaListe = i+1
+ courant.tupleCustomParent=self
+
+
+
+ def setValeur(self,value):
+ #----------------------
+
+ listeVal=[]
+ valeurNulle=True
+ for i in range(self.tailleTuple):
+ nomLE="lineEditVal_"+str(i+1)
+ courant=getattr(self,nomLE)
+ try :
+ if str(value[i]) != "" : valeurNulle=False
+ except :
+ pass
+
+ try :
+ courant.setText(str(value[i]))
+ except :
+ courant.setText("")
+ val=str(courant.text())
+ try :
+ valeur=eval(val,{})
+ except :
+ try :
+ d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+ valeur=eval(val,d)
+ except :
+ valeur=val
+ listeVal.append(valeur)
+ if valeurNulle == True : self.valeur=None
+ else : self.valeur=listeVal
+
+ def getValeur(self):
+ #----------------------
+ return self.valeur
+
+ def text(self):
+ #--------------
+ return self.valeur
+
+ def setText(self,value):
+ #-----------------------
+ self.setValeur(value)
+
+ def clean(self):
+ #-------------------
+ self.valeur=None
+ for i in range(self.tailleTuple):
+ nomLE="lineEditVal_"+str(i+1)
+ courant=getattr(self,nomLE)
+ courant.setText("")
+
+ def finCommentaire(self):
+ #-------------------
+ return self.finCommentaireListe()
+
+
+#-------------------------------------------------
+class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-----------------------------------------------------
+ TupleCustom. __init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom):
+#-------------------------------------------------
+ def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
+ TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+
+
+
+
+# -------------------------------------------- #
+class MonWidgetPlusieursTuple(Feuille,GereListe):
+# -------------------------------------------- #
+
+ def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande):
+ #-----------------------------------------------------
+
+ self.indexDernierLabel=0
+ self.numLineEditEnCours=0
+ self.nomLine="TupleVal"
+ self.listeAffichageWidget=[]
+ Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ GereListe.__init__(self)
+ self.finCommentaireListe()
+ self.politique=PolitiquePlusieurs(self.node,self.editor)
+ self.parentQt.commandesLayout.insertWidget(-1,self)
+
+ if sys.platform[0:5]!="linux":
+ repIcon=self.node.editor.appliEficas.repIcon
+ fichier=os.path.join(repIcon, 'arrow_up.png')
+ icon = QIcon(fichier)
+ self.RBHaut.setIcon(icon)
+ self.RBHaut.setIconSize(QSize(32, 32))
+ fichier2=os.path.join(repIcon, 'arrow_down.png')
+ icon2 = QIcon(fichier2)
+ self.RBBas.setIcon(icon2)
+ fichier3=os.path.join(repIcon, 'file-explorer.png')
+ icon3 = QIcon(fichier3)
+ self.BSelectFichier.setIcon(icon3)
+ self.BSelectFichier.setIconSize(QSize(32, 32))
+ self.BSelectFichier.clicked.connect(self.selectInFile)
+
+
+
+
+ def ajoutLineEdit(self,valeur=None,inInit=False):
+ #------------------------------------------------
+ self.indexDernierLabel=self.indexDernierLabel+1
+ nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+ if hasattr(self,nomLineEdit) :
+ self.indexDernierLabel=self.indexDernierLabel-1
+ return
+
+ nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+ laClasseDuTuple=globals()[nomCustomTuple]
+ nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+ #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+ #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+ self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+ setattr(self,nomLineEdit,nouveauLE)
+ if valeur != None : nouveauLE.setValeur(valeur)
+
+ for i in range(self.nbValeurs) :
+ num=i+1
+ nomLineEdit='lineEditVal_'+str(num)
+ lineEditVal=getattr(nouveauLE,nomLineEdit)
+ self.listeAffichageWidget.append(lineEditVal)
+ #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
+ #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
+ #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+
+ self.etablitOrdre()
+
+ # deux lignes pour que le ensureVisible fonctionne
+ self.estVisible=nouveauLE.lineEditVal_1
+ if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
+
+ def etablitOrdre(self):
+ # ---------------------
+ i=0
+ while(i +1 < len(self.listeAffichageWidget)):
+ self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
+ self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+ i=i+1
+
+
+ def setValeurs(self):
+ # ---------------------
+ if self.editor.code == 'PSEN' : self.RBListePush()
+ valeurs=self.node.item.getValeur()
+ min,max=self.node.item.getMinMax()
+ if max == "**" or max > 8 : aCreer= 8
+ else : aCreer=max
+
+ if valeurs == () or valeurs == None :
+ for i in range(aCreer): self.ajoutLineEdit(inInit=True)
+ return
+
+ for v in valeurs:
+ self.ajoutLineEdit(v,inInit=True)
+
+ for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True)
+
+ def rendVisibleLigne(self):
+ # -------------------------
+ QApplication.processEvents()
+ self.estVisible.setFocus(True)
+ self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
+
+
+ def changeValeur(self,changeDePlace=False,oblige=True):
+ # -----------------------------------------------------
+ #Pour compatibilite signature
+
+ self.aEuLeFocus=False # set pour le leaveEvent voir gereListe
+ aLeFocus=self.focusWidget()
+ listeComplete=[]
+ libre=False
+ #print ('ds changeValeur', self.indexDernierLabel)
+ for i in range(self.indexDernierLabel) :
+ #print (i)
+ nom=self.nomLine+str(i+1)
+ #print (nom)
+ courant=getattr(self,nom)
+ #print (courant)
+ valeurTuple=courant.valeur
+ #print (valeurTuple)
+ if valeurTuple == None or valeurTuple== "":
+ libre=True
+ continue
+ print (i, valeurTuple)
+ validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete)
+ if not validite:
+ print (validite,comm,comm2)
+ if comm2 != '' : comm += " " + comm2
+ print (validite,comm,comm2)
+ self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+ print (comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+ return
+ listeComplete.append(tuple(courant.valeur))
+ if listeComplete == [] : listeComplete=None
+ self.node.item.setValeur(listeComplete)
+
+ if changeDePlace : return
+ min,max=self.node.item.getMinMax()
+ if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint'))
+ if self.indexDernierLabel < max and libre==False :
+ self.ajoutLineEdit()
+ self.listeAffichageWidget[-2].setFocus(True)
+ else :
+ try :
+ QApplication.processEvents()
+ w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1]
+ w.setFocus(True)
+ self.scrollArea.ensureWidgetVisible(w,0,0)
+ except :
+ pass
+
+ def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+ if len(liste)%self.nbValeurs != 0 :
+ texte="Nombre incorrect de valeurs"
+ self.editor.afficheInfos(tr(texte),Qt.red)
+ return
+
+ i=0
+ longueur=len(liste)//self.nbValeurs
+ increment=self.nbValeurs
+ listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)]
+ listeFormatee=tuple(listeFormatee)
+
+ min,max=self.node.item.getMinMax()
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
+ texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+ self.editor.afficheInfos(texte,Qt.red)
+ return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.afficheInfos(texte,Qt.red)
+ return
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
+ while ( i < len(liste) ) :
+ try :
+ t=tuple(liste[i:i+self.nbValeurs])
+ except:
+ t=tuple(liste[i:len(liste)])
+ i=i+self.nbValeurs
+ if indexDernierRempli < self.indexDernierLabel:
+
+ nomLEARemplir=self.nomLine+str(indexDernierRempli+1)
+ LEARemplir=getattr(self,nomLEARemplir)
+ for n in range(self.nbValeurs) :
+ nomLineEdit='lineEditVal_'+str(n+1)
+ lineEditVal=getattr(LEARemplir,nomLineEdit)
+ lineEditVal.setText(str(t[n]))
+ else :
+ # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge
+ self.indexDernierLabel=self.indexDernierLabel+1
+ nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+
+ nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+ laClasseDuTuple=globals()[nomCustomTuple]
+ nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+ self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+ setattr(self,nomLineEdit,nouveauLE)
+ nouveauLE.setValeur(t)
+
+ for n in range(self.nbValeurs) :
+ nomLineEdit='lineEditVal_'+str(n+1)
+ lineEditVal=getattr(nouveauLE,nomLineEdit)
+ self.listeAffichageWidget.append(lineEditVal)
+ indexDernierRempli = indexDernierRempli+1
+
+ self.etablitOrdre()
+
+
+
+ def RBListePush(self):
+ #----------------------
+ # PN a rendre generique avec un truc tel prerempli
+ # pour l instant specifique PSEN
+
+ if self.editor.code == 'VP' : return
+ if self.objSimp.valeur != None and self.objSimp.valeur != [] : return
+ if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None
+ if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None
+ if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None
+ if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None
+ if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne :
+ val=[]
+ if hasattr(self.objSimp.jdc,'LineDico'):
+ for k in self.objSimp.jdc.LineDico :
+ try :
+ valeur=self.objSimp.jdc.getConcept(k)
+ val.append((valeur,0))
+ except :
+ pass
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur :
+ val=[]
+ if hasattr(self.objSimp.jdc,'MachineDico'):
+ for k in self.objSimp.jdc.MachineDico :
+ try :
+ valeur=self.objSimp.jdc.getConcept(k)
+ val.append((valeur,0))
+ except :
+ pass
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo :
+ val=[]
+ if hasattr(self.objSimp.jdc,'TransfoDico'):
+ for k in self.objSimp.jdc.TransfoDico :
+ try :
+ valeur=self.objSimp.jdc.getConcept(k)
+ val.append((valeur,0))
+ except :
+ pass
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge :
+ val=[]
+ if hasattr(self.objSimp.jdc,'LoadDico'):
+ for k in self.objSimp.jdc.LoadDico :
+ try :
+ valeur=self.objSimp.jdc.getConcept(k)
+ val.append((valeur,0))
+ except :
+ pass
+ self.node.item.setValeur(val)
+ if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur :
+ val=[]
+ if hasattr(self.objSimp.jdc,'MotorDico'):
+ for k in self.objSimp.jdc.MotorDico :
+ try :
+ valeur=self.objSimp.jdc.getConcept(k)
+ val.append((valeur,0))
+ except :
+ pass
+ self.node.item.setValeur(val)
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+
+from .feuille import Feuille
+from .monWidgetPlusieursTuple import MonWidgetPlusieursTuple
+from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple
+
+
+class MonWidgetPlusieursTuple2 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=2
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple3 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=3
+
+class MonWidgetPlusieursTuple4 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=4
+
+class MonWidgetPlusieursTuple5 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=5
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple6 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=6
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple7 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=7
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple8 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=8
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple9 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=9
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetPlusieursTuple10 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=10
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
def setValeursApresBouton(self):
- if self.objSimp.get_valeur()==None : return
- valeur=self.objSimp.get_valeur()
- if not(type(valeur) == str) : valeur=str(valeur)
+ if self.objSimp.getValeur()==None : return
+ valeur=self.objSimp.getValeur()
+ if not(isinstance(valeur, str)) : valeur = str(valeur)
try :
self.dict_bouton[valeur].setChecked(True)
self.dict_bouton[valeur].setFocus(True)
nomBouton="radioButton_"+str(i)
bouton=getattr(self,nomBouton)
valeur=self.maListeDeValeur[i-1]
- if not(type(valeur) == str) : valeur=str(valeur)
+ if not(isinstance(valeur, str)) : valeur = str(valeur)
bouton.setText(tr(valeur))
self.dict_bouton[valeur]=bouton
bouton.clicked.connect(self.boutonclic)
for valeur in self.dict_bouton:
if self.dict_bouton[valeur].isChecked():
#print "dans boutonclic is checked", valeur, type(valeur)
- SaisieValeur.LEValeurPressed(self,valeur)
+ SaisieValeur.LEvaleurPressed(self,valeur)
self.reaffiche()
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
#print "dans le init de MonWidgetRadioButtonSD",self
- self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+ self.maListeDeValeur=node.item.getSdAvantDuBonType()
MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def setMaxI(self):
def initLBSDCO(self):
- listeNomsSDCO = self.node.item.get_sd_avant_du_bon_type()
+ listeNomsSDCO = self.node.item.getSdAvantDuBonType()
for aSDCO in listeNomsSDCO:
self.LBSDCO.insertItem( 1,aSDCO)
- valeur = self.node.item.get_valeur()
+ valeur = self.node.item.getValeur()
if valeur != "" and valeur != None :
self.LESDCO.setText(str(valeur.nom))
"""
nomConcept=str(self.LBSDCO.currentItem().text())
self.LESDCO.clear()
- self.editor.init_modif()
- anc_val = self.node.item.get_valeur()
- test_CO=self.node.item.is_CO(anc_val)
+ self.editor.initModif()
+ anc_val = self.node.item.getValeur()
+ test_CO=self.node.item.isCO(anc_val)
- valeur,validite=self.node.item.eval_valeur(nomConcept)
- test = self.node.item.set_valeur(valeur)
+ valeur,validite=self.node.item.evalValeur(nomConcept)
+ test = self.node.item.setValeur(valeur)
if not test :
commentaire = tr("impossible d'evaluer : ") + valeur
elif validite:
commentaire = tr("Valeur du mot-clef enregistree")
if test_CO:
# il faut egalement propager la destruction de l'ancien concept
- self.node.item.delete_valeur_co(valeur=anc_val)
- self.node.item.object.etape.get_type_produit(force=1)
- self.node.item.object.etape.parent.reset_context()
+ self.node.item.deleteValeurCo(valeur=anc_val)
+ self.node.item.object.etape.getType_produit(force=1)
+ self.node.item.object.etape.parent.resetContext()
self.LESDCO.setText(nomConcept)
else :
- commentaire = self.node.item.get_cr()
+ commentaire = self.node.item.getCr()
self.reset_old_valeur(anc_val,mess=mess)
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
self.Commentaire.setText(tr(commentaire))
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
self.parentQt.commandesLayout.insertWidget(-1,self,1)
self.setFocusPolicy(Qt.StrongFocus)
- self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+ self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
self.AAfficher=self.lineEditVal
self.maCommande.listeAffichageWidget.append(self.lineEditVal)
self.lineEditVal.focusInEvent=self.monFocusInEvent
def monFocusOutEvent(self,event):
if self.oldValeurTexte != self.lineEditVal.text():
self.oldValeurTexte= self.lineEditVal.text()
- self.LEValeurPressed()
+ self.LEvaleurPressed()
QLineEdit.focusOutEvent(self.lineEditVal,event)
#def showEvent(self, event):
def setValeurs(self):
#print ("dans setValeurs")
self.politique=PolitiqueUnique(self.node,self.editor)
- valeur=self.node.item.get_valeur()
- valeurTexte=self.politique.GetValeurTexte(valeur)
+ valeur=self.node.item.getValeur()
+ valeurTexte=self.politique.getValeurTexte(valeur)
chaine=""
if valeurTexte != None :
return commentaire
- def LEValeurPressed(self):
+ def LEvaleurPressed(self):
# pour les soucis d encoding
try :
if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
except : pass
- SaisieValeur.LEValeurPressed(self)
+ SaisieValeur.LEvaleurPressed(self)
self.parentQt.donneFocus()
self.setValeurs()
self.reaffiche()
#if self.objSimp.parent.nom == "MODEL" :
- # if self.objSimp.isvalid():
+ # if self.objSimp.isValid():
# self.objSimp.parent.change_fichier="1"
- #self.node.item.parent.build_include(None,"")
+ #self.node.item.parent.buildInclude(None,"")
self.AAfficher=self.RBTrue
def setValeurs(self):
- valeur=self.node.item.get_valeur()
+ valeur=self.node.item.getValeur()
if valeur == None : return
if valeur == True : self.RBTrue.setChecked(True)
if valeur == False : self.RBFalse.setChecked(True)
def boutonTrueClic(self):
- SaisieValeur.LEValeurPressed(self,True)
+ SaisieValeur.LEvaleurPressed(self,True)
self.reaffiche()
def boutonFalseClic(self):
- SaisieValeur.LEValeurPressed(self,False)
+ SaisieValeur.LEvaleurPressed(self,False)
self.reaffiche()
self.setFocusPolicy(Qt.StrongFocus)
self.LEImag.returnPressed.connect(self.LEImagRPressed)
self.LEReel.returnPressed.connect(self.LEReelRPressed)
- self.RBRI.clicked.connect(self.ValeurPressed )
- self.RBMP.clicked.connect(self.ValeurPressed )
+ self.RBRI.clicked.connect(self.valeurPressed )
+ self.RBMP.clicked.connect(self.valeurPressed )
self.LEComp.returnPressed.connect(self.LECompRPressed)
self.maCommande.listeAffichageWidget.append(self.LEComp)
#self.maCommande.listeAffichageWidget.append(self.RBRI)
def setValeurs(self):
self.politique=PolitiqueUnique(self.node,self.editor)
- valeur=self.node.item.get_valeur()
+ valeur=self.node.item.getValeur()
if valeur == None or valeur == '' : return
if type(valeur) not in (list,tuple) :
self.LEComp.setText(str(valeur))
v=eval(valeur,d)
except :
commentaire=tr("expression invalide")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return
try :
i=v.imag
- self.editor.affiche_infos(commentaire)
- self.ValeurPressed()
+ self.editor.afficheInfos(commentaire)
+ self.valeurPressed()
except :
commentaire=tr("l expression n est pas de la forme a+bj")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
def LEReelRPressed(self):
self.LEComp.clear()
valeur = str(self.LEReel.text())
try :
a=locale.atof(valeur)
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
except :
commentaire=tr("expression invalide")
- self.editor.affiche_infos(commentaire,Qt.red)
- if self.LEImag.text()!="" : self.ValeurPressed()
+ self.editor.afficheInfos(commentaire,Qt.red)
+ if self.LEImag.text()!="" : self.valeurPressed()
def LEImagRPressed(self):
self.LEComp.clear()
valeur = str(self.LEImag.text())
try :
a=locale.atof(valeur)
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
except :
commentaire=tr("expression invalide")
- self.editor.affiche_infos(commentaire,Qt.red)
- if self.LEReel.text()!="" : self.ValeurPressed()
+ self.editor.afficheInfos(commentaire,Qt.red)
+ if self.LEReel.text()!="" : self.valeurPressed()
def finCommentaire(self):
commentaire="valeur de type complexe"
v=eval(valeur,d)
except :
commentaire=tr("expression invalide")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return None
try :
i=v.imag
except :
commentaire=tr("expression n est pas de la forme a+bj")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return None
return v
- def ValeurPressed(self):
+ def valeurPressed(self):
if self.LEComp.text()== "" and (self.LEReel.text()=="" or self.LEImag.text()=="") :
return
if self.LEComp.text()== "" : valeur = self.getValeurRI()
else :
if self.LEReel.text() != "" or self.LEImag.text() != "" :
commentaire=tr("entrer une seule valeur SVP")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return
valeur= self.getValeurComp()
- self.politique.RecordValeur(valeur)
+ self.politique.recordValeur(valeur)
self.reaffiche()
self.parentQt.donneFocus()
l.append("RI")
else :
commentaire=tr("saisir le type de complexe")
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
return None
try :
l.append(locale.atof(str(self.LEReel.text())))
self.parentQt.commandesLayout.insertWidget(-1,self,1)
self.setFocusPolicy(Qt.StrongFocus)
self.politique=PolitiqueUnique(self.node,self.editor)
- self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+ self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
self.AAfficher=self.lineEditVal
self.maCommande.listeAffichageWidget.append(self.lineEditVal)
- def LEValeurPressed(self):
+ def LEvaleurPressed(self):
if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
- SaisieValeur.LEValeurPressed(self)
+ SaisieValeur.LEvaleurPressed(self)
self.parentQt.donneFocus()
self.setValeurs()
self.reaffiche()
def setValeurs(self):
- valeur=self.node.item.get_valeur()
+ valeur=self.node.item.getValeur()
if valeur != None : self.lineEditVal.setText(str(valeur))
# Modules Eficas
from Extensions.i18n import tr
-from .feuille import Feuille
-from .politiquesValidation import PolitiqueUnique
-from .qtSaisie import SaisieValeur
+from InterfaceQT4.feuille import Feuille
+from InterfaceQT4.politiquesValidation import PolitiqueUnique
+from InterfaceQT4.qtSaisie import SaisieValeur
class MonWidgetSimpTuple(Feuille):
self.setFocusPolicy(Qt.StrongFocus)
def setValeurs(self):
- valeur=self.node.item.get_valeur()
+ valeur=self.node.item.getValeur()
for i in range(self.nbValeurs) :
nomLineEdit="lineEditVal"+str(i+1)
courant=getattr(self,nomLineEdit)
def valeursPressed(self):
aLeFocus=self.focusWidget()
- self.editor.affiche_infos("")
+ self.editor.afficheInfos("")
texteValeur=""
for i in range(self.nbValeurs) :
nomLineEdit="lineEditVal"+str(i+1)
else : s=s+'"'
courant.setText(s)
texteValeur+=str(courant.text())
+ #print (texteValeur)
if i+1 != self.nbValeurs : texteValeur+=','
- validite,commentaire=self.politique.RecordValeur(texteValeur)
- if not validite:self.editor.affiche_infos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+ validite,commentaire=self.politique.recordValeur(texteValeur)
+ if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
# Passage au champ suivant
nom=aLeFocus.objectName()[11:]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+#from PyQt4.QtGui import *
+#from PyQt4.QtCore import *
+from Extensions.i18n import tr
+
+from InterfaceQT4.feuille import Feuille
+from InterfaceQT4.monWidgetSimpTuple import MonWidgetSimpTuple
+from desWidgetTuple2 import Ui_WidgetTuple2
+from desWidgetTuple3 import Ui_WidgetTuple3
+from desWidgetTuple4 import Ui_WidgetTuple4
+from desWidgetTuple5 import Ui_WidgetTuple5
+from desWidgetTuple6 import Ui_WidgetTuple6
+from desWidgetTuple7 import Ui_WidgetTuple7
+from desWidgetTuple8 import Ui_WidgetTuple8
+from desWidgetTuple9 import Ui_WidgetTuple9
+from desWidgetTuple10 import Ui_WidgetTuple10
+
+
+class MonWidgetSimpTuple2 (Ui_WidgetTuple2,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=2
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ if self.objSimp.isImmuable() :
+ self.lineEditVal1.setDisabled(True)
+ self.lineEditVal2.setDisabled(True)
+ self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+ self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+ self.lineEditVal1.setToolTip(tr("Valeur non modifiable"))
+ self.lineEditVal2.setToolTip(tr("Valeur non modifiable"))
+ else :
+ self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+
+class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=3
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ if self.objSimp.isImmuable() :
+ self.lineEditVal1.setDisabled(True)
+ self.lineEditVal2.setDisabled(True)
+ self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+ self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+ self.lineEditVal1.setToolTip(tr("Valeur non modifiable"))
+ self.lineEditVal2.setToolTip(tr("Valeur non modifiable"))
+ else :
+ self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+
+class MonWidgetSimpTuple4 (Ui_WidgetTuple4,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=4
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple5 (Ui_WidgetTuple5,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=5
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple6 (Ui_WidgetTuple6,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=6
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple7 (Ui_WidgetTuple7,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=7
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple8 (Ui_WidgetTuple8,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=8
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple9 (Ui_WidgetTuple9,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=9
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+class MonWidgetSimpTuple10 (Ui_WidgetTuple10,MonWidgetSimpTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=10
+ MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+
+from PyQt5.QtWidgets import QLabel, QSizePolicy, QSpacerItem
+from PyQt5.QtCore import QSize
+
+from InterfaceQT4.feuille import Feuille
+from InterfaceQT4.monWidgetPlusieursTuple import MonWidgetPlusieursTuple
+from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple
+from desWidgetTableau import Ui_WidgetTableau
+
+maxLen=3
+
+
+class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple):
+ def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ self.nbValeurs=len(monSimpDef.homo)
+ MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+ sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+
+
+ for i in range(len(monSimpDef.homo)):
+ nomCol='LECol'+str(i+1)
+ objCol=QLabel(self)
+ objCol.setMinimumSize(QSize(80, 25))
+ objCol.setText(monSimpDef.homo[i])
+ self.LATitre.addWidget(objCol)
+ setattr(self,nomCol,objCol)
+ spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
+ self.LATitre.addItem(spacerItem)
+
+
+
+# monObjTitreCol=getattr(self,nomCol)
+# monObjTitreCol.setText(monSimpDef.homo[i])
+
+# for i in range(maxLen-len(monSimpDef.homo)):
+# index=i+len(monSimpDef.homo)+1
+# nomCol='LECol'+str(index)
+# monObjTitreCol=getattr(self,nomCol)
+# monObjTitreCol.close()
+
+ self.resize(self.width(),1800)
+
+ def ajoutLineEdit(self,valeur=None,inInit=False):
+ hauteurAvant=(self.frame.height())
+ MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit)
+
self.maCommande.listeAffichageWidget.append(self.LESDCO)
self.AAficher=self.LESDCO
- valeur = self.node.item.get_valeur()
+ valeur = self.node.item.getValeur()
if valeur != "" and valeur != None : self.LESDCO.setText(valeur.nom)
self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed)
# Modules Eficas
from Extensions.i18n import tr
-from .feuille import Feuille
-from desWidgetVide import Ui_WidgetVide
-
-
+from .feuille import Feuille
+from desWidgetVide import Ui_WidgetVide
+from InterfaceQT4.politiquesValidation import PolitiqueUnique
class MonWidgetVide (Ui_WidgetVide,Feuille):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+ self.politique=PolitiqueUnique(self.node,self.editor)
t=self.node.item.object.definition.type[0].__name__
self.lineEditVal.setText('Attend un objet de type '+t+'. Il faut en créer')
self.parentQt.commandesLayout.insertWidget(-1,self)
self.node=node
self.parent=parent
- def TesteUneValeur(self,valeurentree):
+ def testeUneValeur(self,valeurentree):
commentaire = None
- valeur,validite=self.node.item.eval_valeur(valeurentree)
+ valeur,validite=self.node.item.evalValeur(valeurentree)
if not validite :
commentaire = "impossible d'evaluer : %s " %repr(valeurentree)
return valeur,validite,commentaire
- if self.node.item.wait_TXM() and not( type(valeur) == str) : valeur=str(valeur)
+ if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur)
- testtype,commentaire = self.node.item.object.verif_type(valeur)
+ testtype,commentaire = self.node.item.object.verifType(valeur)
if not testtype :
return valeur,0,commentaire
- valide=self.node.item.valide_item(valeur)
+ valide=self.node.item.valideItem(valeur)
if type(valide) == tuple:
validite,commentaire=valide
else :
if not validite and commentaire is None:
commentaire = "impossible d'evaluer : %s " %repr(valeurentree)
+ #print ('ds testeUneValeur', valeur, validite, commentaire)
return valeur, validite, commentaire
# ----------------------------------------------------------------------------------------
# Methodes utilisees pour la manipulation des items en notation scientifique
# a mettre au point
# ----------------------------------------------------------------------------------------
- def SetValeurTexte(self,texteValeur) :
+ def setValeurTexte(self,texteValeur) :
try :
if "R" in self.node.item.object.definition.type:
if texteValeur[0] != "'":
clef=eval(texteValeur)
if str(clef) != str(texteValeur) :
- self.node.item.object.init_modif()
- clefobj=self.node.item.object.GetNomConcept()
+ self.node.item.object.initModif()
+ clefobj=self.node.item.object.getNomConcept()
if not clefobj in self.parent.appliEficas.dict_reels:
self.parent.appliEficas.dict_reels[clefobj] = {}
self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
if not self.node.item.object.etape in self.parent.appliEficas.dict_reels :
self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {}
self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur
- self.node.item.object.fin_modif()
+ self.node.item.object.finModif()
except:
pass
- def GetValeurTexte(self,valeur) :
+ def getValeurTexte(self,valeur) :
valeurTexte=valeur
if valeur == None : return valeur
from decimal import Decimal
if isinstance(valeur,Decimal) :
- if self.node.wait_TXM() and not self.is_param(valeur) : return "'"+str(valeur)+"'"
+ if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'"
else : return(valeur)
if "R" in self.node.item.object.definition.type:
- clefobj=self.node.item.object.GetNomConcept()
+ clefobj=self.node.item.object.getNomConcept()
if clefobj in self.parent.appliEficas.dict_reels:
if valeur in self.parent.appliEficas.dict_reels[clefobj] :
valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur]
else :
if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'):
# aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin
- if (self.is_param(valeur)):
+ if (self.isParam(valeur)):
return valeur
else:
try :
pass
return valeurTexte
- def is_param(self,valeur) :
+ def isParam(self,valeur) :
for param in self.node.item.jdc.params:
if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))):
return 1
return 0
- def AjoutDsDictReel(self,texteValeur):
+ def ajoutDsDictReel(self,texteValeur):
# le try except est necessaire pour saisir les parametres
# on enleve l erreur de saisie 00 pour 0
if str(texteValeur)== '00' : return
if str(texteValeur)[0] != "'":
clef=eval(texteValeur)
if str(clef) != str(texteValeur) :
- clefobj=self.node.item.object.GetNomConcept()
+ clefobj=self.node.item.object.getNomConcept()
if not clefobj in self.parent.appliEficas :
self.parent.appliEficas.dict_reels[clefobj] = {}
self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
except:
pass
- def AjoutDsDictReelEtape(self):
+ def ajoutDsDictReelEtape(self):
try:
if self.node.item.object in self.parent.appliEficas.dict_reels:
self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object]
def __init__(self,node,parent):
Validation.__init__(self,node,parent)
- def RecordValeur(self,valeurentree):
- if self.parent.modified == 'n' : self.parent.init_modif()
- ancienne_val = self.node.item.get_valeur()
- valeur,validite,commentaire =self.TesteUneValeur(valeurentree)
+ def recordValeur(self,valeurentree):
+ if self.parent.modified == 'n' : self.parent.initModif()
+ ancienneVal = self.node.item.getValeur()
+ valeur,validite,commentaire =self.testeUneValeur(valeurentree)
if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) :
s=valeurentree
if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.'
- valeur,validite,commentaire =self.TesteUneValeur(s)
+ valeur,validite,commentaire =self.testeUneValeur(s)
if validite :
- validite=self.node.item.set_valeur(valeur)
- if self.node.item.isvalid():
+ validite=self.node.item.setValeur(valeur)
+ if self.node.item.isValid():
commentaire = tr("Valeur du mot-cle enregistree")
#commentaire = "Valeur du mot-cle enregistree"
- self.SetValeurTexte(str(valeurentree))
+ self.setValeurTexte(str(valeurentree))
else:
- cr = self.node.item.get_cr()
- commentaire = tr("Valeur du mot-cle non autorisee ")+cr.get_mess_fatal()
- self.node.item.set_valeur(ancienne_val)
+ cr = self.node.item.getCr()
+ commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal()
+ self.node.item.setValeur(ancienneVal)
return validite, commentaire
#print self.parent
- def AjoutValeurs(self,listevaleur,index,listecourante):
+ def ajoutValeurs(self,listevaleur,index,listecourante):
listeRetour=[]
commentaire="Nouvelle valeur acceptee"
commentaire2=""
if not( type(listevaleur) in (list,tuple)) :
listevaleur=tuple(listevaleur)
# on verifie que la cardinalite max n a pas ete atteinte
- min,max = self.node.item.GetMinMax()
+ min,max = self.node.item.getMinMax()
if len(listecourante) + len(listevaleur) > max :
commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse"
return False,commentaire,commentaire2,listeRetour
for valeur in listevaleur :
# On teste le type de la valeur
valeurScientifique=valeur
- valide=self.node.item.valide_item(valeur)
+ valide=self.node.item.valideItem(valeur)
if not valide :
try :
- valeur,valide=self.node.item.eval_valeur(valeur)
- valide,commentaire2 = self.node.item.object.verif_type(valeur)
+ valeur,valide=self.node.item.evalValeur(valeur)
+ valide,commentaire2 = self.node.item.object.verifType(valeur)
except :
#return testtype,commentaire,"",listeRetour
pass
commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8"
else :
commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse"
- if commentaire2== "" :commentaire2=self.node.item.info_erreur_item()
+ if commentaire2== "" :commentaire2=self.node.item.infoErreurItem()
return valide,commentaire,commentaire2,listeRetour
# On valide la liste obtenue
- encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
+ encorevalide=self.node.item.valideListePartielle(valeur,listecourante)
if not encorevalide :
- commentaire2=self.node.item.info_erreur_liste()
+ commentaire2=self.node.item.infoErreurListe()
# On traite le cas ou la liste n est pas valide pour un pb de cardinalite
- min,max = self.node.item.GetMinMax()
+ min,max = self.node.item.getMinMax()
if len(listecourante) + 1 >= max :
commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse"
return valide,commentaire,commentaire2,listeRetour
commentaire=""
return valide,commentaire,commentaire2,listeRetour
# On ajoute la valeur testee a la liste courante et a la liste acceptee
- self.AjoutDsDictReel(valeurScientifique)
+ self.ajoutDsDictReel(valeurScientifique)
listecourante.insert(index,valeur)
index=index+1
listeRetour.append(valeur)
return valide,commentaire,commentaire2,listeRetour
- def AjoutTuple(self,valeurTuple,listecourante):
+ def ajoutTuple(self,valeurTuple,listecourante):
listeRetour=[]
commentaire="Nouvelle valeur acceptee"
commentaire2=""
if valeurTuple==None: return
if valeurTuple==['']: return
# On teste le type de la valeur
- valide=self.node.item.valide_item(valeurTuple)
+ valide=self.node.item.valideItem(valeurTuple)
if not valide :
try :
- valeur,valide=self.node.item.eval_valeur(valeurTuple)
- valide = self.node.item.valide_item(valeur)
+ valeur,valide=self.node.item.evalValeur(valeurTuple)
+ valide = self.node.item.valideItem(valeur)
except :
pass
if not valide:
commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse"
- commentaire2=self.node.item.info_erreur_item()
+ commentaire2=self.node.item.infoErreurItem()
return valide,commentaire,commentaire2,listeRetour
# On valide la liste obtenue
- encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante)
+ encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante)
if not encorevalide :
- commentaire2=self.node.item.info_erreur_liste()
+ commentaire2=self.node.item.infoErreurListe()
return valide,commentaire,commentaire2,listeRetour
listeRetour.append(valeurTuple)
return valide,commentaire,commentaire2,listeRetour
+
+ def ajoutNTuple(self,liste):
+ listeRetour=[]
+ commentaire="Nouvelles valeurs acceptee"
+ commentaire2=""
+ print (self.node.item.valideListePartielle)
+ valide=self.node.item.valideListePartielle(None,liste)
+ if not valide :
+ commentaire2=self.node.item.infoErreurListe()
+ return valide,commentaire,commentaire2,listeRetour
+
+ def recordValeur(self,liste,dejaValide=True):
+ ancienneVal = self.node.item.getValeur()
+ validite=self.node.item.setValeur(liste)
+ if validite : self.node.item.initModif()
+ if self.node.item.isValid():
+ commentaire = tr("Valeur du mot-cle enregistree")
+ else:
+ cr = self.node.item.getCr()
+ commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal()
+ self.node.item.setValeur(ancienneVal)
+ return validite, commentaire
+
+
+#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2007-2017 EDF R&D
#
import six
-from PyQt5.QtWidgets import QApplication, QMainWindow, QBoxLayout, QMenu, QAction, QMessageBox
+from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QBoxLayout, QMenu, QAction, QMessageBox
from PyQt5.QtGui import QIcon
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSize
-from Extensions.i18n import tr
-from Extensions.eficas_exception import EficasException
-from Extensions import param2
-
-from myMain import Ui_Eficas
-from .viewManager import MyTabview
-from .getVersion import getEficasVersion
from Editeur import session
+from myMain import Ui_Eficas
+from InterfaceQT4.viewManager import MyViewManager
+from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
+from Extensions import param2
-class Appli(Ui_Eficas,QMainWindow):
+class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
"""
Class implementing the main user interface.
"""
- def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=False):
+ def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=False,versionCode=None):
"""
Constructor
"""
+ if ssIhm == True :
+ print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP')
+ exit()
+
+ AppliSsIhm.__init__(self,code,salome,parent,ssCode,multi,langue,ssIhm=True,versionCode=None)
QMainWindow.__init__(self,parent)
Ui_Eficas.__init__(self)
-
-
- version=getEficasVersion()
- self.VERSION_EFICAS="Eficas QT5 Salome " + version
- self.salome=salome
- self.parentMainWindow=parent
- self.ihm="QT"
- self.ssIhm=ssIhm
- self.top = self #(pour CONFIGURATION)
- self.QWParent=None #(Pour lancement sans IHM)
- self.code=code
- self.indice=0
- self.first=1
- self.dict_reels={}
- self.recent = []
- self.ficRecents={}
- self.mesScripts={}
- self.listeAEnlever=[]
- self.ListePathCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
- self.listeCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
- self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
-
-
- if self.salome:
- import Accas
- try :
- import eficasSalome
- Accas.SalomeEntry = eficasSalome.SalomeEntry
- except :
- print ('eficas hors salome')
-
+ self.ssIhm=False
self.multi=multi
- self.demande=multi # specifique PSEN
-
- if langue=='fr': self.langue=langue
- else : self.langue="ang"
+ self.demande=multi # voir PSEN
if self.multi == False :
self.definitCode(code,ssCode)
if code==None: return
+ else :
+ print ('a programmer')
self.suiteTelemac=False
- if hasattr (self, 'CONFIGURATION') :
- if self.CONFIGURATION.force_langue :
- from .monChoixLangue import MonChoixLangue
+ if hasattr (self, 'maConfiguration') :
+ if self.maConfiguration.force_langue :
+ from InterfaceQT4.monChoixLangue import MonChoixLangue
widgetLangue = MonChoixLangue(self)
ret=widgetLangue.exec_()
- self.suiteTelemac=self.CONFIGURATION.suiteTelemac
+ self.suiteTelemac=self.maConfiguration.suiteTelemac
- if not self.salome and hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'lang') : self.langue=self.CONFIGURATION.lang
+ if not self.salome and hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'lang') : self.langue=self.maConfiguration.lang
from Extensions import localisation
app=QApplication
- if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
-
+ if hasattr (self, 'maConfiguration') : localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier)
self.setupUi(self)
+
#if parent != None : self.parentCentralWidget = parent.centralWidget()
#else : self.parentCentralWidget = None
if not self.salome :
- if hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'taille') : self.taille=self.CONFIGURATION.taille
+ if hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille
else : self.taille=1700
- if self.code in ['MAP',] : self.resize(1440,self.height())
- else : self.resize(self.taille,self.height())
+ #if self.code in ['MAP',] : self.resize(1440,self.height())
+ #else : self.resize(self.taille,self.height())
+ self.resize(self.taille,self.height())
icon = QIcon(self.repIcon+"/parametres.png")
self.actionParametres.setIcon(icon)
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar :
+ self.frameEntete.setMaximumSize(QSize(16777215,100))
+ self.frameEntete.setMinimumSize(QSize(0,100))
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures :
+ self.enleverActionsStructures()
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres :
+ self.enleverParametres()
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer :
+ self.enleverSupprimer()
self.myQtab.removeTab(0)
- self.blEntete= QBoxLayout(0,self.frameEntete)
+ self.blEnteteGlob = QBoxLayout(2,self.frameEntete)
+ self.blEnteteGlob.setSpacing(0)
+ self.blEnteteGlob.setContentsMargins(0,0,0,0)
+
+ self.blEntete = QBoxLayout(0)
self.blEntete.insertWidget(0,self.toolBar)
self.blEntete.insertWidget(0,self.menubar)
+ self.blEnteteGlob.insertLayout(0,self.blEntete)
- if hasattr (self, 'CONFIGURATION') and self.CONFIGURATION.closeEntete==True and self.salome: self.closeEntete()
+
+
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar :
+ self.blEnteteCommmande = QBoxLayout(0)
+ self.blEnteteCommmande.insertWidget(0,self.toolBarCommande)
+ self.toolBarCommande.setIconSize(QSize(96,96))
+ self.blEnteteGlob.insertLayout(-1,self.blEnteteCommmande)
+ else :
+ self.toolBarCommande.close()
+
+
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.closeEntete==True and self.salome: self.closeEntete()
eficas_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- #self.resize(20,20)
- self.viewmanager = MyTabview(self)
+ self.viewmanager = MyViewManager(self)
self.recentMenu=QMenu(tr('&Recents'))
#self.menuFichier.insertMenu(self.actionOuvrir,self.recentMenu)
+
# actionARemplacer ne sert que pour l insert Menu
self.menuFichier.insertMenu(self.actionARemplacer ,self.recentMenu)
self.menuFichier.removeAction(self.actionARemplacer)
self.connecterSignaux()
self.toolBar.addSeparator()
+
if self.code != None : self.construitMenu()
self.setWindowTitle(self.VERSION_EFICAS)
- #try :
- if 1 :
+ try :
+ #if 1 :
+ # print ('attention try devient if 1')
self.ouvreFichiers()
- #except EficasException, exc:
+ except EficasException, exc:
#except:
# print "je suis dans le except"
- #if self.salome == 0 : exit()
+ if self.salome == 0 : exit()
#self.adjustSize()
self.ssCode=ssCode
if self.code==None :
self.cleanPath()
- from .monChoixCode import MonChoixCode
+ from InterfaceQT4.monChoixCode import MonChoixCode
widgetChoix = MonChoixCode(self)
ret=widgetChoix.exec_()
- import sys
+ #widgetChoix.show()
if self.code == None:return # pour le cancel de la fenetre choix code
- name='prefs_'+self.code
- prefsCode=__import__(name)
-
- self.repIni=prefsCode.repIni
- if ssCode != None :
- self.format_fichier= ssCode #par defaut
- prefsCode.NAME_SCHEME=ssCode
- else :
- self.format_fichier="python" #par defaut
-
- nameConf='configuration_'+self.code
- configuration=__import__(nameConf)
- self.CONFIGURATION = configuration.make_config(self,prefsCode.repIni)
- self.CONFIGStyle = None
- if hasattr(configuration,'make_config_style'):
- self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni)
-
- if hasattr (self,'CONFIGURATION') and self.CONFIGURATION.translatorFichier :
- from Extensions import localisation
- localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
+ AppliSsIhm.definitCode(self,self.code,ssCode)
#PN --> pb d exception qui font planter salome
# plus supporte en python 3
if self.code.upper() in Appli.__dict__:
Appli.__dict__[self.code.upper()](self,)
if self.suiteTelemac : self.lookSuiteTelemac()
+ self.metMenuAJourUtilisateurs()
+ if hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution :
+ self.ajoutExecution()
def initAides(self):
#print "je passe la"
repAide=os.path.dirname(os.path.abspath(__file__))
fileName='index.html'
self.docPath=repAide+"/../Aide"
- if hasattr(self,'CONFIGURATION') and hasattr(self.CONFIGURATION,'docPath') : self.docPath=self.CONFIGURATION.docPath
- if hasattr(self,'CONFIGURATION') and hasattr(self.CONFIGURATION,'fileName'):fileName=self.CONFIGURATION.fileName
+ if hasattr(self,'maConfiguration') and hasattr(self.maConfiguration,'docPath') : self.docPath=self.maConfiguration.docPath
+ if hasattr(self,'maConfiguration') and hasattr(self.maConfiguration,'fileName'):fileName=self.maConfiguration.fileName
self.fileDoc=os.path.join(self.docPath,fileName)
self.actionCode.setText(tr("Aide specifique ")+str(self.code))
if not os.path.isfile(self.fileDoc) :
def enleverSupprimer(self):
self.toolBar.removeAction(self.actionSupprimer)
- def enleverNewInclude(self):
+ def enlevernewInclude(self):
self.actionNouvel_Include.setVisible(False)
def enleverRechercherDsCatalogue(self):
self.rechercherDejaLa=True
self.actionRechercherDsCatalogue.triggered.connect(self.handleRechercherDsCatalogue)
- def ajoutSortieLegere(self):
- if hasattr(self,'actionSortieLegere') : return
- self.actionSortieLegere = QAction(self)
- self.actionSortieLegere.setText(tr("Sortie Legere"))
- self.menuFichier.insertAction(self.actionEnregistrer_sous,self.actionSortieLegere)
- self.actionSortieLegere.triggered.connect(self.handleSortieLegere)
+ def ajoutSortieComplete(self):
+ if hasattr(self,'actionSortieComplete') : return
+ self.actionSortieComplete = QAction(self)
+ self.actionSortieComplete.setText(tr("Sortie Complete"))
+ self.menuFichier.insertAction(self.actionEnregistrer_sous,self.actionSortieComplete)
+ self.actionSortieComplete.triggered.connect(self.handleSortieComplete)
+
+
+ def MT(self):
+ self.enlevernewInclude()
+ self.toolBar.addSeparator()
def ZCRACKS(self):
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.toolBar.addSeparator()
self.ajoutExecution()
def ADAO(self):
self.enleverActionsStructures()
- self.enleverNewInclude()
+ self.enlevernewInclude()
def ASTER(self) :
self.menuTraduction = self.menubar.addMenu("menuTraduction")
def CARMEL3D(self):
#if self.salome == 0 : return
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.menuMesh = self.menubar.addMenu(tr("Gestion Maillage"))
self.menuMesh.setObjectName("Mesh")
self.menuMesh.addAction(self.actionChercheGrpMaille)
#self.griserActionsStructures()
def CARMELCND(self):
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.enleverRechercherDsCatalogue()
self.ajoutExecution()
self.ajoutSauveExecution()
self.griserActionsStructures()
def MAP(self):
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.toolBar.addSeparator()
self.ajoutExecution()
self.ajoutSauveExecution()
self.menuOptions.addAction(self.actionParametres_Eficas)
self.menuOptions.setTitle(tr("Options"))
+ def MAPIDENTIFICATION(self):
+ self.enlevernewInclude()
+ self.enleverSupprimer()
+ #self.ajoutExecution()
+ self.enleverRechercherDsCatalogue()
+ self.enleverActionsStructures()
+ self.enleverParametres()
+
def PSEN(self):
if self.first: self.first=0
try : self.action_Nouveau.triggered.disconnect(self.fileNew)
self.enleverActionsStructures()
self.enleverParametres()
self.enleverRechercherDsCatalogue()
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.ajoutExecution()
self.ajoutN1()
self.ajoutHelpPSEN()
self.enleverActionsStructures()
self.enleverParametres()
self.enleverRechercherDsCatalogue()
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.ajoutExecution()
self.ajoutIcones()
def TELEMAC(self):
self.enleverActionsStructures()
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.connectRechercherDsCatalogue()
- self.ajoutSortieLegere()
+ self.ajoutSortieComplete()
def lookSuiteTelemac(self):
self.enleverActionsStructures()
- self.enleverNewInclude()
+ self.enlevernewInclude()
self.enleverParametres()
self.enleverSupprimer()
self.enleverRechercherDsCatalogue()
self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
self.connect(self.action_Nouveau,SIGNAL("triggered()"),self.fileNew)
- self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.NewInclude)
+ self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.newInclude)
self.connect(self.actionOuvrir,SIGNAL("triggered()"),self.fileOpen)
self.connect(self.actionEnregistrer,SIGNAL("triggered()"),self.fileSave)
self.connect(self.actionEnregistrer_sous,SIGNAL("triggered()"),self.fileSaveAs)
self.connect(self.actionColler,SIGNAL("triggered()"),self.editPaste)
self.connect(self.actionSupprimer,SIGNAL("triggered()"),self.supprimer)
self.connect(self.actionRechercher,SIGNAL("triggered()"),self.rechercher)
- self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.Deplier)
+ self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.handleDeplier)
self.connect(self.actionRapport_de_Validation,SIGNAL("triggered()"),self.jdcRapport)
self.connect(self.actionRegles_du_JdC,SIGNAL("triggered()"),self.jdcRegles)
self.recentMenu.aboutToShow.connect(self.handleShowRecentMenu)
self.action_Nouveau.triggered.connect(self.fileNew)
- self.actionNouvel_Include.triggered.connect(self.NewInclude)
+ self.actionNouvel_Include.triggered.connect(self.newInclude)
self.actionOuvrir.triggered.connect(self.fileOpen)
self.actionEnregistrer.triggered.connect(self.fileSave)
self.actionEnregistrer_sous.triggered.connect(self.fileSaveAs)
self.actionColler.triggered.connect(self.editPaste)
self.actionSupprimer.triggered.connect(self.supprimer)
self.actionRechercher.triggered.connect(self.rechercher)
- self.actionDeplier_replier.triggered.connect(self.Deplier)
+ self.actionDeplier_replier.triggered.connect(self.handleDeplier)
self.actionRapport_de_Validation.triggered.connect(self.jdcRapport)
self.actionRegles_du_JdC.triggered.connect(self.jdcRegles)
self.actionCode.triggered.connect(self.aideCode)
- def Deplier(self):
+ def handleDeplier(self):
self.viewmanager.handleDeplier()
def ajoutCommentaire(self):
self.dir=cwd
for study in session.d_env.studies:
os.chdir(cwd)
- d=session.get_unit(study,self)
+ d=session.getUnit(study,self)
self.viewmanager.handleOpen(fichier=study["comm"],units=d)
- def get_source(self,file):
+ def getSource(self,file):
# appele par Editeur/session.py
import convert
p=convert.plugins['python']()
def sauveRecents(self) :
try :
- rep=self.CONFIGURATION.rep_user
+ rep=self.maConfiguration.rep_user
monFichier=rep+"/listefichiers_"+self.code
except :
return
def traductionV11V12(self):
from .gereTraduction import traduction
- traduction(self.CONFIGURATION.repIni,self.viewmanager,"V11V12")
+ traduction(self.maConfiguration.repIni,self.viewmanager,"V11V12")
def traductionV10V11(self):
from .gereTraduction import traduction
- traduction(self.CONFIGURATION.repIni,self.viewmanager,"V10V11")
+ traduction(self.maConfiguration.repIni,self.viewmanager,"V10V11")
def traductionV9V10(self):
from .gereTraduction import traduction
- traduction(self.CONFIGURATION.repIni,self.viewmanager,"V9V10")
+ traduction(self.maConfiguration.repIni,self.viewmanager,"V9V10")
def version(self) :
from .monVisu import DVisu
#else :
QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration "))
return
- monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
+ monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.maConfiguration)
monOption.show()
def optionPdf(self) :
from monOptionsPdf import OptionPdf
- monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
+ monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.maConfiguration)
monOption.show()
- def handleSortieLegere(self):
- return self.viewmanager.saveLegerCurrentEditor()
+ def handleSortieComplete(self):
+ return self.viewmanager.saveCompleteCurrentEditor()
def handleShowRecentMenu(self):
"""
self.viewmanager.handleViewJdcRegles()
def gestionParam(self):
- self.viewmanager.handlegestionParam()
+ self.viewmanager.handleGestionParam()
def visuJdcPy(self):
self.viewmanager.handleViewJdcPy()
def fermeArbre(self):
self.viewmanager.fermeArbre()
- def NewInclude(self):
+ def newInclude(self):
self.viewmanager.newIncludeEditor()
def cleanPath(self):
res=self.fileExit()
if res==2 : event.ignore()
+
+ def remplitIconesCommandes(self):
+ if self.maConfiguration.boutonDsMenuBar == False : return
+ if not hasattr(self, 'readercata') : return
+ from monLayoutBouton import MonLayoutBouton
+ if hasattr(self,'monLayoutBoutonRempli') : return
+ self.monLayoutBoutonRempli=MonLayoutBouton(self)
+
+ def handleAjoutEtape(self,nomEtape):
+ self.viewmanager.handleAjoutEtape(nomEtape)
+
+ def metMenuAJourUtilisateurs(self):
+ self.lesFonctionsUtilisateurs={}
+ if self.code not in self.mesScripts : return
+ if not hasattr(self.mesScripts[self.code],'dict_menu') : return
+ titre,lesFonctions=self.mesScripts[self.code].dict_menu.items()[0]
+ self.menuOptions = self.menubar.addMenu("menuOptions")
+ self.menuOptions.setTitle(tr(titre))
+ for elt in lesFonctions :
+ laFonctionUtilisateur, label, lesArguments = elt
+ action = QAction(self)
+ action.setText(label)
+ #action.triggered.connect(self.appelleFonctionUtilisateur)
+ self.menuOptions.addAction(action)
+ self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments)
+ self.menuOptions.triggered.connect(self.handleFonctionUtilisateur)
+
+ def handleFonctionUtilisateur(self,action) :
+ (laFonctionUtilisateur, lesArguments)=self.lesFonctionsUtilisateurs[action]
+ self.viewmanager.handleFonctionUtilisateur(laFonctionUtilisateur, lesArguments)
if __name__=='__main__':
# Modules Eficas
- rep=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__),'..','ASTER')))
+ rep=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__),'..','Adao')))
sys.path.append(rep)
- from Aster import prefsCode
- if hasattr(prefsCode,'encoding'):
+ from Adao import prefs
+ from Adao import prefs_Adao
+ #if hasattr(prefsCode,'encoding'):
# Hack pour changer le codage par defaut des strings
- import sys
- reload(sys)
- sys.setdefaultencoding(prefsCode.encoding)
- del sys.setdefaultencoding
+ #import sys
+ #reload(sys)
+ #sys.setdefaultencoding(prefsCode.encoding)
+ #del sys.setdefaultencoding
# Fin hack
from Editeur import import_code
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+ from builtins import str
+except : pass
+
+import os, sys
+import six
+
+from Extensions.eficas_exception import EficasException
+from Extensions import param2
+
+from InterfaceQT4.getVersion import getEficasVersion
+from InterfaceQT4.viewManagerSsIhm import MyViewManagerSsIhm
+#from editorSsIhm import JDCEditorSsIhm
+
+
+class AppliSsIhm:
+ """
+ Class implementing the main user interface.
+ """
+ def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=True,versionCode=None):
+ """
+ Constructor
+ """
+ version=getEficasVersion()
+ self.VERSION_EFICAS="Eficas QT5 Salome " + version
+ self.versionCode=versionCode
+
+ self.salome=salome
+ self.ssIhm=True
+ self.code=code
+
+ self.dict_reels={}
+ self.fichierIn=None
+ self.fichierOut=None
+
+ self.recent = []
+ self.ficRecents={}
+ self.mesScripts={}
+ self.listeAEnlever=[]
+ self.ListePathCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
+ self.listeCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
+ self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
+
+ if self.salome:
+ import Accas
+ try :
+ import eficasSalome
+ Accas.SalomeEntry = eficasSalome.SalomeEntry
+ except :
+ print ('eficas hors salome')
+
+ self.multi=multi
+ if self.multi :
+ print ('pas de multi sans ihm')
+
+
+ if langue=='fr': self.langue=langue
+ else : self.langue="ang"
+
+ if self.multi == False :
+ self.definitCode(code,ssCode)
+ if code==None: return
+
+ self.suiteTelemac=False
+ self.viewmanager=MyViewManagerSsIhm(self)
+
+
+ def definitCode(self,code,ssCode) :
+ self.code=code
+ self.ssCode=ssCode
+ if self.code == None:return # pour le cancel de la fenetre choix code
+
+ name='prefs_'+self.code
+ prefsCode=__import__(name)
+
+ self.repIni=prefsCode.repIni
+ if ssCode != None :
+ self.format_fichier= ssCode #par defaut
+ prefsCode.NAME_SCHEME=ssCode
+ else :
+ self.format_fichier="python" #par defaut
+
+ nameConf='configuration_'+self.code
+ configuration=__import__(nameConf)
+ self.maConfiguration = configuration.make_config(self,prefsCode.repIni)
+
+ if hasattr (self,'maConfiguration') and self.maConfiguration.translatorFichier :
+ from Extensions import localisation
+ localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier)
+
+
+ def getSource(self,file):
+ # appele par Editeur/session.py
+ import convert
+ p=convert.plugins['python']()
+ p.readfile(file)
+ texte=p.convert('execnoparseur')
+ return texte
+
+
+ def initEditor(self,fichier = None,jdc = None, units = None,include=0):
+ if self.editor != None :
+ print ('un seul editeur par appli')
+ sys.Exit()
+ self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
+
+
+ def fileNew(self):
+ self.editor=initEditor(self)
+
+ def getEditor(self):
+ return self.editor
+
+ def fileOpen(self,fichier):
+ fichierIn = os.path.abspath(six.text_type(fichier))
+ try:
+ monEditor=self.viewmanager.handleOpen(fichierIn)
+ except EficasException as exc:
+ print ('poum')
+ monEditor=None
+ return monEditor
+
+ def fileSave(self):
+ if self.editor == None : return False
+ ok, newName = editor.saveFileAs()
+ print ('ok, newName ',ok, newName)
+
+ def fileSaveAs(self,fileName):
+ if self.editor == None : return False
+ ok = editor.saveFileAs()
+ print ('ok ',ok)
+
+ def dumpXsd(self):
+ current_cata = CONTEXT.getCurrentCata()
+ current_cata.dumpXsd()
+ if self.maConfiguration.afficheIhm==False : exit()
+
+#,self.fileSaveAs
+#,self.fileClose
+#,self.fileExit
+#,self.jdcRapport
+#,self.jdcRegles
+#,self.jdcFichierSource
+#,self.visuJdcPy
+
+
+
+if __name__=='__main__':
+
+ # Modules Eficas
+ monEficas= AppliSsIhm(code='Adao',salome=0,versionCode='V83')
self.viewmanager.handleOpen(fichier=study["comm"],units=d)
- def get_source(self,file):
+ def getSource(self,file):
# appele par Editeur/session.py
import convert
p=convert.plugins['python']()
pass
- def LEValeurPressed(self,valeur=None):
+ def LEvaleurPressed(self,valeur=None):
if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False
if self.inSaisieValeur : return
self.inSaisieValeur=True
try :
nouvelleValeur=str(self.lineEditVal.text())
except UnicodeEncodeError as e :
- self.editor.affiche_infos("pb d encoding", Qt.red)
- validite,commentaire=self.politique.RecordValeur(None)
+ self.editor.afficheInfos("pb d encoding", Qt.red)
+ validite,commentaire=self.politique.recordValeur(None)
self.lineEditVal.setText('')
self.setValide()
self.inSaisieValeur=False
if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur)
nouvelleValeur=valeur
if self.node.item.definition.validators != None :
- if self.node.item.definition.validators.verif_item(nouvelleValeur) !=1 :
- commentaire=self.node.item.definition.validators.info_erreur_item()
- self.editor.affiche_infos(commentaire,Qt.red)
+ if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 :
+ commentaire=self.node.item.definition.validators.infoErreurItem()
+ self.editor.afficheInfos(commentaire,Qt.red)
self.inSaisieValeur=False
return
- nouvelleValeurFormat=self.politique.GetValeurTexte(nouvelleValeur)
- validite,commentaire=self.politique.RecordValeur(nouvelleValeurFormat)
+ nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur)
+ validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat)
if commentaire != "" :
#PNPNPNP Il faut trouver une solution pour les 2 cas
- # self.editor.affiche_infos(commentaire)
+ # self.editor.afficheInfos(commentaire)
#self.Commentaire.setText(tr(commentaire))
if validite :
- self.editor.affiche_commentaire(commentaire)
+ self.editor.afficheCommentaire(commentaire)
else :
- self.editor.affiche_infos(commentaire,Qt.red)
+ self.editor.afficheInfos(commentaire,Qt.red)
self.inSaisieValeur=False
self.setValide()
valeur=valeurBrute
# pour traiter 11.0 - 30.0 pour le CIST
- if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.wait_TXM())) :
+ #if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.waitTxm())) :
+ if (valeurTraitee and isinstance(valeurTraitee, str) and (self.node.item.waitTxm())) :
valeur=str(valeurTraitee)
if type(valeur) in (list,tuple) :
- if self.node.item.wait_complex() :
+ if self.node.item.waitComplex() :
indice = 0
while (indice < len(valeur)):
v=valeur[indice]
indice=indice+3
except :
commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
- self.editor.affiche_infos(commentaire)
+ self.editor.afficheInfos(commentaire)
return listeValeurs,0
Lit le nom donne par l'utilisateur au concept de type CO qui doit être
la valeur du MCS courant et stocke cette valeur
"""
- self.editor.init_modif()
- anc_val = self.node.item.get_valeur()
+ self.editor.initModif()
+ anc_val = self.node.item.getValeur()
if anc_val != None:
# il faut egalement propager la destruction de l'ancien concept
- self.node.item.delete_valeur_co(valeur=anc_val)
+ self.node.item.deleteValeurCo(valeur=anc_val)
# et on force le recalcul des concepts de sortie de l'etape
- self.node.item.object.etape.get_type_produit(force=1)
+ self.node.item.object.etape.getType_produit(force=1)
# et le recalcul du contexte
- self.node.item.object.etape.parent.reset_context()
+ self.node.item.object.etape.parent.resetContext()
nomConcept = str(self.LESDCO.text())
if nomConcept == "" : return
- test,commentaire=self.node.item.set_valeur_co(nomConcept)
+ test,commentaire=self.node.item.setValeurCo(nomConcept)
if test:
commentaire=tr("Valeur du mot-clef enregistree")
- self.node.update_node_valid()
+ self.node.updateNodeValid()
else :
- cr = self.node.item.get_cr()
- commentaire = tr("Valeur du mot-clef non autorisee :")+cr.get_mess_fatal()
+ cr = self.node.item.getCr()
+ commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal()
import analyse_catalogue_initial
import autre_analyse_cata
import uiinfo
-from .monChoixCata import MonChoixCata
+from InterfaceQT4.monChoixCata import MonChoixCata
from Extensions.i18n import tr
from Extensions.eficas_exception import EficasException
from PyQt5.QtWidgets import QMessageBox, QApplication, QDialog
+#-------------------------------
+class ReaderCataCommun(object):
+#-------------------------------
+ def askChoixCatalogue(self, cata_choice_list):
+ # ____________________________________________
+ """
+ Ouvre une fenetre de selection du catalogue dans le cas où plusieurs
+ ont ete definis dans Accas/editeur.ini
+ """
+ code = getattr(self.appliEficas.maConfiguration, "code", None)
+ if code != None :
+ title=tr("Choix d une version du code ")+str(code)
+ else :
+ title=tr("Choix d une version ")
-class READERCATA(object):
+ widgetChoix = MonChoixCata(self.appliEficas, [cata.user_name for cata in cata_choice_list], title)
+ ret=widgetChoix.exec_()
- def __init__(self,QWParent, appliEficas):
- self.QWParent=QWParent
- self.appliEficas=self.QWParent.appliEficas
- self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
- self.code=self.QWParent.code
- self.ssCode=self.appliEficas.ssCode
- self.appliEficas.format_fichier='python'
- self.mode_nouv_commande=self.appliEficas.CONFIGURATION.mode_nouv_commande
- self.version_code=self.QWParent.version_code
- self.version_cata=None
- self.fic_cata=None
- self.OpenCata()
- self.cataitem=None
- self.cree_dico_inverse()
- if self.code=="TELEMAC": self.cree_dico_CasToCata()
- #for k in self.dicoInverse:
- # genea= self.dicoInverse[k]
- # for t in genea :
- # print t[0]
- # print "\n"
+ lab=str(self.VERSION_EFICAS)+" "
+ lab+=tr(" pour ")
+ lab+=str(self.code)
+ lab+=tr(" avec le catalogue ")
+ if ret == QDialog.Accepted:
+ cata = cata_choice_list[widgetChoix.CBChoixCata.currentIndex()]
+ self.fic_cata = cata.cata_file_path
+ self.versionCode = cata.identifier
+ self.appliEficas.format_fichier = cata.file_format
+ self.appliEficas.format_fichier_in = cata.file_format_in
+ lab+=self.versionCode
+ self.appliEficas.setWindowTitle(lab)
+ #qApp.mainWidget().setCaption(lab)
+ widgetChoix.close()
+ else:
+ widgetChoix.close()
+ raise EficasException()
- def OpenCata(self):
- """
- Ouvre le catalogue standard du code courant, cad le catalogue present
- dans le repertoire Cata
- """
+ def choisitCata(self):
+ # ____________________
liste_cata_possibles=[]
self.Commandes_Ordre_Catalogue=[]
all_cata_list = []
- for catalogue in self.appliEficas.CONFIGURATION.catalogues:
- if isinstance(catalogue, CatalogDescription):
- all_cata_list.append(catalogue)
- elif isinstance(catalogue, tuple):
- all_cata_list.append(CatalogDescription.create_from_tuple(catalogue))
- else:
- print(("Catalog description cannot be interpreted: ", catalogue))
+ for catalogue in self.appliEficas.maConfiguration.catalogues:
+ if isinstance(catalogue, CatalogDescription): all_cata_list.append(catalogue)
+ elif isinstance(catalogue, tuple) : all_cata_list.append(CatalogDescription.create_from_tuple(catalogue))
+ else: print(("Catalog description cannot be interpreted: ", catalogue))
# This filter is only useful for codes that have subcodes (like MAP).
# Otherwise, the "code" attribute of the catalog description can (should) be None.
- if self.ssCode is None:
- liste_cata_possibles = all_cata_list
+ if self.ssCode is None: liste_cata_possibles = all_cata_list
else:
for catalogue in all_cata_list:
- if catalogue.code == self.code and catalogue.file_format == self.ssCode:
- liste_cata_possibles.append(catalogue)
+ if catalogue.code == self.code and catalogue.file_format == self.ssCode: liste_cata_possibles.append(catalogue)
- if len(liste_cata_possibles)==0:
+ if len(liste_cata_possibles)==0:
QMessageBox.critical(self.QWParent, tr("Import du catalogue"),
tr("Pas de catalogue defini pour le code ") + self.code)
self.appliEficas.close()
- if self.appliEficas.salome == 0 :
- sys.exit(1)
+ if self.appliEficas.salome == 0 : sys.exit(1)
return
- if self.version_code is not None:
+ if self.versionCode is not None:
# La version a ete fixee
for cata in liste_cata_possibles:
- if self.version_code == cata.identifier:
+ if self.versionCode == cata.identifier:
self.fic_cata = cata.cata_file_path
self.appliEficas.format_fichier = cata.file_format
self.appliEficas.format_fichier_in = cata.file_format_in
cata_choice_list = []
for cata in liste_cata_possibles:
if cata.selectable:
- if cata.default:
- cata_choice_list.insert(0, cata)
- else :
- cata_choice_list.append(cata)
+ if cata.default : cata_choice_list.insert(0, cata)
+ else : cata_choice_list.append(cata)
+
if len(cata_choice_list) == 0:
QMessageBox.critical(self.QWParent, tr("Import du catalogue"),
tr("Aucun catalogue trouve"))
self.appliEficas.close()
- if self.appliEficas.salome == 0 :
- sys.exit(1)
+ if self.appliEficas.salome == 0 : sys.exit(1)
+
elif len(cata_choice_list) == 1:
self.fic_cata = cata_choice_list[0].cata_file_path
- self.version_code = cata_choice_list[0].identifier
+ self.versionCode = cata_choice_list[0].identifier
self.appliEficas.format_fichier = cata_choice_list[0].file_format
self.appliEficas.format_fichier_in = cata_choice_list[0].file_format_in
+
else:
# plusieurs catalogues sont disponibles : il faut demander a l'utilisateur
# lequel il veut utiliser ...
- self.ask_choix_catalogue(cata_choice_list)
+ self.askChoixCatalogue(cata_choice_list)
+ self.demandeCatalogue=True
if self.fic_cata == None :
if self.appliEficas.salome == 0 :
- print(("Pas de catalogue pour code %s, version %s" %(self.code,self.version_code)))
+ print(("Pas de catalogue pour code %s, version %s" %(self.code,self.versionCode)))
sys.exit(1)
else :
self.appliEficas.close()
return
- if self.code == "ASTER" : self.determineMater()
+#------------------------------------
+class ReaderCata (ReaderCataCommun):
+#------------------------------------
+
+ def __init__(self,QWParent, appliEficas):
+ # ______________________________________
+
+ self.QWParent=QWParent
+ self.appliEficas=self.QWParent.appliEficas
+ self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
+ self.demandeCatalogue=False
+ self.code=self.appliEficas.code
+ self.ssCode=self.appliEficas.ssCode
+ self.appliEficas.format_fichier='python'
+ self.versionCode=self.appliEficas.versionCode
+ self.fic_cata=None
+ self.openCata()
+ self.traiteIcones()
+ self.cataitem=None
+ self.creeDicoInverse()
+ if self.code=="TELEMAC": self.creeDicoCasToCata()
+
+
+
+ def openCata(self):
+ """
+ Ouvre le catalogue standard du code courant, cad le catalogue present
+ dans le repertoire Cata
+ """
# import du catalogue
- self.cata = self.import_cata(self.fic_cata)
- if not self.cata :
+ self.choisitCata()
+
+ if self.appliEficas.maConfiguration.withXSD :
+ try :
+ #import raw.Telemac2d as modeleMetier
+ #import raw.cata_genere_fact as modeleMetier
+ import raw.cata_map_genere as modeleMetier
+ #import raw.cata_bloc as modeleMetier
+ print ('import Test ad modeleMetier')
+ except :
+ modeleMetier = None
+ else :
+ modeleMetier = None
+
+ self.cata = self.importCata(self.fic_cata)
+ self.cata.modeleMetier = modeleMetier
+ if not self.cata :
QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fic_cata)
self.appliEficas.close()
if self.appliEficas.salome == 0 :
#
# analyse du catalogue (ordre des mots-cles)
#
- # Retrouve_Ordre_Cata_Standard fait une analyse textuelle du catalogue
- # remplace par Retrouve_Ordre_Cata_Standard_autre qui utilise une numerotation
+ # retrouveOrdreCataStandard fait une analyse textuelle du catalogue
+ # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation
# des mots cles a la creation
- self.Retrouve_Ordre_Cata_Standard_autre()
- if self.mode_nouv_commande== "initial" : self.Retrouve_Ordre_Cata_Standard()
+ #print (self.cata)
+ #print (dir(self.cata))
+ self.retrouveOrdreCataStandardAutre()
+ if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard()
if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes
else : self.Ordre_Des_Commandes=None
-
- if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') :
+
+ if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') :
self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre
else : self.Classement_Commandes_Ds_Arbre=()
+ if hasattr(self.cata,'enum'):
+ try :
+ _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0)
+ self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn
+ self.TelemacdicoEn = _temp.TelemacdicoEn
+ except : pass
+
#print self.cata.Ordre_Des_Commandes
#
#
# traitement des clefs documentaires
#
- if self.code == "ASTER" : self.traite_clefs_documentaires()
- self.cata=(self.cata,)
self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fic_cata)
- if self.appliEficas.top:
- self.appliEficas.setWindowTitle(self.titre)
+ if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre)
self.appliEficas.titre=self.titre
self.QWParent.titre=self.titre
- def determineMater(self) :
- # Determinination du repertoire materiau
- v_codeSansPoint=self.version_code
- if v_codeSansPoint == None : return
- v_codeSansPoint=re.sub("\.","",v_codeSansPoint)
- chaine="rep_mat_"+v_codeSansPoint
- if hasattr(self.appliEficas.CONFIGURATION,chaine):
- a=getattr(self.appliEficas.CONFIGURATION,chaine)
- else :
- try :
- a=self.appliEficas.CONFIGURATION.dRepMat[self.version_code]
- except :
- if self.code == "ASTER" :
- print ("Probleme avec le repertoire materiau")
- a='.'
- self.appliEficas.CONFIGURATION.rep_mat=a
-
- def import_cata(self,cata):
- """
+
+ def importCata(self,cata):
+ """
Realise l'import du catalogue dont le chemin d'acces est donne par cata
"""
nom_cata = os.path.splitext(os.path.basename(cata))[0]
sys.path[:0] = [rep_cata]
self.appliEficas.listeAEnlever.append(rep_cata)
-
+
if nom_cata in list(sys.modules.keys()) :
del sys.modules[nom_cata]
for k in sys.modules:
del sys.modules[k]
mesScriptsNomFichier='mesScripts_'+self.code.upper()
- if self.code == "ASTER" :
- self.appliEficas.rep_scripts=os.path.join(rep_cata,nom_cata)
- sys.path[:0] = [self.appliEficas.rep_scripts]
- try :
- self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
- except:
- pass
- sys.path=sys.path[1:]
- else :
- try :
- self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
- except:
- pass
+ try :
+ self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
+ except:
+ pass
+ #if 1 :
try :
o=__import__(nom_cata)
return o
- def Retrouve_Ordre_Cata_Standard_autre(self):
- """
+ def retrouveOrdreCataStandardAutre(self):
+ """
Construit une structure de donnees dans le catalogue qui permet
a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue.
Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui
contient le nom des mots cles dans le bon ordre
- """
- self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata)
+ """
+ self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata)
+ #self.appliEficas.liste_simp_reel = ()
+ #self.cata_ordonne_dico = {}
- def Retrouve_Ordre_Cata_Standard(self):
- """
+ def retrouveOrdreCataStandard(self):
+ """
Retrouve l'ordre des mots-cles dans le catalogue, cad :
Attention s appuie sur les commentaires
"""
nom_cata = os.path.splitext(os.path.basename(self.fic_cata))[0]
rep_cata = os.path.dirname(self.fic_cata)
- self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyse_catalogue(self.fic_cata)
+ self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fic_cata)
#print self.Commandes_Ordre_Catalogue
- def ask_choix_catalogue(self, cata_choice_list):
- """
- Ouvre une fenetre de selection du catalogue dans le cas où plusieurs
- ont ete definis dans Accas/editeur.ini
- """
- code = getattr(self.appliEficas.CONFIGURATION, "code", None)
- if code != None :
- title=tr("Choix d une version du code ")+str(code)
- else :
- title=tr("Choix d une version ")
-
- widgetChoix = MonChoixCata(self.appliEficas, [cata.user_name for cata in cata_choice_list], title)
- ret=widgetChoix.exec_()
-
- lab=str(self.VERSION_EFICAS)+" "
- lab+=tr(" pour ")
- lab+=str(self.code)
- lab+=tr(" avec le catalogue ")
- if ret == QDialog.Accepted:
- cata = cata_choice_list[widgetChoix.CBChoixCata.currentIndex()]
- self.version_cata = cata.identifier
- self.fic_cata = cata.cata_file_path
- self.version_code = self.version_cata
- self.appliEficas.format_fichier = cata.file_format
- self.appliEficas.format_fichier_in = cata.file_format_in
- lab+=self.version_cata
- self.appliEficas.setWindowTitle(lab)
- #qApp.mainWidget().setCaption(lab)
- else:
- raise EficasException()
-
-
- def traite_clefs_documentaires(self):
+ def traiteIcones(self):
+ if self.appliEficas.maConfiguration.ficIcones==None : return
try:
- fic_doc='rep_doc_'+str(self.version_code)
- self.fic_doc=getattr(self.appliEficas.CONFIGURATION,fic_doc )
- f=open(self.fic_doc)
+ ficIcones=self.appliEficas.maConfiguration.ficIcones
+ fichierIcones = __import__(ficIcones, globals(), locals(), [], -1)
+ self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones
+ self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages
except:
- print ("Pas de fichier associe contenant des clefs documentaires")
- return
-
- dict_clef_docu={}
- for l in f.readlines():
- clef=l.split(':')[0]
- deb=l.find(':')+1
- docu=l[deb:-1]
- dict_clef_docu[clef]=docu
- for oper in self.cata.JdC.commandes:
- if oper.nom in dict_clef_docu :
- oper.docu=dict_clef_docu[oper.nom]
-
- def cree_dico_inverse(self):
+ print ("Pas de fichier associe contenant des liens sur les icones ")
+ self.appliEficas.maConfiguration.dicoIcones={}
+
+
+
+ def creeDicoInverse(self):
self.dicoInverse={}
- self.dicoMC={}
- listeEtapes=self.cata[0].JdC.commandes
- for e in self.cata[0].JdC.commandes:
- self.traite_entite(e)
-
- #self.dicoFrancaisAnglais={}
- #self.dicoAnglaisFrancais={}
- #for k in self.dicoInverse:
- # listefr=[]
- # for nom, obj in self.dicoInverse[k] :
- # listefr.append((tr(nom),obj))
- # self.dicoFrancaisAnglais[tr(nom)]=nom
- # self.dicoAnglaisFrancais[nom]=tr(nom)
- # self.dicoInverseFrancais[tr(k)]=listefr
- # #print tr(k),listefr
-
-
- def cree_dico_CasToCata(self):
+ self.dicoMC={}
+ listeEtapes=self.cata.JdC.commandes
+ for e in self.cata.JdC.commandes:
+ self.traiteEntite(e)
+
+
+ def creeDicoCasToCata(self):
+ if hasattr(self.cata,'dicoCasEn'):
+ _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0)
if self.appliEficas.langue=="ang" :
- from dicoCasEnToCata import dicoCasEnToCata as dicoCasToCata
+ self.dicoCasToCata=_temp.dicoCasEnToCata
else :
- from dicoCasFrToCata import dicoCasFrToCata as dicoCasToCata
- self.dicoCasToCata=dicoCasToCata
-
-
-
-
- def traite_entite(self,e):
+ self.dicoCasToCata=_temp.dicoCasFrToCata
+
+
+
+ def traiteEntite(self,e):
boolIn=0
for (nomFils, fils) in list(e.entites.items()) :
self.dicoMC[nomFils]=fils
- self.traite_entite(fils)
+ self.traiteEntite(fils)
boolIn=1
if boolIn==0 :
liste=[]
self.dicoInverse[e.nom]=liste
self.dicoInverse[tr(e.nom)]=liste
- def cree_rubrique(self,e,dico, niveau):
+ def creeRubrique(self,e,dico, niveau):
from Accas import A_BLOC
decale=niveau*" "
#if niveau != 0 :
- # if isinstance(e,A_BLOC.BLOC): print decale, e.condition
- # else : print decale, e. nom
+ # if isinstance(e,A_BLOC.BLOC): print decale, e.condition
+ # else : print decale, e. nom
for (nom, fils) in list(e.entites.items()) :
- if list(fils.entites.items()) != [] : self.cree_rubrique(fils,dico,niveau+1)
+ if list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1)
#else : print (niveau+1)*" ", nom
-
-
+
+ def dumpToXsdEficas(self):
+ # Pas sur qu on ait jamais besoin de cela
+ pass
+ #from Efi2Xsd import readerEfficas
+ #newSchema= xml = open('Cata_MED_FAM.xml').read()
+ #SchemaMed = efficas.CreateFromDocument(xml)
+ #SchemaMed.alimenteCata(self.cata)
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module sert a lire un catalogue et a construire
+ un objet CataItem pour Eficas.
+ Il s'appuie sur la classe READERCATA
+"""
+# Modules Python
+import sys, os
+import autre_analyse_cata
+
+
+# Modules Eficas
+
+from monChoixCata import MonChoixCata
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
+import uiinfo
+from Efi2Xsd import readerEfiXsd
+# ATtention pas teste depuis le chgt de nom
+
+from readercata import ReaderCataCommun
+
+class ReaderCata (ReaderCataCommun):
+
+ def __init__(self,QWParent, appliEficas):
+ self.QWParent=QWParent
+ self.appliEficas=appliEficas
+ self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
+ self.code=self.appliEficas.code
+ self.ssCode=self.appliEficas.ssCode
+ self.appliEficas.format_fichier='python'
+ self.appliEficas.format_fichier_in ='xml'
+ self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande
+ self.versionCode=self.appliEficas.versionCode
+ self.version_cata=None
+ self.fic_cata=None
+ self.OpenCata()
+ self.cataitem=None
+ self.titre='Eficas XML'
+ self.Ordre_Des_Commandes=None
+ self.Classement_Commandes_Ds_Arbre=()
+ self.demandeCatalogue=False
+
+ #self.traiteIcones()
+ #self.creeDicoInverse()
+
+
+ def OpenCata(self):
+
+ #self.fic_cata = 'Cata_MED_FAM.xml'
+ #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read()
+ #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read()
+ self.choisitCata()
+ xml=open(self.fic_cata).read()
+ SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml)
+ SchemaMed.exploreCata()
+ self.cata=SchemaMed
+ uiinfo.traite_UIinfo(self.cata)
+ self.Commandes_Ordre_Catalogue=[]
+ self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata)
+ self.liste_groupes=None
+
+ def dumpToXml(self):
+ # pour compatibilite
+ pass
from Extensions.i18n import tr
import types
-
-
#---------------------------#
class PopUpMenuRacine(object) :
#---------------------------#
-
def createPopUpMenu(self):
#print "createPopUpMenu"
self.ParamApres = QAction(tr('Parametre'),self.tree)
#---------------------------#
def createPopUpMenu(self):
- #print "createPopUpMenu"
+ #print ("createPopUpMenu")
#self.appliEficas.salome=True
self.createActions()
self.menu = QMenu(self.tree)
if hasattr(self.appliEficas, 'mesScripts'):
if self.editor.code in self.editor.appliEficas.mesScripts :
self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
- if self.tree.currentItem().item.get_nom() in self.dict_commandes_mesScripts :
+ if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts :
self.ajoutScript()
def ajoutScript(self):
-
# cochon mais je n arrive pas a faire mieux avec le mecanisme de plugin
+ # a revoir avec un menu et un connect sur le triggered sur le menu ?
if hasattr(self.appliEficas, 'mesScripts'):
if self.editor.code in self.editor.appliEficas.mesScripts :
self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
from Extensions import jdc_include
if isinstance(self.item.jdc,jdc_include.JDC_INCLUDE) : return
- listeCommandes=self.dict_commandes_mesScripts[self.tree.currentItem().item.get_nom()]
+ listeCommandes=self.dict_commandes_mesScripts[self.tree.currentItem().item.getNom()]
if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,)
numero=0
for commande in listeCommandes :
tip=commande[5]
self.action=QAction(label,self.tree)
self.action.setStatusTip(tip)
- if numero==4: self.action.triggered.connect(self.AppelleFonction4)
- if numero==3: self.action.triggered.connect(self.AppelleFonction3); numero=4
- if numero==2: self.action.triggered.connect(self.AppelleFonction2); numero=3
- if numero==1: self.action.triggered.connect(self.AppelleFonction1); numero=2
- if numero==0: self.action.triggered.connect(self.AppelleFonction0); numero=1
+ if numero==4: self.action.triggered.connect(self.appelleFonction4)
+ if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4
+ if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3
+ if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2
+ if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1
self.menu.addAction(self.action)
- def AppelleFonction0(self):
- self.AppelleFonction(0)
-
- def AppelleFonction1(self):
- self.AppelleFonction(1)
+ def appelleFonction0(self):
+ self.appelleFonction(0)
- def AppelleFonction2(self):
- self.AppelleFonction(2)
+ def appelleFonction1(self):
+ self.appelleFonction(1)
- def AppelleFonction3(self):
- self.AppelleFonction(3)
+ def appelleFonction2(self):
+ self.appelleFonction(2)
- def AppelleFonction4(self):
- self.AppelleFonction(4)
+ def appelleFonction3(self):
+ self.appelleFonction(3)
+ def appelleFonction4(self):
+ self.appelleFonction(4)
- def AppelleFonction(self,numero,nodeTraite=None):
+ def appelleFonction(self,numero,nodeTraite=None):
if nodeTraite==None : nodeTraite=self.tree.currentItem()
- nomCmd=nodeTraite.item.get_nom()
+ nomCmd=nodeTraite.item.getNom()
if hasattr(self.appliEficas, 'mesScripts'):
if self.editor.code in self.editor.appliEficas.mesScripts :
self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
conditionValid=commande[4]
- if (nodeTraite.item.isvalid() == 0 and conditionValid == True):
+ if (nodeTraite.item.isValid() == 0 and conditionValid == True):
QMessageBox.warning( None,
tr("item invalide"),
tr("l item doit etre valide"),)
- def createActionsQT4(self):
- self.CommApres = QAction(tr('apres'),self.tree)
- self.tree.connect(self.CommApres,SIGNAL("triggered()"),self.addCommApres)
- self.CommApres.setStatusTip(tr("Insere un commentaire apres la commande "))
- self.CommAvant = QAction(tr('avant'),self.tree)
- self.tree.connect(self.CommAvant,SIGNAL("triggered()"),self.addCommAvant)
- self.CommAvant.setStatusTip(tr("Insere un commentaire avant la commande "))
-
- self.ParamApres = QAction(tr('apres'),self.tree)
- self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres)
- self.ParamApres.setStatusTip(tr("Insere un parametre apres la commande "))
- self.ParamAvant = QAction(tr('avant'),self.tree)
- self.tree.connect(self.ParamAvant,SIGNAL("triggered()"),self.addParametersAvant)
- self.ParamAvant.setStatusTip(tr("Insere un parametre avant la commande "))
-
- self.Supprime = QAction(tr('Supprimer'),self.tree)
- self.tree.connect(self.Supprime,SIGNAL("triggered()"),self.supprimeNoeud)
- self.Supprime.setStatusTip(tr("supprime le mot clef "))
- self.Documentation = QAction(tr('Documentation'),self.tree)
- self.tree.connect(self.Documentation,SIGNAL("triggered()"),self.viewDoc)
def createActions(self):
self.CommApres = QAction(tr('apres'),self.tree)
def viewDoc(self):
self.node=self.tree.currentItem()
- cle_doc = self.node.item.get_docu()
+ cle_doc = self.node.item.getDocu()
if cle_doc == None :
QMessageBox.information( self.editor,tr( "Documentation Vide"), \
tr("Aucune documentation n'est associee a ce noeud"))
return
- commande = self.editor.appliEficas.CONFIGURATION.exec_acrobat
+ commande = self.editor.appliEficas.maConfiguration.exec_acrobat
try :
f=open(commande,"rb")
except :
if cle_doc.startswith('http:'):
fichier = cle_doc
else :
- fichier = os.path.abspath(os.path.join(self.editor.CONFIGURATION.path_doc,
+ fichier = os.path.abspath(os.path.join(self.editor.maConfiguration.path_doc,
cle_doc))
try :
f=open(fichier,"rb")
item= self.tree.currentItem()
item.addComment(False)
+ def deplieCeNiveau(self):
+ item= self.tree.currentItem()
+ item.deplieCeNiveau()
+
#--------------------------------------------#
class PopUpMenuNodePartiel (PopUpMenuNodeMinimal):
#---------------------------------------------#
def createPopUpMenu(self):
PopUpMenuNodePartiel.createPopUpMenu(self)
self.Commente = QAction(tr('ce noeud'),self.tree)
- self.Commente.triggered.connect(self.Commenter)
+ self.Commente.triggered.connect(self.commenter)
self.Commente.setStatusTip(tr("commente le noeud "))
self.commentMenu.addAction(self.Commente)
self.menu.removeAction(self.Supprime)
self.menu.addAction(self.Supprime)
- def Commenter(self):
+ def commenter(self):
item= self.tree.currentItem()
item.commentIt()
from PyQt5.QtCore import QFileInfo
DictExtensions= {"MAP" : ".map"}
-class MyTabview(object):
+class MyViewManager(object):
def __init__(self,appliEficas):
self.appliEficas=appliEficas
index=self.myQtab.currentIndex()
if index in self.dict_editors:
editor=self.dict_editors[index]
- self.appliEficas.CONFIGURATION=editor.CONFIGURATION
- self.appliEficas.code=editor.CONFIGURATION.code
+ self.appliEficas.maConfiguration=editor.maConfiguration
+ self.appliEficas.code=editor.maConfiguration.code
self.appliEficas.setWindowTitle(editor.titre)
self.appliEficas.construitMenu()
fichier = QFileDialog.getOpenFileName(self.appliEficas,
tr('Ouvrir Fichier'),
- self.appliEficas.CONFIGURATION.savedir,
+ self.appliEficas.maConfiguration.savedir,
extensions)
fichier=fichier[0]
fichier = os.path.abspath(six.text_type(fichier))
ulfile = os.path.abspath(six.text_type(fichier))
- self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+ self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
self.appliEficas.addToRecentList(fichier)
maPage=self.getEditor( fichier,units=units)
if maPage: result = maPage
editor=self.dict_editors[index]
editor.handleSupprimer()
+ def handleAjoutEtape(self,nomEtape):
+ index=self.myQtab.currentIndex()
+ if index < 0 : return
+ editor=self.dict_editors[index]
+ editor.handleAjoutEtape(nomEtape)
+
+
def newEditor(self,include=0):
if self.appliEficas.demande==True :
self.appliEficas.definitCode(None,None)
if index < 0 : return
self.dict_editors[index].viewJdcRegles()
- def handlegestionParam(self):
+ def handleGestionParam(self):
index=self.myQtab.currentIndex()
if index < 0 :
QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
self.myQtab.setTabText(index,fileName)
return ok
- def saveLegerCurrentEditor(self):
+ def saveCompleteCurrentEditor(self):
index=self.myQtab.currentIndex()
if index < 0 : return
editor=self.dict_editors[index]
- ok, newName = editor.saveFileLeger()
+ ok, newName = editor.saveCompleteFile()
return ok
def sauveLigneCurrentEditor(self):
indexEditor=0
for indexEditor in self.dict_editors :
editor=self.dict_editors[indexEditor]
- if self.samepath(fichier, editor.getFileName()):
+ if self.samePath(fichier, editor.getFileName()):
msgBox = QMessageBox()
msgBox.setWindowTitle(tr("Fichier"))
msgBox.setText(tr("Le fichier <b>%s</b> est deja ouvert", str(fichier)))
double=editor
else :
from .editor import JDCEditor
- editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,vm = self,include=include)
-
+ editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,include=include)
if double != None :
self.doubles[editor]=double
if editor.jdc: # le fichier est bien un jdc
#PNPNPNPN --> a affiner
if fichier is None:
self.untitledCount += 1
- self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
+ self.myQtab.addTab(win, tr("Fichier non encore nomme " + self.appliEficas.readercata.versionCode, self.untitledCount))
#self.myQtab.addTab(win, str(self.appliEficas.code))
else:
liste=fichier.split('/')
except :
return ""
- def samepath(self,f1, f2):
+ def samePath(self,f1, f2):
"""
compare two paths.
"""
if index < 0 : return
editor=self.dict_editors[index]
editor.handleAjoutGroup(listeGroup)
+
+ def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments):
+ # Peut-etre a blinder un peu plus sur le nb d argument
+ index=self.myQtab.currentIndex()
+ if index < 0 : return
+ editor=self.dict_editors[index]
+ if editor.getEtapeCourante() == None :
+ QMessageBox.information( self.appliEficas,
+ tr("Selectionner une etape"),
+ tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres"))
+ return
+
+ listeParam = []
+ for p in lesArguments:
+ print (p)
+ if hasattr(editor,p): listeParam.append(getattr(editor,p))
+ if p=="editor" : listeParam.append(editor)
+ if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante())
+ apply(laFonctionUtilisateur,listeParam)
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import object
+except : pass
+
+import os
+from Extensions.i18n import tr
+import six
+from PyQt5.QtWidgets import QFileDialog, QMessageBox
+from PyQt5.QtCore import QFileInfo
+
+# --------------------------------
+class JdcSsIhmHandler(object):
+# --------------------------------
+# retourne a l utilisateur
+
+ def __init__(self,viewManager):
+# --------------------------------------
+ self.viewManagerSsIhm=viewManager
+
+ def viewJdcPy(self) :
+# ---------------------
+ self.viewManagerSsIhm.handleViewJdcPy(self)
+
+ def viewJdcSource(self) :
+# ---------------------
+ self.viewManagerSsIhm.handleViewJdcSource(self)
+
+ def getFileName(self):
+# ---------------------
+ self.viewManagerSsIhm.getFileName(self)
+
+ def viewJdcRapport(self) :
+# ---------------------
+ self.viewManagerSsIhm.handleViewJdcRapport(self)
+
+ def getJdcRapport(self) :
+# ---------------------
+ return self.viewManagerSsIhm.handleGetJdcRapport(self)
+
+ def getDicoPython(self) :
+# -------------------------
+ return self.viewManagerSsIhm.generDico(self)
+
+ def isJdcValid(self) :
+# -------------------------
+ return self.viewManagerSsIhm.isJdcValid(self)
+
+ def fileSaveAs(self,fileName):
+# -------------------------
+ return self.viewManagerSsIhm.fileSaveAs(self,fileName)
+
+ def fileLegerSaveAs(self,fileName):
+# -----------------------------------
+ return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName)
+
+
+
+#--------------------------------
+class MyViewManagerSsIhm(object):
+#--------------------------------
+# Symetrique de ViewManager mais pas d heritage entre les 2
+# dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille
+# ici en revanche.... c est moins sur
+
+# --------------------------------
+ def __init__(self,appliEficas):
+# --------------------------------
+ self.appliEficas=appliEficas
+ self.tabWidgets = []
+ self.mesIndexes = {}
+ self.dictEditors={}
+ self.untitledCount = 0
+ self.doubles = {}
+
+# ------------------------------------------------------
+ def handleOpen(self,fichier=None, units=None):
+# ------------------------------------------------------
+ result = None
+ if fichier is None:
+ print ('nom de fichier obligatoire')
+ return None
+
+ for handler in self.dictEditors :
+ editor=self.dictEditors[handler]
+ if self.samePath(fichier, editor.getFileName()):
+ print ('fichier deja ouvert . pas de nouvel editor')
+ return handler
+
+ monNewHandler = self.getNewEditor(fichier,units)
+ return monNewHandler
+
+# ----------------------------------------------------------------------
+ def getNewEditor(self,fichier = None,jdc = None, units = None,include=0):
+# ----------------------------------------------------------------------
+
+ from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
+ editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include)
+
+ if editor.jdc: # le fichier est bien un jdc
+ monHandler = JdcSsIhmHandler(self)
+ self.dictEditors[monHandler]=editor
+ return monHandler
+ else:
+ print ('impossible de construire le jdc')
+ return None
+
+# -----------------------------
+ def samePath(self,f1, f2):
+# ------------------------------
+ """
+ compare two paths.
+ """
+ if f1 is None or f2 is None: return 0
+ if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
+ return 0
+
+# ---------------------------------
+ def handleViewJdcPy(self,handler):
+# ---------------------------------
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ self.dictEditors[handler].viewJdcPy()
+
+# ---------------------------------
+ def getFileName(self,handler):
+# ---------------------------------
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ return self.dictEditors[handler].getFileName()
+
+
+# ---------------------------------------------
+ def handleViewJdcSource(self,handler):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ self.dictEditors[handler].viewJdcSource()
+
+
+# ---------------------------------------------
+ def handleViewJdcRapport(self,handler):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ self.dictEditors[handler].viewJdcRapport()
+
+# ---------------------------------------------
+ def handleGetJdcRapport(self,handler):
+# ---------------------------------------------
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ return self.dictEditors[handler].getJdcRapport()
+
+# ---------------------------------------------
+ def handleViewJdcRapport(self,handler):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ self.dictEditors[handler].viewJdcRapport()
+
+
+# ---------------------------------------------
+ def generDico(self,handler):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ return self.dictEditors[handler].generDico()
+
+
+# ---------------------------------------------
+ def isJdcValid(self,handler):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ return self.dictEditors[handler].jdc.isValid()
+
+
+# ---------------------------------------------
+ def fileSaveAs(self,handler,fileName):
+# ---------------------------------------------
+ print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ return self.dictEditors[handler].saveFile(fileName)
+
+# ---------------------------------------------
+ def fileLegerSaveAs(self, handler,fileName):
+# ---------------------------------------------
+# print (handler)
+ if not (handler in self.dictEditors) :
+ print ('editor non trouve')
+ return
+ self.dictEditors[handler].saveFileLegerAs(fileName)
+
+
+# def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter')):
+# if doitSauverRecent : self.appliEficas.sauveRecents()
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# res=self.checkDirty(self.dict_editors[index],texte)
+# if res == 2 : return 2 # l utilisateur a annule
+# index=self.myQtab.currentIndex()
+# idx=index
+# while idx < len(self.dict_editors) -1 :
+# self.dict_editors[idx]=self.dict_editors[idx+1]
+# idx = idx + 1
+# del self.dict_editors[len (self.dict_editors) -1]
+# try :
+# del self.doubles[self.dict_editors[index]]
+# except :
+# pass
+# self.myQtab.removeTab(index)
+# return res
+#
+
+#
+# def handleCloseAll(self,texte=tr('Quitter')):
+# res=0
+# self.appliEficas.sauveRecents()
+# while len(self.dict_editors) > 0 :
+# self.myQtab.setCurrentIndex(0)
+# res=self.handleClose(0,texte)
+# if res==2 : return res # l utilsateur a annule
+# return res
+#
+#
+#
+# def newEditor(self,include=0):
+# if self.appliEficas.demande==True :
+# self.appliEficas.definitCode(None,None)
+# if self.appliEficas.code == None:return
+# maPage=self.getEditor(include=include)
+#
+
+#
+# def handleViewJdcRegles(self):
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# self.dict_editors[index].viewJdcRegles()
+#
+# def handleGestionParam(self):
+# index=self.myQtab.currentIndex()
+# if index < 0 :
+# QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
+# return
+# self.dict_editors[index].gestionParam()
+#
+#
+#
+# def saveCurrentEditor(self):
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# editor=self.dict_editors[index]
+# if editor in self.doubles :
+# QMessageBox.warning(
+# None,
+# tr("Fichier Duplique"),
+# tr("Le fichier ne sera pas sauvegarde."),)
+# return
+# ok, newName = editor.saveFile()
+# if ok :
+# fileName=os.path.basename(six.text_type(newName))
+# self.myQtab.setTabText(index,fileName)
+# return ok
+#
+# def saveLegerCurrentEditor(self):
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# editor=self.dict_editors[index]
+# ok, newName = editor.saveFileLeger()
+# return ok
+#
+# def sauveLigneCurrentEditor(self):
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# editor=self.dict_editors[index]
+# if editor in self.doubles :
+# QMessageBox.warning(
+# None,
+# tr("Fichier Duplique"),
+# tr("Le fichier ne sera pas sauvegarde."),)
+# return
+# ok, newName = editor.sauveLigneFile()
+# if ok :
+# fileName=os.path.basename(six.text_type(newName))
+# self.myQtab.setTabText(index,fileName)
+# return ok
+#
+#
+# def saveAsCurrentEditor(self):
+# index=self.myQtab.currentIndex()
+# editor=self.dict_editors[index]
+# oldName=editor.fichier
+# ok,newName = editor.saveFileAs()
+# if ok :
+# fileName=os.path.basename(six.text_type(newName))
+# self.myQtab.setTabText(index,fileName)
+# if editor in self.doubles :
+# if oldName != newName :
+# del self.doubles[editor]
+# return ok
+#
+# def displayJDC(self,jdc,fn=None):
+# """
+# Public slot to display a file in an editor.
+# @param fn name of file to be opened
+# # insert filename into list of recently opened files
+# """
+# titre=None
+# if fn != None : titre=fn.split("/")[-1]
+# editor = self.getEditor(fichier= fn, jdc = jdc ,include=1)
+# self.appliEficas.addToRecentList(editor.getFileName())
+#
+
+##PNPNPNPN --> a affiner
+# if fichier is None:
+# self.untitledCount += 1
+# self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
+# #self.myQtab.addTab(win, str(self.appliEficas.code))
+# else:
+# liste=fichier.split('/')
+# txt = liste[-1]
+# if not QFileInfo(fichier).isWritable():
+# txt = '%s (ro)' % txt
+# self.myQtab.addTab(win,txt )
+# self.myQtab.setCurrentWidget(win)
+# self.currentEditor=win
+# win.setFocus()
+#
+# def getOpenStartDir(self) :
+# #PN --> Les Preferences
+# try :
+# userDir=os.path.expanduser("~/Eficas_install/")
+# return userDir
+# except :
+# return ""
+#
+#
+# def checkDirty(self, editor,texte):
+# """
+# Private method to check dirty status and open a message window.
+#
+# @param editor editor window to check
+# @return flag indicating successful reset of the dirty flag (boolean)
+# """
+# res=1
+# if (editor.modified) and (editor in self.doubles) :
+# msgBox = QMessageBox(None)
+# msgBox.setWindowTitle(tr("Fichier Duplique"))
+# msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+# msgBox.addButton(texte,0)
+# msgBox.addButton(tr("&Annuler"),1)
+# res=msgBox.exec_()
+# if res == 0 : return 1
+# return 2
+# if editor.modified:
+# fn = editor.getFileName()
+# if fn is None: fn = tr('Noname')
+# msgBox = QMessageBox(None)
+# msgBox.setWindowTitle(tr("Fichier Modifie"))
+# msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+# msgBox.addButton(tr("&Sauvegarder"),1)
+# msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+# msgBox.addButton(tr("&Annuler"),2)
+# res=msgBox.exec_()
+# if res == 2 : return res
+# if res == 0:
+# (ok, newName) = editor.saveFile()
+# if ok:
+# fileName=os.path.basename(six.text_type(newName))
+# index=self.myQtab.currentIndex()
+# self.myQtab.setTabText(index,fileName)
+# return ok
+# return res
+#
+# def handleAjoutGroup(self,listeGroup):
+# index=self.myQtab.currentIndex()
+# if index < 0 : return
+# editor=self.dict_editors[index]
+# editor.handleAjoutGroup(listeGroup)
if etape:
self.parent = etape.parent
else:
- self.parent = CONTEXT.get_current_step()
+ self.parent = CONTEXT.getCurrentStep()
if self.parent:
- self.jdc = self.parent.get_jdc_root()
+ self.jdc = self.parent.getJdcRoot()
else:
self.jdc = None
if not self.parent:
self.id = None
elif reg == 'oui':
- self.id = self.parent.reg_sd(self)
+ self.id = self.parent.regSD(self)
else:
self.id = self.parent.o_register(self)
# permet de savoir si le concept a été calculé (1) ou non (0)
# 0 : assd normal, 1 : type CO, 2 : type CO typé
self._as_co = 0
- def _get_sdj(self):
+ def _getSdj(self):
"""Retourne le catalogue de SD associé au concept."""
if self.ptr_sdj is None:
cata_sdj = getattr(self, 'cata_sdj', None)
% self.__class__.__name__
assert self.nom, "The attribute 'nom' has not been filled!"
if self.ptr_class_sdj is None:
- self.ptr_class_sdj = import_object(cata_sdj)
+ self.ptr_class_sdj = importObject(cata_sdj)
self.ptr_sdj = self.ptr_class_sdj(nomj=self.nom)
return self.ptr_sdj
self.ptr_sdj = None
self.ptr_class_sdj = None
- sdj = property(_get_sdj, None, _del_sdj)
+ sdj = property(_getSdj, None, _del_sdj)
def __getitem__(self, key):
text_error = "ASSD.__getitem__ est déprécié car la référence a l'objet ETAPE parent sera supprimée."
warn(text_error, DeprecationWarning, stacklevel=2)
return self.etape[key]
- def set_name(self, nom):
+ def setName(self, nom):
"""Positionne le nom de self (et appelle sd_init)
"""
self.nom = nom
- def is_typco(self):
+ def isTypCO(self):
"""Permet de savoir si l'ASSD est issu d'un type CO.
Retourne:
0 : ce n'est pas un type CO
"""
return self._as_co
- def change_type(self, new_type):
+ def changeType(self, new_type):
"""Type connu a posteriori (type CO)."""
self.__class__ = new_type
assert self._as_co != 0, 'it should only be called on CO object.'
self._as_co = 2
- def get_name(self):
+ def getName(self):
"""
Retourne le nom de self, éventuellement en le demandant au JDC
"""
if not self.nom:
try:
- self.nom = self.parent.get_name(self) or self.id
+ self.nom = self.parent.getName(self) or self.id
except:
self.nom = ""
if self.nom.find('sansnom') != -1 or self.nom == '':
'force' est utilisée pour faire des suppressions complémentaires
(voir les formules dans N_FONCTION).
"""
- self.supprime_sd()
+ self.supprimeSd()
self.etape = None
self.sd = None
self.jdc = None
self.parent = None
- def supprime_sd(self):
+ def supprimeSd(self):
"""Supprime la partie du catalogue de SD."""
- # 'del self.sdj' appellerait la méthode '_get_sdj()'...
+ # 'del self.sdj' appellerait la méthode '_getSdj()'...
self._del_sdj()
"""
if CONTEXT.debug:
print(('| accessible ?', self.nom))
- is_accessible = CONTEXT.get_current_step().sd_accessible()
+ is_accessible = CONTEXT.getCurrentStep().sdAccessible()
if CONTEXT.debug:
print((' `- is_accessible =', repr(is_accessible)))
return is_accessible
ctxt[key] = value
return ctxt
- def par_lot(self):
+ def parLot(self):
"""Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas."""
# XXX eficas
if not hasattr(self, 'jdc') or self.jdc == None:
val = None
else:
- val = self.jdc.par_lot
+ val = self.jdc.parLot
return val == 'OUI'
def rebuild_sd(self):
from . import N_ENTITE
from . import N_MCBLOC
from .N_Exception import AsException
-from .N_types import force_list
+from .N_types import forceList
class BLOC(N_ENTITE.ENTITE):
self.fr = fr
self.ang = ang
self.docu = docu
+ self.fenetreIhm=None
if type(regles) == tuple:
self.regles = regles
else:
self.entites = args
self.affecter_parente()
- def __call__(self, val, nom, parent=None):
+ def __call__(self, val, nom, parent=None, dicoPyxbDeConstruction=None):
"""
Construit un objet MCBLOC a partir de sa definition (self)
de sa valeur (val), de son nom (nom) et de son parent dans l arboresence (parent)
"""
- return self.class_instance(nom=nom, definition=self, val=val, parent=parent)
+ return self.class_instance(nom=nom, definition=self, val=val, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
- def verif_cata(self):
+ def verifCata(self):
"""
Cette méthode vérifie si les attributs de définition sont valides.
Les éventuels messages d'erreur sont écrits dans l'objet compte-rendu (self.cr).
"""
- self.check_fr()
- self.check_docu()
- self.check_regles()
- self.check_statut(into=('f', 'o'))
- self.check_condition()
- self.verif_cata_regles()
-
- def verif_presence(self, dict, globs):
+ self.checkFr()
+ self.checkDocu()
+ self.checkRegles()
+ self.checkStatut(into=('f', 'o'))
+ self.checkCondition()
+ self.verifCataRegles()
+
+ def verifPresence(self, dict, globs):
"""
Cette méthode vérifie si le dictionnaire passé en argument (dict)
est susceptible de contenir un bloc de mots-clés conforme à la
les valeurs des mots-clés
"""
# On recopie le dictionnaire pour protéger l'original
- dico = bloc_utils()
+ dico = blocUtils()
dico.update(dict)
if self.condition != None:
try:
'\n', "Erreur dans la condition : ", self.condition, ''.join(l))
else:
return 0
-
-
-def bloc_utils():
+
+ def longueurDsArbre(self):
+ longueur=0
+ for mc in self.mcListe :
+ longueur = longueur + longueurDsArbre(mc)
+ return longueur
+
+def blocUtils():
"""Définit un ensemble de fonctions utilisables pour écrire les
conditions de BLOC."""
def au_moins_un(mcsimp, valeurs):
"""Valide si la (ou une) valeur de 'mcsimp' est au moins une fois dans
la ou les 'valeurs'. Similaire à la règle AU_MOINS_UN, 'mcsimp' peut
contenir plusieurs valeurs."""
- test = set(force_list(mcsimp))
- valeurs = set(force_list(valeurs))
+ test = set(forceList(mcsimp))
+ valeurs = set(forceList(valeurs))
return not test.isdisjoint(valeurs)
def aucun(mcsimp, valeurs):
try:
self.parent.NommerSdprod(self, nom)
except AsException as e:
- appel = N_utils.callee_where(niveau=2)
+ appel = N_utils.calleeWhere(niveau=2)
raise AsException(
"Concept CO, fichier: ", appel[1], " ligne : ", appel[0], '\n', e)
else:
self.nom = nom
def __convert__(cls, valeur):
- if valeur.is_typco():
+ if valeur.isTypCO():
return valeur
raise ValError("Pas un concept CO")
__convert__ = classmethod(__convert__)
from builtins import object
except : pass
-from .N_types import is_int, is_float, is_sequence
+from .N_types import isInt, isFloat, isSequence
-def has_int_value(real):
+def hasIntValue(real):
"""Est-ce que 'real' a une valeur entière ?
"""
return abs(int(real) - real) < 1.e-12
def convert(self, obj):
"""Filtre liste
"""
- in_as_seq = is_sequence(obj)
+ in_as_seq = isSequence(obj)
if not in_as_seq:
obj = (obj,)
TypeConversion.__init__(self, 'I')
def function(self, o):
- if is_float(o) and has_int_value(o):
+ if isFloat(o) and hasIntValue(o):
o = int(o)
return o
TypeConversion.__init__(self, 'R')
def function(self, o):
- if is_float(o):
+ if isFloat(o):
o = float(o)
return o
self.crfatal = []
self.subcr = []
- def beautifie_messages(self):
+ def beautifieMessages(self):
"""
Beautifie les messages stockés dans crok,crfatal,crexception et crwarn
"""
self.crok_belle = l
l = []
for mess in self.crwarn:
- l.append(encadre_message(mess, '*'))
+ l.append(encadreMessage(mess, '*'))
self.crwarn_belle = l
l = []
for mess in self.crfatal:
- l.append(encadre_message(mess, '!'))
+ l.append(encadreMessage(mess, '!'))
self.crfatal_belle = l
l = []
for mess in self.crexception:
- l.append(encadre_message(mess, '!'))
+ l.append(encadreMessage(mess, '!'))
self.crexception_belle = l
def indent(self, s):
Retourne une chaine de caractères décorée et représentative de self
"""
s = ''
- self.beautifie_messages()
+ self.beautifieMessages()
s = s + ''.join(self.crok_belle)
s = s + ''.join(self.crwarn_belle)
s = s + ''.join(self.crfatal_belle)
(decalage - 1) * self.dec + self.fin + '\n'
return s
- def get_mess_fatal(self):
+ def getMessFatal(self):
"""
Retourne une chaine de caractères contenant les messages de
la liste crfatal (du dernier au premier)
self.crfatal.reverse()
return s
- def get_mess_exception(self):
+ def getMessException(self):
"""
Retourne une chaine de caractères contenant les messages
de la liste crexception (du dernier au premier)
return ligne[:coupure + 1] + '\n' + split(ligne[coupure + 1:], cesure)
-def justify_text(texte='', cesure=50):
+def justifyText(texte='', cesure=50):
if not isinstance (texte,str) : texte = ''.join(texte)
texte = texte.strip()
liste_lignes = texte.split('\n')
return texte_justifie
-def encadre_message(texte, motif):
+def encadreMessage(texte, motif):
"""
Retourne la chaine de caractères texte entourée d'un cadre formés
d'éléments 'motif'
"""
- texte = justify_text(texte, cesure=80)
+ texte = justifyText(texte, cesure=80)
if texte.strip() == "" : return ''
lignes = texte.split( '\n')
longueur = 0
v.pere = self
v.nom = k
- def verif_cata(self):
+ def verifCata(self):
"""
Cette methode sert à valider les attributs de l'objet de définition
"""
- raise NotImplementedError("La méthode verif_cata de la classe %s doit être implémentée"
+ raise NotImplementedError("La méthode verifCata de la classe %s doit être implémentée"
% self.__class__.__name__)
def __call__(self):
"""
Cette methode doit retourner un objet dérivé de la classe OBJECT
"""
+
raise NotImplementedError("La méthode __call__ de la classe %s doit être implémentée"
% self.__class__.__name__)
rapport de validation de la définition portée par cet objet
"""
self.cr = self.CR()
- self.verif_cata()
+ self.verifCata()
for k, v in list(self.entites.items()):
try:
cr = v.report()
print(("père =", self))
return self.cr
- def verif_cata_regles(self):
+ def verifCataRegles(self):
"""
Cette méthode vérifie pour tous les objets dérivés de ENTITE que
les objets REGLES associés ne portent que sur des sous-entités
self.cr.fatal(
_(u"Argument(s) non permis : %r pour la règle : %s"), l, txt)
- def check_definition(self, parent):
+ def checkDefinition(self, parent):
"""Verifie la definition d'un objet composite (commande, fact, bloc)."""
args = self.entites.copy()
mcs = set()
# if val.max != 1 and val.type == 'TXM':
# print "#CMD", parent, nom
elif val.label == 'FACT':
- val.check_definition(parent)
+ val.checkDefinition(parent)
# CALC_SPEC !
# assert self.label != 'FACT', \
#'Commande %s : Mot-clef facteur present sous un mot-clef facteur : interdit !' \
# niveau
for nom, val in list(args.items()):
if val.label == 'BLOC':
- mcbloc = val.check_definition(parent)
+ mcbloc = val.checkDefinition(parent)
# XXX
# print "#BLOC", parent, re.sub('\s+', ' ', val.condition)
assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \
% (parent, tuple(mcs.intersection(mcbloc)))
return mcs
- def check_op(self, valmin=-9999, valmax=9999):
+ def checkOp(self, valmin=-9999, valmax=9999):
"""Vérifie l'attribut op."""
if self.op is not None and \
(type(self.op) is not int or self.op < valmin or self.op > valmax):
self.cr.fatal(_(u"L'attribut 'op' doit être un entier "
u"compris entre %d et %d : %r"), valmin, valmax, self.op)
- def check_proc(self):
+ def checkProc(self):
"""Vérifie l'attribut proc."""
if self.proc is not None and not isinstance(self.proc, N_OPS.OPS):
self.cr.fatal(
_(u"L'attribut op doit être une instance d'OPS : %r"), self.proc)
- def check_regles(self):
+ def checkRegles(self):
"""Vérifie l'attribut regles."""
if type(self.regles) is not tuple:
self.cr.fatal(_(u"L'attribut 'regles' doit être un tuple : %r"),
self.regles)
- def check_fr(self):
+ def checkFr(self):
"""Vérifie l'attribut fr."""
if type(self.fr) not in stringTypes:
self.cr.fatal(
_(u"L'attribut 'fr' doit être une chaine de caractères : %r"),
self.fr)
- def check_docu(self):
+ def checkDocu(self):
"""Vérifie l'attribut docu."""
if type(self.docu) not in stringTypes:
self.cr.fatal(
_(u"L'attribut 'docu' doit être une chaine de caractères : %r"),
self.docu)
- def check_nom(self):
+ def checkNom(self):
"""Vérifie l'attribut proc."""
if type(self.nom) is not str:
self.cr.fatal(
_(u"L'attribut 'nom' doit être une chaine de caractères : %r"),
self.nom)
- def check_reentrant(self):
+ def checkReentrant(self):
"""Vérifie l'attribut reentrant."""
if self.reentrant not in ('o', 'n', 'f'):
self.cr.fatal(
_(u"L'attribut 'reentrant' doit valoir 'o','n' ou 'f' : %r"),
self.reentrant)
- def check_statut(self, into=('o', 'f', 'c', 'd')):
+ def checkStatut(self, into=('o', 'f', 'c', 'd')):
"""Vérifie l'attribut statut."""
if self.statut not in into:
self.cr.fatal(_(u"L'attribut 'statut' doit être parmi %s : %r"),
into, self.statut)
- def check_condition(self):
+ def checkCondition(self):
"""Vérifie l'attribut condition."""
if self.condition != None:
if type(self.condition) is not str:
else:
self.cr.fatal(_(u"La condition ne doit pas valoir None !"))
- def check_min_max(self):
+ def checkMinMax(self):
"""Vérifie les attributs min/max."""
if type(self.min) != int:
if self.min != '**'and self.min != float('-inf'):
_(u"Nombres d'occurrence min et max invalides : %r %r"),
self.min, self.max)
- def check_validators(self):
+ def checkValidators(self):
"""Vérifie les validateurs supplémentaires"""
- if self.validators and not self.validators.verif_cata():
+ if self.validators and not self.validators.verifCata():
self.cr.fatal(_(u"Un des validateurs est incorrect. Raison : %s"),
self.validators.cata_info)
- def check_homo(self):
+ def checkHomo(self):
"""Vérifie l'attribut homo."""
if self.homo != 0 and self.homo != 1:
self.cr.fatal(
_(u"L'attribut 'homo' doit valoir 0 ou 1 : %r"), self.homo)
- def check_into(self):
+ def checkInto(self):
"""Vérifie l'attribut into."""
if self.into != None:
if (type(self.into) not in (list, tuple)) and (type(self.into) != types.FunctionType) :
self.cr.fatal(
_(u"L'attribut 'into' doit être un tuple : %r"), self.into)
- def check_position(self):
+ def checkPosition(self):
"""Vérifie l'attribut position."""
if self.position not in ('local', 'global', 'global_jdc'):
self.cr.fatal(_(u"L'attribut 'position' doit valoir 'local', 'global' "
u"ou 'global_jdc' : %r"), self.position)
+
+ def dumpXSD(self):
+ args = self.entites.copy()
+ mcs = set()
+ for nom, val in list(args.items()):
+ if val.label == 'SIMP':
+ mcs.add(nom)
+ # XXX
+ # if val.max != 1 and val.type == 'TXM':
+ # print "#CMD", parent, nom
+ elif val.label == 'FACT':
+ liste=val.dumpXSD()
+ mcs.update(liste)
+ print (self.nom, mcs)
+ return mcs
- reuse : indique le concept d'entree reutilise. Il se trouvera donc en sortie
si les conditions d'execution de l'operateur l'autorise
- valeur : arguments d'entree de type mot-cle=valeur. Initialise avec l'argument args.
- """
+ - objPyxbDeConstruction
+ """
+ # faut il le faire ds MC_Build ?
+ # traitement de Pyxb si Pyxb
+ self.dicoPyxbDeConstruction = args.get('dicoPyxbDeConstruction', None)
+ if self.dicoPyxbDeConstruction :
+ del args['dicoPyxbDeConstruction']
+ self.objPyxbDeConstruction=self.dicoPyxbDeConstruction['objEnPyxb']
+ else :
+ self.objPyxbDeConstruction=None
self.definition = oper
self.reuse = reuse
self.valeur = args
self.nettoiargs()
- self.parent = CONTEXT.get_current_step()
+ self.parent = CONTEXT.getCurrentStep()
self.etape = self
self.nom = oper.nom
self.idracine = oper.label
- self.appel = N_utils.callee_where(niveau)
+ self.appel = N_utils.calleeWhere(niveau)
self.mc_globaux = {}
self.sd = None
self.actif = 1
- self.make_register()
+ self.makeRegister()
self.icmd = None
+ print ('uuuuuuuuuuuuuuu fin init de ETAPE', self,oper)
- def make_register(self):
+ def makeRegister(self):
"""
Initialise les attributs jdc, id, niveau et realise les
enregistrements necessaires
+ surcharge dans Ihm
"""
+ print ('makeRegister de ETAPE')
if self.parent:
- self.jdc = self.parent.get_jdc_root()
+ self.jdc = self.parent.getJdcRoot()
self.id = self.parent.register(self)
self.niveau = None
else:
if self.valeur[k] == None:
del self.valeur[k]
- def McBuild(self):
+ def MCBuild(self):
"""
Demande la construction des sous-objets et les stocke dans l'attribut
- mc_liste.
+ mcListe.
"""
- self.mc_liste = self.build_mc()
+ self.mcListe = self.buildMc()
- def Build_sd(self, nom):
+ def buildSd(self, nom):
"""
Construit le concept produit de l'operateur. Deux cas
peuvent se presenter :
self.sdnom = nom
try:
if self.parent:
- sd = self.parent.create_sdprod(self, nom)
+ sd = self.parent.createSdprod(self, nom)
if type(self.definition.op_init) == types.FunctionType:
self.definition.op_init(*(
self, self.parent.g_context))
else:
- sd = self.get_sd_prod()
+ sd = self.getSdProd()
# On n'utilise pas self.definition.op_init car self.parent
# n'existe pas
if sd != None and self.reuse == None:
# On ne nomme le concept que dans le cas de non reutilisation
# d un concept
- sd.set_name(nom)
+ sd.setName(nom)
except AsException as e:
raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
'fichier : ', self.appel[1], e)
"""
return
- def get_sd_prod(self):
+ def getSdProd(self):
"""
Retourne le concept resultat de l'etape
Deux cas :
on construit le sd a partir de cette classe
et on le retourne
- cas 2 : il s'agit d'une fonction
- on l'evalue avec les mots-cles de l'etape (mc_liste)
+ on l'evalue avec les mots-cles de l'etape (mcListe)
on construit le sd a partir de la classe obtenue
et on le retourne
"""
if type(self.definition.sd_prod) == types.FunctionType:
- d = self.cree_dict_valeurs(self.mc_liste)
+ d = self.creeDictValeurs(self.mcListe)
try:
sd_prod = self.definition.sd_prod(*(), **d)
except EOFError:
Developpeur : La fonction "sd_prod" retourne un type invalide.""")
return self.sd
- def get_type_produit(self):
+ def getType_produit(self):
try:
- return self.get_type_produit_brut()
+ return self.getType_produit_brut()
except:
return None
- def get_type_produit_brut(self):
+ def getType_produit_brut(self):
"""
Retourne le type du concept resultat de l'etape
Deux cas :
il s'agit d'une sous classe de ASSD
on retourne le nom de la classe
- cas 2 : il s'agit d'une fonction
- on l'evalue avec les mots-cles de l'etape (mc_liste)
+ on l'evalue avec les mots-cles de l'etape (mcListe)
et on retourne son resultat
"""
if type(self.definition.sd_prod) == types.FunctionType:
- d = self.cree_dict_valeurs(self.mc_liste)
+ d = self.creeDictValeurs(self.mcListe)
sd_prod = self.definition.sd_prod(*(), **d)
else:
sd_prod = self.definition.sd_prod
return sd_prod
- def get_etape(self):
+ def getEtape(self):
"""
Retourne l'etape a laquelle appartient self
Un objet de la categorie etape doit retourner self pour indiquer que
def __del__(self):
pass
- def get_created_sd(self):
+ def getCreated_sd(self):
"""Retourne la liste des sd reellement produites par l'etape.
Si reuse est present, `self.sd` a ete creee avant, donc n'est pas dans
cette liste."""
return [self.sd, ]
return []
- def isactif(self):
+ def isActif(self):
"""
Indique si l'etape est active (1) ou inactive (0)
"""
return self.actif
- def set_current_step(self):
+ def setCurrentStep(self):
"""
Methode utilisee pour que l etape self se declare etape
courante. Utilise par les macros
"""
- cs = CONTEXT.get_current_step()
+ cs = CONTEXT.getCurrentStep()
if self.parent != cs:
raise AsException("L'etape courante", cs.nom, cs,
"devrait etre le parent de", self.nom, self)
else:
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(self)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(self)
- def reset_current_step(self):
+ def resetCurrentStep(self):
"""
Methode utilisee par l'etape self qui remet son etape parent comme
etape courante
"""
- cs = CONTEXT.get_current_step()
+ cs = CONTEXT.getCurrentStep()
if self != cs:
raise AsException("L'etape courante", cs.nom, cs,
"devrait etre", self.nom, self)
else:
- CONTEXT.unset_current_step()
- CONTEXT.set_current_step(self.parent)
+ CONTEXT.unsetCurrentStep()
+ CONTEXT.setCurrentStep(self.parent)
def issubstep(self, etape):
"""
"""
return 0
- def get_file(self, unite=None, fic_origine='', fname=None):
+ def getFile(self, unite=None, fic_origine='', fname=None):
"""
Retourne le nom du fichier correspondant a un numero d'unite
logique (entier) ainsi que le source contenu dans le fichier
"""
if self.jdc:
- return self.jdc.get_file(unite=unite, fic_origine=fic_origine, fname=fname)
+ return self.jdc.getFile(unite=unite, fic_origine=fic_origine, fname=fname)
else:
if unite != None:
if os.path.exists("fort." + str(unite)):
"""
visitor.visitETAPE(self)
- def update_context(self, d):
+ def updateContext(self, d):
"""
Cette methode doit updater le contexte fournit par
l'appelant en argument (d) en fonction de sa definition
etape.reuse = None
etape.sdnom = None
etape.etape = etape
- etape.mc_liste = []
- for objet in self.mc_liste:
+ etape.mcListe = []
+ for objet in self.mcListe:
new_obj = objet.copy()
new_obj.reparent(etape)
- etape.mc_liste.append(new_obj)
+ etape.mcListe.append(new_obj)
return etape
- def copy_reuse(self, old_etape):
+ def copyReuse(self, old_etape):
""" Methode qui copie le reuse d'une autre etape.
"""
if hasattr(old_etape, "reuse"):
self.reuse = old_etape.reuse
- def copy_sdnom(self, old_etape):
+ def copySdnom(self, old_etape):
""" Methode qui copie le sdnom d'une autre etape.
"""
if hasattr(old_etape, "sdnom"):
Cette methode sert a reinitialiser la parente de l'objet
"""
self.parent = parent
- self.jdc = parent.get_jdc_root()
+ self.jdc = parent.getJdcRoot()
self.etape = self
- for mocle in self.mc_liste:
+ for mocle in self.mcListe:
mocle.reparent(self)
if self.sd and self.reuse == None:
self.sd.jdc = self.jdc
- def get_cmd(self, nomcmd):
+ def getCmd(self, nomcmd):
"""
Methode pour recuperer la definition d'une commande
donnee par son nom dans les catalogues declares
au niveau du jdc
Appele par un ops d'une macro en Python
"""
- return self.jdc.get_cmd(nomcmd)
+ return self.jdc.getCmd(nomcmd)
- def copy_intern(self, etape):
+ def copyIntern(self, etape):
"""
Methode permettant lors du processus de recopie de copier
les elements internes d'une etape dans une autre
"""
return
- def full_copy(self, parent=None):
+ def fullCopy(self, parent=None):
"""
Methode permettant d'effectuer une copie complète
d'une etape (y compris concept produit, elements internes)
aura cet objet comme parent.
"""
new_etape = self.copy()
- new_etape.copy_reuse(self)
- new_etape.copy_sdnom(self)
+ new_etape.copyReuse(self)
+ new_etape.copySdnom(self)
if parent:
new_etape.reparent(parent)
if self.sd:
if self.reuse == None:
new_etape.parent.NommerSdprod(new_sd, self.sd.nom)
else:
- new_sd.set_name(self.sd.nom)
- new_etape.copy_intern(self)
+ new_sd.setName(self.sd.nom)
+ new_etape.copyIntern(self)
return new_etape
- def reset_jdc(self, new_jdc):
+ def resetJdc(self, new_jdc):
"""
Reinitialise le nommage du concept de l'etape lors d'un changement de jdc
"""
if self.sd and self.reuse == None:
self.parent.NommerSdprod(self.sd, self.sd.nom)
- def is_include(self):
+ def isInclude(self):
"""Permet savoir si on a affaire a la commande INCLUDE
car le comportement de ces macros est particulier.
"""
return self.nom.startswith('INCLUDE')
- def sd_accessible(self):
+ def sdAccessible(self):
"""Dit si on peut acceder aux "valeurs" (jeveux) de l'ASSD produite par l'etape.
"""
if CONTEXT.debug:
- print(('`- ETAPE sd_accessible :', self.nom))
- return self.parent.sd_accessible()
+ print(('`- ETAPE sdAccessible :', self.nom))
+ return self.parent.sdAccessible()
- def get_concept(self, nomsd):
+ def getConcept(self, nomsd):
"""
Methode pour recuperer un concept a partir de son nom
"""
# pourrait etre appelee par une commande fortran faisant appel a des fonctions python
# on passe la main au parent
- return self.parent.get_concept(nomsd)
+ return self.parent.getConcept(nomsd)
# Modules EFICAS
from __future__ import absolute_import
-from .strfunc import get_encoding, to_unicode
+from .strfunc import getEncoding, toUnicode
import six
def __unicode__(self):
args = []
for x in self.args:
- ustr = to_unicode(x)
+ ustr = toUnicode(x)
if type(ustr) is not six.text_type:
ustr = six.text_type( repr(x) )
args.append(ustr)
return " ".join(args)
def __str__(self):
- return six.text_type(self).encode(get_encoding())
+ return six.text_type(self).encode(getEncoding())
class InterruptParsingError(Exception):
"""Exception used to interrupt the parsing of the command file
- without raising an error (see N_JDC.exec_compile for usage)"""
+ without raising an error (see N_JDC.execCompile for usage)"""
from . import N_MCFACT
from . import N_MCLIST
from .N__F import _F
-from .N_types import is_sequence
+from .N_types import isSequence
from . import N_OBJECT
list_instance = N_MCLIST.MCList
label = 'FACT'
- def __init__(self, fr="", docu="", regles=(), statut='f', defaut=None,ang="",
+ def __init__(self, fr="", docu="", regles=(), statut='f', defaut=None,ang="",fenetreIhm=None,
min=0, max=1, validators=None, **args):
"""
Un mot-clé facteur est caractérisé par les attributs suivants :
- max
- position
- docu
+ - fenetreIhm
"""
N_ENTITE.ENTITE.__init__(self, validators)
# Initialisation des attributs
self.entites = args
self.position = None
self.affecter_parente()
+ self.fenetreIhm = fenetreIhm
- def __call__(self, val, nom, parent):
+ def __call__(self, val, nom, parent, dicoPyxbDeConstruction = None):
"""
Construit la structure de donnee pour un mot cle facteur a partir
de sa definition (self) de sa valeur (val), de son nom (nom) et de
# On ne devrait jamais passer par la
print ("On ne devrait jamais passer par la")
return None
- elif is_sequence(val) and len(val) == 0 and self.statut == 'o':
+ elif isSequence(val) and len(val) == 0 and self.statut == 'o':
# On est dans le cas où le mcfact est présent mais est une liste/tuple
# vide. Il est obligatoire donc on l'initialise. Les règles, mots-clés
# obligatoires diront si un mcfact vide est accepté.
l = self.list_instance()
l.init(nom=nom, parent=parent)
if type(val) in (tuple, list, self.list_instance):
+ indice=0
for v in val:
if type(v) == dict or isinstance(v, _F):
objet = self.class_instance(
- nom=nom, definition=self, val=v, parent=parent)
+ nom=nom, definition=self, val=v, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction[indice])
+ indice=indice+1
l.append(objet)
elif isinstance(v, self.class_instance):
+# if faut gerer ici --> on passe la avec une liste de concept ?
+# PNPN --> si pyxb
l.append(v)
else:
l.append(N_OBJECT.ErrorObj(self, v, parent, nom))
elif type(val) == dict or isinstance(val, _F):
objet = self.class_instance(
- nom=nom, definition=self, val=val, parent=parent)
+ nom=nom, definition=self, val=val, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
l.append(objet)
elif isinstance(val, self.class_instance):
+# idem --> quand passe t on la
l.append(val)
else:
l.append(N_OBJECT.ErrorObj(self, val, parent, nom))
-
+ l.cata=l.jdc.cata
+ l.buildObjPyxb(l)
return l
- def verif_cata(self):
- self.check_min_max()
- self.check_fr()
- self.check_regles()
- self.check_statut()
- self.check_docu()
- self.check_validators()
- self.verif_cata_regles()
+ def verifCata(self):
+ self.checkMinMax()
+ self.checkFr()
+ self.checkRegles()
+ self.checkStatut()
+ self.checkDocu()
+ self.checkValidators()
+ self.verifCataRegles()
if self.accessible():
TypeProl = {
'E': 'EXCLU', 'L': 'LINEAIRE', 'C': 'CONSTANT', 'I': 'INTERPRE'}
- sd = sd_formule(self.get_name())
+ sd = sd_formule(self.getName())
prol = sd.PROL.get()
nova = sd.NOVA.get()
if prol is None or nova is None:
if etape:
self.parent = etape.parent
else:
- self.parent = CONTEXT.get_current_step()
+ self.parent = CONTEXT.getCurrentStep()
if self.parent:
- self.jdc = self.parent.get_jdc_root()
+ self.jdc = self.parent.getJdcRoot()
else:
self.jdc = None
if not self.parent:
self.id = None
elif reg == 'oui':
- self.id = self.parent.reg_sd(self)
+ self.id = self.parent.regSD(self)
self.nom = nom
- def get_name(self):
+ def getName(self):
return self.nom
def __convert__(cls, valeur):
from . import N_CR
from .N_Exception import AsException, InterruptParsingError
from .N_ASSD import ASSD
-from .strfunc import get_encoding
+from .strfunc import getEncoding
from six.moves import range
self.procedure = procedure
self.definition = definition
self.cata = cata
- if type(self.cata) != tuple and cata != None:
- self.cata = (self.cata,)
+ # PN pourquoi ?
+ #if type(self.cata) != tuple and cata != None:
+ # self.cata = (self.cata,)
self._build_reserved_kw_list()
self.cata_ordonne_dico = cata_ord_dico
self.nom = nom
self.args.update(args)
self.nstep = 0
self.nsd = 0
- self.par_lot = 'OUI'
- self.par_lot_user = None
+ self.parLot = 'OUI'
+ self.parLot_user = None
if definition:
self.regles = definition.regles
self.code = definition.code
"""
try:
if self.appli != None:
- self.appli.affiche_infos(
+ self.appli.afficheInfos(
'Compilation du fichier de commandes en cours ...')
# Python 2.7 compile function does not accept unicode filename, so we encode it
# with the current locale encoding in order to have a correct
# traceback
- encoded_filename = self.nom.encode(get_encoding())
+ encoded_filename = self.nom.encode(getEncoding())
self.proc_compile = compile(
self.procedure, encoded_filename, 'exec')
except SyntaxError as e:
self.cr.exception("Compilation impossible : " + ''.join(l))
return
- def exec_compile(self):
+ def setCurrentContext(self):
+ # beaucoup trop simple Ne tient pas compte des imports
+ # et des include
+ # ne sert que pour le POC
+ CONTEXT.setCurrentStep(self)
+
+ def execCompile(self):
"""
Cette methode execute le jeu de commandes compile dans le contexte
self.g_context de l'objet JDC
"""
- CONTEXT.set_current_step(self)
+ CONTEXT.setCurrentStep(self)
# Le module nommage utilise le module linecache pour acceder
# au source des commandes du jeu de commandes.
# Dans le cas d'un fichier, on accède au contenu de ce fichier
linecache.cache[self.nom] = 0, 0, self.procedure.split('\n'), self.nom
try:
exec(self.exec_init, self.g_context)
- for obj_cata in self.cata:
+ for obj_cata in (self.cata,):
if type(obj_cata) == types.ModuleType:
init2 = "from " + obj_cata.__name__ + " import *"
exec(init2, self.g_context)
-
+ else :
+ # ici on a un catalogue en grammaire Eficas XML
+ # il faut ajouter ce qu on a construit au contexte
+ for (k,v) in obj_cata.contexteXML.items() :
+ self.g_context[k]=v
# Initialisation du contexte global pour l'evaluation des conditions de BLOC
# On utilise une copie de l'initialisation du contexte du jdc
self.condition_context = self.g_context.copy()
self.sds_dict[sdnom] = sd
if self.appli != None:
- self.appli.affiche_infos(
+ self.appli.afficheInfos(
'Interpretation du fichier de commandes en cours ...')
# On sauve le contexte pour garder la memoire des constantes
# En mode edition (EFICAS) ou lors des verifications le contexte
self.const_context = self.g_context
exec(self.proc_compile, self.g_context)
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
if self.appli != None:
- self.appli.affiche_infos('')
+ self.appli.afficheInfos('')
except InterruptParsingError:
# interrupt the command file parsing used by FIN to ignore the end
# de commandes avant la fin
# Fonctionnement normal, ne doit pas etre considere comme une
# erreur
- CONTEXT.unset_current_step()
- self.affiche_fin_exec()
- self.traiter_fin_exec('commande')
+ CONTEXT.unsetCurrentStep()
+ self.afficheFinExec()
+ self.traiterFinExec('commande')
except AsException as e:
# une erreur a ete identifiee
if txt.find('MemoryError') >= 0:
txt = MemoryErrorMsg
self.cr.exception(txt)
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
except NameError as e:
etype, value, tb = sys.exc_info()
if CONTEXT.debug:
traceback.print_exc()
self.cr.exception(msg)
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
# except self.UserError as exc_val:
- # self.traiter_user_exception(exc_val)
- # CONTEXT.unset_current_step()
- # self.affiche_fin_exec()
- # self.traiter_fin_exec('commande')
+ # self.traiterUserException(exc_val)
+ # CONTEXT.unsetCurrentStep()
+ # self.afficheFinExec()
+ # self.traiterFinExec('commande')
except:
# erreur inattendue
self.cr.exception(
"erreur non prevue et non traitee prevenir la maintenance " + '\n' + ''.join(l))
del exc_typ, exc_val, exc_fr
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
- def affiche_fin_exec(self):
+ def afficheFinExec(self):
"""
Cette methode realise l'affichage final des statistiques de temps
apres l'execution de toutes
"""
return
- def traiter_fin_exec(self, mode, etape=None):
+ def traiterFinExec(self, mode, etape=None):
"""
Cette methode realise un traitement final apres l'execution de toutes
les commandes en mode commande par commande ou par lot
"""
print ( "FIN D'EXECUTION %s %s" %s( mode, etape))
- def traiter_user_exception(self, exc_val):
+ def traiterUserException(self, exc_val):
"""Cette methode realise un traitement sur les exceptions utilisateur
Par defaut il n'y a pas de traitement. La methode doit etre
surchargee pour en introduire un.
"""
self.etapes.append(etape)
self.index_etapes[etape] = len(self.etapes) - 1
- return self.g_register(etape)
+ return self.gRegister(etape)
def o_register(self, sd):
"""
nom = sd.idracine + self.SEP + repr(self.nsd)
return nom
- def g_register(self, etape):
+ def gRegister(self, etape):
"""
Retourne un identificateur pour etape
"""
idetape = etape.idracine + self.SEP + repr(self.nstep)
return idetape
- def create_sdprod(self, etape, nomsd):
+ def createSdprod(self, etape, nomsd):
"""
Cette methode doit fabriquer le concept produit retourne
par l'etape etape et le nommer.
etape.
Dans le cas du JDC, le deuxième cas ne peut pas se produire.
"""
- sd = etape.get_sd_prod()
+ sd = etape.getSdProd()
if sd != None and (etape.definition.reentrant == 'n' or etape.reuse is None):
# ATTENTION : On ne nomme la SD que dans le cas de non reutilisation
# d un concept. Commande non reentrante ou reuse absent.
raise AsException(
"Nom de concept invalide. '%s' est un mot-cle reserve." % sdnom)
- # Ajoute a la creation (appel de reg_sd).
+ # Ajoute a la creation (appel de regSD).
self.sds_dict[sdnom] = sd
- sd.set_name(sdnom)
+ sd.setName(sdnom)
# En plus si restrict vaut 'non', on insere le concept dans le contexte
# du JDC
if restrict == 'non':
self.g_context[sdnom] = sd
- def reg_sd(self, sd):
+ def regSD(self, sd):
"""
Methode appelee dans l __init__ d un ASSD lors de sa creation
pour s enregistrer
"""
return self.o_register(sd)
- def delete_concept_after_etape(self, etape, sd):
+ def deleteConceptAfterEtape(self, etape, sd):
"""
Met a jour les etapes du JDC qui sont après etape suite a
la disparition du concept sd
e.jdc = jdc
del self.index_etapes[e]
- def get_file(self, unite=None, fic_origine='', fname=None):
+ def getFile(self, unite=None, fic_origine='', fname=None):
"""
Retourne le nom du fichier correspondant a un numero d'unite
logique (entier) ainsi que le source contenu dans le fichier
if self.appli:
# Si le JDC est relie a une application maitre, on delègue la
# recherche
- return self.appli.get_file(unite, fic_origine)
+ return self.appli.getFile(unite, fic_origine)
else:
if unite != None:
if os.path.exists("fort." + str(unite)):
linecache.cache[fname] = 0, 0, text.split('\n'), fname
return fname, text
- def set_par_lot(self, par_lot, user_value=False):
+ def set_parLot(self, parLot, user_value=False):
"""
Met le mode de traitement a PAR LOT
ou a COMMANDE par COMMANDE
En PAR_LOT='NON', il n'y a pas d'ambiguite.
d'analyse et juste avant la phase d'execution.
`user_value` : permet de stocker la valeur choisie par l'utilisateur
- pour l'interroger plus tard (par exemple dans `get_contexte_avant`).
+ pour l'interroger plus tard (par exemple dans `getContexteAvant`).
"""
if user_value:
- self.par_lot_user = par_lot
+ self.parLot_user = parLot
if self.appli == None:
# Pas d application maitre
- self.par_lot = par_lot
+ self.parLot = parLot
else:
# Avec application maitre
- self.par_lot = 'OUI'
+ self.parLot = 'OUI'
def accept(self, visitor):
"""
Cette methode a pour fonction d'ouvrir un interpreteur
pour que l'utilisateur entre des commandes interactivement
"""
- CONTEXT.set_current_step(self)
+ CONTEXT.setCurrentStep(self)
try:
# Le module nommage utilise le module linecache pour acceder
# au source des commandes du jeu de commandes.
console.interact(banner)
finally:
console = None
- CONTEXT.unset_current_step()
+ CONTEXT.unsetCurrentStep()
- def get_contexte_avant(self, etape):
+ def getContexteAvant(self, etape):
"""
Retourne le dictionnaire des concepts connus avant etape
On tient compte des commandes qui modifient le contexte
# Si on insère des commandes (par ex, dans EFICAS), il faut prealablement
# remettre ce pointeur a 0
# self.current_context.items() if isinstance(v, ASSD)])
- if self.par_lot_user == 'NON':
+ if self.parLot_user == 'NON':
d = self.current_context = self.g_context.copy()
if etape is None:
return d
# retirer les sd produites par 'etape'
- sd_names = [sd.nom for sd in etape.get_created_sd()]
+ sd_names = [sd.nom for sd in etape.getCreated_sd()]
for nom in sd_names:
try:
del d[nom]
for e in liste_etapes:
if e is etape:
break
- if e.isactif():
- e.update_context(d)
+ if e.isActif():
+ e.updateContext(d)
self.index_etape_courante = index_etape
return d
- def get_global_contexte(self):
+ def getGlobalContexte(self):
"""Retourne "un" contexte global ;-)"""
# N'est utilise que par INCLUDE (sauf erreur).
# g_context est remis a {} en PAR_LOT='OUI'. const_context permet
- # de retrouver ce qui y a ete mis par exec_compile.
+ # de retrouver ce qui y a ete mis par execCompile.
# Les concepts n'y sont pas en PAR_LOT='OUI'. Ils sont ajoutes
- # par get_global_contexte de la MACRO.
+ # par getGlobalContexte de la MACRO.
d = self.const_context.copy()
d.update(self.g_context)
return d
- def get_contexte_courant(self, etape_courante=None):
+ def getContexteCourant(self, etape_courante=None):
"""
Retourne le contexte tel qu'il est (ou 'sera' si on est en phase
de construction) au moment de l'execution de l'etape courante.
"""
if etape_courante is None:
- etape_courante = CONTEXT.get_current_step()
- return self.get_contexte_avant(etape_courante)
+ etape_courante = CONTEXT.getCurrentStep()
+ return self.getContexteAvant(etape_courante)
- def get_concept(self, nomsd):
+ def getConcept(self, nomsd):
"""
Methode pour recuperer un concept a partir de son nom
"""
- co = self.get_contexte_courant().get(nomsd.strip(), None)
+ co = self.getContexteCourant().get(nomsd.strip(), None)
if not isinstance(co, ASSD):
co = None
return co
- def get_concept_by_type(self, nomsd, typesd, etape):
+ def getConceptByType(self, nomsd, typesd, etape):
"""
Methode pour recuperer un concept a partir de son nom et de son type.
Il aura comme père 'etape'.
"""
assert issubclass(typesd, ASSD), typesd
co = typesd(etape=etape)
- co.set_name(nomsd)
+ co.setName(nomsd)
co.executed = 1
return co
except:
pass
- def get_cmd(self, nomcmd):
+ def getCmd(self, nomcmd):
"""
Methode pour recuperer la definition d'une commande
donnee par son nom dans les catalogues declares
au niveau du jdc
"""
- for cata in self.cata:
+ for cata in (self.cata,):
if hasattr(cata, nomcmd):
return getattr(cata, nomcmd)
self.etapes.append(etape)
self.index_etapes[etape] = len(self.etapes) - 1
etape.reparent(self)
- etape.reset_jdc(self)
+ etape.resetJdc(self)
- def sd_accessible(self):
+ def sdAccessible(self):
"""On peut acceder aux "valeurs" (jeveux) des ASSD si le JDC est en PAR_LOT="NON".
"""
if CONTEXT.debug:
- print((' `- JDC sd_accessible : PAR_LOT =', self.par_lot))
- return self.par_lot == 'NON'
+ print((' `- JDC sdAccessible : PAR_LOT =', self.parLot))
+ return self.parLot == 'NON'
def _build_reserved_kw_list(self):
"""Construit la liste des mots-cles reserves (interdits pour le
nommage des concepts)."""
self._reserved_kw = set()
- for cat in self.cata:
- self._reserved_kw.update(
+ #for cat in self.cata:
+ cat=self.cata
+ self._reserved_kw.update(
[kw for kw in dir(cat) if len(kw) <= 8 and kw == kw.upper()])
self._reserved_kw.difference_update(
['OPER', 'MACRO', 'BLOC', 'SIMP', 'FACT', 'FORM',
self.d_niveaux[niveau.nom] = niveau
# On change d'objet catalogue. Il faut d'abord mettre le catalogue
# courant à None
- CONTEXT.unset_current_cata()
- CONTEXT.set_current_cata(self)
-
+ CONTEXT.unsetCurrentCata()
+ CONTEXT.setCurrentCata(self)
+ self.fenetreIhm=None
+ self.dictTypesXSD={}
+
def __call__(self, procedure=None, cata=None, cata_ord_dico=None,
nom='SansNom', parent=None, **args):
"""
"""
self.commandes.append(commande)
- def verif_cata(self):
+ def verifCata(self):
"""
Méthode de vérification des attributs de définition
"""
- self.check_regles()
- self.verif_cata_regles()
+ self.checkRegles()
+ self.verifCataRegles()
- def verif_cata_regles(self):
+ def verifCataRegles(self):
"""
Cette méthode vérifie pour tous les objets stockés dans la liste entités
respectent les REGLES associés à self
self.cr = self.CR(
debut=u"Compte-rendu de validation du catalogue " + self.code,
fin=u"Fin Compte-rendu de validation du catalogue " + self.code)
- self.verif_cata()
+ self.verifCata()
for commande in self.commandes:
cr = commande.report()
cr.debut = u"Début Commande :" + commande.nom
for commande in self.commandes:
commande.supprime()
- def get_niveau(self, nom_niveau):
+ def getNiveau(self, nom_niveau):
"""
Retourne l'objet de type NIVEAU de nom nom_niveau
ou None s'il n'existe pas
nommage = nommage
def __init__(
- self, nom, op, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",
+ self, nom, op, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",fenetreIhm=None,
docu="", regles=(), op_init=None, niveau = None, fichier_ini=0, UIinfo=None, **args):
"""
Méthode d'initialisation de l'objet MACRO. Les arguments sont utilisés pour initialiser
self.ang=ang
self.repetable = repetable
self.docu = docu
+ self.fenetreIhm=fenetreIhm
if type(regles) == tuple:
self.regles = regles
else:
# operateur sauf si == None
self.op_init = op_init
self.entites = args
- current_cata = CONTEXT.get_current_cata()
+ current_cata = CONTEXT.getCurrentCata()
if niveau == None:
self.niveau = None
current_cata.enregistre(self)
else:
- self.niveau = current_cata.get_niveau(niveau)
+ self.niveau = current_cata.getNiveau(niveau)
self.niveau.enregistre(self)
self.UIinfo = UIinfo
self.affecter_parente()
- self.check_definition(self.nom)
+ self.checkDefinition(self.nom)
def __call__(self, reuse=None, **args):
"""
Construit l'objet MACRO_ETAPE a partir de sa definition (self),
puis demande la construction de ses sous-objets et du concept produit.
"""
- nomsd = self.nommage.GetNomConceptResultat(self.nom)
+ nomsd = self.nommage.getNomConceptResultat(self.nom)
etape = self.class_instance(oper=self, reuse=reuse, args=args)
- etape.McBuild()
- return etape.Build_sd(nomsd)
+ etape.MCBuild()
+ return etape.buildSd(nomsd)
def make_objet(self, mc_list='oui'):
"""
"""
etape = self.class_instance(oper=self, reuse=None, args={})
if mc_list == 'oui':
- etape.McBuild()
+ etape.MCBuild()
return etape
- def verif_cata(self):
+ def verifCata(self):
"""
Méthode de vérification des attributs de définition
"""
- self.check_op(valmax=0)
- self.check_proc()
- self.check_regles()
- self.check_fr()
- self.check_docu()
- self.check_nom()
- self.check_reentrant()
- self.verif_cata_regles()
+ self.checkOp(valmax=0)
+ self.checkProc()
+ self.checkRegles()
+ self.checkFr()
+ self.checkDocu()
+ self.checkNom()
+ self.checkReentrant()
+ self.verifCataRegles()
def supprime(self):
"""
# permet de stocker le nom du dernier concept nomme dans la macro
self.last = None
- def make_register(self):
+ def makeRegister(self):
"""
Initialise les attributs jdc, id, niveau et realise les enregistrements
necessaires
"""
- N_ETAPE.ETAPE.make_register(self)
+ N_ETAPE.ETAPE.makeRegister(self)
if self.parent:
self.UserError = self.jdc.UserError
else:
self.UserError = "UserError"
- def Build_sd(self, nom):
+ def buildSd(self, nom):
"""
Construit le concept produit de l'operateur. Deux cas
peuvent se presenter :
# On positionne la macro self en tant que current_step pour que les
# etapes creees lors de l'appel a sd_prod et a op_init aient la macro
# comme parent
- self.set_current_step()
+ self.setCurrentStep()
if self.parent:
- sd = self.parent.create_sdprod(self, nom)
+ sd = self.parent.createSdprod(self, nom)
if type(self.definition.op_init) == types.FunctionType:
self.definition.op_init(*(
self, self.parent.g_context))
else:
- sd = self.get_sd_prod()
+ sd = self.getSdProd()
if sd != None and self.reuse == None:
# On ne nomme le concept que dans le cas de non reutilisation
# d un concept
- sd.set_name(nom)
- self.reset_current_step()
+ sd.setName(nom)
+ self.resetCurrentStep()
except AsException as e:
- self.reset_current_step()
+ self.resetCurrentStep()
raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
'fichier : ', self.appel[1], e)
#except (EOFError, self.UserError):
except (EOFError):
# Le retablissement du step courant n'est pas strictement
# necessaire. On le fait pour des raisons de coherence
- self.reset_current_step()
+ self.resetCurrentStep()
raise
except:
- self.reset_current_step()
+ self.resetCurrentStep()
l = traceback.format_exception(
sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])
raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
self.Execute()
return sd
- def get_sd_prod(self):
+ def getSdProd(self):
"""
Retourne le concept resultat d'une macro etape
La difference avec une etape ou une proc-etape tient a ce que
on construit le sd a partir de cette classe
et on le retourne
- cas 2 : sd_prod est une fonction
- on l'evalue avec les mots-cles de l'etape (mc_liste)
+ on l'evalue avec les mots-cles de l'etape (mcListe)
on construit le sd a partir de la classe obtenue
et on le retourne
"""
self.typret = None
if type(self.definition.sd_prod) == types.FunctionType:
- d = self.cree_dict_valeurs(self.mc_liste)
+ d = self.creeDictValeurs(self.mcListe)
try:
# la sd_prod d'une macro a l'objet macro_etape lui meme en premier argument
- # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+ # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
# les concepts produits dans self.sdprods, il faut le mettre a
# zero avant de l'appeler
self.sdprods = []
Developpeur : La fonction "sd_prod" retourne un type invalide.""")
return self.sd
- def get_type_produit(self, force=0):
+ def getType_produit(self, force=0):
try:
- return self.get_type_produit_brut(force)
+ return self.getType_produit_brut(force)
except:
# traceback.print_exc()
return None
- def get_type_produit_brut(self, force=0):
+ def getType_produit_brut(self, force=0):
"""
Retourne le type du concept resultat de l'etape et eventuellement type
les concepts produits "a droite" du signe egal (en entree)
il s'agit d'une sous classe de ASSD
on retourne le nom de la classe
- cas 2 : il s'agit d'une fonction
- on l'evalue avec les mots-cles de l'etape (mc_liste)
+ on l'evalue avec les mots-cles de l'etape (mcListe)
et on retourne son resultat
"""
if not force and hasattr(self, 'typret'):
return self.typret
if type(self.definition.sd_prod) == types.FunctionType:
- d = self.cree_dict_valeurs(self.mc_liste)
- # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+ d = self.creeDictValeurs(self.mcListe)
+ # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
# les concepts produits dans self.sdprods, il faut le mettre a zero
self.sdprods = []
sd_prod = self.definition.sd_prod(*(self,), **d)
sd_prod = self.definition.sd_prod
return sd_prod
- def get_contexte_avant(self, etape):
+ def getContexteAvant(self, etape):
"""
Retourne le dictionnaire des concepts connus avant etape
pour les commandes internes a la macro
if etape is None:
return d
# retirer les sd produites par 'etape'
- sd_names = [sd.nom for sd in etape.get_created_sd()]
+ sd_names = [sd.nom for sd in etape.getCreated_sd()]
for nom in sd_names:
try:
del d[nom]
e.jdc = jdc
del self.index_etapes[e]
- def type_sdprod(self, co, t):
+ def typeSDProd(self, co, t):
"""
Cette methode a pour fonction de typer le concept co avec le type t
dans les conditions suivantes :
#
# On cherche a discriminer les differents cas de typage d'un concept
# produit par une macro qui est specifie dans un mot cle simple.
- # On peut passer plusieurs fois par type_sdprod ce qui explique
+ # On peut passer plusieurs fois par typeSDProd ce qui explique
# le nombre important de cas.
#
# Cas 1 : Le concept est libre. Il vient d'etre cree par CO(nom)
- # Cas 2 : Le concept est produit par la macro. On est deja passe par type_sdprod.
+ # Cas 2 : Le concept est produit par la macro. On est deja passe par typeSDProd.
# Cas semblable a Cas 1.
# Cas 3 : Le concept est produit par la macro englobante (parent). On transfere
# la propriete du concept de la macro parent a la macro courante (self)
# en verifiant que le type est valide
# Cas 4 : La concept est la propriete d'une etape fille. Ceci veut dire qu'on est
- # deja passe par type_sdprod et que la propriete a ete transfere a une
+ # deja passe par typeSDProd et que la propriete a ete transfere a une
# etape fille. Cas semblable a Cas 3.
# Cas 5 : Le concept est produit par une etape externe a la macro.
#
# Cas 1 : le concept est libre
# On l'attache a la macro et on change son type dans le type demande
# Recherche du mot cle simple associe au concept
- mcs = self.get_mcs_with_co(co)
+ mcs = self.getMcsWithCo(co)
if len(mcs) != 1:
raise AsException("""Erreur interne.
Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co)
Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pas CO mais seulement (%s)""" % (co, mcs.definition.type))
co.etape = self
# affectation du bon type du concept
- co.change_type(t)
+ co.changeType(t)
self.sdprods.append(co)
elif co.etape == self:
# Cas 2 : le concept est produit par la macro (self)
- # On est deja passe par type_sdprod (Cas 1 ou 3).
+ # On est deja passe par typeSDProd (Cas 1 ou 3).
# XXX Peut-il etre creer par une autre macro ?
# On verifie juste que c'est un vrai CO non deja type
# if co.etape == co._etape:
- if co.is_typco() == 1:
+ if co.isTypCO() == 1:
# Le concept a ete cree par la macro (self)
# On peut changer son type
- co.change_type(t)
+ co.changeType(t)
else:
# Le concept a ete cree par une macro parente
# Le type du concept doit etre coherent avec le type demande
raise AsException("""
Impossible de changer le type du concept produit (%s) en (%s).
Le type actuel (%s) devrait etre une classe derivee du nouveau type (%s)""" % (co, t, co.__class__, t))
- mcs = self.get_mcs_with_co(co)
+ mcs = self.getMcsWithCo(co)
if len(mcs) != 1:
raise AsException("""Erreur interne.
Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co)
elif self.issubstep(co.etape):
# Cas 4 : Le concept est propriete d'une sous etape de la macro (self).
- # On est deja passe par type_sdprod (Cas 3 ou 1).
+ # On est deja passe par typeSDProd (Cas 3 ou 1).
# Il suffit de le mettre dans la liste des concepts produits (self.sdprods)
# Le type du concept et t doivent etre derives.
# Il n'y a aucune raison pour que la condition ne soit pas
"""
self.etapes.append(etape)
self.index_etapes[etape] = len(self.etapes) - 1
- idetape = self.jdc.g_register(etape)
+ idetape = self.jdc.gRegister(etape)
return idetape
- def reg_sd(self, sd):
+ def regSD(self, sd):
"""
Methode appelee dans l __init__ d un ASSD a sa creation pour
s enregistrer (reserve aux ASSD crees au sein d'une MACRO)
"""
return self.jdc.o_register(sd)
- def create_sdprod(self, etape, nomsd):
+ def createSdprod(self, etape, nomsd):
"""
Cette methode doit fabriquer le concept produit retourne
par l'etape etape et le nommer.
if nomsd in self.Outputs:
# Il s'agit d'un concept de sortie de la macro. Il ne faut pas le creer
# Il faut quand meme appeler la fonction sd_prod si elle existe.
- # get_type_produit le fait et donne le type attendu par la commande
+ # getType_produit le fait et donne le type attendu par la commande
# pour verification ulterieure.
- sdprod = etape.get_type_produit_brut()
+ sdprod = etape.getType_produit_brut()
sd = self.Outputs[nomsd]
# On verifie que le type du concept existant sd.__class__ est un sur type de celui attendu
# Cette règle est normalement coherente avec les règles de
self.g_context[sd.nom] = sd
elif etape.definition.reentrant != 'n' and etape.reuse != None:
# On est dans le cas d'une commande avec reutilisation d'un concept existant
- # get_sd_prod fait le necessaire : verifications, associations, etc. mais ne cree
+ # getSdProd fait le necessaire : verifications, associations, etc. mais ne cree
# pas un nouveau concept. Il retourne le concept reutilise
- sd = etape.get_sd_prod()
+ sd = etape.getSdProd()
# Dans le cas d'un concept nomme automatiquement : _xxx, __xxx,
# On force le nom stocke dans l'attribut sdnom de l'objet etape : on lui donne le nom
# du concept reutilise (sd ou etape.reuse c'est pareil)
etape.sdnom = sd.nom
else:
# On est dans le cas de la creation d'un nouveau concept
- sd = etape.get_sd_prod()
+ sd = etape.getSdProd()
if sd != None:
self.NommerSdprod(sd, nomsd)
return sd
"""
# Normalement, lorsqu'on appelle cette methode, on ne veut nommer que des concepts nouvellement crees.
# Le filtrage sur les concepts a creer ou a ne pas creer est fait dans la methode
- # create_sdprod. La seule chose a verifier apres conversion eventuelle du nom
+ # createSdprod. La seule chose a verifier apres conversion eventuelle du nom
# est de verifier que le nom n'est pas deja attribue. Ceci est fait en delegant
# au JDC par l'intermediaire du parent.
if sdnom in self.Outputs :
else:
# On est dans le cas d'un nom de concept global
# XXX a voir, creation de CO() dans CALC_ESSAI (sdls139a)
- if not sd.is_typco():
+ if not sd.isTypCO():
raise AsException(
"Resultat non declare par la macro %s : %s" % (self.nom, sdnom))
self.last = sdnom
# le concept dans son contexte. On ne traite plus que le nommage (restrict="oui")
self.parent.NommerSdprod(sd, sdnom, restrict='oui')
- def delete_concept_after_etape(self, etape, sd):
+ def deleteConceptAfterEtape(self, etape, sd):
"""
Met a jour les etapes de la MACRO qui sont après etape suite a
la disparition du concept sd
# Dans d'autres conditions, il faudrait surcharger cette methode.
return
- def get_created_sd(self):
+ def getCreated_sd(self):
"""Retourne la liste des sd reellement produites par l'etape.
Si reuse est present, `self.sd` a ete creee avant, donc n'est pas dans
cette liste."""
sdprods.append(self.sd)
return sdprods
- def get_last_concept(self):
+ def getLastConcept(self):
"""Retourne le dernier concept produit dans la macro.
Peut-etre utile pour acceder au contenu 'fortran' dans une
clause 'except'."""
"""
visitor.visitMACRO_ETAPE(self)
- def update_context(self, d):
+ def updateContext(self, d):
"""
Met a jour le contexte contenu dans le dictionnaire d
Une MACRO_ETAPE peut ajouter plusieurs concepts dans le contexte
for co in self.sdprods:
d[co.nom] = co
- def make_include(self, unite=None, fname=None):
+ def makeInclude(self, unite=None, fname=None):
"""Inclut un fichier dont l'unite logique est `unite` ou de nom `fname`"""
if unite is not None:
warn("'unite' is deprecated, please use 'fname' instead",
fname = 'fort.%s' % unite
if not fname:
return
- f, text = self.get_file(fic_origine=self.parent.nom, fname=fname)
+ f, text = self.getFile(fic_origine=self.parent.nom, fname=fname)
self.fichier_init = f
if f == None:
return
- self.make_contexte(f, text)
+ self.makeContexte(f, text)
- def make_poursuite(self):
+ def makePoursuite(self):
"""Inclut un fichier poursuite"""
raise NotImplementedError('this method must be derivated (in Eficas)')
- def make_contexte(self, f, text):
+ def makeContexte(self, f, text):
"""
Interprete le texte fourni (text) issu du fichier f
dans le contexte du parent.
# et le contexte de l etape (local au sens Python)
code = compile(text, f, 'exec')
d = self.g_context = self.macro_const_context
- globs = self.get_global_contexte()
+ globs = self.getGlobalContexte()
d.update(globs)
exec(code, globs, d)
# pour ne pas conserver des references sur tout
self.macro_const_context = {}
- def get_global_contexte(self):
+ def getGlobalContexte(self):
"""
Cette methode retourne le contexte global fourni
par le parent(self) a une etape fille (l'appelant) pour
# Le contexte global est forme par concatenation du contexte
# du parent de self et de celui de l'etape elle meme (self)
# Pour les concepts, cela ne doit rien changer. Mais pour les constantes,
- # les valeurs de get_contexte_avant sont moins recentes que dans
- # get_global_contexte. On prend donc la precaution de ne pas ecraser
+ # les valeurs de getContexteAvant sont moins recentes que dans
+ # getGlobalContexte. On prend donc la precaution de ne pas ecraser
# ce qui y est deja.
- d = self.parent.get_global_contexte()
+ d = self.parent.getGlobalContexte()
d.update(self.g_context)
- d.update([(k, v) for k, v in list(self.parent.get_contexte_avant(self).items())
+ d.update([(k, v) for k, v in list(self.parent.getContexteAvant(self).items())
if d.get(k) is None])
return d
- def get_contexte_courant(self, etape_fille_du_jdc=None):
+ def getContexteCourant(self, etape_fille_du_jdc=None):
"""
Retourne le contexte tel qu'il est au moment de l'execution de
l'etape courante.
"""
ctx = {}
# update car par ricochet on modifierait jdc.current_context
- ctx.update(self.parent.get_contexte_courant(self))
+ ctx.update(self.parent.getContexteCourant(self))
# on peut mettre None car toujours en PAR_LOT='NON', donc la dernière
- ctx.update(self.get_contexte_avant(None))
+ ctx.update(self.getContexteAvant(None))
return ctx
- def get_concept(self, nomsd):
+ def getConcept(self, nomsd):
"""
Methode pour recuperer un concept a partir de son nom
dans le contexte du jdc connu avant l'execution de la macro courante.
"""
- # chercher dans self.get_contexte_avant, puis si non trouve
- # self.parent.get_concept est peut-etre plus performant
- co = self.get_contexte_courant().get(nomsd.strip(), None)
+ # chercher dans self.getContexteAvant, puis si non trouve
+ # self.parent.getConcept est peut-etre plus performant
+ co = self.getContexteCourant().get(nomsd.strip(), None)
if not isinstance(co, ASSD):
co = None
return co
- def get_concept_by_type(self, nomsd, typesd, etape=None):
+ def getConceptByType(self, nomsd, typesd, etape=None):
"""
Methode pour recuperer un concept a partir de son nom et de son type.
Il aura comme père 'etape' (ou la macro courante si etape est absente).
"""
- return self.parent.get_concept_by_type(nomsd, typesd, etape=etape or self)
+ return self.parent.getConceptByType(nomsd, typesd, etape=etape or self)
def copy(self):
""" Methode qui retourne une copie de self non enregistree auprès du JDC
etape.sdprods = []
return etape
- def copy_intern(self, etape):
+ def copyIntern(self, etape):
""" Cette methode effectue la recopie des etapes internes d'une macro
passee en argument (etape)
"""
self.index_etapes = {}
for etp in etape.etapes:
new_etp = etp.copy()
- new_etp.copy_reuse(etp)
- new_etp.copy_sdnom(etp)
+ new_etp.copyReuse(etp)
+ new_etp.copySdnom(etp)
new_etp.reparent(self)
if etp.sd:
new_sd = etp.sd.__class__(etape=new_etp)
new_etp.sd = new_sd
if etp.reuse:
- new_sd.set_name(etp.sd.nom)
+ new_sd.setName(etp.sd.nom)
else:
self.NommerSdprod(new_sd, etp.sd.nom)
- new_etp.copy_intern(etp)
+ new_etp.copyIntern(etp)
self.etapes.append(new_etp)
self.index_etapes[new_etp] = len(self.etapes) - 1
- def reset_jdc(self, new_jdc):
+ def resetJdc(self, new_jdc):
"""
Reinitialise l'etape avec un nouveau jdc parent new_jdc
"""
for e in self.etapes:
e.reparent(self)
- def update_const_context(self, d):
+ def updateConstContext(self, d):
"""
Met a jour le contexte des constantes pour l'evaluation de
formules dans la macro.
"""
- # Dans le jdc, const_context est mis a jour par exec_compile
+ # Dans le jdc, const_context est mis a jour par execCompile
# Dans la macro, on n'a pas le code a compiler pour recupèrer les
# constantes locales a la macro. On demande donc explicitement de
# definir les constantes "locales".
self.macro_const_context.update(d)
- def sd_accessible(self):
+ def sdAccessible(self):
"""On peut acceder aux "valeurs" (jeveux) des ASSD dans
les macro-commandes qui sont localement en PAR_LOT="NON"
sauf pour INCLUDE.
"""
if CONTEXT.debug:
- print((' `- MACRO sd_accessible :', self.nom))
- return self.parent.sd_accessible() or not self.is_include()
+ print((' `- MACRO sdAccessible :', self.nom))
+ return self.parent.sdAccessible() or not self.isInclude()
nature = "MCBLOC"
- def __init__(self, val, definition, nom, parent):
+ def __init__(self, val, definition, nom, parent,dicoPyxbDeConstruction=None):
"""
Attributs :
- parent : le créateur du bloc. Ce peut etre un mot-clé facteur ou un autre objet composite de type
OBJECT. Si parent vaut None, le bloc ne possède pas de contexte englobant.
- - mc_liste : liste des sous-objets du bloc construite par appel à la méthode build_mc
+ - mcListe : liste des sous-objets du bloc construite par appel à la méthode buildMc
"""
+ #print ('MCBLOC' , val, definition, nom, parent)
self.definition = definition
self.nom = nom
self.val = val
self.parent = parent
self.valeur = val
+ self.objPyxbDeConstruction=None
+ self.dicoPyxbDeConstruction=dicoPyxbDeConstruction
if parent:
self.jdc = self.parent.jdc
self.niveau = self.parent.niveau
self.jdc = None
self.niveau = None
self.etape = None
- self.mc_liste = self.build_mc()
+ self.mcListe = self.buildMc()
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la "valeur" de l'objet bloc. Il s'agit d'un dictionnaire dont
- les clés seront les noms des objets de self.mc_liste et les valeurs
- les valeurs des objets de self.mc_liste obtenues par application de
- la méthode get_valeur.
+ les clés seront les noms des objets de self.mcListe et les valeurs
+ les valeurs des objets de self.mcListe obtenues par application de
+ la méthode getValeur.
Dans le cas particulier d'un objet bloc les éléments du dictionnaire
- obtenu par appel de la méthode get_valeur sont intégrés au niveau
+ obtenu par appel de la méthode getValeur sont intégrés au niveau
supérieur.
"""
dico = {}
- for mocle in self.mc_liste:
+ for mocle in self.mcListe:
if mocle.isBLOC():
# Si mocle est un BLOC, on inclut ses items dans le dictionnaire
# représentatif de la valeur de self. Les mots-clés fils de blocs sont
# donc remontés au niveau supérieur.
- dico.update(mocle.get_valeur())
+ dico.update(mocle.getValeur())
else:
- dico[mocle.nom] = mocle.get_valeur()
+ dico[mocle.nom] = mocle.getValeur()
# On rajoute tous les autres mots-clés locaux possibles avec la valeur
# par défaut ou None
"""
- def build_mc(self):
+ def buildMc(self):
"""
Construit la liste des sous-entites du MCCOMPO
à partir du dictionnaire des arguments (valeur)
"""
+
+ #import traceback
+ #traceback.print_stack()
+ #print(("MCCOMPO.buildMc _____________________________________", self.nom))
+ #print (self.dicoPyxbDeConstruction)
if CONTEXT.debug:
- print(("MCCOMPO.build_mc ", self.nom))
+ print(("MCCOMPO.buildMc ", self.nom))
# Dans la phase de reconstruction args peut contenir des mots-clés
# qui ne sont pas dans le dictionnaire des entites de definition (self.definition.entites)
# de l'objet courant (self)
# mais qui sont malgré tout des descendants de l'objet courant
# (petits-fils, ...)
args = self.valeur
- if args == None:
- args = {}
- mc_liste = []
+ if args == None: args = {}
+ mcListe = []
+
# On recopie le dictionnaire des arguments pour protéger l'original des
# delete (del args[k])
# 2- les entités non présentes dans les arguments, présentes dans la définition avec un défaut
# Phase 1.1 : on traite d'abord les SIMP pour enregistrer les mots cles
# globaux
+ # PN ligne suivante uniquement pour commodite
+ # a detruire quand cela fonctionne recursivement
+ if not hasattr(self, 'dicoPyxbDeConstruction') : self.dicoPyxbDeConstruction = {}
for k, v in list(self.definition.entites.items()):
if v.label != 'SIMP':
continue
# si une valeur existe dans args ou est obligatoire (generique si toutes les
# entites ont l attribut statut )
#
- objet = v(val=args.get(k, None), nom=k, parent=self)
- mc_liste.append(objet)
+ if self.dicoPyxbDeConstruction and k in self.dicoPyxbDeConstruction :
+ objPyxbDeConstruction=self.dicoPyxbDeConstruction[k]
+ del self.dicoPyxbDeConstruction[k]
+ else :
+ objPyxbDeConstruction=None
+ objet = v(val=args.get(k, None), nom=k, parent=self,objPyxbDeConstruction=objPyxbDeConstruction)
+ mcListe.append(objet)
# Si l'objet a une position globale on l'ajoute aux listes
# correspondantes
if hasattr(objet.definition, 'position'):
# si une valeur existe dans args ou est obligatoire (generique si toutes les
# entites ont l attribut statut )
#
- objet = v(val=args.get(k, None), nom=k, parent=self)
- mc_liste.append(objet)
+ if self.dicoPyxbDeConstruction and k in self.dicoPyxbDeConstruction :
+ dicoPyxbDeConstruction=self.dicoPyxbDeConstruction[k]
+ del self.dicoPyxbDeConstruction[k]
+ else :
+ dicoPyxbDeConstruction=None
+ objet = v(val=args.get(k, None), nom=k, parent=self,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
+ mcListe.append(objet)
if k in args:
del args[k]
# Phase 2:
# On construit les objets (en général, blocs) conditionnés par les mots-clés précédemment créés.
- # A ce stade, mc_liste ne contient que les fils de l'objet courant
+ # A ce stade, mcListe ne contient que les fils de l'objet courant
# args ne contient plus que des mots-clés qui n'ont pas été attribués car ils sont
# à attribuer à des blocs du niveau inférieur ou bien sont des mots-clés erronés
for k, v in list(self.definition.entites.items()):
#PNPN on recalcule dico_valeurs dans le for
# pour les globaux imbriques (exple Telemac Advection)
# avant le calcul etait avant le for
- dico_valeurs = self.cree_dict_condition(mc_liste, condition=1)
+ dico_valeurs = self.creeDictCondition(mcListe, condition=1)
globs = self.jdc and self.jdc.condition_context or {}
- if v.verif_presence(dico_valeurs, globs):
+ if v.verifPresence(dico_valeurs, globs):
# Si le bloc existe :
# 1- on le construit
- # 2- on l'ajoute à mc_liste
+ # 2- on l'ajoute à mcListe
# 3- on récupère les arguments restant
- # 4- on reconstruit le dictionnaire équivalent à mc_liste
- bloc = v(nom=k, val=args, parent=self)
- mc_liste.append(bloc)
+ # 4- on reconstruit le dictionnaire équivalent à mcListe
+ bloc = v(nom=k, val=args, parent=self,dicoPyxbDeConstruction=self.dicoPyxbDeConstruction)
+ mcListe.append(bloc)
args = bloc.reste_val
# On ne recalcule pas le contexte car on ne tient pas compte des blocs
# pour évaluer les conditions de présence des blocs
- # dico_valeurs = self.cree_dict_valeurs(mc_liste)
+ # dico_valeurs = self.creeDictValeurs(mcListe)
# On conserve les arguments superflus dans l'attribut reste_val
self.reste_val = args
# On ordonne la liste ainsi créée suivant l'ordre du catalogue
# (utile seulement pour IHM graphique)
- mc_liste = self.ordonne_liste(mc_liste)
+ mcListe = self.ordonneListe(mcListe)
# on retourne la liste ainsi construite
- return mc_liste
+ if self.jdc : self.cata=self.jdc.cata
+ else : self.cata = None
+ self.buildObjPyxb(mcListe)
+ #else : print ('pas de construction pour ', self.nom, self.objPyxbDeConstruction)
+ #print ('buildObjPyxb : ' , self.nom)
+ #print(("MCCOMPO.buildMc fin_____________________________________", self.nom))
+ return mcListe
- def ordonne_liste(self, mc_liste):
+ def ordonneListe(self, mcListe):
"""
Ordonne la liste suivant l'ordre du catalogue.
Seulement pour IHM graphique
"""
if self.jdc and self.jdc.cata_ordonne_dico != None:
- liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(
- self.get_genealogie(), self.jdc.cata_ordonne_dico)
- return self.ordonne_liste_mc(mc_liste, liste_noms_mc_ordonnee)
+ liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(
+ self.getGenealogie(), self.jdc.cata_ordonne_dico)
+ return self.ordonneListeMc(mcListe, liste_noms_mc_ordonnee)
else:
- return mc_liste
+ return mcListe
- def cree_dict_valeurs(self, liste=[], condition=0):
+ def creeDictValeurs(self, liste=[], condition=0):
"""
Cette méthode crée un contexte (sous la forme d'un dictionnaire)
à partir des valeurs des mots clés contenus dans l'argument liste.
- ajouter tous les mots-clés globaux (attribut position = 'global'
et 'global_jdc')
- L'argument liste est, en général, une mc_liste en cours de
+ L'argument liste est, en général, une mcListe en cours de
construction, contenant les mots-clés locaux et les blocs déjà créés.
"""
for v in liste:
if v.isBLOC():
# Si v est un BLOC, on inclut ses items dans le dictionnaire
- # représentatif du contexte. Les blocs sont retournés par get_valeur
+ # représentatif du contexte. Les blocs sont retournés par getValeur
# sous la forme d'un dictionnaire : les mots-clés fils de blocs sont
# donc remontés au niveau du contexte.
if not condition:
- dadd = v.get_valeur()
+ dadd = v.getValeur()
assert intersection_vide(dico, dadd)
dico.update(dadd)
else:
assert not v.nom in dico, "deja vu : %s" % v.nom
- dico[v.nom] = v.get_valeur()
+ dico[v.nom] = v.getValeur()
# On rajoute tous les autres mots-clés locaux possibles avec la valeur
# par défaut ou None
# valeur par défaut ou la valeur None
# On rajoute les mots-clés globaux sans écraser les clés existantes
- dico_mc = self.recherche_mc_globaux()
+ dico_mc = self.rechercheMcGlobaux()
dico_mc.update(dico)
dico = dico_mc
return dico
- def cree_dict_toutes_valeurs(self):
- """Semblable à `cree_dict_valeurs(liste=self.mc_liste)` en supprimant les
+ def creeDictToutesValeurs(self):
+ """Semblable à `creeDictValeurs(liste=self.mcListe)` en supprimant les
valeurs None."""
- dico = self.cree_dict_valeurs(self.mc_liste, condition=0)
+ dico = self.creeDictValeurs(self.mcListe, condition=0)
dico = dict([(k, v) for k, v in list(dico.items()) if v is not None])
return dico
- def cree_dict_condition(self, liste=[], condition=0):
+ def creeDictCondition(self, liste=[], condition=0):
"""
Methode pour construire un contexte qui servira dans l'évaluation
des conditions de présence de blocs. Si une commande a un concept
produit réutilisé, on ajoute la clé 'reuse'
"""
- dico = self.cree_dict_valeurs(liste, condition=1)
+ dico = self.creeDictValeurs(liste, condition=1)
# On ajoute la cle "reuse" pour les MCCOMPO qui ont un attribut reuse. A destination
# uniquement des commandes. Ne devrait pas etre dans cette classe mais
# dans une classe dérivée
dico['reuse'] = self.reuse
return dico
- def recherche_mc_globaux(self):
+ def rechercheMcGlobaux(self):
"""
Retourne la liste des mots-clés globaux de l'étape à laquelle appartient self
et des mots-clés globaux du jdc
"""
- etape = self.get_etape()
+ etape = self.getEtape()
if etape:
- dict_mc_globaux_fac = self.recherche_mc_globaux_facultatifs()
+ dict_mc_globaux_fac = self.rechercheMcGlobauxFacultatifs()
for k, v in list(etape.mc_globaux.items()):
- dict_mc_globaux_fac[k] = v.get_valeur()
+ dict_mc_globaux_fac[k] = v.getValeur()
if self.jdc:
for k, v in list(self.jdc.mc_globaux.items()):
- dict_mc_globaux_fac[k] = v.get_valeur()
+ dict_mc_globaux_fac[k] = v.getValeur()
return dict_mc_globaux_fac
else:
return {}
- def recherche_mc_globaux_facultatifs(self):
+ def rechercheMcGlobauxFacultatifs(self):
"""
Cette méthode interroge la définition de self et retourne la liste des mots-clés fils
directs de self de type 'global'.
position='global' n'est donc possible (et n'a de sens) qu'au plus haut niveau.
"""
dico = {}
- etape = self.get_etape()
+ etape = self.getEtape()
if not etape:
return {}
for k, v in list(etape.definition.entites.items()):
if v.statut == 'o':
continue
obj = v(val=None, nom=k, parent=etape)
- dico[k] = obj.get_valeur()
+ dico[k] = obj.getValeur()
return dico
def supprime(self):
etre correctement détruit par le garbage collector
"""
N_OBJECT.OBJECT.supprime(self)
- for child in self.mc_liste:
+ for child in self.mcListe:
child.supprime()
def __getitem__(self, key):
"""
Cette méthode retourne la valeur d'un sous mot-clé (key)
"""
- return self.get_mocle(key)
+ return self.getMocle(key)
- def get_mocle(self, key):
+ def getMocle(self, key):
"""
Retourne la valeur du sous mot-clé key
Ce sous mot-clé peut exister, avoir une valeur par defaut ou etre
dans un BLOC fils de self
"""
# on cherche dans les mots cles presents, le mot cle de nom key
- # s'il est là on retourne sa valeur (méthode get_val)
- for child in self.mc_liste:
+ # s'il est là on retourne sa valeur (méthode getVal)
+ for child in self.mcListe:
if child.nom == key:
- return child.get_valeur()
+ return child.getValeur()
# Si on n a pas trouve de mot cle present on retourne le defaut
# eventuel pour les mots cles accessibles dans la definition
# a ce niveau
# Si on a toujours rien trouve, on cherche dans les blocs presents
# On suppose que tous les blocs possibles ont ete crees meme ceux
# induits par un mot cle simple absent avec defaut (???)
- for mc in self.mc_liste:
+ for mc in self.mcListe:
if not mc.isBLOC():
continue
try:
- return mc.get_mocle(key)
+ return mc.getMocle(key)
except:
# On n a rien trouve dans ce bloc, on passe au suivant
pass
# On leve une exception
raise IndexError("Le mot cle %s n existe pas dans %s" % (key, self))
- def get_child(self, name, restreint='non'):
+ def getChild(self, name, restreint='non'):
"""
Retourne le fils de self de nom name ou None s'il n'existe pas
- Si restreint vaut oui : ne regarde que dans la mc_liste
+ Si restreint vaut oui : ne regarde que dans la mcListe
Si restreint vaut non : regarde aussi dans les entites possibles
avec defaut (Ce dernier cas n'est utilisé que dans le catalogue)
"""
- for v in self.mc_liste:
+ for v in self.mcListe:
if v.nom == name:
return v
if restreint == 'non':
"""
Ajoute le mot-clé mc à la liste des mots-clés globaux de l'étape
"""
- etape = self.get_etape()
+ etape = self.getEtape()
if etape:
nom = mc.nom
etape.mc_globaux[nom] = mc
# est acceptee
objet.valeur = copy(self.valeur)
objet.val = copy(self.val)
- objet.mc_liste = []
- for obj in self.mc_liste:
+ objet.mcListe = []
+ for obj in self.mcListe:
new_obj = obj.copy()
new_obj.reparent(objet)
- objet.mc_liste.append(new_obj)
+ objet.mcListe.append(new_obj)
return objet
def reparent(self, parent):
Cette methode sert a reinitialiser la parente de l'objet
"""
self.parent = parent
- self.jdc = parent.get_jdc_root()
+ self.jdc = parent.getJdcRoot()
self.etape = parent.etape
- for mocle in self.mc_liste:
+ for mocle in self.mcListe:
mocle.reparent(self)
- def get_sd_utilisees(self):
+ def getSd_utilisees(self):
"""
Retourne la liste des concepts qui sont utilisés à l'intérieur de self
( comme valorisation d'un MCS)
"""
l = []
- for child in self.mc_liste:
- l.extend(child.get_sd_utilisees())
+ for child in self.mcListe:
+ l.extend(child.getSd_utilisees())
return l
- def get_sd_mcs_utilisees(self):
+ def getSd_mcs_utilisees(self):
"""
Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
- Si aucune sd n'est utilisée, le dictionnaire est vide.
'MODELE': [<Cata.cata.modele instance at 0x941550c>] }
"""
dico = {}
- for child in self.mc_liste:
- daux = child.get_sd_mcs_utilisees()
+ for child in self.mcListe:
+ daux = child.getSd_mcs_utilisees()
for cle in daux:
dico[cle] = dico.get(cle, [])
dico[cle].extend(daux[cle])
return dico
- def get_mcs_with_co(self, co):
+ def getMcsWithCo(self, co):
"""
Cette methode retourne l'objet MCSIMP fils de self
qui a le concept co comme valeur.
instances de la classe CO
"""
l = []
- for child in self.mc_liste:
- l.extend(child.get_mcs_with_co(co))
+ for child in self.mcListe:
+ l.extend(child.getMcsWithCo(co))
return l
- def get_all_co(self):
+ def getAllCo(self):
"""
Cette methode retourne tous les concepts instances de CO
"""
l = []
- for child in self.mc_liste:
- l.extend(child.get_all_co())
+ for child in self.mcListe:
+ l.extend(child.getAllCo())
return l
"""
nature = "MCFACT"
- def __init__(self, val, definition, nom, parent):
+ def __init__(self, val, definition, nom, parent,dicoPyxbDeConstruction):
"""
Attributs :
- val : valeur du mot clé simple
- nom
- parent
"""
+ #print ('MCFACT', self, val, definition, nom, parent, objPyxbDeConstruction)
+ import traceback
+ #traceback.print_stack()
+ #if nom == 'experience' : print ('MCFACT', self, parent, dicoPyxbDeConstruction); exit()
+ self.dicoPyxbDeConstruction=dicoPyxbDeConstruction
+ if self.dicoPyxbDeConstruction :
+ self.objPyxbDeConstruction=self.dicoPyxbDeConstruction['objEnPyxb']
+ del self.dicoPyxbDeConstruction['objEnPyxb']
+ else :
+ self.objPyxbDeConstruction=None
self.definition = definition
self.nom = nom
self.val = val
self.jdc = None
self.niveau = None
self.etape = None
- self.mc_liste = self.build_mc()
+ self.mcListe = self.buildMc()
def GETVAL(self, val):
"""
else:
return val
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la "valeur" d'un mot-clé facteur qui est l'objet lui-meme.
Cette valeur est utilisée lors de la création d'un contexte
"""
return self
- def get_val(self):
+ def getVal(self):
"""
Une autre méthode qui retourne une "autre" valeur du mot clé facteur.
- Elle est utilisée par la méthode get_mocle
+ Elle est utilisée par la méthode getMocle
"""
return [self]
"""
if key == 0:
return self
- return self.get_mocle(key)
+ return self.getMocle(key)
def accept(self, visitor):
"""
nature = 'MCList'
def init(self, nom, parent):
+ self.objPyxbDeConstruction=None
self.definition = None
self.nom = nom
self.parent = parent
self.niveau = None
self.etape = None
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la "valeur" d'un objet MCList. Sert à construire
un contexte d'évaluation pour une expression Python.
"""
return self
- def get_val(self):
+ def getVal(self):
"""
Une autre méthode qui retourne une "autre" valeur d'une MCList
- Elle est utilisée par la méthode get_mocle
+ Elle est utilisée par la méthode getMocle
"""
return self
for child in self.data:
child.supprime()
- def get_child(self, name,restreint='non'):
+ def getChild(self, name,restreint='non'):
"""
Retourne le fils de nom name s'il est contenu dans self
Par défaut retourne le fils du premier de la liste
"""
obj = self.data[0]
# Phase 1 : on cherche dans les fils directs de obj
- for child in obj.mc_liste:
+ for child in obj.mcListe:
if child.nom == name:
return child
# Phase 2 : on cherche dans les blocs de self
- for child in obj.mc_liste:
+ for child in obj.mcListe:
if child.isBLOC():
- resu = child.get_child(name)
+ resu = child.getChild(name)
if resu != None:
return resu
# Phase 3 : on cherche dans les entites possibles pour les défauts
"""
visitor.visitMCList(self)
- def get_sd_utilisees(self):
+ def getSd_utilisees(self):
"""
Retourne la liste des concepts qui sont utilisés à l'intérieur de self
( comme valorisation d'un MCS)
"""
l = []
for child in self.data:
- l.extend(child.get_sd_utilisees())
+ l.extend(child.getSd_utilisees())
return l
- def get_sd_mcs_utilisees(self):
+ def getSd_mcs_utilisees(self):
"""
Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
- Si aucune sd n'est utilisée, le dictionnaire est vide.
"""
dico = {}
for child in self.data:
- daux = child.get_sd_mcs_utilisees()
+ daux = child.getSd_mcs_utilisees()
for cle in daux:
dico[cle] = dico.get(cle, [])
dico[cle].extend(daux[cle])
return dico
- def get_mcs_with_co(self, co):
+ def getMcsWithCo(self, co):
"""
Cette methode retourne l'objet MCSIMP fils de self
qui a le concept co comme valeur.
"""
l = []
for child in self.data:
- l.extend(child.get_mcs_with_co(co))
+ l.extend(child.getMcsWithCo(co))
return l
- def get_all_co(self):
+ def getAllCo(self):
"""
Cette methode retourne tous les concepts instances de CO
"""
l = []
for child in self.data:
- l.extend(child.get_all_co())
+ l.extend(child.getAllCo())
return l
def copy(self):
for mcfact in self.data:
mcfact.reparent(parent)
- def get_etape(self):
+ def getEtape(self):
"""
Retourne l'étape à laquelle appartient self
Un objet de la catégorie etape doit retourner self pour indiquer que
"""
if self.parent == None:
return None
- return self.parent.get_etape()
+ return self.parent.getEtape()
def __getitem__(self, key):
"""
Dans le cas d un mot cle facteur de longueur 1 on simule un scalaire
"""
if type(key) != int and len(self) == 1:
- return self.data[0].get_mocle(key)
+ return self.data[0].getMocle(key)
else:
return self.data[key]
"""
dresu = []
for mcf in self:
- dico = mcf.cree_dict_valeurs(mcf.mc_liste)
+ dico = mcf.creeDictValeurs(mcf.mcListe)
for i in list(dico.keys()):
if dico[i] == None:
del dico[i]
dresu.append(dico)
return dresu
+
+ def longueurDsArbre(self):
+ # pour Pyxb : longueur dans le orderedcontent de pyxb
+ return len(self)
from Noyau.N_CO import CO
from . import N_OBJECT
from .N_CONVERT import ConversionFactory
-from .N_types import force_list, is_sequence
+from .N_types import forceList, isSequence
class MCSIMP(N_OBJECT.OBJECT):
"""
nature = 'MCSIMP'
- def __init__(self, val, definition, nom, parent):
+ def __init__(self, val, definition, nom, parent,objPyxbDeConstruction):
"""
Attributs :
- valeur : valeur du mot-clé simple en tenant compte de la valeur par défaut
"""
+ #print ("MCSIMP, ------------------------")
+ #print (self, val, definition, nom, parent)
+ #print ("MCSIMP, ------------------------")
self.definition = definition
self.nom = nom
self.val = val
self.parent = parent
self.convProto = ConversionFactory('type', typ=self.definition.type)
self.valeur = self.GETVAL(self.val)
+ self.objPyxbDeConstruction=objPyxbDeConstruction
if parent:
- self.jdc = self.parent.jdc
+ self.jdc = self.parent.jdc
+ if self.jdc : self.cata = self.jdc.cata
+ else : self.cata = None
self.niveau = self.parent.niveau
self.etape = self.parent.etape
+ self.buildObjPyxb()
else:
# Le mot cle simple a été créé sans parent
+ # est-ce possible ?
+ print ('je suis dans le else sans parent du build')
self.jdc = None
+ self.cata = None
self.niveau = None
self.etape = None
val = self.convProto.convert(val)
return val
- def get_valeur(self):
+ def getValeur(self):
"""
Retourne la "valeur" d'un mot-clé simple.
Cette valeur est utilisée lors de la création d'un contexte
# par "not has_attr(v, '__iter__')".
if v is None:
pass
- elif is_sequence(v) and len(v) == 1 and self.definition.max == 1:
+ elif isSequence(v) and len(v) == 1 and self.definition.max == 1:
v = v[0]
- elif not is_sequence(v) and self.definition.max != 1:
+ elif not isSequence(v) and self.definition.max != 1:
v = (v, )
# traitement particulier pour les complexes ('RI', r, i)
if 'C' in self.definition.type and self.definition.max != 1 and v != None and v[0] in ('RI', 'MP'):
v = (v, )
return v
- def get_val(self):
+ def getVal(self):
"""
Une autre méthode qui retourne une "autre" valeur du mot clé simple.
- Elle est utilisée par la méthode get_mocle
+ Elle est utilisée par la méthode getMocle
"""
return self.valeur
self.jdc = parent.jdc
self.etape = parent.etape
- def get_sd_utilisees(self):
+ def getSd_utilisees(self):
"""
Retourne une liste qui contient la ou les SD utilisée par self si c'est le cas
ou alors une liste vide
l.append(val)
return l
- def get_sd_mcs_utilisees(self):
+ def getSd_mcs_utilisees(self):
"""
Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
- Si aucune sd n'est utilisée, le dictionnaire est vide.
{ 'VALE_F': [ <Cata.cata.fonction_sdaster instance at 0x9419854>,
<Cata.cata.fonction_sdaster instance at 0x941a204> ] }
"""
- l = self.get_sd_utilisees()
+ l = self.getSd_utilisees()
dico = {}
if len(l) > 0:
dico[self.nom] = l
return dico
- def get_mcs_with_co(self, co):
+ def getMcsWithCo(self, co):
"""
Cette methode retourne l'objet MCSIMP self s'il a le concept co
comme valeur.
"""
- if co in force_list(self.valeur):
+ if co in forceList(self.valeur):
return [self, ]
return []
- def get_all_co(self):
+ def getAllCo(self):
"""
Cette methode retourne la liste de tous les concepts co
associés au mot cle simple
"""
- return [co for co in force_list(self.valeur)
- if isinstance(co, CO) and co.is_typco()]
+ return [co for co in forceList(self.valeur)
+ if isinstance(co, CO) and co.isTypCO()]
"""
- def get_etape(self):
+ def getEtape(self):
"""
Retourne l'étape à laquelle appartient self
Un objet de la catégorie etape doit retourner self pour indiquer que
"""
if self.parent == None:
return None
- return self.parent.get_etape()
+ return self.parent.getEtape()
def supprime(self):
"""
self.jdc = None
self.niveau = None
- def get_val(self):
+ def getVal(self):
"""
Retourne la valeur de l'objet. Cette méthode fournit
une valeur par defaut. Elle doit etre dérivée pour chaque
"""
return self
- def isBLOC(self):
- """
- Indique si l'objet est un BLOC
- """
- return 0
- def get_jdc_root(self):
+ def getJdcRoot(self):
"""
Cette méthode doit retourner l'objet racine c'est à dire celui qui
n'a pas de parent
"""
if self.parent:
- return self.parent.get_jdc_root()
+ return self.parent.getJdcRoot()
else:
return self
self.parent = parent
self.jdc = parent.jdc
+ def isBLOC(self):
+ """
+ Indique si l'objet est un BLOC
+ surcharge dans MCBLOC
+ """
+ return 0
+
+ def longueurDsArbre(self):
+ return 1
+
class ErrorObj(OBJECT):
self.definition = definition
self.valeur = valeur
self.parent = parent
- self.mc_liste = []
+ self.mcListe = []
if parent:
self.jdc = self.parent.jdc
# self.niveau = self.parent.niveau
# self.niveau = None
# self.etape = None
- def isvalid(self, cr='non'):
+ def isValid(self, cr='non'):
return 0
def report(self):
self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
self.nom, self.valeur)
return self.cr
+
+
label = 'OPER'
nommage = nommage
- def __init__(self, nom, op, sd_prod, reentrant='n', repetable='o', fr="",ang="",
+ def __init__(self, nom, op=None, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",fenetreIhm=None,
docu="", regles=(), op_init=None, niveau = None, UIinfo=None, **args):
"""
Méthode d'initialisation de l'objet OPER. Les arguments sont utilisés pour initialiser
self.ang = ang
self.repetable = repetable
self.docu = docu
+ self.fenetreIhm= fenetreIhm
if type(regles) == tuple:
self.regles = regles
else:
# operateur sauf si == None
self.op_init = op_init
self.entites = args
- current_cata = CONTEXT.get_current_cata()
+ current_cata = CONTEXT.getCurrentCata()
if niveau == None:
self.niveau = None
current_cata.enregistre(self)
else:
- self.niveau = current_cata.get_niveau(niveau)
+ self.niveau = current_cata.getNiveau(niveau)
self.niveau.enregistre(self)
self.UIinfo = UIinfo
self.affecter_parente()
- self.check_definition(self.nom)
+ self.checkDefinition(self.nom)
def __call__(self, reuse=None, **args):
"""
Construit l'objet ETAPE a partir de sa definition (self),
puis demande la construction de ses sous-objets et du concept produit.
"""
- nomsd = self.nommage.GetNomConceptResultat(self.nom)
+ nomsd = self.nommage.getNomConceptResultat(self.nom)
etape = self.class_instance(oper=self, reuse=reuse, args=args)
- etape.McBuild()
- return etape.Build_sd(nomsd)
+ etape.MCBuild()
+ return etape.buildSd(nomsd)
def make_objet(self, mc_list='oui'):
"""
"""
etape = self.class_instance(oper=self, reuse=None, args={})
if mc_list == 'oui':
- etape.McBuild()
+ etape.MCBuild()
return etape
- def verif_cata(self):
+ def verifCata(self):
"""
Méthode de vérification des attributs de définition
"""
- self.check_regles()
- self.check_fr()
- self.check_reentrant()
- self.check_docu()
- self.check_nom()
- self.check_op(valmin=0)
- self.verif_cata_regles()
+ self.checkRegles()
+ self.checkFr()
+ self.checkReentrant()
+ self.checkDocu()
+ self.checkNom()
+ self.checkOp(valmin=0)
+ self.verifCataRegles()
def supprime(self):
"""
from builtins import object
except :
pass
-from .N_utils import import_object
+from .N_utils import importObject
class OPS(object):
def __call__(self, *args, **kwargs):
"""Import the real function and call it."""
- func = import_object(self.uri)
+ func = importObject(self.uri)
return func(*args, **kwargs)
rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement.
Si niveau vaut None, l'opérateur est rangé au niveau global.
+ - fenetreIhm : specification de la fenetre
+
- entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit
des entités de définition pour les mots-clés : FACT, BLOC, SIMP. Cet attribut
est initialisé avec args, c'est à dire les arguments d'appel restants.
class_instance = N_PROC_ETAPE.PROC_ETAPE
label = 'PROC'
- def __init__(self, nom, op=None, reentrant='n', repetable='o', fr="",ang="",
+ def __init__(self, nom, op=None, reentrant='n', repetable='o', fr="",ang="", fenetreIhm=None,
docu="", regles=(), op_init=None, niveau = None, UIinfo=None, **args):
"""
Méthode d'initialisation de l'objet PROC. Les arguments sont utilisés pour initialiser
les attributs de meme nom
"""
- self.nom = nom
- self.op = op
- self.reentrant = reentrant
- self.repetable = repetable
- self.fr = fr
+ self.nom = nom
+ self.op = op
+ self.reentrant = reentrant
+ self.repetable = repetable
+ self.fenetreIhm = fenetreIhm
+ self.fr = fr
#self.ang=""
- self.ang=ang
- self.docu = docu
+ self.ang = ang
+ self.docu = docu
if type(regles) == tuple:
self.regles = regles
else:
self.regles = (regles,)
# Attribut op_init : Fonction a appeler a la construction de l
# operateur sauf si == None
- self.op_init = op_init
- self.entites = args
- current_cata = CONTEXT.get_current_cata()
+ self.op_init = op_init
+ self.entites = args
+ current_cata = CONTEXT.getCurrentCata()
if niveau == None:
self.niveau = None
current_cata.enregistre(self)
else:
- self.niveau = current_cata.get_niveau(niveau)
+ self.niveau = current_cata.getNiveau(niveau)
self.niveau.enregistre(self)
self.UIinfo = UIinfo
self.affecter_parente()
- self.check_definition(self.nom)
+ self.checkDefinition(self.nom)
def __call__(self, **args):
"""
puis demande la construction de ses sous-objets et du concept produit.
"""
etape = self.class_instance(oper=self, args=args)
- etape.McBuild()
- return etape.Build_sd()
+ etape.MCBuild()
+ return etape.buildSd()
def make_objet(self, mc_list='oui'):
"""
"""
etape = self.class_instance(oper=self, args={})
if mc_list == 'oui':
- etape.McBuild()
+ etape.MCBuild()
return etape
- def verif_cata(self):
+ def verifCata(self):
"""
Méthode de vérification des attributs de définition
"""
- self.check_regles()
- self.check_fr()
- self.check_reentrant()
- self.check_docu()
- self.check_nom()
- self.check_op(valmin=0)
- self.verif_cata_regles()
+ self.checkRegles()
+ self.checkFr()
+ self.checkReentrant()
+ self.checkDocu()
+ self.checkNom()
+ self.checkOp(valmin=0)
+ self.verifCataRegles()
def supprime(self):
"""
N_ETAPE.ETAPE.__init__(self, oper, reuse=None, args=args, niveau=5)
self.reuse = None
- def Build_sd(self):
+ def buildSd(self):
"""
Cette methode applique la fonction op_init au contexte du parent
et lance l'exécution en cas de traitement commande par commande
Elle doit retourner le concept produit qui pour une PROC est toujours None
En cas d'erreur, elle leve une exception : AsException ou EOFError
"""
- if not self.isactif():
+ if not self.isActif():
return
try:
if self.parent:
"""
visitor.visitPROC_ETAPE(self)
- def update_context(self, d):
+ def updateContext(self, d):
"""
Met à jour le contexte de l'appelant passé en argument (d)
Une PROC_ETAPE n ajoute pas directement de concept dans le contexte
"""
raise NotImplementedError('class REGLE should be derived')
- def liste_to_dico(self, args):
+ def listeToDico(self, args):
"""
Cette méthode est utilitaire pour les seuls besoins
des classes dérivées.
self._modes = { 'ENSEMBLE' : 0, 'SEPARE' : 1 }
self.mode = self._modes.get(mode, self._modes['ENSEMBLE'])
- def gettext(self):
+ def getText(self):
"""Pour EFICAS
"""
return ''
if not type(valeur) in (list, tuple):
valeur = [valeur,]
for v in valeur:
- if not v.get_name() in etape.sd.sensi:
- etape.sd.sensi[v.get_name()] = id_etape
+ if not v.getName() in etape.sd.sensi:
+ etape.sd.sensi[v.getName()] = id_etape
return '', 1
REGLE.__init__(self)
self.mocle = mocle
- def gettext(self):
+ def getText(self):
"""Pour EFICAS
"""
return ''
REGLE.__init__(self)
self.mocle = mocle
- def gettext(self):
+ def getText(self):
"""Pour EFICAS
"""
return ''
from __future__ import absolute_import
import types
-from . import N_ENTITE
-from . import N_MCSIMP
+from Noyau import N_ENTITE
+from Noyau import N_MCSIMP
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):
+ sug=None,fenetreIhm=None):
"""
Un mot-clé simple est caractérisé par les attributs suivants :
- type : cet attribut est obligatoire et indique le type de valeur attendue
- defaut : valeur par défaut
- min : nombre minimal de valeurs
- max : nombre maximal de valeurs
- - homo : ?
+ - homo : un certatin nb de choses qui il faut redispacher ailleurs (information, constant)
- ang : doc
- position : si global, le mot-clé peut-être lu n'importe où dans la commande
- val_min : valeur minimale autorisée
- val_max : valeur maximale autorisée
- - docu : ?
- - sug : ?
+ - docu : clef sur de la documentation utilisateur
+ - sug : valeur suggere
+ - fenetreIhm=None
"""
+ #print (self)
+ #import traceback
+ #traceback.print_stack()
+ #print (self)
N_ENTITE.ENTITE.__init__(self, validators)
# Initialisation des attributs
if type(typ) == tuple:
if self.val_max == '**' : self.val_max = float('inf')
if self.min == '**' : self.min = float('-inf')
if self.val_min == '**' : self.val_min = float('-inf')
+ self.fenetreIhm=fenetreIhm
+ #self.creeT_SIMP()
- def verif_cata(self):
+ def verifCata(self):
"""
Cette methode sert à valider les attributs de l'objet de définition
de la classe SIMP
"""
- self.check_min_max()
- self.check_fr()
- self.check_statut()
- self.check_homo()
- self.check_into()
- self.check_position()
- self.check_validators()
-
- def __call__(self, val, nom, parent=None):
+ self.checkMinMax()
+ self.checkFr()
+ self.checkStatut()
+ self.checkHomo()
+ self.checkInto()
+ self.checkPosition()
+ self.checkValidators()
+
+ def __call__(self, val, nom, parent=None, objPyxbDeConstruction = None):
"""
Construit un objet mot cle simple (MCSIMP) a partir de sa definition (self)
de sa valeur (val), de son nom (nom) et de son parent dans l arboresence (parent)
"""
- return self.class_instance(nom=nom, definition=self, val=val, parent=parent)
+ return self.class_instance(nom=nom, definition=self, val=val, parent=parent, objPyxbDeConstruction=objPyxbDeConstruction)
+
+# def creeT_SIMP(self):
+# from Efi2Xsd.readerEfficas import monSIMP
+# from Efi2Xsd.mapDesTypes import dictSIMPEficasXML
+# self.objXML=monSIMP()
+# for nomEficasArg in dictSIMPEficasXML :
+# argu=getattr(self,nomEficasArg)
+# nomXMLarg=dictSIMPEficasXML[nomEficasArg]
+# if not isinstance(nomXMLarg, (list, tuple)) :
+# print(nomXMLarg, argu)
+ #if nomEficasArg in listeParamDeTypeTypeAttendu:
+ # typeAttendu = self.typ
+#
+# setattr(self.objXML, nomXMLarg, argu)
+
+
+
+# for nomXMLArg in dir(self) :
+# if nomXMLArg in self.dictATraiter :
+# nomEficasArg=self.dictATraiter[nomXMLArg]
+# argu=getattr(self,nomXMLArg)
+# if argu==None : continue
+#
+# if type(nomEficasArg) == types.DictionaryType:
+# for nomXML in list(nomEficasArg.keys()):
+# arguDecoupe=getattr(argu,nomXML)
+# nomEficasDecoupe=nomEficasArg[nomXML]
+# if arguDecoupe == None : continue
+# self.dictArgsEficas[nomEficasDecoupe]=arguDecoupe
+# else :
+# self.dictArgsEficas[nomEficasArg] = argu
+#
+#
+#
+#
+#
import traceback
import re
from .N_ASSD import ASSD
-from .N_types import is_int, is_float_or_int, is_complex, is_number, is_str, is_sequence
+from .N_types import isInt, isFloat_or_int, isComplex, isNumber, isStr, isSequence
from Extensions.i18n import tr
import six
from six.moves import range
elif obj == None:
# pas de valeur affecte. La cardinalite vaut 0
return obj
- elif is_str(obj):
+ elif isStr(obj):
# il s'agit d'une chaine. La cardinalite vaut 1
return (obj,)
else:
err = ""
for type_permis in typ:
if type_permis == 'R':
- if is_float_or_int(obj):
+ if isFloat_or_int(obj):
return obj
elif type_permis == 'I':
- if is_int(obj):
+ if isInt(obj):
return obj
elif type_permis == 'C':
- if self.is_complexe(obj):
+ if self.isComplexe(obj):
return obj
elif type_permis == 'TXM':
- if is_str(obj):
+ if isStr(obj):
return obj
elif type_permis == 'shell':
- if is_str(obj):
+ if isStr(obj):
return obj
elif type_permis == 'Fichier':
import os
raise ValError( "%s n'est pas un fichier ou un repertoire valide" % repr(obj))
elif type(type_permis) == type or isinstance(type_permis, type):
try:
- if self.is_object_from(obj, type_permis):
+ if self.isObjectFrom(obj, type_permis):
return obj
except Exception as err:
pass
raise ValError(
tr("%s (de type %s) n'est pas d'un type autorise: %s %s") % (repr(obj), type(obj), typ, err))
- def is_complexe(self, valeur):
+ def isComplexe(self, valeur):
""" Retourne 1 si valeur est un complexe, 0 sinon """
- if is_number(valeur):
+ if isNumber(valeur):
# Pour permettre l'utilisation de complexes Python (accepte les
# entiers et réels)
return 1
else:
return 0
- def is_object_from(self, objet, classe):
+ def isObjectFrom(self, objet, classe):
"""
Retourne 1 si objet est une instance de la classe classe, 0 sinon
"""
else:
# on est dans le cas d'un ensemble continu de valeurs possibles
# (intervalle)
- if is_float_or_int(obj):
+ if isFloat_or_int(obj):
if val_min == '**':
val_min = obj - 1
if val_max == '**':
self.max = max
def __convert__(self, valeur):
- if is_str(valeur) and self.min <= len(valeur) <= self.max: return valeur
+ if isStr(valeur) and self.min <= len(valeur) <= self.max: return valeur
raise ValError(
"%s n'est pas une chaine de longueur comprise entre %s et %s" % (valeur, self.min, self.max))
"""
return self.info()
- def info_erreur_item(self):
+ def infoErreurItem(self):
"""
Cette méthode permet d'avoir un message d'erreur pour un item
dans une liste dans le cas ou le validateur fait des vérifications
"""
return " "
- def info_erreur_liste(self):
+ def infoErreurListe(self):
"""
Cette méthode a un comportement complémentaire de celui de
- info_erreur_item. Elle retourne un message d'erreur lié uniquement
+ infoErreurItem. Elle retourne un message d'erreur lié uniquement
aux vérifications sur la liste elle meme et pas sur ses items.
Dans le cas où le validateur ne fait pas de vérification sur des
listes, elle retourne une chaine vide
"""
raise NotImplementedError("Must be implemented")
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
"""
La methode verif du validateur effectue une validation complete de
la valeur. valeur peut etre un scalaire ou une liste. Le validateur
doit traiter les 2 aspects s'il accepte des listes (dans ce cas la
- methode is_list doit retourner 1).
+ methode isList doit retourner 1).
La methode valid_item sert pour effectuer des validations partielles
de liste. Elle doit uniquement verifier la validite d'un item de
liste mais pas les caracteristiques de la liste.
"""
return 0
- def valide_liste_partielle(self, liste_courante):
+ def valideListePartielle(self, liste_courante):
"""
Cette methode retourne un entier qui indique si liste_courante est partiellement valide (valeur 1)
ou invalide (valeur 0). La validation partielle concerne les listes en cours de construction : on
"""
return self.verif(liste_courante)
- def verif_cata(self):
+ def verifCata(self):
"""
Cette methode sert a realiser des verifications du validateur lui meme.
Elle est facultative et retourne 1 (valide) par defaut.
"""
return 1
- def is_list(self):
+ def isList(self):
"""
Cette méthode retourne un entier qui indique si le validateur
permet les listes (valeur 1) ou ne les permet pas (valeur 0).
"""
return 0
- def has_into(self):
+ def hasInto(self):
"""
Cette méthode retourne un entier qui indique si le validateur
propose une liste de choix (valeur 1) ou n'en propose pas.
"""
return 0
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
Cette méthode retourne la liste de choix proposée par le validateur.
Si le validateur ne propose pas de liste de choix, la méthode
retourne None.
L'argument d'entrée liste_courante, s'il est différent de None, donne
la liste des choix déjà effectués par l'utilisateur. Dans ce cas, la
- méthode get_into doit calculer la liste des choix en en tenant
+ méthode getInto doit calculer la liste des choix en en tenant
compte. Par exemple, si le validateur n'autorise pas les répétitions,
la liste des choix retournée ne doit pas contenir les choix déjà
contenus dans liste_courante.
L'argument d'entrée into_courant, s'il est différent de None, donne
la liste des choix proposés par d'autres validateurs. Dans ce cas,
- la méthode get_into doit calculer la liste des choix à retourner
+ la méthode getInto doit calculer la liste des choix à retourner
en se limitant à cette liste initiale. Par exemple, si into_courant
vaut (1,2,3) et que le validateur propose la liste de choix (3,4,5),
la méthode ne doit retourner que (3,).
- La méthode get_into peut retourner une liste vide [], ce qui veut
+ La méthode getInto peut retourner une liste vide [], ce qui veut
dire qu'il n'y a pas (ou plus) de choix possible. Cette situation
peut etre normale : l''utilisateur a utilisé tous les choix, ou
résulter d'une incohérence des validateurs :
des listes.
"""
- def is_list(self):
+ def isList(self):
return 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
- Cette méthode get_into effectue un traitement général qui consiste
+ Cette méthode getInto effectue un traitement général qui consiste
a filtrer la liste de choix into_courant, si elle existe, en ne
conservant que les valeurs valides (appel de la méthode valid).
"""
def convert(self, valeur):
"""
Méthode convert pour les validateurs de listes. Cette méthode
- fait appel à la méthode convert_item sur chaque élément de la
+ fait appel à la méthode convertItem sur chaque élément de la
liste.
"""
- if is_sequence(valeur):
+ if isSequence(valeur):
for val in valeur:
- self.convert_item(val)
+ self.convertItem(val)
return valeur
else:
- return self.convert_item(valeur)
+ return self.convertItem(valeur)
def verif(self, valeur):
"""
Méthode verif pour les validateurs de listes. Cette méthode
- fait appel à la méthode verif_item sur chaque élément de la
+ fait appel à la méthode verifItem sur chaque élément de la
liste. Si valeur est un paramètre, on utilise sa valeur effective
valeur.valeur.
"""
- if is_sequence(valeur):
+ if isSequence(valeur):
for val in valeur:
- if not self.verif_item(val):
+ if not self.verifItem(val):
return 0
return 1
else:
- return self.verif_item(valeur)
+ return self.verifItem(valeur)
class Compulsory(ListVal):
registry = {}
def __init__(self, elem=()):
- if not is_sequence(elem):
+ if not isSequence(elem):
elem = (elem,)
Valid.__init__(self, elem=elem)
self.elem = elem
def default(self, valeur, elem):
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def convert(self, valeur):
tr("%s ne contient pas les elements obligatoires : %s ") % (valeur, elem))
return valeur
- def has_into(self):
+ def hasInto(self):
return 1
def verif(self, valeur):
- if not is_sequence(valeur):
+ if not isSequence(valeur):
liste = list(valeur)
else:
liste = valeur
return 0
return 1
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("La valeur n'est pas dans la liste des choix possibles")
registry = {}
def __init__(self, elem=()):
- if not is_sequence(elem):
+ if not isSequence(elem):
elem = (elem,)
Valid.__init__(self, elem=elem)
self.elem = elem
def default(self, valeur, elem):
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def convert(self, valeur):
raise ValError(tr("%s ne contient pas les elements devant etre presents ensemble: %s ") %( valeur, elem))
return valeur
- def has_into(self):
+ def hasInto(self):
return 1
def verif(self, valeur):
- if not is_sequence(valeur):
+ if not isSequence(valeur):
liste = list(valeur)
else:
liste = valeur
if ( compte != len( list(self.elem) ) ): return 0
return 1
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("La valeur n'est pas dans la liste des choix possibles")
registry = {}
def __init__(self, elem=()):
- if not is_sequence(elem):
+ if not isSequence(elem):
elem = (elem,)
Valid.__init__(self, elem=elem)
self.elem = elem
def default(self, valeur, elem):
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def convert(self, valeur):
raise ValError(tr("%s n'est pas autorise : %s ")% (v, elem))
return valeur
- def has_into(self):
+ def hasInto(self):
return 1
def verif(self, valeur):
- if not is_sequence(valeur):
+ if not isSequence(valeur):
liste = list(valeur)
else:
liste = valeur
if val in liste: return 0
return 1
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("La valeur n'est pas dans la liste des choix possibles")
def info(self):
return tr("Pas de doublon dans la liste")
- def info_erreur_liste(self):
+ def infoErreurListe(self):
return tr("Les doublons ne sont pas permis")
def default(self, valeur):
self.liste.append(v)
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def verif(self, valeur):
- if is_sequence(valeur):
+ if isSequence(valeur):
liste = list(valeur)
for val in liste:
if liste.count(val) != 1:
else:
return 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
- Methode get_into spécifique pour validateur NoRepeat, on retourne
+ Methode getInto spécifique pour validateur NoRepeat, on retourne
une liste de choix qui ne contient aucune valeur de into_courant
déjà contenue dans liste_courante
"""
def info(self):
return (tr("longueur de la chaine entre %s et %s") %( self.low, self.high))
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("Longueur de la chaine incorrecte")
def convert(self, valeur):
v = self.adapt(val)
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
try:
self.adapt(valeur)
return 1
return 0
def default(self, valeur, low, high):
- if not is_str(valeur):
+ if not isStr(valeur):
raise ValError ("%s n'est pas une chaine" % repr(valeur))
if valeur[0] == "'" and valeur[-1] == "'":
low = low + 2
def info(self):
return tr("regarde si c'est une chaine")
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("Ce n'est pas une chaine")
def convert(self, valeur):
v = self.adapt(val)
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
try:
self.adapt(valeur)
return 1
return 0
def default(self, valeur):
- if not is_str(valeur):
+ if not isStr(valeur):
raise ValError (tr("%s n'est pas une chaine") % repr(valeur))
return valeur
def info(self):
return ("liste %s" % self.ord)
- def info_erreur_liste(self):
+ def infoErreurListe(self):
return (tr("La liste doit etre en ordre %s") % self.ord)
def convert(self, valeur):
self.val = valeur
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
- Methode get_into spécifique pour validateur OrdList, on retourne
+ Methode getInto spécifique pour validateur OrdList, on retourne
une liste de choix qui ne contient aucune valeur de into_courant
dont la valeur est inférieure à la dernière valeur de
liste_courante, si elle est différente de None.
"""
def __init__(self, validators=()):
- if not is_sequence(validators):
+ if not isSequence(validators):
validators = (validators,)
self.validators = []
for validator in validators:
pass
raise ValError(tr("%s n'est pas du bon type")% repr(valeur))
- def info_erreur_item(self):
+ def infoErreurItem(self):
l = []
for v in self.validators:
- err = v.info_erreur_item()
+ err = v.infoErreurItem()
if err != " ":
l.append(err)
chaine = " \n ou ".join(l)
return chaine
- def info_erreur_liste(self):
+ def infoErreurListe(self):
l = []
for v in self.validators:
- err = v.info_erreur_liste()
+ err = v.infoErreurListe()
if err != " ":
l.append(err)
chaine = " \n ou ".join(l)
return chaine
- def is_list(self):
+ def isList(self):
"""
Si plusieurs validateurs sont reliés par un OU
il suffit qu'un seul des validateurs attende une liste
pour qu'on considère que leur union attend une liste.
"""
for validator in self.validators:
- v = validator.is_list()
+ v = validator.isList()
if v:
return 1
return 0
return 1
return 0
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
for validator in self.validators:
- v = validator.verif_item(valeur)
+ v = validator.verifItem(valeur)
if v:
return 1
return 0
- def verif_cata(self):
+ def verifCata(self):
infos = []
for validator in self.validators:
- v = validator.verif_cata()
+ v = validator.verifCata()
if not v:
infos.append(validator.cata_info)
if infos:
self.cata_info = ""
return 1
- def has_into(self):
+ def hasInto(self):
"""
Dans le cas ou plusieurs validateurs sont reliés par un OU
il faut que tous les validateurs proposent un choix pour
En revanche, Enum(1,2,3) OU Enum(4,5,6) propose un choix (1,2,3,4,5,6)
"""
for validator in self.validators:
- v = validator.has_into()
+ v = validator.hasInto()
if not v:
return 0
return 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
Dans le cas ou plusieurs validateurs sont reliés par un OU
tous les validateurs doivent proposer un choix pour
"""
validator_into = []
for validator in self.validators:
- v_into = validator.get_into(liste_courante, into_courant)
+ v_into = validator.getInto(liste_courante, into_courant)
if v_into is None:
return v_into
validator_into.extend(v_into)
return validator_into
- def valide_liste_partielle(self, liste_courante=None):
+ def valideListePartielle(self, liste_courante=None):
"""
Méthode de validation de liste partielle pour le validateur Or.
Si un des validateurs gérés par le validateur Or considère la
liste comme valide, le validateur Or la considère comme valide.
"""
for validator in self.validators:
- v = validator.valide_liste_partielle(liste_courante)
+ v = validator.valideListePartielle(liste_courante)
if v:
return 1
return 0
"""
def __init__(self, validators=()):
- if not is_sequence(validators):
+ if not isSequence(validators):
validators = (validators,)
self.validators = []
for validator in validators:
valeur = validator.convert(valeur)
return valeur
- def info_erreur_item(self):
+ def infoErreurItem(self):
chaine = ""
a = 1
for v in self.validators:
- if v.info_erreur_item() != " ":
+ if v.infoErreurItem() != " ":
if a == 1:
- chaine = v.info_erreur_item()
+ chaine = v.infoErreurItem()
a = 0
else:
- chaine = chaine + " \n et " + v.info_erreur_item()
+ chaine = chaine + " \n et " + v.infoErreurItem()
return chaine
- def info_erreur_liste(self):
+ def infoErreurListe(self):
chaine=""
a = 1
for v in self.validators:
- if v.info_erreur_liste() != " ":
+ if v.infoErreurListe() != " ":
if a == 1:
- chaine = v.info_erreur_liste()
+ chaine = v.infoErreurListe()
a = 0
else:
- chaine = chaine + " \n et " + v.info_erreur_liste()
+ chaine = chaine + " \n et " + v.infoErreurListe()
return chaine
def verif(self, valeur):
return 0
return 1
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
for validator in self.validators:
- v = validator.verif_item(valeur)
+ v = validator.verifItem(valeur)
if not v:
# L'info n'est probablement pas la meme que pour verif ???
self.local_info = validator.info()
return 0
return 1
- def verif_cata(self):
+ def verifCata(self):
infos = []
for validator in self.validators:
- v = validator.verif_cata()
+ v = validator.verifCata()
if not v:
infos.append(validator.cata_info)
if infos:
self.cata_info = ""
return 1
- def valide_liste_partielle(self, liste_courante=None):
+ def valideListePartielle(self, liste_courante=None):
"""
Méthode de validation de liste partielle pour le validateur And.
Tous les validateurs gérés par le validateur And doivent considérer
comme valide.
"""
for validator in self.validators:
- v = validator.valide_liste_partielle(liste_courante)
+ v = validator.valideListePartielle(liste_courante)
if not v:
return 0
return 1
- def is_list(self):
+ def isList(self):
"""
Si plusieurs validateurs sont reliés par un ET
il faut que tous les validateurs attendent une liste
Range(2,5) ET Pair attend une liste
"""
for validator in self.validators:
- v = validator.is_list()
+ v = validator.isList()
if v == 0:
return 0
return 1
- def has_into(self):
+ def hasInto(self):
"""
Dans le cas ou plusieurs validateurs sont reliés par un ET
il suffit qu'un seul validateur propose un choix pour
En revanche, entier pair ET superieur à 10 ne propose pas de choix
"""
for validator in self.validators:
- v = validator.has_into()
+ v = validator.hasInto()
if v:
return 1
return 0
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
"""
Dans le cas ou plusieurs validateurs sont reliés par un ET
il suffit qu'un seul validateur propose un choix pour
En revanche, Enum(1,2,3) ET Enum(4,5,6) ne propose pas de choix.
"""
for validator in self.validators:
- into_courant = validator.get_into(liste_courante, into_courant)
+ into_courant = validator.getInto(liste_courante, into_courant)
if into_courant in ([], None):
break
return into_courant
def info(self):
return (tr("valeur dans l'intervalle %s , %s") %( self.low, self.high))
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
if valeur > self.low and valeur < self.high:
return valeur
raise ValError(tr("%s devrait etre comprise entre %s et %s") % (valeur, self.low, self.high))
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return valeur > self.low and valeur < self.high
- def info_erreur_item(self):
+ def infoErreurItem(self):
return (tr("la valeur %s doit etre comprise entre %s et %s") % (valeur, self.low, self.high))
- def verif_cata(self):
+ def verifCata(self):
if self.low > self.high:
return 0
return 1
def info(self):
return (tr("longueur de liste comprise entre %s et %s") %(self.min, self.max))
- def info_erreur_liste(self):
+ def infoErreurListe(self):
return (tr("Le cardinal de la liste doit etre compris entre %s et %s") % (self.min, self.max))
- def is_list(self):
+ def isList(self):
return self.max == '**' or self.max > 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
if into_courant is None:
return None
elif liste_courante is None:
return []
def convert(self, valeur):
- if is_sequence(valeur):
+ if isSequence(valeur):
l = len(valeur)
elif valeur is None:
l = 0
tr("%s devrait etre de longueur superieure a %s") % (valeur, self.min))
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def verif(self, valeur):
- if is_sequence(valeur):
+ if isSequence(valeur):
if self.max != '**' and len(valeur) > self.max:
return 0
if self.min != '**' and len(valeur) < self.min:
return 0
return 1
- def verif_cata(self):
+ def verifCata(self):
if self.min != '**' and self.max != '**' and self.min > self.max:
return 0
return 1
- def valide_liste_partielle(self, liste_courante=None):
+ def valideListePartielle(self, liste_courante=None):
validite = 1
if liste_courante != None:
if len(liste_courante) > self.max:
def info(self):
return _(u"valeur paire")
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("La valeur saisie doit etre paire")
def convert(self, valeur):
def default(self, valeur):
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
if type(valeur) not in six.integer_types:
return 0
return valeur % 2 == 0
def verif(self, valeur):
- if is_sequence(valeur):
+ if isSequence(valeur):
for val in valeur:
if val % 2 != 0:
return 0
"""
def __init__(self, into=()):
- if not is_sequence(into):
+ if not isSequence(into):
into = (into,)
self.into = into
self.cata_info = ""
def info(self):
return ("valeur dans %s" % self.into)
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
if valeur in self.into:
return valeur
raise ValError(
tr("%s contient des valeurs hors des choix possibles: %s ") % (valeur, self.into))
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
if valeur not in self.into:
return 0
return 1
- def has_into(self):
+ def hasInto(self):
return 1
- def get_into(self, liste_courante=None, into_courant=None):
+ def getInto(self, liste_courante=None, into_courant=None):
if into_courant is None:
liste_choix = list(self.into)
else:
liste_choix.append(e)
return liste_choix
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr("La valeur n'est pas dans la liste des choix possibles")
Cette fonction est un validateur. Elle verifie que la valeur passee
est bien un nombre impair.
"""
- if is_sequence(valeur):
+ if isSequence(valeur):
for val in valeur:
if val % 2 != 1:
return 0
return (tr("valeur %s pour la somme des cles A et B ") % self.somme)
def verif(self, valeur):
- if is_sequence(valeur):
+ if isSequence(valeur):
for val in valeur:
if not "A" in val:
return 0
def info(self):
return self.function.info
- def info_erreur_item(self):
+ def infoErreurItem(self):
return self.function.info
def verif(self, valeur):
return self.function(valeur)
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return self.function(valeur)
def convert(self, valeur):
return value
raise ValError
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
return self.coerce(valeur)
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
try:
self.coerce(valeur)
except:
def info(self):
return (tr("valeur d'instance de %s") % self.aClass.__name__)
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
if not isinstance(valeur, self.aClass):
return 0
return 1
self.cata_info = ""
def info(self):
- return tr(": verifie les types dans un tuple")
+ return tr(": verifie les \ntypes dans un tuple")
- def info_erreur_liste(self):
+ def infoErreurListe(self):
return tr("Les types entres ne sont pas permis")
def default(self, valeur):
return valeur
- def is_list(self):
+ def isList(self):
return 1
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
if len(valeur) != len(self.typeDesTuples):
raise ValError(
tr("%s devrait etre de type %s ") %( valeur, self.typeDesTuples))
tr("%s devrait etre de type %s ") % (valeur, self.typeDesTuples))
return valeur
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
try:
if len(valeur) != len(self.typeDesTuples):
return 0
if type(valeur) in (int, int):
return 1
elif type_permis == 'C':
- if self.is_complexe(valeur):
+ if self.isComplexe(valeur):
return 1
elif type_permis == 'TXM':
if type(valeur) == bytes:
if type(valeur) in (list, tuple):
liste = list(valeur)
for val in liste:
- if self.verif_item(val) != 1:
+ if self.verifItem(val) != 1:
return 0
return 1
self.niveauVerif = niveauVerif
self.MCSimp = None
self.listeDesFreres = ()
- self.fonctions = ('verifie_liste', 'set_MCSimp')
+ self.fonctions = ('verifieListe', 'set_MCSimp')
- def is_list(self):
+ def isList(self):
return 1
- def verifie_liste(self, liste):
+ def verifieListe(self, liste):
self.set_MCSimp(self.MCSimp)
for item in liste:
if not(item in self.listeDesFreres):
return 0
return 1
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
self.set_MCSimp(self.MCSimp)
if valeur in self.listeDesFreres:
return 1
k = k - 1
# on met la liste à jour
parent.forceRecalcul = self.niveauVerif
- self.listeDesFreres = parent.liste_mc_presents()
+ self.listeDesFreres = parent.listeMcPresents()
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
if valeur in self.listeDesFreres:
return valeur
raise ValError(
def info(self):
return tr('Une chaîne correspondant au motif ') + str(self.pattern) + tr(" est attendue")
- def info_erreur_item(self):
+ def infoErreurItem(self):
return tr('Une chaîne correspondant au motif ') + str(self.pattern) + tr(" est attendue")
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
if self.compiled_regexp.match(valeur):
return 1
else:
return (0, self.errormsg % {"value": valeur, "pattern": self.pattern})
- def convert_item(self, valeur):
+ def convertItem(self, valeur):
if self.compiled_regexp.match(valeur):
return valeur
else:
def info(self):
return ('Un nom de fichier se terminant par ".%s" est attendu.' % self.ext)
- def info_erreur_item(self):
+ def infoErreurItem(self):
return ('Un nom de fichier se terminant par ".%s" est attendu.' % self.ext)
class CreeMotClef(object):
if hasattr(parent, 'inhibeValidator') and parent.inhibeValidator: return lval
- if parent.get_child(self.MotClef) == None : longueur=0
- else : longueur=len(parent.get_child(self.MotClef))
+ if parent.getChild(self.MotClef) == None : longueur=0
+ else : longueur=len(parent.getChild(self.MotClef))
- pos=parent.get_index_child(self.MCSimp.nom)+1
+ pos=parent.getIndexChild(self.MCSimp.nom)+1
while longueur < valeur :
parent.inhibeValidator=1
- parent.addentite(self.MotClef,pos)
+ parent.addEntite(self.MotClef,pos)
pos=pos+1
parent.inhibeValidator=0
- longueur=len(parent.get_child(self.MotClef))
+ longueur=len(parent.getChild(self.MotClef))
if longueur > valeur :
parent.inhibeValide=1
- parentObj=parent.get_child(self.MotClef)
- obj=parent.get_child(self.MotClef)[-1]
- parentObj.suppentite(obj)
- longueur=len(parent.get_child(self.MotClef))
+ parentObj=parent.getChild(self.MotClef)
+ obj=parent.getChild(self.MotClef)[-1]
+ parentObj.suppEntite(obj)
+ longueur=len(parent.getChild(self.MotClef))
parent.inhibeValide=0
return lval
def info(self):
return "Cree le bon nombre de Mot %s" % self.MotClef
- def verif_item(self, valeur):
+ def verifItem(self, valeur):
return 1
def set_MCSimp(self, MCSimp):
# inherit from python scalars but are numpy.float64 or numpy.int32...
-def is_int(obj):
+def isInt(obj):
return isinstance(obj, int) or type(obj) is int
-def is_float(obj):
+def isFloat(obj):
return isinstance(obj, float)
-def is_complex(obj):
+def isComplex(obj):
return isinstance(obj, complex)
from decimal import Decimal
-def is_float_or_int(obj):
- return is_float(obj) or is_int(obj) or isinstance(obj, Decimal)
+def isFloat_or_int(obj):
+ return isFloat(obj) or isInt(obj) or isinstance(obj, Decimal)
-def is_number(obj):
- return is_float_or_int(obj) or is_complex(obj)
+def isNumber(obj):
+ return isFloat_or_int(obj) or isComplex(obj)
-def is_str(obj):
+def isStr(obj):
return isinstance(obj, (str, six.text_type))
-def is_list(obj):
+def isList(obj):
return type(obj) is list
-def is_tuple(obj):
+def isTuple(obj):
return type(obj) is tuple
-def is_array(obj):
+def isArray(obj):
"""a numpy array ?"""
return type(obj) is _np_arr
-def is_sequence(obj):
+def isSequence(obj):
"""a sequence (allow iteration, not a string) ?"""
- return is_list(obj) or is_tuple(obj) or is_array(obj)
+ return isList(obj) or isTuple(obj) or isArray(obj)
-def is_assd(obj):
+def isASSD(obj):
from .N_ASSD import ASSD
return isinstance(obj, ASSD)
-def force_list(obj):
+def forceList(obj):
"""Retourne `obj` si c'est une liste ou un tuple,
sinon retourne [obj,] (en tant que list).
"""
- if not is_sequence(obj):
+ if not isSequence(obj):
obj = [obj, ]
return list(obj)
-def force_tuple(obj):
+def forceTuple(obj):
"""Return `obj` as a tuple."""
- return tuple(force_list(obj))
+ return tuple(forceList(obj))
# backward compatibility
from warnings import warn
-def is_enum(obj):
- """same as is_sequence"""
- warn("'is_enum' is deprecated, use 'is_sequence'",
+def isEnum(obj):
+ """same as isSequence"""
+ warn("'isEnum' is deprecated, use 'isSequence'",
DeprecationWarning, stacklevel=2)
- return is_sequence(obj)
+ return isSequence(obj)
# Modules EFICAS
from .N_Exception import AsException
-from .N_types import is_int, is_float, is_complex, is_str, is_sequence, is_assd
-from .strfunc import get_encoding
+from .N_types import isInt, isFloat, isComplex, isStr, isSequence, isASSD
+from .strfunc import getEncoding
import six
SEP = '_'
except :
print ('pb avec la version de python pour cur_frame = sys._getframe')
-def callee_where(niveau=4):
+def calleeWhere(niveau=4):
"""
recupere la position de l appel
"""
# Python 2.7 compile function does not accept unicode filename, so we encode it
# with the current locale encoding in order to have a correct traceback.
# Here, we convert it back to unicode.
- filename = six.text_type(frame.f_code.co_filename, get_encoding())
- return frame.f_lineno, filename, frame.f_code.co_firstlineno, frame.f_locals
+ filename = six.text_type(frame.f_code.co_filename, getEncoding())
+ return frame.fLineNo, filename, frame.f_code.co_firstlineno, frame.f_locals
except:
return 0, "inconnu", 0, {}
Retourne le type d'un concept (a) à partir
des caractéristiques de l'objet Python
"""
- if is_sequence(a):
+ if isSequence(a):
return AsType(a[0])
- if is_assd(a):
+ if isASSD(a):
return type(a)
- if is_float(a):
+ if isFloat(a):
return "R"
- if is_int(a):
+ if isInt(a):
return "I"
- if is_str(a):
+ if isStr(a):
return "TXM"
if a == None:
return None
return s
-def import_object(uri):
+def importObject(uri):
"""Load and return a python object (class, function...).
Its `uri` looks like "mainpkg.subpkg.module.object", this means
that "mainpkg.subpkg.module" is imported and "object" is
def exists(self, value):
"""Tell if value is in the enumeration"""
- return self.get_id(value) is not None
+ return self.getId(value) is not None
- def get_id(self, value):
+ def getId(self, value):
"""Return the key associated to the given value"""
return self._dict_keys.get(value, None)
"""
# Avant toutes choses, on met le module context dans le global de l'interpreteur (__builtin__)
# sous le nom CONTEXT afin d'avoir acces aux fonctions
-# get_current_step, set_current_step et unset_current_step de n'importe ou
+# getCurrentStep, setCurrentStep et unsetCurrentStep de n'importe ou
from __future__ import absolute_import
from . import context
# (Build ne fait rien pour une etape)
-def set_current_step(step):
+def setCurrentStep(step):
"""
Fonction qui permet de changer la valeur de l'etape courante
"""
_root = step
-def get_current_step():
+def getCurrentStep():
"""
Fonction qui permet d'obtenir la valeur de l'etape courante
"""
return _root
-def unset_current_step():
+def unsetCurrentStep():
"""
Fonction qui permet de remettre a None l'etape courante
"""
_root = None
-def set_current_cata(cata):
+def setCurrentCata(cata):
"""
Fonction qui permet de changer l'objet catalogue courant
"""
_cata = cata
-def get_current_cata():
+def getCurrentCata():
"""
Fonction qui retourne l'objet catalogue courant
"""
return _cata
-def unset_current_cata():
+def unsetCurrentCata():
"""
Fonction qui permet de remettre a None le catalogue courant
"""
"""
Ce module sert à nommer les concepts produits par les commandes.
- Le nom du concept est obtenu en appelant la fonction GetNomConceptResultat
+ Le nom du concept est obtenu en appelant la fonction getNomConceptResultat
du module avec le nom de la commande en argument.
Cette fonction parcourt le source dans lequel la commande se trouve, parse le
# Modules EFICAS
from . import N_utils
-from .strfunc import get_encoding
+from .strfunc import getEncoding
import six
from six.moves import range
pattern_comment = re.compile(r"^\s*#.*")
-def _GetNomConceptResultat(ope, level=2):
+def _getNomConceptResultat(ope, level=2):
"""
Cette fonction recherche dans la pile des appels, l'appel à la commande
qui doit etre situé à 2 niveaux au-dessus (cur_frame(2)).
lineno = f.f_lineno # XXX Too bad if -O is used
# lineno = f_lineno(f) # Ne marche pas toujours
co = f.f_code
- filename = six.text_type(co.co_filename, get_encoding())
+ filename = six.text_type(co.co_filename, getEncoding())
name = co.co_name
# pattern pour identifier le debut de la commande
pattern_oper = re.compile(regex1 % ope)
def __init__(self):
"""Initialisation"""
- self.native = _GetNomConceptResultat
- self.use_global_naming()
+ self.native = _getNomConceptResultat
+ self.useGlobalNaming()
- def use_naming_function(self, function):
+ def useNamingFunction(self, function):
"""Utilise une fonction particulière de nommage."""
self.naming_func = function
- def use_global_naming(self):
+ def useGlobalNaming(self):
"""Utilise la fonction native de nommage."""
self.naming_func = partial(self.native, level=3)
"""Appel à la fonction de nommage."""
return self.naming_func(*args)
-GetNomConceptResultat = NamingSystem()
+getNomConceptResultat = NamingSystem()
_encoding = None
-def get_encoding():
+def getEncoding():
"""Return local encoding
"""
global _encoding
return _encoding
-def to_unicode(string):
+def toUnicode(string):
"""Try to convert string into a unicode string."""
if type(string) is six.text_type:
return string
elif type(string) is dict:
new = {}
for k, v in list(string.items()):
- new[k] = to_unicode(v)
+ new[k] = toUnicode(v)
return new
elif type(string) is list:
- return [to_unicode(elt) for elt in string]
+ return [toUnicode(elt) for elt in string]
elif type(string) is tuple:
- return tuple(to_unicode(list(string)))
+ return tuple(toUnicode(list(string)))
elif type(string) is not str:
return string
assert type(string) is str, u"unsupported object: %s" % string
return six.text_type(string, 'utf-8', 'replace')
-#def from_unicode(ustring, encoding, errors='replace'):
+#def fromUnicode(ustring, encoding, errors='replace'):
# """Try to encode a unicode string using encoding."""
# try:
# return ustring.encode(encoding)
# if type(content) not in (str, six.text_type):
# content = six.text_type(content)
# if type(content) == str:
-# content = to_unicode(content)
-# return from_unicode(content, encoding or get_encoding(), errors)
+# content = toUnicode(content)
+# return fromUnicode(content, encoding or getEncoding(), errors)
#
#
#def ufmt(uformat, *args):
# """Helper function to format a string by converting all its arguments to unicode"""
# if type(uformat) is not six.text_type:
-# uformat = to_unicode(uformat)
+# uformat = toUnicode(uformat)
# if len(args) == 1 and type(args[0]) is dict:
-# arguments = to_unicode(args[0])
+# arguments = toUnicode(args[0])
# else:
# nargs = []
# for arg in args:
# if type(arg) in (str, six.text_type, list, tuple, dict):
-# nargs.append(to_unicode(arg))
+# nargs.append(toUnicode(arg))
# elif type(arg) not in (int, int, float):
-# nargs.append(to_unicode(str(arg)))
+# nargs.append(toUnicode(str(arg)))
# else:
# nargs.append(arg)
# arguments = tuple(nargs)
#
from Traducteur.utils import lineToDict
import logging
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
from Traducteur.load import jdcSet
from Traducteur.renamemocle import decaleLignesdeNBlancs
from Traducteur.removemocle import removeMotCleInFact
#--------------------------------------------------------------------------
-def ChangementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
+def changementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
#--------------------------------------------------------------------------
if command not in jdcSet : return
boolChange=0
MaLigneTexte=Nouveau # raccourci honteux mais ...
MaLigneGlob=Nouveau
if Valeur in liste :
- EcritErreur((command,motcle,Valeur),indexLigneGlob)
+ ecritErreur((command,motcle,Valeur),indexLigneGlob)
else :
logging.info("Changement de %s par %s dans %s ligne %d",Valeur,DictNouvVal[Valeur],command,indexLigneGlob)
boolChange=1
indexLigneGlob=indexLigneGlob+1
indexTexteMC=indexTexteMC+1
if (trouveUnMC == 0) and ( defaut == 1):
- EcritErreur((command,motcle,"DEFAUT"),c.lineno)
+ ecritErreur((command,motcle,"DEFAUT"),c.lineno)
if boolChange : jdc.reset(jdc.getSource())
#--------------------------------------------------------------------------------
-def ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=regles.SansRegle,defaut=0):
+def changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=regles.SansRegle,defaut=0):
#--------------------------------------------------------------------------------
if command not in jdcSet : return
MaLigneTexte=Nouveau # raccourci honteux mais ...
MaLigneGlob=Nouveau
if Valeur in liste :
- EcritErreur((command,fact,motcle,Valeur),indexLigneGlob)
+ ecritErreur((command,fact,motcle,Valeur),indexLigneGlob)
else :
logging.info("Changement de %s par %s dans %s ligne %d",Valeur,DictNouvVal[Valeur],command,indexLigneGlob)
boolChange=1
indexTexteMC=indexTexteMC+1
if (trouveUnMC == 0) and ( defaut == 1):
logging.warning("OPTION (defaut) de CALCG à verifier ligne %s" ,c.lineno )
- EcritErreur((command,fact,motcle,"DEFAUT"),c.lineno)
+ ecritErreur((command,fact,motcle,"DEFAUT"),c.lineno)
if boolChange : jdc.reset(jdc.getSource())
#--------------------------------------------------------------------------------
-def ChangementValeurDsMCFSiRegle(jdc,command,fact,motcle,DictNouvVal,liste_regles,defaut=0):
+def changementValeurDsMCFSiRegle(jdc,command,fact,motcle,DictNouvVal,liste_regles,defaut=0):
#--------------------------------------------------------------------------------
if command not in jdcSet : return
mesRegles=regles.ensembleRegles(liste_regles)
liste=()
- ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,mesRegles,defaut)
+ changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,mesRegles,defaut)
#---------------------------------------------------------------------------------------
-def ChangementValeurDsMCFAvecAvertissement(jdc, command, fact,motcle,DictNouvVal,liste):
+def changementValeurDsMCFAvecAvertissement(jdc, command, fact,motcle,DictNouvVal,liste):
#---------------------------------------------------------------------------------------
if command not in jdcSet : return
defaut=0
if liste[-1] == "defaut" :
defaut=1
- ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,defaut)
+ changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,defaut)
#--------------------------------------------------------------------------
-def ChangementValeurAvecAvertissement(jdc, command,motcle,DictNouvVal,liste):
+def changementValeurAvecAvertissement(jdc, command,motcle,DictNouvVal,liste):
#--------------------------------------------------------------------------
if command not in jdcSet : return
defaut=0
if liste[-1] == "defaut" :
defaut=1
- ChangementValeur(jdc,command,motcle,DictNouvVal,liste,defaut)
+ changementValeur(jdc,command,motcle,DictNouvVal,liste,defaut)
#--------------------------------------------------------------------------
-def SuppressionValeurs(jdc, command,motcle,liste):
+def suppressionValeurs(jdc, command,motcle,liste):
#--------------------------------------------------------------------------
if command not in jdcSet : return
if premier == 1 and chercheLigne[fin] == ',': fin = fin + 1 # on supprime la ,
finLigne = chercheLigne[fin:]
MaLigne_tmp=debLigne+finLigne
- # Traitement ligne commancant par ,
+ # traitement ligne commancant par ,
if len(MaLigne_tmp.strip()) > 0 :
if MaLigne_tmp.strip()[0]==',' :
MaLigne=MaLigne_tmp.strip()[1:]
if boolChange : jdc.reset(jdc.getSource())
#----------------------------------------------
-def AppelleMacroSelonValeurConcept(jdc,macro,genea):
+def appelleMacroSelonValeurConcept(jdc,macro,genea):
#----------------------------------------------
if macro not in jdcSet : return
boolChange=0
if boolChange : jdc.reset(jdc.getSource())
#----------------------------------------------
-def ChangeTouteValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
+def changeTouteValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
#----------------------------------------------
if macro not in jdcSet : return
boolChange=0
from Traducteur.load import jdcSet
-def EcritErreur(listeGena,ligne=None) :
+def ecritErreur(listeGena,ligne=None) :
from sys import dict_erreurs
maCle=""
for Mot in listeGena :
#except :
# pass
-def GenereErreurPourCommande(jdc,listeCommande) :
+def genereErreurPourCommande(jdc,listeCommande) :
commands= jdc.root.childNodes[:]
commands.reverse()
for c in commands:
if type(listeCommande)==list:
for Mot in listeCommande :
if c.name != Mot :continue
- EcritErreur((Mot,),c.lineno)
+ ecritErreur((Mot,),c.lineno)
else:
if c.name != listeCommande :continue
- EcritErreur((listeCommande,),c.lineno)
+ ecritErreur((listeCommande,),c.lineno)
-def GenereErreurMotCleInFact(jdc,command,fact,mocle):
+def genereErreurMotCleInFact(jdc,command,fact,mocle):
for c in jdc.root.childNodes:
if c.name != command:continue
for mc in c.childNodes:
if n.name != mocle:
continue
else :
- EcritErreur((command,fact,mocle,),c.lineno)
+ ecritErreur((command,fact,mocle,),c.lineno)
-def GenereErreurMCF(jdc,command,fact):
+def genereErreurMCF(jdc,command,fact):
for c in jdc.root.childNodes:
if c.name != command:continue
for mc in c.childNodes:
if mc.name != fact:
continue
else :
- EcritErreur((command,fact,),c.lineno)
+ ecritErreur((command,fact,),c.lineno)
-def GenereErreurValeur(jdc,command,fact,list_valeur):
+def genereErreurValeur(jdc,command,fact,list_valeur):
for c in jdc.root.childNodes:
if c.name != command:continue
for mc in c.childNodes:
if trouve > -1 :
logging.warning("%s doit etre supprimee ou modifiee dans %s : ligne %d",valeur,c.name,mc.lineno)
-def GenereErreurValeurDsMCF(jdc,command,fact,mocle,list_valeur):
+def genereErreurValeurDsMCF(jdc,command,fact,mocle,list_valeur):
for c in jdc.root.childNodes:
if c.name != command:continue
for mc in c.childNodes:
import logging
from Traducteur.parseur import FactNode
from Traducteur.load import jdcSet
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
from Traducteur import regles
debug=0
for c in commands:
if c.name != nomcommande:continue
if ensemble.verif(c) == 0 : continue
- if erreur : EcritErreur((nomcommande,nouveau),c.lineno)
+ if erreur : ecritErreur((nomcommande,nouveau),c.lineno)
boolChange=1
insereMotCle(jdc,c,texte)
if boolChange : jdc.reset(jdc.getSource())
chercheOperInsereFacteur(jdc,nomcommande,nouveau,mesRegles,estunFacteur,erreur=1)
#-------------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,ensemble=regles.SansRegle, estunFacteur=0):
+def ajouteMotClefDansFacteur(jdc,commande,fact,nouveau,ensemble=regles.SansRegle, estunFacteur=0):
#-------------------------------------------------------------------------------------------------
# Cherche la commande
# Cherche le MCF
if boolChange : jdc.reset(jdc.getSource())
#-------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteurSiRegle(jdc,commande,fact,nouveau,liste_regles,estunFacteur=0):
+def ajouteMotClefDansFacteurSiRegle(jdc,commande,fact,nouveau,liste_regles,estunFacteur=0):
#-------------------------------------------------------------------------------------------
#
if commande not in jdcSet : return
mesRegles=regles.ensembleRegles(liste_regles)
- AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,mesRegles,estunFacteur)
+ ajouteMotClefDansFacteur(jdc,commande,fact,nouveau,mesRegles,estunFacteur)
#-------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteurCourantSiRegle(jdc,commande,fact,nouveau,liste_regles):
+def ajouteMotClefDansFacteurCourantSiRegle(jdc,commande,fact,nouveau,liste_regles):
#-------------------------------------------------------------------------------------------
#
if commande not in jdcSet : return
def init(self,src,atraiter):
#---------------------------
# construction de self.lines
- self.root=parseur.Parser(src,atraiter)
+ self.root=parseur.parser(src,atraiter)
self.lines=src.splitlines(1)
def parseKeywords(self):
import compiler
import types
-from Traducteur.parseur import Keyword, FactNode, lastparen, lastparen2,maskStringsAndComments
+from Traducteur.parseur import Keyword, FactNode, lastParen, lastParen2,maskStringsAndComments
from Traducteur.visiteur import KeywordFinder, visitor
-from Traducteur.utils import indexToCoordinates, lineToDict, DictToLine
+from Traducteur.utils import indexToCoordinates, lineToDict, dictToLine
debug=0
def parseFact(match,c,kw):
#------------------------
submatch=match[2]
- lastpar=match[0]+lastparen(c.src[match[0]:])
+ lastpar=match[0]+lastParen(c.src[match[0]:])
if type(submatch[0][0]) ==types.IntType:
#mot cle facteur isolé
no=FactNode()
#mot cle facteur multiple
ii=0
for l in submatch:
- lastpar=l[0][0]+lastparen2(c.src[l[0][0]:])
+ lastpar=l[0][0]+lastParen2(c.src[l[0][0]:])
ii=ii+1
no=FactNode()
kw.addChild(no)
# dernier mocle :
# il commence au debut du dernier keyword
# (matchFinder.matches[i+1][0]) et
- # finit avant la parenthese fermante de la commande (c.lastparen)
+ # finit avant la parenthese fermante de la commande (c.lastParen)
- if debug:print "texte:",c.src[matchFinder.matches[i+1][0]:c.lastparen]
+ if debug:print "texte:",c.src[matchFinder.matches[i+1][0]:c.lastParen]
x,y=indexToCoordinates(c.src,matchFinder.matches[i+1][0])
lineno=y+c.lineno
colno=x
- x,y=indexToCoordinates(c.src,c.lastparen)
+ x,y=indexToCoordinates(c.src,c.lastParen)
endline=y+c.lineno
endcol=x
if debug:print matchFinder.matches[i+1][0],matchFinder.matches[i+1][1],lineno,colno,endline,endcol
#un seul mocle trouve :
# il commence au début du keyword (matchFinder.matches[0][0]) et
# finit juste avant la parenthese fermante de la
- # commande (c.lastparen)
- if debug:print "texte:",c.src[matchFinder.matches[0][0]:c.lastparen]
+ # commande (c.lastParen)
+ if debug:print "texte:",c.src[matchFinder.matches[0][0]:c.lastParen]
x,y=indexToCoordinates(c.src,matchFinder.matches[0][0])
lineno=y+c.lineno
colno=x
- x,y=indexToCoordinates(c.src,c.lastparen)
+ x,y=indexToCoordinates(c.src,c.lastParen)
endline=y+c.lineno
endcol=x
if debug:print matchFinder.matches[0][0],matchFinder.matches[0][1],lineno,colno,endline,endcol
import logging
from Traducteur import removemocle
from Traducteur import inseremocle
-from Traducteur.parseur import lastparen
+from Traducteur.parseur import lastParen
from Traducteur.load import jdcSet
debug=0
jdcSet.add(commandcible)
#-----------------------------------------------------
-def FusionMotCleToFact(jdc,command,liste_mc,factcible,defaut=0):
+def fusionMotCleToFact(jdc,command,listeMc,factcible,defaut=0):
#-----------------------------------------------------
if command not in jdcSet : return
boolChange=0
list_val=[]
trouveUnMC=0
for mc in c.childNodes:
- if mc.name not in liste_mc : continue
+ if mc.name not in listeMc : continue
val=mc.getText(jdc).split("=")[1].split(",")[0]
list_val.append(val)
trouveUnMC=1
boolChange=1
if boolChange :
jdc.reset(jdc.getSource())
- for mc in liste_mc :
+ for mc in listeMc :
removemocle.removeMotCle(jdc,command,mc)
jdc.reset(jdc.getSource())
#-----------------------------------------------------
-def FusionMotCleInFact(jdc,command,fact,liste_mc,new_name,defaut=0):
+def fusionMotCleInFact(jdc,command,fact,listeMc,new_name,defaut=0):
#-----------------------------------------------------
if command not in jdcSet : return
boolChange=0
if mcF.name != fact: continue
for ll in mcF.childNodes[:]:
for mc in ll.childNodes:
- if mc.name not in liste_mc : continue
+ if mc.name not in listeMc : continue
val=mc.getText(jdc).split("=")[1].split(",")[0]
list_val.append(val)
trouveUnMC=1
boolChange=1
if boolChange :
jdc.reset(jdc.getSource())
- for mc in liste_mc :
+ for mc in listeMc :
removemocle.removeMotCleInFact(jdc,command,fact,mc)
jdc.reset(jdc.getSource())
#-----------------------------------------------------
-def FusionMCFToMCF(jdc,command,liste_mcf,factcible,defaut=0):
+def fusionMCFToMCF(jdc,command,listeMcF,factcible,defaut=0):
#-----------------------------------------------------
if command not in jdcSet : return
boolChange=0
esp1=' '*len(TexteMC)
pp=0
for mcF in c.childNodes:
- if mcF.name not in liste_mcf : continue
+ if mcF.name not in listeMcF : continue
trouveUnMC=1
val=mcF.getText(jdc)
# esp=esp1+(inseremocle.chercheDebutFacteur(jdc,mcF)-len(mcF.name))*' '
boolChange=1
if boolChange :
jdc.reset(jdc.getSource())
- for mcF in liste_mcf :
+ for mcF in listeMcF :
removemocle.removeMotCle(jdc,command,mcF)
jdc.reset(jdc.getSource())
#--------------------------------------------------------------------
-def EclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0):
+def eclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0):
#--------------------------------------------------------------------------
# exemple STA10 pesanteur devient MCF avec eclatement des valeurs dans les MC
# On suppose que le MC est sur une seule ligne
motcle1=mot1+"="+Ligne[0]
motcle2=mot2+"=("+Ligne[1]+','+Ligne[2]+','+Ligne[3]+')'
texte=motcle+'=_F('+motcle1+','+motcle2+')'
- num=lastparen(TexteMC)
+ num=lastParen(TexteMC)
Nouveau=MaLigneGlob.replace(TexteMC[0:num],texte)
jdc.getLines()[indexLigneGlob]=Nouveau
logging.info("Transformation de %s dans %s ligne %s",motcle,command,c.lineno)
printNode(c)
#------------------------
-def Parser(src,atraiter):
+def parser(src,atraiter):
#------------------------
"""Parse le texte src et retourne un arbre syntaxique (root).
c.src=src
c.endline=linenum
decal=len(line)-line.rindex(')')
- c.lastparen=len(src)-decal
+ c.lastParen=len(src)-decal
if debug:print "logical line %s %s:" % (c.lineno,c.endline),src
break
line=iterlines.next()
#-----------------
-def lastparen(src):
+def lastParen(src):
#-----------------
"""Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
return i
#-------------------
-def lastparen2(src):
+def lastParen2(src):
#-------------------
"""Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
def __init__(self, list_arg):
self.genea = list_arg
- def cherche_mot(self, niveau, commande):
+ def chercheMot(self, niveau, commande):
"""
Recherche du mot
"""
for c in commande.childNodes :
if c.name == texte :
niveau = niveau+1
- return self.cherche_mot(niveau, c)
+ return self.chercheMot(niveau, c)
return None
def verif(self, commande):
"""
Vérification
"""
- bool = self.cherche_mot(0, commande)
+ bool = self.chercheMot(0, commande)
if bool == None : bool = 0
return bool
def __init__(self, list_arg):
self.genea = list_arg
- def cherche_mot(self, niveau, commande):
+ def chercheMot(self, niveau, commande):
"""
Recherche du mot
"""
for c in commande.childNodes :
if c.name == texte :
niveau = niveau+1
- return self.cherche_mot(niveau, c)
+ return self.chercheMot(niveau, c)
return None
def verif(self, commande):
"""
Vérification
"""
- bool = self.cherche_mot(0, commande)
+ bool = self.chercheMot(0, commande)
if bool : return 0
return 1
import logging
from Traducteur import regles
from Traducteur.parseur import FactNode
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
from Traducteur.load import jdcSet
debug=0
for mc in c.childNodes:
if mc.name != mocle:continue
if ensemble.verif(c) == 0 : continue
- if erreur : EcritErreur((command,mocle),c.lineno)
+ if erreur : ecritErreur((command,mocle),c.lineno)
boolChange=1
removeMC(jdc,c,mc)
if c.name != command:continue
if ensemble.verif(c) == 0 : continue
boolChange=1
- if erreur : EcritErreur((command,),c.lineno)
+ if erreur : ecritErreur((command,),c.lineno)
jdc.supLignes(c.lineno,c.endline)
logging.warning("Suppression de %s ligne %s",c.name,c.lineno)
if boolChange : jdc.reset(jdc.getSource())
for n in ll.childNodes:
if n.name != mocle:continue
if ensemble.verif(c) == 0 : continue
- if erreur : EcritErreur((command,fact,mocle),c.lineno)
+ if erreur : ecritErreur((command,fact,mocle),c.lineno)
boolChange=1
removeMC(jdc,c,n)
if ensemble.verif(ll) == 0 : continue
for n in ll.childNodes:
if n.name != mocle:continue
- if erreur : EcritErreur((command,fact,mocle),c.lineno)
+ if erreur : ecritErreur((command,fact,mocle),c.lineno)
boolChange=1
removeMC(jdc,c,n)
from Traducteur.parseur import FactNode
from Traducteur.load import jdcSet
from Traducteur import regles
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
#debug=1
debug=0
boolChange=1
if debug:print "Renommage de:",c.name,mc.name,mc.lineno,mc.colno
if erreur :
- EcritErreur((command,mocle),c.lineno)
+ ecritErreur((command,mocle),c.lineno)
else :
logging.info("Renommage de: %s %s ligne %d en %s",c.name,mc.name,mc.lineno,new_name)
s=jdc.getLines()[mc.lineno-1]
jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
boolChange=1
if erreur :
- EcritErreur((command,fact,mocle),c.lineno)
+ ecritErreur((command,fact,mocle),c.lineno)
else :
logging.info("Renommage de: %s, ligne %s, en %s",n.name,n.lineno,new_name)
jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
boolChange=1
if erreur :
- EcritErreur((command,fact,mocle),c.lineno)
+ ecritErreur((command,fact,mocle),c.lineno)
else :
logging.info("Renommage de: %s, ligne %s, en %s",n.name,n.lineno,new_name)
boolChange=0
if debug :
if ensemble != regles.SansRegle :
- logging.info("Traitement de %s renomme en %s sous conditions", command, new_name)
+ logging.info("traitement de %s renomme en %s sous conditions", command, new_name)
else :
- logging.info("Traitement de %s renomme en %s ", command, new_name)
+ logging.info("traitement de %s renomme en %s ", command, new_name)
for c in jdc.root.childNodes:
if c.name != command:continue
if ensemble.verif(c) == 0 : continue
#Parse les mocles des commandes
parseKeywords(root)
- GenereErreurPourCommande(jdc,("CALC_SENSI",))
+ genereErreurPourCommande(jdc,("CALC_SENSI",))
- #### Traitement des cas particuliers ##############################
+ #### traitement des cas particuliers ##############################
# On ne traite pas les commandes TEST*
removeCommande(jdc,"TEST_COMPOR")
removeCommande(jdc,"TEST_FICHIER")
removeCommande(jdc,"TEST_TABLE")
removeCommande(jdc,"TEST_TEMPS")
- #### Traitement de AFFE_CARA_ELEM ##############################
+ #### traitement de AFFE_CARA_ELEM ##############################
# Déplacement de PREC_AIRE et PREC_INERTIE dans MULTIFIBRE
moveMotCleFromFactToFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_AIRE","MULTIFIBRE")
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_AIRE",pasDeRegle(),0)
moveMotCleFromFactToFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_INERTIE","MULTIFIBRE")
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_INERTIE",pasDeRegle(),0)
# Résorption de la sensibilité
- GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","COQUE","EPAIS_F")
- GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","VALE_F")
- GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","VALE_F")
+ genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","COQUE","EPAIS_F")
+ genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","VALE_F")
+ genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","VALE_F")
# Suppression de GRILLE_NCOU
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","GRILLE","GRILLE_NCOU",pasDeRegle(),0)
# Suppression de ORIG_AXE
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","GRILLE","ORIG_AXE",pasDeRegle(),0)
- #### Traitement de AFFE_CHAR_MECA/_F ##############################
+ #### traitement de AFFE_CHAR_MECA/_F ##############################
renameMotCle(jdc,"AFFE_CHAR_MECA","SIGM_INTERNE","PRE_SIGM")
renameMotCle(jdc,"AFFE_CHAR_MECA","EPSI_INIT","PRE_EPSI")
renameMotCle(jdc,"AFFE_CHAR_MECA_F","SIGM_INTERNE","PRE_SIGM")
renameMotCle(jdc,"AFFE_CHAR_MECA_F","EPSI_INIT","PRE_EPSI")
- #### Traitement de AFFE_CHAR_OPS011 ##############################
- GenereErreurPourCommande(jdc,("AFFE_CHAR_OPS011",))
+ #### traitement de AFFE_CHAR_OPS011 ##############################
+ genereErreurPourCommande(jdc,("AFFE_CHAR_OPS011",))
- #### Traitement de AFFE_CHAR_THER/_F ##############################
+ #### traitement de AFFE_CHAR_THER/_F ##############################
renameMotCle(jdc,"AFFE_CHAR_THER","GRAD_TEMP_INIT","PRE_GRAD_TEMP")
renameMotCle(jdc,"AFFE_CHAR_THER_F","GRAD_TEMP_INIT","PRE_GRAD_TEMP")
- #### Traitement de AFFE_MATERIAU ##############################
+ #### traitement de AFFE_MATERIAU ##############################
# VALE_REF obligatoire si NOM_VARC in ('TEMP', 'SECH')
lNOMVARC=["CORR","IRRA","HYDR","EPSA","M_ACIER","M_ZIRC","NEUT1","NEUT2"]
removeMotCleInFactSiRegle(jdc,"AFFE_MATERIAU","AFFE_VARC","VALE_REF",((("NOM_VARC",lNOMVARC,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
# renommage CHAMP_GD en CHAM_GD
renameMotCleInFact(jdc,"AFFE_MATERIAU","AFFE_VARC","CHAMP_GD","CHAM_GD",pasDeRegle(),0)
- #### Traitement de AFFE_MODELE ##############################
+ #### traitement de AFFE_MODELE ##############################
dXFEMCONT={"3D_XFEM_CONT":"3D","C_PLAN_XFEM_CONT":"C_PLAN","D_PLAN_XFEM_CONT":"D_PLAN"}
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEMCONT)
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEMCONT)
- #### Traitement de ASSE_ELEM_SSD ##############################
+ #### traitement de ASSE_ELEM_SSD ##############################
# Rien à faire
- #### Traitement de ASSEMBLAGE ##############################
+ #### traitement de ASSEMBLAGE ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de C_COMP_INCR ##############################
+ #### traitement de C_COMP_INCR ##############################
# Suppression de ALGO_C_PLAN et ALGO_1D
lCOMMANDE=["CALC_FORC_NONL","CALC_IFS_DNL","CALC_POINT_MAT",
"CALC_PRECONT","CALCUL","DYNA_NON_LINE","LIRE_RESU",
renameMotCleInFact(jdc,com,"COMP_INCR","RESI_DEBO_RELA","RESI_CPLAN_RELA",pasDeRegle(),0)
renameMotCleInFact(jdc,com,"COMP_INCR","ITER_MAXI_DEBORST","ITER_CPLAN_MAXI",pasDeRegle(),0)
- #### Traitement de C_NEWTON ##############################
+ #### traitement de C_NEWTON ##############################
# Renommage de EXTRAPOL en EXTRAPOLE
lCOMMANDE=["CALC_IFS_DNL","CALC_POINT_MAT","CALC_PRECONT",
"DYNA_NON_LINE","MACR_ASCOUF_CALC","MACR_ASPIC_CALC",
"SIMU_POINT_MAT","STAT_NON_LINE","TEST_COMPOR",]
dPRED={"EXTRAPOL":"EXTRAPOLE"}
for com in lCOMMANDE :
- ChangementValeurDsMCF(jdc,com,"NEWTON","PREDICTION",dPRED)
+ changementValeurDsMCF(jdc,com,"NEWTON","PREDICTION",dPRED)
- #### Traitement de C_SOLVEUR ##############################
+ #### traitement de C_SOLVEUR ##############################
# Renommage de EXTRAPOL en EXTRAPOLE
lCOMMANDE=["CALC_ELEM","CALC_FORC_AJOU","CALC_IFS_DNL",
"CALC_MATR_AJOU","CALC_PRECONT","CREA_ELEM_SSD",
removeMotCleInFact(jdc,com,"SOLVEUR","OUT_OF_CORE",pasDeRegle(),0)
removeMotCleInFact(jdc,com,"SOLVEUR","LIBERE_MEMOIRE",pasDeRegle(),0)
- #### Traitement de CALC_CHAMP ##############################
+ #### traitement de CALC_CHAMP ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de CALC_ECREVISSE ##############################
+ #### traitement de CALC_ECREVISSE ##############################
# Rien à faire
- #### Traitement de CALC_ELEM ##############################
+ #### traitement de CALC_ELEM ##############################
# renommage de la commande
renameCommande(jdc,"CALC_ELEM","CALC_CHAMP", )
# Suppression des types de charges
lMETA=["DURT_ELNO"]
#SPMX_ELGA / NOM_CHAM / NOM_CMP
## Erreur pour les options supprimées
- GenereErreurValeur(jdc,"CALC_ELEM","OPTION",("'SICA_ELNO'","'EFCA_ELNO'","'PMPB_ELNO'","'PMPB_ELGA'",))
+ genereErreurValeur(jdc,"CALC_ELEM","OPTION",("'SICA_ELNO'","'EFCA_ELNO'","'PMPB_ELNO'","'PMPB_ELGA'",))
lCHANOPT={"SICO_ELNO":"SIGM_ELNO","EPTU_ELNO":"EPSI_ELNO","SITU_ELNO":"SIGM_ELNO","SITQ_ELNO":"SIGM_ELNO","EPTQ_ELNO":"EPSI_ELNO"}
- ChangementValeur(jdc,"CALC_ELEM","OPTION",lCHANOPT)
+ changementValeur(jdc,"CALC_ELEM","OPTION",lCHANOPT)
## copie de OPTION dans MCF TEMPORAIRE pour chaque type
chercheOperInsereFacteur(jdc,"CALC_CHAMP","TEMPORAIRE")
copyMotClefInOperToFact(jdc,"CALC_CHAMP","OPTION","TEMPORAIRE")
removeMotCleSiRegle(jdc,"CALC_CHAMP","ERREUR",((("ERREUR",lERREUR,jdc),"MCnaPasPourValeurDansListe"),))
removeMotCleSiRegle(jdc,"CALC_CHAMP","META",((("META",lMETA,jdc),"MCnaPasPourValeurDansListe"),))
## suppression des valeurs non-licites
- SuppressionValeurs(jdc,"CALC_CHAMP","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
- SuppressionValeurs(jdc,"CALC_CHAMP","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","CRITERES",list(set(lTOUT)-set(lCRITERES)))
- SuppressionValeurs(jdc,"CALC_CHAMP","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","HYDRAULIQUE",list(set(lTOUT)-set(lHYDRAULIQUE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
- SuppressionValeurs(jdc,"CALC_CHAMP","ERREUR",list(set(lTOUT)-set(lERREUR)))
- SuppressionValeurs(jdc,"CALC_CHAMP","META",list(set(lTOUT)-set(lMETA)))
+ suppressionValeurs(jdc,"CALC_CHAMP","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
+ suppressionValeurs(jdc,"CALC_CHAMP","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","CRITERES",list(set(lTOUT)-set(lCRITERES)))
+ suppressionValeurs(jdc,"CALC_CHAMP","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","HYDRAULIQUE",list(set(lTOUT)-set(lHYDRAULIQUE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
+ suppressionValeurs(jdc,"CALC_CHAMP","ERREUR",list(set(lTOUT)-set(lERREUR)))
+ suppressionValeurs(jdc,"CALC_CHAMP","META",list(set(lTOUT)-set(lMETA)))
## ajout CALC_META ou CALC_ERREUR
lMOTCLE=[]
lMOTCLE=["reuse","RESULTAT","TOUT_ORDRE","NUME_ORDRE","NUME_MODE","NOEUD_CMP","NOM_CAS",
removeMotCle(jdc,"CALC_CHAMP","META",pasDeRegle(),0)
removeMotCle(jdc,"CALC_CHAMP","ERREUR",pasDeRegle(),0)
- #### Traitement de CALC_ERREUR ##############################
+ #### traitement de CALC_ERREUR ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de CALC_ESSAI ##############################
+ #### traitement de CALC_ESSAI ##############################
# Rien à faire
- #### Traitement de CALC_EUROPLEXUS ##############################
+ #### traitement de CALC_EUROPLEXUS ##############################
# Rien à faire
- #### Traitement de CALC_FATIGUE ##############################
+ #### traitement de CALC_FATIGUE ##############################
# Rien à faire
- #### Traitement de CALC_FERRAILLAGE ##############################
+ #### traitement de CALC_FERRAILLAGE ##############################
# Rien à faire
- #### Traitement de CALC_FONCTION ##############################
+ #### traitement de CALC_FONCTION ##############################
# Rien à faire
- #### Traitement de CALC_FORC_AJOU ##############################
+ #### traitement de CALC_FORC_AJOU ##############################
# Rien à faire
- #### Traitement de CALC_G ##############################
+ #### traitement de CALC_G ##############################
# Suppression SYME_CHAR
removeMotCle(jdc,"CALC_G","SYME_CHAR",pasDeRegle(),0)
# Règle sur DEGRE
removeMotCleInFactSiRegle(jdc,"CALC_G","COMP_INCR","SIGM_INIT",((("RELATION","ELAS",jdc),"MCnaPasPourValeur"),))
removeMotCle(jdc,"CALC_G","ETAT_INIT",pasDeRegle(),0)
# Renommage de l'option K_G_MODA en CALC_K_G
- ChangementValeur(jdc,"CALC_G","OPTION",{"K_G_MODA":"CALC_K_G",})
+ changementValeur(jdc,"CALC_G","OPTION",{"K_G_MODA":"CALC_K_G",})
# Suppression de EXCIT dans le cas elas_mult
removeMotCleSiRegle(jdc,"CALC_G","EXCIT",((("NOM_CAS",),"existe"),))
# Ajout règle UN_PARMI('THETA','FOND_FISS','FISSURE')
removeMotCleInFactSiRegle(jdc,"CALC_G","THETA","THETA",((("THETA","FOND_FISS",),"existeMCsousMCF"),))
removeMotCleInFactSiRegle(jdc,"CALC_G","THETA","THETA",((("THETA","FISSURE",),"existeMCsousMCF"),))
- #### Traitement de CALC_IFS_DNL ##############################
+ #### traitement de CALC_IFS_DNL ##############################
# Renommage CRIT_FLAMB en CRIT_STAB
renameMotCle(jdc,"CALC_IFS_DNL","CRIT_FLAMB","CRIT_STAB")
removeMotCleInFact(jdc,"CALC_IFS_DNL","CRIT_FLAMB","INST_CALCUL",pasDeRegle(),1)
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"CALC_IFS_DNL","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de CALC_INTE_SPEC ##############################
+ #### traitement de CALC_INTE_SPEC ##############################
# Rien à faire
- #### Traitement de CALC_MAC3COEUR ##############################
+ #### traitement de CALC_MAC3COEUR ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de CALC_MATR_AJOU ##############################
+ #### traitement de CALC_MATR_AJOU ##############################
# Suppression d'algo pour PETSc
removeMotCleSiRegle(jdc,"RESOUDRE","ALGORITHME",((("BCGS","BICG","TFQMR",),"MCaPourValeur"),))
- #### Traitement de CALC_MATR_ELEM ##############################
+ #### traitement de CALC_MATR_ELEM ##############################
# Rien à faire
- #### Traitement de CALC_META ##############################
+ #### traitement de CALC_META ##############################
# OPTION est obligatoire
chercheOperInsereFacteurSiRegle(jdc,"CALC_META","OPTION='META_ELNO'",((("OPTION",),"nexistepas"),),0)
- #### Traitement de CALC_MISS ##############################
+ #### traitement de CALC_MISS ##############################
# Suppression de TYPE_CHARGE
removeMotCle(jdc,"CALC_MISS","TYPE_CHARGE",pasDeRegle(),0)
- #### Traitement de CALC_MODAL ##############################
+ #### traitement de CALC_MODAL ##############################
# renommage de STOP_FREQ_VIDE
renameMotCle(jdc,"CALC_MODAL","STOP_FREQ_VIDE","STOP_BANDE_VIDE")
- #### Traitement de CALC_MODE_ROTATION ##############################
+ #### traitement de CALC_MODE_ROTATION ##############################
# renommage de MATR_A et MATR_B
renameMotCle(jdc,"CALC_MODE_ROTATION","MATR_A","MATR_RIGI")
renameMotCle(jdc,"CALC_MODE_ROTATION","MATR_B","MATR_MASS")
- #### Traitement de CALC_NO ##############################
+ #### traitement de CALC_NO ##############################
# renommage de la commande
renameCommande(jdc,"CALC_NO","CALC_CHAMPNO", )
# Suppression des types de charges
lERREUR=["ERME_NOEU","ERTH_NOEU","QIRE_NOEU",]
lMETA=["DURT_NOEU","META_NOEU",]
## Erreur pour les options supprimées
- GenereErreurValeur(jdc,"CALC_CHAMPNO","OPTION",("'SICA_NOEU'","'EFCA_NOEU'","'PMPB_NOEU'",))
- ChangementValeur(jdc,"CALC_CHAMPNO","OPTION",{"SICO_NOEU":"SIGM_NOEU",})
+ genereErreurValeur(jdc,"CALC_CHAMPNO","OPTION",("'SICA_NOEU'","'EFCA_NOEU'","'PMPB_NOEU'",))
+ changementValeur(jdc,"CALC_CHAMPNO","OPTION",{"SICO_NOEU":"SIGM_NOEU",})
## copie de OPTION dans MCF TEMPORAIRE pour chaque type
chercheOperInsereFacteur(jdc,"CALC_CHAMPNO","TEMPORAIRE")
copyMotClefInOperToFact(jdc,"CALC_CHAMPNO","OPTION","TEMPORAIRE")
removeMotCleSiRegle(jdc,"CALC_CHAMPNO","ERREUR",((("ERREUR",lERREUR,jdc),"MCnaPasPourValeurDansListe"),))
removeMotCleSiRegle(jdc,"CALC_CHAMPNO","META",((("META",lMETA,jdc),"MCnaPasPourValeurDansListe"),))
## suppression des valeurs non-licites
- SuppressionValeurs(jdc,"CALC_CHAMPNO","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","CRITERES",list(set(lTOUT)-set(lCRITERES)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","FORCE",list(set(lTOUT)-set(lFORCE)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","ERREUR",list(set(lTOUT)-set(lERREUR)))
- SuppressionValeurs(jdc,"CALC_CHAMPNO","META",list(set(lTOUT)-set(lMETA)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","CRITERES",list(set(lTOUT)-set(lCRITERES)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","FORCE",list(set(lTOUT)-set(lFORCE)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","ERREUR",list(set(lTOUT)-set(lERREUR)))
+ suppressionValeurs(jdc,"CALC_CHAMPNO","META",list(set(lTOUT)-set(lMETA)))
## ajout CALC_METANO ou CALC_ERREURNO
lMOTCLE=[]
lMOTCLE=["reuse","RESULTAT","TOUT_ORDRE","NUME_ORDRE","NUME_MODE","NOEUD_CMP","NOM_CAS",
removeMotCle(jdc,"CALC_CHAMP","METANO",pasDeRegle(),0)
removeMotCle(jdc,"CALC_CHAMP","ERREURNO",pasDeRegle(),0)
- #### Traitement de CALC_POINT_MAT ##############################
+ #### traitement de CALC_POINT_MAT ##############################
# Rien à faire
- #### Traitement de CALC_PRECONT ##############################
+ #### traitement de CALC_PRECONT ##############################
# Renommage de IMPLEX
- ChangementValeur(jdc,"CALC_PRECONT","METHODE",{"IMPL_EX":"IMPLEX"})
+ changementValeur(jdc,"CALC_PRECONT","METHODE",{"IMPL_EX":"IMPLEX"})
removeMotCle(jdc,"CALC_PRECONT","IMPL_EX",pasDeRegle(),0)
- #### Traitement de CALC_SENSI ##############################
+ #### traitement de CALC_SENSI ##############################
# Résorption de la sensibilité
removeCommande(jdc,"CALC_SENSI")
- #GenereErreurPourCommande(jdc,("CALC_SENSI",))
+ #genereErreurPourCommande(jdc,("CALC_SENSI",))
- #### Traitement de CALC_SPEC ##############################
+ #### traitement de CALC_SPEC ##############################
# Déplacement d'un mot-clé facteur facteur
moveMotCleFromFactToFather(jdc,"CALC_SPEC","TAB_ECHANT","LONGUEUR_ECH")
moveMotCleFromFactToFather(jdc,"CALC_SPEC","LONGUEUR_ECH","DUREE")
moveMotClefInOperToFact(jdc,"CALC_SPEC","RECOUVREMENT_POURCENT","TAB_ECHANT")
moveMotClefInOperToFact(jdc,"CALC_SPEC","RECOUVREMENT_NB_PTS","TAB_ECHANT")
- #### Traitement de CALC_TABLE ##############################
+ #### traitement de CALC_TABLE ##############################
# Renommage de AJOUT en AJOUT_LIGNE
dOPE={"AJOUT":"AJOUT_LIGNE",}
- ChangementValeurDsMCF(jdc,"CALC_TABLE","ACTION","OPERATION",dOPE)
+ changementValeurDsMCF(jdc,"CALC_TABLE","ACTION","OPERATION",dOPE)
# Résorption de la sensibilité
removeMotCle(jdc,"CALC_TABLE","SENSIBILITE",pasDeRegle(),0)
# Renommage critere table
dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
- ChangementValeurDsMCF(jdc,"CALC_TABLE","FILTRE","CRIT_COMP",dCRIT)
+ changementValeurDsMCF(jdc,"CALC_TABLE","FILTRE","CRIT_COMP",dCRIT)
- #### Traitement de CALC_THETA ##############################
+ #### traitement de CALC_THETA ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"CALC_THETA","OPTION",pasDeRegle(),0)
removeMotCle(jdc,"CALC_THETA","THETA_BANDE",pasDeRegle(),1)
removeMotCle(jdc,"CALC_THETA","GRAD_NOEU_THETA",pasDeRegle(),0)
- #### Traitement de COMB_FOURIER ##############################
+ #### traitement de COMB_FOURIER ##############################
# Homogénéisation de ANGLE
renameMotCle(jdc,"COMB_FOURIER","ANGL","ANGLE")
- #### Traitement de COMB_SISM_MODAL ##############################
- GenereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",("'EFCA_ELNO'",))
+ #### traitement de COMB_SISM_MODAL ##############################
+ genereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",("'EFCA_ELNO'",))
- #### Traitement de CREA_CHAMP ##############################
+ #### traitement de CREA_CHAMP ##############################
removeMotCle(jdc,"CREA_CHAMP","SENSIBILITE",pasDeRegle(),0)
removeMotCle(jdc,"CREA_CHAMP","PROL_ZERO",pasDeRegle(),0)
- #### Traitement de CREA_ELEM_SSD ##############################
+ #### traitement de CREA_ELEM_SSD ##############################
# Rien à faire
- #### Traitement de CREA_MAILLAGE ##############################
+ #### traitement de CREA_MAILLAGE ##############################
# Suppression de la possibilité de copier un maillage
lFACTEUR=['COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE',
renameCommandeSiRegle(jdc,"CREA_MAILLAGE","COPIER",(((lFACTEUR),"nexistepasMCFParmi"),))
renameMotCle(jdc,"COPIER","MAILLAGE","CONCEPT")
- #### Traitement de CREA_RESU ##############################
+ #### traitement de CREA_RESU ##############################
# Rien à faire
- #### Traitement de CREA_TABLE ##############################
+ #### traitement de CREA_TABLE ##############################
removeMotCle(jdc,"CREA_TABLE","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de DEBUT ##############################
+ #### traitement de DEBUT ##############################
# Suppression du mot-clé TITRE
removeMotCleInFact(jdc,"DEBUT","CATALOGUE","TITRE",pasDeRegle(),0)
# Suppression du mot-clé IMPRESSION
removeMotCleInFact(jdc,"DEBUT","MEMOIRE","PARTITION",pasDeRegle(),0)
removeMotCleInFact(jdc,"DEBUT","MEMOIRE","DYNAMIQUE",pasDeRegle(),0)
- #### Traitement de DEFI_BASE_MODALE ##############################
+ #### traitement de DEFI_BASE_MODALE ##############################
# Rien à faire
- #### Traitement de DEFI_CABLE_BP ##############################
+ #### traitement de DEFI_CABLE_BP ##############################
# Rien à faire
- #### Traitement de DEFI_COMPOR ##############################
+ #### traitement de DEFI_COMPOR ##############################
# Suppression famille de sytèmes de glissement
lFAMGLIS=["'BASAL'", "'PRISMATIQUE'","'PYRAMIDAL1'","'PYRAMIDAL2'","'MACLAGE'",]
- GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","FAMI_SYST_GLIS",lFAMGLIS)
+ genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","FAMI_SYST_GLIS",lFAMGLIS)
# Suppression famille de sytèmes de glissement
- GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",("'MONO_VISC3'",))
+ genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",("'MONO_VISC3'",))
# Suppression de ALGO_1D
removeMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","ALGO_1D",pasDeRegle(),0)
# Suppression de DEFORMATION
- GenereErreurMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION")
+ genereErreurMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION")
- #### Traitement de DEFI_CONTACT ##############################
- GenereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT",("'AVANCE'",))
- GenereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT",("'AVANCE'",))
+ #### traitement de DEFI_CONTACT ##############################
+ genereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT",("'AVANCE'",))
+ genereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT",("'AVANCE'",))
# résorption de RACCORD_LINE_QUAD et éléments de Barsoum
- GenereErreurMCF(jdc,"DEFI_CONTACT","FOND_FISSURE")
- GenereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_FOND")
- GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_FOND")
- GenereErreurMCF(jdc,"DEFI_CONTACT","MAILLE_FOND")
- GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_MA_FOND")
- GenereErreurMCF(jdc,"DEFI_CONTACT","RACCORD_LINE_QUAD")
- GenereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_RACC")
- GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_RACC")
- GenereErreurMCF(jdc,"DEFI_CONTACT","EXCLUSION_PIV_NUL")
- GenereErreurMCF(jdc,"DEFI_CONTACT","COEF_ECHELLE")
+ genereErreurMCF(jdc,"DEFI_CONTACT","FOND_FISSURE")
+ genereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_FOND")
+ genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_FOND")
+ genereErreurMCF(jdc,"DEFI_CONTACT","MAILLE_FOND")
+ genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_MA_FOND")
+ genereErreurMCF(jdc,"DEFI_CONTACT","RACCORD_LINE_QUAD")
+ genereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_RACC")
+ genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_RACC")
+ genereErreurMCF(jdc,"DEFI_CONTACT","EXCLUSION_PIV_NUL")
+ genereErreurMCF(jdc,"DEFI_CONTACT","COEF_ECHELLE")
# résorption de COMPLIANCE
- GenereErreurMCF(jdc,"DEFI_CONTACT","COMPLIANCE")
- GenereErreurMCF(jdc,"DEFI_CONTACT","ASPERITE")
- GenereErreurMCF(jdc,"DEFI_CONTACT","E_N")
- GenereErreurMCF(jdc,"DEFI_CONTACT","E_V")
+ genereErreurMCF(jdc,"DEFI_CONTACT","COMPLIANCE")
+ genereErreurMCF(jdc,"DEFI_CONTACT","ASPERITE")
+ genereErreurMCF(jdc,"DEFI_CONTACT","E_N")
+ genereErreurMCF(jdc,"DEFI_CONTACT","E_V")
# résorption de l'usure
- GenereErreurMCF(jdc,"DEFI_CONTACT","USURE")
- GenereErreurMCF(jdc,"DEFI_CONTACT","K")
- GenereErreurMCF(jdc,"DEFI_CONTACT","H")
+ genereErreurMCF(jdc,"DEFI_CONTACT","USURE")
+ genereErreurMCF(jdc,"DEFI_CONTACT","K")
+ genereErreurMCF(jdc,"DEFI_CONTACT","H")
# Suppression de schémas d'inégration pour XFEM
lSCHEMA=["FPG2","FPG3","FPG4","FPG6","FPG7","SIMPSON1","NCOTES1","NCOTES2"]
removeMotCleInFactSiRegle(jdc,"DEFI_CONTACT","ZONE","INTEGRATION",((("FORMULATION","XFEM",jdc),"MCaPourValeur")and(("ZONE","INTEGRATION",lSCHEMA,jdc),"MCsousMCFaPourValeurDansListe"),),)
# Ajout règle sur REAC_GEOM
removeMotCleSiRegle(jdc,"DEFI_CONTACT","REAC_GEOM",((("ALGO_RESO_GEOM","NEWTON",jdc),"MCaPourValeur"),))
- #### Traitement de DEFI_COQU_MULT ##############################
+ #### traitement de DEFI_COQU_MULT ##############################
renameCommande(jdc,"DEFI_COQU_MULT","DEFI_COMPOSITE", )
- #### Traitement de DEFI_FICHIER ##############################
+ #### traitement de DEFI_FICHIER ##############################
# Rien à faire
- #### Traitement de DEFI_FISS_XFEM ##############################
+ #### traitement de DEFI_FISS_XFEM ##############################
# Suppression de ORIE_FOND
removeMotCle(jdc,"DEFI_FISS_XFEM","ORIE_FOND",pasDeRegle(),0)
# Fusion FORM_FISS='ELLIPSE' et FORM_FISS='INCLUSION'
dFORME={"INCLUSION":"ELLIPSE",}
- ChangementValeurDsMCF(jdc,"DEFI_FISS_XFEM","DEFI_FISS","FORM_FISS",dOPE)
+ changementValeurDsMCF(jdc,"DEFI_FISS_XFEM","DEFI_FISS","FORM_FISS",dOPE)
- #### Traitement de DEFI_FONC_ELEC ##############################
+ #### traitement de DEFI_FONC_ELEC ##############################
# Rien à faire
- #### Traitement de DEFI_FOND_FISS ##############################
+ #### traitement de DEFI_FOND_FISS ##############################
renameMotCle(jdc,"DEFI_FOND_FISS","FOND_FISS","FONDFISS")
# Cas FOND OUVERT
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_FOND_FISS","FONDFISS","TYPE_FOND='OUVERT'",((("FONDFISS",),"existe"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_FOND_FISS","FONDFISS","TYPE_FOND='OUVERT'",((("FONDFISS",),"existe"),))
# Cas FOND FERME
chercheOperInsereFacteurSiRegle(jdc,"DEFI_FOND_FISS","TYPE_FOND='FERME'",((("FOND_FERME",),"existe"),),0)
renameMotCle(jdc,"DEFI_FOND_FISS","FOND_FERME","FONDFISS")
#
renameMotCle(jdc,"DEFI_FOND_FISS","FONDFISS","FOND_FISS")
- #### Traitement de DEFI_GLRC ##############################
+ #### traitement de DEFI_GLRC ##############################
# Renommage de mot-clés
renameMotCle(jdc,"DEFI_GLRC","GC","GAMMA_C")
renameMotCle(jdc,"DEFI_GLRC","SYC","NYC")
renameMotCle(jdc,"DEFI_GLRC","EPSI_FLEX","KAPPA_FLEX")
- #### Traitement de DEFI_GROUPE ##############################
+ #### traitement de DEFI_GROUPE ##############################
# Rien à faire
- #### Traitement de DEFI_INTE_SPEC ##############################
+ #### traitement de DEFI_INTE_SPEC ##############################
# Rien à faire
- #### Traitement de DEFI_LIST_INST ##############################
+ #### traitement de DEFI_LIST_INST ##############################
dMETHODE={"UNIFORME":"MANUEL","EXTRAPOLE":"MANUEL","AUCUNE":"AUTO"}
- ChangementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","SUBD_METHODE",dMETHODE)
+ changementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","SUBD_METHODE",dMETHODE)
removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","SUBD_COEF_PAS_1",pasDeRegle(),0)
- #### Traitement de DEFI_MATER_GC ##############################
+ #### traitement de DEFI_MATER_GC ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de DEFI_MATERIAU ##############################
+ #### traitement de DEFI_MATERIAU ##############################
# Suppression des critères pour les poutres
- GenereErreurMCF(jdc,"DEFI_MATERIAU","ECRO_FLEJOU")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE_FO")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","ECRO_FLEJOU")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE_FO")
# Modification de la loi de grandissement
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_A")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_B")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_S")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_A")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_B")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_S")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_A")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_B")
- GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_S")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_A")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_B")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_S")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_A")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_B")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_S")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_A")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_B")
+ genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_S")
# Modification des paramètres de la loi ENDO_SCALAIRE
- GenereErreurMCF(jdc,"DEFI_MATERIAU","ENDO_SCALAIRE")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","ENDO_SCALAIRE")
# Modification des paramètres de la loi MAZARS
- GenereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS_FO")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS_FO")
# Modification des paramètres de la loi GLRC_DM
renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYT","NYT",pasDeRegle(),0)
renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYC","NYC",pasDeRegle(),0)
renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYF","NYF",pasDeRegle(),0)
# Suppression de la loi MONO_VISC3
- GenereErreurMCF(jdc,"DEFI_MATERIAU","MONO_VISC3")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","MONO_VISC3")
# Suppression de la loi MONO_DD_CC
- GenereErreurMCF(jdc,"DEFI_MATERIAU","MONO_DD_CC")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","MONO_DD_CC")
- #### Traitement de DEFI_NAPPE ##############################
+ #### traitement de DEFI_NAPPE ##############################
# Rien à faire
- #### Traitement de DEFI_PARA_SENSI ##############################
+ #### traitement de DEFI_PARA_SENSI ##############################
# Résorption de la sensibilité
removeCommande(jdc,"DEFI_PARA_SENSI")
- #GenereErreurPourCommande(jdc,("DEFI_PARA_SENSI",))
+ #genereErreurPourCommande(jdc,("DEFI_PARA_SENSI",))
- #### Traitement de DEFI_PART_FETI ##############################
+ #### traitement de DEFI_PART_FETI ##############################
# Rien à faire
- #### Traitement de DEFI_SOL_MISS ##############################
+ #### traitement de DEFI_SOL_MISS ##############################
# Rien à faire
- #### Traitement de DEFI_SPEC_TURB ##############################
+ #### traitement de DEFI_SPEC_TURB ##############################
# Homogénéisation de ANGLE
renameMotCleInFact(jdc,"DEFI_SPEC_TURB","SPEC_EXCI_POINT","ANGL","ANGLE",pasDeRegle(),0)
- #### Traitement de DETRUIRE ##############################
+ #### traitement de DETRUIRE ##############################
# Résorption de la sensibilité
removeMotCleInFact(jdc,"DETRUIRE","CONCEPT","SENSIBILITE",pasDeRegle(),0)
# Suppression mot-clé ALARME
removeMotCle(jdc,"DETRUIRE","ALARME",pasDeRegle(),0)
- #### Traitement de DYNA_ALEA_MODAL ##############################
+ #### traitement de DYNA_ALEA_MODAL ##############################
# Rien à faire
- #### Traitement de DYNA_ISS_VARI ##############################
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_ISS_VARI","MATR_COHE","TYPE='MITA_LUCO'",((("MATR_COHE",),"existe"),))
+ #### traitement de DYNA_ISS_VARI ##############################
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_ISS_VARI","MATR_COHE","TYPE='MITA_LUCO'",((("MATR_COHE",),"existe"),))
- #### Traitement de DYNA_LINE_HARM ##############################
+ #### traitement de DYNA_LINE_HARM ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"DYNA_LINE_HARM","SENSIBILITE",pasDeRegle(),0)
# Suppression mot-clé TYPE_CHARGE
moveMotClefInOperToFact(jdc,"DYNA_LINE_HARM","AMOR_REDUIT","AMOR_MODAL")
moveMotClefInOperToFact(jdc,"DYNA_LINE_HARM","LIST_AMOR","AMOR_MODAL")
- #### Traitement de DYNA_LINE_TRAN ##############################
+ #### traitement de DYNA_LINE_TRAN ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"DYNA_LINE_TRAN","SENSIBILITE",pasDeRegle(),0)
# Ajout SCHEMA_TEMPS
chercheOperInsereFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS",((("NEWMARK","WILSON","DIFF_CENTRE","ADAPT",),"existeMCFParmi"),),1)
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","NEWMARK","ALPHA","SCHEMA_TEMPS")
moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","NEWMARK","DELTA","SCHEMA_TEMPS")
renameMotCleInFact(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","ALPHA","BETA",pasDeRegle(),0)
renameMotCleInFact(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","DELTA","GAMMA",pasDeRegle(),0)
removeMotCle(jdc,"DYNA_LINE_TRAN","NEWMARK",pasDeRegle(),0)
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='WILSON'",((("WILSON",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='WILSON'",((("WILSON",),"existeMCFParmi"),))
moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","WILSON","THETA","SCHEMA_TEMPS")
removeMotCle(jdc,"DYNA_LINE_TRAN","WILSON",pasDeRegle(),0)
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='DIFF_CENTRE'",((("DIFF_CENTRE",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='DIFF_CENTRE'",((("DIFF_CENTRE",),"existeMCFParmi"),))
removeMotCle(jdc,"DYNA_LINE_TRAN","DIFF_CENTRE",pasDeRegle(),0)
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='ADAPT_ORDRE2'",((("ADAPT",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='ADAPT_ORDRE2'",((("ADAPT",),"existeMCFParmi"),))
removeMotCle(jdc,"DYNA_LINE_TRAN","ADAPT",pasDeRegle(),0)
# Renommage dans ETAT_INIT
renameMotCleInFact(jdc,"DYNA_LINE_TRAN","ETAT_INIT","DYNA_TRANS","RESULTAT",pasDeRegle(),0)
# Suppression mot-clé TYPE_CHARGE
removeMotCleInFact(jdc,"DYNA_LINE_TRAN","EXCIT","TYPE_CHARGE",pasDeRegle(),0)
# Suppression mot-clé FONC_INST
- GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","FONC_INST")
+ genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","FONC_INST")
# Suppression mot-clé PAS_CALCUL
removeMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","PAS_CALCUL",pasDeRegle(),0)
# Renommage dans ARCHIVAGE
renameMotCleInFact(jdc,"DYNA_LINE_TRAN","ARCHIVAGE","LIST_ARCH","LIST_INST",pasDeRegle(),0)
- #### Traitement de DYNA_NON_LINE ##############################
+ #### traitement de DYNA_NON_LINE ##############################
# Renommage CRIT_FLAMB en CRIT_STAB
renameMotCle(jdc,"DYNA_NON_LINE","CRIT_FLAMB","CRIT_STAB")
# Résorption de la sensibilité
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"DYNA_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de DYNA_SPEC_MODAL ##############################
+ #### traitement de DYNA_SPEC_MODAL ##############################
# Rien à faire
- #### Traitement de DYNA_TRAN_MODAL ##############################
+ #### traitement de DYNA_TRAN_MODAL ##############################
# Ajout SCHEMA_TEMPS
chercheOperInsereFacteur(jdc,"DYNA_TRAN_MODAL","SCHEMA_TEMPS")
chercheOperInsereMotCleSiRegle(jdc,"DYNA_TRAN_MODAL","METHODE='EULER'",((("METHODE",),"nexistepas"),),)
moveMotClefInOperToFact(jdc,"DYNA_TRAN_MODAL","LAMBDA","PARA_LAMEFLUI")
renameMotCle(jdc,"DYNA_TRAN_MODAL","PARA_LAMEFLUI","PARA_LAME_FLUI")
- #### Traitement de DYNA_VIBRA ##############################
+ #### traitement de DYNA_VIBRA ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de EXEC_LOGICIEL ##############################
+ #### traitement de EXEC_LOGICIEL ##############################
# Rien à faire
- #### Traitement de EXTR_RESU ##############################
+ #### traitement de EXTR_RESU ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"EXTR_RESU","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de EXTR_TABLE ##############################
+ #### traitement de EXTR_TABLE ##############################
# Renommage critere table
dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
- ChangementValeurDsMCF(jdc,"RECU_TABLE","FILTRE","CRIT_COMP",dCRIT)
+ changementValeurDsMCF(jdc,"RECU_TABLE","FILTRE","CRIT_COMP",dCRIT)
- #### Traitement de FACTORISER ##############################
+ #### traitement de FACTORISER ##############################
# Suppression de RENUM
removeMotCleSiRegle(jdc,"FACTORISER","RENUM",((("PRE_COND","LDLT_INC",jdc),"MCaPourValeur"),))
removeMotCleSiRegle(jdc,"FACTORISER","RENUM",((("PRE_COND","LDLT_SP",jdc),"MCaPourValeur"),))
removeMotCle(jdc,"FACTORISER","LIBERE_MEMOIRE",pasDeRegle(),0)
renameMotCle(jdc,"FACTORISER","OUT_OF_CORE","GESTION_MEMOIRE")
dMEM={"OUI":"OUT_OF_CORE","NON":"IN_CORE"}
- ChangementValeur(jdc,"FACTORISER","GESTION_MEMOIRE",dCRIT)
+ changementValeur(jdc,"FACTORISER","GESTION_MEMOIRE",dCRIT)
- #### Traitement de FORMULE ##############################
+ #### traitement de FORMULE ##############################
# Rien à faire
- #### Traitement de GENE_ACCE_SEISME ##############################
+ #### traitement de GENE_ACCE_SEISME ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de GENE_FONC_ALEA ##############################
+ #### traitement de GENE_FONC_ALEA ##############################
# Rien à faire
- #### Traitement de GENE_VARI_ALEA ##############################
+ #### traitement de GENE_VARI_ALEA ##############################
# Rien à faire
- #### Traitement de IMPR_CO ##############################
+ #### traitement de IMPR_CO ##############################
# Résorption de la sensibilité
removeMotCleInFact(jdc,"IMPR_CO","CONCEPT","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de IMPR_DIAG_CAMPBELL ##############################
+ #### traitement de IMPR_DIAG_CAMPBELL ##############################
# Rien à faire
- #### Traitement de IMPR_FONCTION ##############################
+ #### traitement de IMPR_FONCTION ##############################
# Rien à faire
- #### Traitement de IMPR_GENE ##############################
+ #### traitement de IMPR_GENE ##############################
# Rien à faire
- #### Traitement de IMPR_OAR ##############################
+ #### traitement de IMPR_OAR ##############################
# Rien à faire
- #### Traitement de IMPR_RESU ##############################
+ #### traitement de IMPR_RESU ##############################
# Résorption de la sensibilité
removeMotCleInFact(jdc,"IMPR_RESU","RESU","SENSIBILITE",pasDeRegle(),0)
# Suppression de l'écriture au format ENSIGHT
- GenereErreurValeur(jdc,"IMPR_RESU","FORMAT",("'ENSIGHT'",))
+ genereErreurValeur(jdc,"IMPR_RESU","FORMAT",("'ENSIGHT'",))
# Homogénéisation de ANGLE
renameMotCleInFact(jdc,"IMPR_RESU","FORMAT","ANGL","ANGLE",pasDeRegle(),0)
# Suppression mot-clé MODELE
removeMotCle(jdc,"IMPR_RESU","MODELE",pasDeRegle(),0)
- #### Traitement de IMPR_STURM ##############################
+ #### traitement de IMPR_STURM ##############################
renameMotCle(jdc,"IMPR_STURM","TYPE_RESU","TYPE_MODE")
# renommage de MATR_A, MATR_B et MATR_C
renameMotCleSiRegle(jdc,"IMPR_STURM","MATR_A","MATR_RIGI",((("TYPE_MODE","DYNAMIQUE",jdc),"MCaPourValeur"),),1)
renameMotCle(jdc,"IMPR_STURM","MATR_B","MATR_MASS")
#
chercheOperInsereMotCleSiRegle(jdc,"IMPR_STURM","FREQ_MIN=0.",((("FREQ_MIN",),"nexistepas")and(("FREQ_MAX",),"existeMCFParmi"),),)
- FusionMotCleToFact(jdc,"IMPR_STURM",("FREQ_MIN","FREQ_MAX"),"FREQ")
- FusionMotCleToFact(jdc,"IMPR_STURM",("CHAR_CRIT_MIN","CHAR_CRIT_MAX"),"CHAR_CRIT")
+ fusionMotCleToFact(jdc,"IMPR_STURM",("FREQ_MIN","FREQ_MAX"),"FREQ")
+ fusionMotCleToFact(jdc,"IMPR_STURM",("CHAR_CRIT_MIN","CHAR_CRIT_MAX"),"CHAR_CRIT")
# Ajout COMPTAGE
chercheOperInsereFacteurSiRegle(jdc,"IMPR_STURM","COMPTAGE",((("NMAX_ITER_SHIFT","PREC_SHIFT","SEUIL_FREQ"),"existeMCFParmi"),),1)
moveMotClefInOperToFact(jdc,"IMPR_STURM","NMAX_ITER_SHIFT","COMPTAGE")
# Renommage de la commande
renameCommande(jdc,"IMPR_STURM","INFO_MODE", )
- #### Traitement de IMPR_TABLE ##############################
+ #### traitement de IMPR_TABLE ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"IMPR_TABLE","SENSIBILITE",pasDeRegle(),0)
# Renommage critere table
dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
- ChangementValeurDsMCF(jdc,"IMPR_TABLE","FILTRE","CRIT_COMP",dCRIT)
+ changementValeurDsMCF(jdc,"IMPR_TABLE","FILTRE","CRIT_COMP",dCRIT)
# Suppression de FORMAT_C
- GenereErreurMCF(jdc,"IMPR_TABLE","FORMAT_C")
+ genereErreurMCF(jdc,"IMPR_TABLE","FORMAT_C")
- #### Traitement de INCLUDE ##############################
+ #### traitement de INCLUDE ##############################
# Rien à faire
- #### Traitement de INCLUDE_MATERIAU ##############################
+ #### traitement de INCLUDE_MATERIAU ##############################
# Rien à faire
- #### Traitement de INFO_EXEC_ASTER ##############################
+ #### traitement de INFO_EXEC_ASTER ##############################
# Rien à faire
- #### Traitement de INFO_FONCTION ##############################
+ #### traitement de INFO_FONCTION ##############################
# Rien à faire
- #### Traitement de INFO_MODE ##############################
+ #### traitement de INFO_MODE ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de LIRE_CHAMP ##############################
+ #### traitement de LIRE_CHAMP ##############################
# Rien à faire
- #### Traitement de LIRE_FONCTION ##############################
+ #### traitement de LIRE_FONCTION ##############################
# Rien à faire
- #### Traitement de LIRE_IMPE_MISS ##############################
+ #### traitement de LIRE_IMPE_MISS ##############################
# Rien à faire
- #### Traitement de LIRE_INTE_SPEC ##############################
+ #### traitement de LIRE_INTE_SPEC ##############################
# Rien à faire
- #### Traitement de LIRE_MAILLAGE ##############################
+ #### traitement de LIRE_MAILLAGE ##############################
# Rien à faire
- #### Traitement de LIRE_RESU ##############################
+ #### traitement de LIRE_RESU ##############################
# Suppression du type HARM_GENE
- GenereErreurValeur(jdc,"LIRE_RESU","TYPE_RESU",("'HARM_GENE'",))
+ genereErreurValeur(jdc,"LIRE_RESU","TYPE_RESU",("'HARM_GENE'",))
# renommage de MATR_A et MATR_B
renameMotCle(jdc,"LIRE_RESU","MATR_A","MATR_RIGI")
renameMotCle(jdc,"LIRE_RESU","MATR_B","MATR_MASS")
"'PMPB_ELNO'","'PMPB_NOEU'","'SITQ_ELNO'","'SICA_ELNO'",
"'SICO_ELNO'","'SITU_ELNO'","'SICA_NOEU'","'SICO_NOEU'",
"'SPMX_ELGA'","'VACO_ELNO'","'VATU_ELNO'",]
- GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",lSUPCHAMPS)
- GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",lSUPCHAMPS)
- GenereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",lSUPCHAMPS)
+ genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",lSUPCHAMPS)
+ genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",lSUPCHAMPS)
+ genereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",lSUPCHAMPS)
- #### Traitement de LIRE_TABLE ##############################
+ #### traitement de LIRE_TABLE ##############################
# Rien à faire
- #### Traitement de MACR_ADAP_MAIL ##############################
+ #### traitement de MACR_ADAP_MAIL ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"MACR_ADAP_MAIL","SENSIBILITE",pasDeRegle(),0)
# Changement de version
- ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
+ changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
# Changement d'adaptation
- ChangementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",{"RAFFINEMENT_ZONE":"RAFF_DERA_ZONE"})
+ changementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",{"RAFFINEMENT_ZONE":"RAFF_DERA_ZONE"})
# Renommage du mot-clé ELEMENTS_NON_HOMARD
renameMotCle(jdc,"MACR_ADAP_MAIL","ELEMENTS_NON_HOMARD","ELEMENTS_ACCEPTES")
- ChangementValeur(jdc,"MACR_ADAP_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
+ changementValeur(jdc,"MACR_ADAP_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
- #### Traitement de MACR_ASCOUF_CALC ##############################
+ #### traitement de MACR_ASCOUF_CALC ##############################
# Rien à faire
- #### Traitement de MACR_ASCOUF_MAIL ##############################
+ #### traitement de MACR_ASCOUF_MAIL ##############################
# Rien à faire
- #### Traitement de MACR_ASPIC_CALC ##############################
+ #### traitement de MACR_ASPIC_CALC ##############################
# Rien à faire
- #### Traitement de MACR_ASPIC_MAIL ##############################
+ #### traitement de MACR_ASPIC_MAIL ##############################
# Rien à faire
- #### Traitement de MACR_CARA_POUTRE ##############################
+ #### traitement de MACR_CARA_POUTRE ##############################
renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_Y","SYME_ZZ")
renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_X","SYME_Y")
renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_ZZ","SYME_Z")
- #### Traitement de MACR_ECLA_PG ##############################
+ #### traitement de MACR_ECLA_PG ##############################
# Rien à faire
- #### Traitement de MACR_ECRE_CALC ##############################
+ #### traitement de MACR_ECRE_CALC ##############################
# Changement de version
- ChangementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
+ changementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
- #### Traitement de MACR_ECREVISSE ##############################
+ #### traitement de MACR_ECREVISSE ##############################
# Changement de version
- ChangementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
+ changementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
- #### Traitement de MACR_ELEM_DYNA ##############################
+ #### traitement de MACR_ELEM_DYNA ##############################
# Rien à faire
- #### Traitement de MACR_FIABILITE ##############################
- GenereErreurPourCommande(jdc,("MACR_FIABILITE",))
+ #### traitement de MACR_FIABILITE ##############################
+ genereErreurPourCommande(jdc,("MACR_FIABILITE",))
- #### Traitement de MACR_FIAB_IMPR ##############################
- GenereErreurPourCommande(jdc,("MACR_FIAB_IMPR",))
+ #### traitement de MACR_FIAB_IMPR ##############################
+ genereErreurPourCommande(jdc,("MACR_FIAB_IMPR",))
- #### Traitement de MACR_INFO_MAIL ##############################
+ #### traitement de MACR_INFO_MAIL ##############################
# Changement de version
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
# Renommage du mot-clé ELEMENTS_NON_HOMARD
renameMotCle(jdc,"MACR_INFO_MAIL","ELEMENTS_NON_HOMARD","ELEMENTS_ACCEPTES")
- ChangementValeur(jdc,"MACR_INFO_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
+ changementValeur(jdc,"MACR_INFO_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
- #### Traitement de MACR_LIGN_COUPE ##############################
+ #### traitement de MACR_LIGN_COUPE ##############################
# Rien à faire
- #### Traitement de MACRO_ELAS_MULT ##############################
+ #### traitement de MACRO_ELAS_MULT ##############################
# Résorption de NUME_COUCHE NIVE_COUCHE
removeMotCleInFact(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","NUME_COUCHE",pasDeRegle(),0)
removeMotCleInFact(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","NIVE_COUCHE",pasDeRegle(),0)
"'QIRE_ELNO'","'QIZ1_ELEM'","'QIZ2_ELEM'","'EPEQ_ELGA'","'FORC_NODA'",
"'REAC_NODA'","'EPSI_NOEU'","'SIGM_NOEU'","'EFGE_NOEU'","'SIEQ_NOEU'",
"'EPEQ_NOEU'","'FLUX_NOEU'",]
- GenereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",lOPT)
+ genereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",lOPT)
- #### Traitement de MACRO_EXPANS ##############################
+ #### traitement de MACRO_EXPANS ##############################
# Rien à faire
- #### Traitement de MACRO_MATR_AJOU ##############################
+ #### traitement de MACRO_MATR_AJOU ##############################
# Rien à faire
- #### Traitement de MACRO_MATR_ASSE ##############################
+ #### traitement de MACRO_MATR_ASSE ##############################
# Suppression de paramètres mémoire
removeMotCleInFact(jdc,"MACRO_MATR_ASSE","SOLVEUR","OUT_OF_CORE",pasDeRegle(),0)
removeMotCleInFact(jdc,"MACRO_MATR_ASSE","SOLVEUR","LIBERE_MEMOIRE",pasDeRegle(),0)
# Suppression de RIGI_MECA_LAGR
- GenereErreurValeurDsMCF(jdc,"MACRO_MATR_ASSE","MATR_ASSE","OPTION",("'RIGI_MECA_LAGR'",))
- GenereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","THETA")
- GenereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","PROPAGATION")
+ genereErreurValeurDsMCF(jdc,"MACRO_MATR_ASSE","MATR_ASSE","OPTION",("'RIGI_MECA_LAGR'",))
+ genereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","THETA")
+ genereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","PROPAGATION")
# Renommage de la commande
renameCommande(jdc,"MACRO_MATR_ASSE","ASSEMBLAGE", )
- #### Traitement de MACRO_MISS_3D ##############################
+ #### traitement de MACRO_MISS_3D ##############################
# Rien à faire
- #### Traitement de MACRO_MODE_MECA ##############################
+ #### traitement de MACRO_MODE_MECA ##############################
# renommage de MATR_A et MATR_B
renameMotCle(jdc,"MACRO_MODE_MECA","MATR_A","MATR_RIGI")
renameMotCle(jdc,"MACRO_MODE_MECA","MATR_B","MATR_MASS")
renameMotCle(jdc,"MACRO_MODE_MECA","CALC_FREQ","CALCFREQ")
moveMotCleFromFactToFather(jdc,"MACRO_MODE_MECA","CALCFREQ","FREQ_MIN")
moveMotCleFromFactToFather(jdc,"MACRO_MODE_MECA","CALCFREQ","FREQ_MAX")
- FusionMotCleToFact(jdc,"MACRO_MODE_MECA",("FREQ_MIN","FREQ_MAX"),"FREQ")
+ fusionMotCleToFact(jdc,"MACRO_MODE_MECA",("FREQ_MIN","FREQ_MAX"),"FREQ")
moveMotClefInOperToFact(jdc,"MACRO_MODE_MECA","FREQ","CALCFREQ",)
renameMotCle(jdc,"MACRO_MODE_MECA","CALCFREQ","CALC_FREQ")
removeMotCleInFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","NB_BLOC_FREQ",pasDeRegle(),0)
renameMotCleInFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","STOP_FREQ_VIDE","STOP_BANDE_VIDE",pasDeRegle(),0)
# Renommage critere de Sturm
- ChangementValeurDsMCF(jdc,"MACRO_MODE_MECA","VERI_MODE","STURM",{"OUI":"GLOBAL",})
+ changementValeurDsMCF(jdc,"MACRO_MODE_MECA","VERI_MODE","STURM",{"OUI":"GLOBAL",})
- #### Traitement de MACRO_PROJ_BASE ##############################
+ #### traitement de MACRO_PROJ_BASE ##############################
renameMotCle(jdc,"MACRO_PROJ_BASE","PROFIL","STOCKAGE")
# Renommage de la commande
renameCommande(jdc,"MACRO_PROJ_BASE","PROJ_BASE", )
- #### Traitement de MACR_RECAL ##############################
+ #### traitement de MACR_RECAL ##############################
renameMotCle(jdc,"MACR_RECAL","POIDS","LIST_POIDS")
- #### Traitement de MACR_SPECTRE ##############################
+ #### traitement de MACR_SPECTRE ##############################
# Rien à faire
- #### Traitement de MECA_STATIQUE ##############################
+ #### traitement de MECA_STATIQUE ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"MECA_STATIQUE","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de MODE_ITER_INV ##############################
+ #### traitement de MODE_ITER_INV ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"MODE_ITER_INV","SENSIBILITE",pasDeRegle(),0)
# renommage de MATR_A, MATR_B et MATR_C
renameMotCle(jdc,"MODE_ITER_INV","MATR_A","MATR_RIGI")
renameMotCle(jdc,"MODE_ITER_INV","MATR_B","MATR_MASS")
- #### Traitement de MODE_ITER_SIMULT ##############################
+ #### traitement de MODE_ITER_SIMULT ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"MODE_ITER_SIMULT","SENSIBILITE",pasDeRegle(),0)
# renommage de MATR_A, MATR_B et MATR_C
# renommage STOP_FREQ_VIDE
renameMotCle(jdc,"MODE_ITER_SIMULT","STOP_FREQ_VIDE","STOP_BANDE_VIDE")
- #### Traitement de MODE_STATIQUE ##############################
+ #### traitement de MODE_STATIQUE ##############################
# renommage du mot-clé FREQ
renameMotCleInFact(jdc,"MODE_STATIQUE","MODE_INTERF","FREQ","SHIFT",pasDeRegle(),0)
- #### Traitement de MODI_MODELE_XFEM ##############################
- GenereErreurValeur(jdc,"MODI_MODELE_XFEM","CONTACT",("'P1P1A'",))
+ #### traitement de MODI_MODELE_XFEM ##############################
+ genereErreurValeur(jdc,"MODI_MODELE_XFEM","CONTACT",("'P1P1A'",))
- #### Traitement de MODI_REPERE ##############################
+ #### traitement de MODI_REPERE ##############################
# renommage de DEFI_REPERE
renameMotCle(jdc,"MODI_REPERE","DEFI_REPERE","AFFE")
moveMotCleFromFactToFather(jdc,"MODI_REPERE","AFFE","REPERE")
moveMotClefInOperToFact(jdc,"MODI_REPERE","MAILLE","AFFE",)
moveMotClefInOperToFact(jdc,"MODI_REPERE","NOEUD","AFFE",)
- #### Traitement de NORM_MODE ##############################
+ #### traitement de NORM_MODE ##############################
removeMotCle(jdc,"NORM_MODE","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de NUME_DDL ##############################
+ #### traitement de NUME_DDL ##############################
# Rien à faire
- #### Traitement de NUME_DDL_GENE ##############################
+ #### traitement de NUME_DDL_GENE ##############################
# Rien à faire
- #### Traitement de OBSERVATION ##############################
+ #### traitement de OBSERVATION ##############################
# renommage de MATR_A et MATR_B
renameMotCle(jdc,"OBSERVATION","MATR_A","MATR_RIGI")
renameMotCle(jdc,"OBSERVATION","MATR_B","MATR_MASS")
- #### Traitement de POST_BORDET ##############################
+ #### traitement de POST_BORDET ##############################
# Rien à faire
- #### Traitement de POST_CHAMP ##############################
+ #### traitement de POST_CHAMP ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de POST_CHAM_XFEM ##############################
+ #### traitement de POST_CHAM_XFEM ##############################
# Suppression mot-clé MAILLAGE_SAIN
removeMotCle(jdc,"POST_CHAM_XFEM","MAILLAGE_SAIN",pasDeRegle(),0)
- #### Traitement de POST_COQUE ##############################
+ #### traitement de POST_COQUE ##############################
# Rien à faire
- #### Traitement de POST_DECOLLEMENT ##############################
+ #### traitement de POST_DECOLLEMENT ##############################
# Rien à faire
- #### Traitement de POST_DYNA_ALEA ##############################
+ #### traitement de POST_DYNA_ALEA ##############################
# Suppression du mot-clé NUME_VITE_FLUI
removeMotCle(jdc,"POST_DYNA_ALEA","NUME_VITE_FLUI",pasDeRegle(),0)
- #### Traitement de POST_ELEM ##############################
+ #### traitement de POST_ELEM ##############################
# Rien à faire
- #### Traitement de POST_ENDO_FISS ##############################
+ #### traitement de POST_ENDO_FISS ##############################
# Suppression du mot-clé MODELE
removeMotCle(jdc,"POST_ENDO_FISS","MODELE",pasDeRegle(),0)
# Renommage de SEUIL
renameMotCleInFact(jdc,"POST_ENDO_FISS","RECHERCHE","SEUIL","BORNE_MIN",pasDeRegle(),0)
- #### Traitement de POST_FATIGUE ##############################
+ #### traitement de POST_FATIGUE ##############################
# Suppression du chargement periodique
- GenereErreurValeur(jdc,"POST_FATIGUE","CHARGEMENT",("'PERIODIQUE'",))
+ genereErreurValeur(jdc,"POST_FATIGUE","CHARGEMENT",("'PERIODIQUE'",))
- #### Traitement de POST_GP ##############################
+ #### traitement de POST_GP ##############################
# Suppression de POST_GP au profit de CALC_GP
- GenereErreurPourCommande(jdc,("POST_GP",))
+ genereErreurPourCommande(jdc,("POST_GP",))
- #### Traitement de POST_K1_K2_K3 ##############################
+ #### traitement de POST_K1_K2_K3 ##############################
# Suppression de VECT_K1
removeMotCle(jdc,"POST_K1_K2_K3","VECT_K1",pasDeRegle(),0)
# Suppression de SYME_CHAR
removeMotCle(jdc,"POST_K1_K2_K3","DTAN_ORIG",pasDeRegle(),0)
removeMotCle(jdc,"POST_K1_K2_K3","DTAN_EXTR",pasDeRegle(),0)
- #### Traitement de POST_K_TRANS ##############################
+ #### traitement de POST_K_TRANS ##############################
# Suppression de la possibilité de donner un mode_meca
- GenereErreurMotCleInFact(jdc,"POST_K_TRANS","K_MODAL","RESU_MODA")
+ genereErreurMotCleInFact(jdc,"POST_K_TRANS","K_MODAL","RESU_MODA")
- #### Traitement de POST_MAC3COEUR ##############################
+ #### traitement de POST_MAC3COEUR ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de POST_MAIL_XFEM ##############################
+ #### traitement de POST_MAIL_XFEM ##############################
# Suppression du mot-clé MAILLAGE_SAIN
removeMotCle(jdc,"POST_MAIL_XFEM","MAILLAGE_SAIN",pasDeRegle(),0)
- #### Traitement de POST_RCCM ##############################
+ #### traitement de POST_RCCM ##############################
# Rien à faire
- #### Traitement de POST_RELEVE_T ##############################
+ #### traitement de POST_RELEVE_T ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"POST_RELEVE_T","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de POST_RUPTURE ##############################
+ #### traitement de POST_RUPTURE ##############################
# Rien à faire, n'existe pas en 10
- #### Traitement de POST_USURE ##############################
+ #### traitement de POST_USURE ##############################
# Rien à faire
- #### Traitement de POURSUITE ##############################
+ #### traitement de POURSUITE ##############################
# Suppression du mot-clé TITRE
removeMotCleInFact(jdc,"POURSUITE","CATALOGUE","TITRE",pasDeRegle(),0)
removeMotCle(jdc,"POURSUITE","IMPRESSION",pasDeRegle(),0)
removeMotCleInFact(jdc,"POURSUITE","MEMOIRE","PARTITION",pasDeRegle(),0)
removeMotCleInFact(jdc,"POURSUITE","MEMOIRE","DYNAMIQUE",pasDeRegle(),0)
- #### Traitement de PROJ_BASE ##############################
+ #### traitement de PROJ_BASE ##############################
# Suppression de RESU_GENE pour défaut de validation
- GenereErreurMCF(jdc,"PROJ_BASE","RESU_GENE")
+ genereErreurMCF(jdc,"PROJ_BASE","RESU_GENE")
- #### Traitement de PROJ_CHAMP ##############################
+ #### traitement de PROJ_CHAMP ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"PROJ_CHAMP","SENSIBILITE",pasDeRegle(),0)
- #### Traitement de PROJ_RESU_BASE ##############################
+ #### traitement de PROJ_RESU_BASE ##############################
# Suppression de RESU_GENE pour défaut de validation
- GenereErreurMCF(jdc,"PROJ_RESU_BASE","RESU_GENE")
+ genereErreurMCF(jdc,"PROJ_RESU_BASE","RESU_GENE")
- #### Traitement de PROJ_SPEC_BASE ##############################
+ #### traitement de PROJ_SPEC_BASE ##############################
# Rien à faire
- #### Traitement de PROPA_FISS ##############################
+ #### traitement de PROPA_FISS ##############################
# Suppression de DTAN_ORIG et DTAN_EXTR pour calcul automatique
removeMotCleInFact(jdc,"PROPA_FISS","FISSURE","DTAN_ORIG",pasDeRegle(),0)
removeMotCleInFact(jdc,"PROPA_FISS","FISSURE","DTAN_EXTR",pasDeRegle(),0)
- #### Traitement de PROPA_XFEM ##############################
+ #### traitement de PROPA_XFEM ##############################
# Suppression paramètres Loi de Paris
removeMotCle(jdc,"PROPA_XFEM","NB_POINT_FOND",pasDeRegle(),0)
removeMotCle(jdc,"PROPA_XFEM","TABLE",pasDeRegle(),0)
removeMotCle(jdc,"PROPA_XFEM","LOI_PROPA",pasDeRegle(),0)
removeMotCle(jdc,"PROPA_XFEM","COMP_LINE",pasDeRegle(),0)
- #### Traitement de RAFF_XFEM ##############################
+ #### traitement de RAFF_XFEM ##############################
# Rien à faire
- #### Traitement de RECU_FONCTION ##############################
+ #### traitement de RECU_FONCTION ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"RECU_FONCTION","SENSIBILITE",pasDeRegle(),0)
# Renommage critere table
dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
- ChangementValeurDsMCF(jdc,"RECU_FONCTION","FILTRE","CRIT_COMP",dCRIT)
+ changementValeurDsMCF(jdc,"RECU_FONCTION","FILTRE","CRIT_COMP",dCRIT)
- #### Traitement de RECU_GENE ##############################
+ #### traitement de RECU_GENE ##############################
# Rien à faire
- #### Traitement de RESOUDRE ##############################
+ #### traitement de RESOUDRE ##############################
# Suppression d'algo pour PETSc
removeMotCleSiRegle(jdc,"RESOUDRE","ALGORITHME",((("BCGS","BICG","TFQMR",),"MCaPourValeur"),))
- #### Traitement de REST_SPEC_PHYS ##############################
+ #### traitement de REST_SPEC_PHYS ##############################
# Rien à faire
- #### Traitement de SIMU_POINT_MAT ##############################
+ #### traitement de SIMU_POINT_MAT ##############################
# VALE_REF obligatoire si NOM_VARC in ('TEMP', 'SECH')
lNOMVARC=["CORR","IRRA","HYDR","EPSA","M_ACIER","M_ZIRC","NEUT1","NEUT2"]
removeMotCleInFactSiRegle(jdc,"SIMU_POINT_MAT","AFFE_VARC","VALE_REF",((("NOM_VARC",lNOMVARC,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"SIMU_POINT_MAT","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de STANLEY ##############################
+ #### traitement de STANLEY ##############################
# Rien à faire
- #### Traitement de STAT_NON_LINE ##############################
+ #### traitement de STAT_NON_LINE ##############################
# Renommage de IMPLEX
- ChangementValeur(jdc,"STAT_NON_LINE","METHODE",{"IMPL_EX":"IMPLEX"})
+ changementValeur(jdc,"STAT_NON_LINE","METHODE",{"IMPL_EX":"IMPLEX"})
removeMotCle(jdc,"STAT_NON_LINE","IMPL_EX",pasDeRegle(),0)
# Renommage CRIT_FLAMB en CRIT_STAB
renameMotCle(jdc,"STAT_NON_LINE","CRIT_FLAMB","CRIT_STAB")
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"STAT_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de THER_LINEAIRE ##############################
+ #### traitement de THER_LINEAIRE ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"THER_LINEAIRE","SENSIBILITE",pasDeRegle(),0)
removeMotCle(jdc,"THER_LINEAIRE","SENS_INIT",pasDeRegle(),0)
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"THER_LINEAIRE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de THER_NON_LINE ##############################
+ #### traitement de THER_NON_LINE ##############################
# Résorption de la sensibilité
removeMotCle(jdc,"THER_NON_LINE","SENSIBILITE",pasDeRegle(),0)
# Suppression du mot clé OPTION ######################################
# Suppression de ARCHIVAGE/DETR_NUME_SUIV
removeMotCleInFact(jdc,"THER_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
- #### Traitement de THER_NON_LINE_MO ##############################
+ #### traitement de THER_NON_LINE_MO ##############################
# Rien à faire
#################################################################
log.ferme(hdlr)
def main():
- parser = optparse.OptionParser(usage=usage)
+ parser = optparse.Optionparser(usage=usage)
parser.add_option('-i','--infile', dest="infile", default='toto.comm',
help="Le fichier à traduire")
#Parse les mocles des commandes
parseKeywords(root)
- #### Traitement de DEFI_PART_PA_OPS ##############################
- GenereErreurPourCommande(jdc,"DEFI_PART_PA_OPS")
+ #### traitement de DEFI_PART_PA_OPS ##############################
+ genereErreurPourCommande(jdc,"DEFI_PART_PA_OPS")
- #### Traitement de AFFE_CARA_ELEM ##############################
- ChangementValeurDsMCFSiRegle(jdc,"AFFE_CARA_ELEM","POUTRE","CARA",{"R1":"R_DEBUT","R2":"R_FIN",
+ #### traitement de AFFE_CARA_ELEM ##############################
+ changementValeurDsMCFSiRegle(jdc,"AFFE_CARA_ELEM","POUTRE","CARA",{"R1":"R_DEBUT","R2":"R_FIN",
"EP1":"EP_DEBUT","EP2":"EP_FIN"},
((("POUTRE","MAILLE",),"nexistepasMCsousMCF"),
(("POUTRE","SECTION","CERCLE",jdc),"MCsousMCFaPourValeur"),
),
)
- #### Traitement de AFFE_CHAR_MECA ##############################
+ #### traitement de AFFE_CHAR_MECA ##############################
# Suppression du mot-clé METHODE
removeMotCle(jdc,"AFFE_CHAR_MECA","METHODE",pasDeRegle(),0)
# Suppression des mot-clés LIAISON_XFEM
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_SOLIDE","ANGL_NAUT",pasDeRegle(),0)
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_SOLIDE","CENTRE",pasDeRegle(),0)
- #### Traitement de AFFE_CHAR_MECA_F ##############################
+ #### traitement de AFFE_CHAR_MECA_F ##############################
# Suppression du mot-clé METHODE
removeMotCle(jdc,"AFFE_CHAR_MECA_F","METHODE",pasDeRegle(),0)
# Résorption des mot-clés ANGLE_NAUT et CENTRE
removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_SOLIDE","ANGL_NAUT",pasDeRegle(),0)
removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_SOLIDE","CENTRE",pasDeRegle(),0)
- GenereErreurMotCleInFact(jdc,"AFFE_CHAR_MECA_F","ONDE_PLANE","DIRECTION")
+ genereErreurMotCleInFact(jdc,"AFFE_CHAR_MECA_F","ONDE_PLANE","DIRECTION")
- #### Traitement de AFFE_CHAR_THER ##############################
+ #### traitement de AFFE_CHAR_THER ##############################
# Suppression du mot-clé METHODE
removeMotCle(jdc,"AFFE_CHAR_THER","METHODE",pasDeRegle(),0)
- #### Traitement de AFFE_MODELE ##############################
+ #### traitement de AFFE_MODELE ##############################
# Suppression des mot-clés GRILLE et VERIF
removeMotCle(jdc,"AFFE_MODELE","GRILLE",pasDeRegle(),0)
removeMotCle(jdc,"AFFE_MODELE","VERIF",pasDeRegle(),0)
dINCO.update(d3DINCO)
dINCO.update(dAXIS)
dINCO.update(dDPLAN)
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dINCO)
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dINCO)
- #### Traitement de ASSEMBLAGE ##############################
- GenereErreurValeurDsMCF(jdc,"ASSEMBLAGE","MATR_ASSE","OPTION",("'MASS_THER'",))
+ #### traitement de ASSEMBLAGE ##############################
+ genereErreurValeurDsMCF(jdc,"ASSEMBLAGE","MATR_ASSE","OPTION",("'MASS_THER'",))
- #### Traitement de CALC_ESSAI_GEOMECA ##############################
+ #### traitement de CALC_ESSAI_GEOMECA ##############################
renameMotCleInFact(jdc,"CALC_ESSAI_GEOMECA","ESSAI_CISA_C","EPSI_IMPOSE","GAMMA_IMPOSE",pasDeRegle(),0)
renameMotCleInFact(jdc,"CALC_ESSAI_GEOMECA","ESSAI_CISA_C","EPSI_ELAS","GAMMA_ELAS",pasDeRegle(),0)
- #### Traitement de CALC_EUROPLEXUS ##############################
+ #### traitement de CALC_EUROPLEXUS ##############################
removeMotCle(jdc,"CALC_EUROPLEXUS","DIME",pasDeRegle(),0)
- GenereErreurMCF(jdc,"CALC_EUROPLEXUS","FONC_PARASOL")
+ genereErreurMCF(jdc,"CALC_EUROPLEXUS","FONC_PARASOL")
removeMotCleInFact(jdc,"CALC_EUROPLEXUS","ARCHIVAGE","CONT_GENER")
- #### Traitement de CALC_FERRAILLAGE ##############################
- GenereErreurPourCommande(jdc,"CALC_FERRAILLAGE")
+ #### traitement de CALC_FERRAILLAGE ##############################
+ genereErreurPourCommande(jdc,"CALC_FERRAILLAGE")
- #### Traitement de CALC_FONCTION ##############################
- AjouteMotClefDansFacteur(jdc,"CALC_FONCTION","CORR_ACCE","METHODE='POLYNOME'",pasDeRegle(),0)
- GenereErreurMotCleInFact(jdc,"CALC_FONCTION","DSP","FREQ")
+ #### traitement de CALC_FONCTION ##############################
+ ajouteMotClefDansFacteur(jdc,"CALC_FONCTION","CORR_ACCE","METHODE='POLYNOME'",pasDeRegle(),0)
+ genereErreurMotCleInFact(jdc,"CALC_FONCTION","DSP","FREQ")
- #### Traitement de CALC_G ##############################
+ #### traitement de CALC_G ##############################
removeMotCleInFact(jdc,"CALC_G","COMP_ELAS","RESI_INTE_RELA",pasDeRegle(),0)
removeMotCleInFact(jdc,"CALC_G","COMP_ELAS","ITER_INTE_MAXI",pasDeRegle(),0)
- #### Traitement de CALC_FATIGUE ##############################
- ChangementValeur(jdc,"CALC_FATIGUE","COURBE_GRD_VIE",{"MANSON_C":"MANSON_COFFIN",})
+ #### traitement de CALC_FATIGUE ##############################
+ changementValeur(jdc,"CALC_FATIGUE","COURBE_GRD_VIE",{"MANSON_C":"MANSON_COFFIN",})
- #### Traitement de CALC_IFS_DNL ##############################
+ #### traitement de CALC_IFS_DNL ##############################
removeMotCle(jdc,"CALC_IFS_DNL","ENERGIE",pasDeRegle(),0)
- #### Traitement de CALC_MAC3COEUR ##############################
- AjouteMotClefDansFacteur(jdc,"CALC_MAC3COEUR","DEFORMATION","ARCHIMEDE = 'OUI'",pasDeRegle())
+ #### traitement de CALC_MAC3COEUR ##############################
+ ajouteMotClefDansFacteur(jdc,"CALC_MAC3COEUR","DEFORMATION","ARCHIMEDE = 'OUI'",pasDeRegle())
- #### Traitement de CALC_MATR_ELEM ##############################
- GenereErreurValeur(jdc,"CALC_MATR_ELEM","OPTION",("'MASS_THER'",))
+ #### traitement de CALC_MATR_ELEM ##############################
+ genereErreurValeur(jdc,"CALC_MATR_ELEM","OPTION",("'MASS_THER'",))
- #### Traitement de CALC_MISS ##############################
- GenereErreurValeurDsMCF(jdc,"CALC_MISS","PARAMETRE","ISSF",("'OUI'",))
+ #### traitement de CALC_MISS ##############################
+ genereErreurValeurDsMCF(jdc,"CALC_MISS","PARAMETRE","ISSF",("'OUI'",))
- #### Traitement de CALC_MODAL ##############################
+ #### traitement de CALC_MODAL ##############################
# renameCommande(jdc,"CALC_MODAL","CALC_MODES", )
- GenereErreurPourCommande(jdc,"CALC_MODAL")
+ genereErreurPourCommande(jdc,"CALC_MODAL")
- #### Traitement de CALC_VECT_ELEM ##############################
- GenereErreurValeur(jdc,"CALC_VECT_ELEM","OPTION",("'FORC_NODA'",))
+ #### traitement de CALC_VECT_ELEM ##############################
+ genereErreurValeur(jdc,"CALC_VECT_ELEM","OPTION",("'FORC_NODA'",))
- #### Traitement de CREA_MAILLAGE ##############################
+ #### traitement de CREA_MAILLAGE ##############################
renameMotCle(jdc,"CREA_MAILLAGE","CREA_GROUP_MA","CREA_MAILLE")
- GenereErreurMCF(jdc,"CREA_MAILLAGE","ECLA_PG")
+ genereErreurMCF(jdc,"CREA_MAILLAGE","ECLA_PG")
lMCLEF=['COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE','QUAD_LINE',
'REPERE','RESTREINT','PENTA15_18']
- GenereErreurMCF(jdc,"CREA_MAILLAGE","DETR_GROUP_MA")
+ genereErreurMCF(jdc,"CREA_MAILLAGE","DETR_GROUP_MA")
removeMotCleInFactSiRegle(jdc,"CREA_MAILLAGE","DETR_GROUP_MA","NB_MAILLE",((lMCLEF,"nexistepasMCFParmi"),))
renameMotCleInFactSiRegle(jdc,"CREA_MAILLAGE","DETR_GROUP_MA","GROUP_MA","NOM",((lMCLEF,"nexistepasMCFParmi"),))
renameCommandeSiRegle(jdc,"CREA_MAILLAGE","DEFI_GROUP",((lMCLEF,"nexistepasMCFParmi"),))
- #### Traitement de DEBUT ##############################
- # GenereErreurPourCommande(jdc,("DEBUT",))
+ #### traitement de DEBUT ##############################
+ # genereErreurPourCommande(jdc,("DEBUT",))
removeMotCleInFact(jdc,"DEBUT","CODE","NOM",pasDeRegle(),0)
- #### Traitement de DEFI_COMPOR ##############################
- GenereErreurValeur(jdc,"DEFI_COMPOR","LOCALISATION",["'RL'",])
- GenereErreurValeur(jdc,"DEFI_COMPOR","RELATION_KIT",["'RVMIS_ISOT_CINE'",])
- GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","RELATION",["'LABORD_1D'"])
- GenereErreurMCF(jdc,"DEFI_COMPOR","POLYCRISTAL")
+ #### traitement de DEFI_COMPOR ##############################
+ genereErreurValeur(jdc,"DEFI_COMPOR","LOCALISATION",["'RL'",])
+ genereErreurValeur(jdc,"DEFI_COMPOR","RELATION_KIT",["'RVMIS_ISOT_CINE'",])
+ genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","RELATION",["'LABORD_1D'"])
+ genereErreurMCF(jdc,"DEFI_COMPOR","POLYCRISTAL")
- #### Traitement de DEFI_FISS_XFEM ##############################
- GenereErreurPourCommande(jdc,("DEFI_FISS_XFEM",))
+ #### traitement de DEFI_FISS_XFEM ##############################
+ genereErreurPourCommande(jdc,("DEFI_FISS_XFEM",))
removeMotCle(jdc,"DEFI_FISS_XFEM","MODELE",pasDeRegle(),0)
removeMotCle(jdc,"DEFI_FISS_XFEM","MODELE_GRILLE",pasDeRegle(),0)
- #### Traitement de DEFI_LIST_INST ##############################
- ChangementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","ACTION",{"REAC_PRECOND":"DECOUPE"})
+ #### traitement de DEFI_LIST_INST ##############################
+ changementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","ACTION",{"REAC_PRECOND":"DECOUPE"})
- #### Traitement de DEFI_MATER_GC ##############################
- AjouteMotClefDansFacteur(jdc,"DEFI_MATER_GC","MAZARS","CODIFICATION='ESSAI'",pasDeRegle(),0)
+ #### traitement de DEFI_MATER_GC ##############################
+ ajouteMotClefDansFacteur(jdc,"DEFI_MATER_GC","MAZARS","CODIFICATION='ESSAI'",pasDeRegle(),0)
removeMotCleInFactSiRegle(jdc,"DEFI_MATER_GC","MAZARS","UNITE_LONGUEUR",
((("MAZARS","CODIFICATION",["ESSAI"],jdc),"MCsousMCFaPourValeurDansListe"),),)
renameMotCleInFact(jdc,"DEFI_MATER_GC","MAZARS","UNITE_LONGUEUR","UNITE_CONTRAINTE")
- ChangementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"MM":"MPa"})
- ChangementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"M":"Pa"})
+ changementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"MM":"MPa"})
+ changementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"M":"Pa"})
- GenereErreurMCF(jdc,"DEFI_MATER_GC","MAZARS")
+ genereErreurMCF(jdc,"DEFI_MATER_GC","MAZARS")
- #### Traitement de DEFI_MATERIAU ##############################
+ #### traitement de DEFI_MATERIAU ##############################
lMLA=["F_MRR_RR", "C_MRR_RR", "F_MTT_TT", "C_MTT_TT", "F_MZZ_ZZ",
"C_MZZ_ZZ", "F_MRT_RT", "C_MRT_RT", "F_MRZ_RZ", "C_MRZ_RZ",
"F_MTZ_TZ", "C_MTZ_TZ",]
removeMotCleInFact(jdc,"DEFI_MATERIAU","UMAT","NB_VALE",pasDeRegle(),0)
removeMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO","NB_VALE",pasDeRegle(),0)
- liste_mc=["C"+str(i) for i in range(1,198)]
- FusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT",liste_mc,"LISTE_COEF")
- FusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO",liste_mc,"LISTE_COEF")
+ listeMc=["C"+str(i) for i in range(1,198)]
+ fusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT",listeMc,"LISTE_COEF")
+ fusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO",listeMc,"LISTE_COEF")
removeMotCle(jdc,"DEFI_MATERIAU","LABORD_1D",pasDeRegle(),0)
- GenereErreurMCF(jdc,"DEFI_MATERIAU","DIS_VISC")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","DIS_VISC")
lDISC=["PUIS_DX", "PUIS_DY", "PUIS_DZ", "PUIS_RX", "PUIS_RY", "PUIS_RZ",
"COEF_DX", "COEF_DY", "COEF_DZ", "COEF_RX", "COEF_RY", "COEF_RZ"]
for param in lDISC:
removeMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","EF",pasDeRegle(),0)
removeMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","NUF",pasDeRegle(),0)
- GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_FO")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_NL")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_HYDR")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE_FO")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","THER_FO")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","THER_NL")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","THER_HYDR")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE_FO")
- #### Traitement de DEFI_OBSTACLE ##############################
+ #### traitement de DEFI_OBSTACLE ##############################
lMCLE=("CRAYON_900","CRAYON_1300","GUID_A_CARTE_900",
"GUID_B_CARTE_900","GUID_C_CARTE_900","GUID_D_CARTE_900","GUID_E_CARTE_900",
"GUID_F_CARTE_900","GUID_A_CARTE_1300","GUID_B_CARTE_1300","GUID_C_CARTE_1300",
"GUID_B_GCOMB_900","GUID_C_GCOMB_900","GUID_D_GCOMB_900","GUID_E_GCOMB_900",
"GUID_F_GCOMB_900","GUID_A_GCOMB_1300","GUID_B_GCOMB_1300","GUID_C_GCOMB_1300",
"GUID_D_GCOMB_1300","GUID_E_GCOMB_1300","GUID_F_GCOMB_1300",)
- GenereErreurValeur(jdc,"DEFI_OBSTACLE","TYPE",lMCLE)
+ genereErreurValeur(jdc,"DEFI_OBSTACLE","TYPE",lMCLE)
- #### Traitement de DYNA_TRAN_MODAL ##############################
+ #### traitement de DYNA_TRAN_MODAL ##############################
removeMotCle(jdc,"DYNA_TRAN_MODAL","LAME_FLUIDE",pasDeRegle(),0)
removeMotCle(jdc,"DYNA_TRAN_MODAL","PARA_LAME_FLUI",pasDeRegle(),0)
removeMotCle(jdc,"DYNA_TRAN_MODAL","RELA_TRANSIS",pasDeRegle(),0)
- #### Traitement de DYNA_VIBRA ##############################
+ #### traitement de DYNA_VIBRA ##############################
removeMotCle(jdc,"DYNA_VIBRA","LAME_FLUIDE",pasDeRegle(),0)
removeMotCle(jdc,"DYNA_VIBRA","PARA_LAME_FLUI",pasDeRegle(),0)
removeMotCle(jdc,"DYNA_VIBRA","RELA_TRANSIS",pasDeRegle(),0)
- #### Traitement de EXTR_TABLE ##############################
- ChangementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"MATR_ELEM":"MATR_TANG_ELEM"})
- ChangementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"CODE_RETOUR":"CODE_RETOUR_INTE"})
+ #### traitement de EXTR_TABLE ##############################
+ changementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"MATR_ELEM":"MATR_TANG_ELEM"})
+ changementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"CODE_RETOUR":"CODE_RETOUR_INTE"})
- #### Traitement de FACTORISER ##############################
+ #### traitement de FACTORISER ##############################
renameMotCle(jdc,"FACTORISER","ELIM_LAGR2","ELIM_LAGR")
- ChangementValeur(jdc,"FACTORISER","ELIM_LAGR",{"OUI":"LAGR2",})
+ changementValeur(jdc,"FACTORISER","ELIM_LAGR",{"OUI":"LAGR2",})
- #### Traitement de GENE_ACCE_SEISME ##############################
- GenereErreurMCF(jdc,"GENE_ACCE_SEISME","MODULATION")
+ #### traitement de GENE_ACCE_SEISME ##############################
+ genereErreurMCF(jdc,"GENE_ACCE_SEISME","MODULATION")
moveMotCleFromFactToFather(jdc,"GENE_ACCE_SEISME","MODULATION","DUREE_PHASE_FORTE")
removeMotCleInFact(jdc,"GENE_ACCE_SEISME","DSP","FREQ_PENTE")
- #### Traitement de IMPR_MISS_3D ##############################
- GenereErreurPourCommande(jdc,"IMPR_MISS_3D")
+ #### traitement de IMPR_MISS_3D ##############################
+ genereErreurPourCommande(jdc,"IMPR_MISS_3D")
# removeCommande(jdc,"IMPR_MISS_3D")
- #### Traitement de IMPR_RESU ##############################
+ #### traitement de IMPR_RESU ##############################
removeMotCle(jdc,"IMPR_RESU","RESTREINT",pasDeRegle(),0)
- #### Traitement de INFO_FONCTION ##############################
- GenereErreurMCF(jdc,"INFO_FONCTION","NOCI_SEISME")
+ #### traitement de INFO_FONCTION ##############################
+ genereErreurMCF(jdc,"INFO_FONCTION","NOCI_SEISME")
- #### Traitement de LIRE_MAILLAGE ##############################
+ #### traitement de LIRE_MAILLAGE ##############################
removeMotCle(jdc,"LIRE_MAILLAGE","ABSC_CURV",pasDeRegle(),0)
- #### Traitement de LIRE_MISS_3D ##############################
- GenereErreurPourCommande(jdc,"LIRE_MISS_3D")
+ #### traitement de LIRE_MISS_3D ##############################
+ genereErreurPourCommande(jdc,"LIRE_MISS_3D")
- #### Traitement de MACR_ASCOUF_CALC ##############################
+ #### traitement de MACR_ASCOUF_CALC ##############################
removeMotCle(jdc,"MACR_ASCOUF_CALC","CL_BOL_P2_GV",pasDeRegle(),0)
- # GenereErreurMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS")
+ # genereErreurMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS")
- #### Traitement de MACR_ASCOUF_MAIL ##############################
- GenereErreurValeurDsMCF(jdc,"MACR_ASCOUF_MAIL","COUDE","BOL_P2",("'GV'",))
+ #### traitement de MACR_ASCOUF_MAIL ##############################
+ genereErreurValeurDsMCF(jdc,"MACR_ASCOUF_MAIL","COUDE","BOL_P2",("'GV'",))
- #### Traitement de MACR_ASPIC_CALC ##############################
- # GenereErreurMCF(jdc,"MACR_ASPIC_CALC","COMP_ELAS")
+ #### traitement de MACR_ASPIC_CALC ##############################
+ # genereErreurMCF(jdc,"MACR_ASPIC_CALC","COMP_ELAS")
- #### Traitement de MACR_ECREVISSE ##############################
- GenereErreurMCF(jdc,"MACR_ECREVISSE","COMP_INCR")
+ #### traitement de MACR_ECREVISSE ##############################
+ genereErreurMCF(jdc,"MACR_ECREVISSE","COMP_INCR")
- #### Traitement de MACR_INFO_MAIL ##############################
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_6":"V11_2"})
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N":"V11_N"})
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N_PERSO":"V11_N_PERSO"})
+ #### traitement de MACR_INFO_MAIL ##############################
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_6":"V11_2"})
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N":"V11_N"})
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N_PERSO":"V11_N_PERSO"})
- #### Traitement de MACRO_BASCULE_SCHEMA ##############################
+ #### traitement de MACRO_BASCULE_SCHEMA ##############################
renameMotCle(jdc,"MACRO_BASCULE_SCHEMA","COMP_INCR_IMPL","COMPORTEMENT_IMPL",pasDeRegle())
renameMotCle(jdc,"MACRO_BASCULE_SCHEMA","COMP_INCR_EXPL","COMPORTEMENT_EXPL",pasDeRegle())
- #### Traitement de MACRO_MISS_3D ##############################
- GenereErreurPourCommande(jdc,"MACRO_MISS_3D")
+ #### traitement de MACRO_MISS_3D ##############################
+ genereErreurPourCommande(jdc,"MACRO_MISS_3D")
- #### Traitement de MACRO_MODE_MECA ##############################
+ #### traitement de MACRO_MODE_MECA ##############################
# insereMotCleDansCommande(jdc,"MACRO_MODE_MECA","TYPE_RESU='DYNAMIQUE'")
chercheOperInsereFacteur(jdc,"MACRO_MODE_MECA","SOLVEUR_MODAL",)
chercheOperInsereFacteur(jdc,"MACRO_MODE_MECA","OPTION='BANDE'",pasDeRegle(),0)
moveMotCleFromFactToFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","DIM_SOUS_ESPACE","SOLVEUR_MODAL")
renameCommande(jdc,"MACRO_MODE_MECA","CALC_MODES", )
- #### Traitement de MODE_ITER_INV ##############################
+ #### traitement de MODE_ITER_INV ##############################
chercheOperInsereFacteur(jdc,"MODE_ITER_INV","SOLVEUR_MODAL",)
moveMotCleFromFactToFather(jdc,"MODE_ITER_INV","CALC_FREQ","OPTION")
moveMotCleFromFactToFather(jdc,"MODE_ITER_INV","CALC_CHAR_CRIT","OPTION")
renameCommande(jdc,"MODE_ITER_INV","CALC_MODES", )
- #### Traitement de MODE_ITER_SIMULT ##############################
+ #### traitement de MODE_ITER_SIMULT ##############################
chercheOperInsereFacteur(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL",)
removeMotCleSiRegle(jdc,"MODE_ITER_SIMULT","OPTION",((("METHODE","TRI_DIAG",jdc),"MCnaPasPourValeur"),),)
removeMotCleSiRegle(jdc,"MODE_ITER_SIMULT","OPTION",((("OPTION","SANS",jdc),"MCaPourValeur"),),)
moveMotClefInOperToFact(jdc,"MODE_ITER_SIMULT","OPTION","SOLVEUR_MODAL")
- ChangementValeurDsMCF(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION",{"MODE_RIGIDE":"OUI"})
+ changementValeurDsMCF(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION",{"MODE_RIGIDE":"OUI"})
renameMotCleInFact(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION","MODE_RIGIDE")
moveMotCleFromFactToFather(jdc,"MODE_ITER_SIMULT","CALC_FREQ","OPTION")
moveMotCleFromFactToFather(jdc,"MODE_ITER_SIMULT","CALC_CHAR_CRIT","OPTION")
renameCommande(jdc,"MODE_ITER_SIMULT","CALC_MODES", )
- #### Traitement de MODI_MAILLAGE ##############################
- GenereErreurValeurDsMCF(jdc,"MODI_MAILLAGE","DEFORME","OPTION",("'TRAN_APPUI'",))
+ #### traitement de MODI_MAILLAGE ##############################
+ genereErreurValeurDsMCF(jdc,"MODI_MAILLAGE","DEFORME","OPTION",("'TRAN_APPUI'",))
removeMotCleInFact(jdc,"MODI_MAILLAGE","DEFORME",["GROUP_NO_APPUI"],pasDeRegle(),0)
removeMotCleInFact(jdc,"MODI_MAILLAGE","DEFORME",["GROUP_NO_STRU"],pasDeRegle(),0)
- #### Traitement de MODI_MODELE_XFEM ##############################
- ChangementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P1P1":"STANDARD",})
- ChangementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P2P1":"STANDARD",})
+ #### traitement de MODI_MODELE_XFEM ##############################
+ changementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P1P1":"STANDARD",})
+ changementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P2P1":"STANDARD",})
- #### Traitement de POST_DYNA_ALEA ##############################
+ #### traitement de POST_DYNA_ALEA ##############################
chercheOperInsereFacteurSiRegle(jdc,"POST_DYNA_ALEA","INTERSPECTRE",((("INTE_SPEC",),"existe"),),1)
lPDA=["INTE_SPEC", "NUME_ORDRE_I", "NOEUD_I", "OPTION", "NUME_ORDRE_J",
"NOEUD_J", "NOM_CMP_I", "NOM_CMP_J", "MOMENT", "DUREE"]
moveMotClefInOperToFact(jdc,"POST_DYNA_ALEA",mcle,"INTERSPECTRE")
removeMotCle(jdc,"POST_DYNA_ALEA","TOUT_ORDRE",pasDeRegle(),0)
- AjouteMotClefDansFacteur(jdc,"POST_DYNA_ALEA","FRAGILITE","METHODE = 'EMV'",pasDeRegle())
+ ajouteMotClefDansFacteur(jdc,"POST_DYNA_ALEA","FRAGILITE","METHODE = 'EMV'",pasDeRegle())
- #### Traitement de POST_ELEM ##############################
- AjouteMotClefDansFacteurSiRegle(jdc,"POST_ELEM","VOLUMOGRAMME","NB_INTERV=5",
+ #### traitement de POST_ELEM ##############################
+ ajouteMotClefDansFacteurSiRegle(jdc,"POST_ELEM","VOLUMOGRAMME","NB_INTERV=5",
((("VOLUMOGRAMME","NB_INTERV",),"nexistepasMCsousMCF"),),)
- #### Traitement de POST_FATIGUE ##############################
- ChangementValeur(jdc,"POST_FATIGUE","DOMMAGE",{"MANSON_C":"MANSON_COFFIN",})
+ #### traitement de POST_FATIGUE ##############################
+ changementValeur(jdc,"POST_FATIGUE","DOMMAGE",{"MANSON_C":"MANSON_COFFIN",})
- #### Traitement de POURSUITE ##############################
+ #### traitement de POURSUITE ##############################
removeMotCle(jdc,"POURSUITE","CODE",)#"NOM",pasDeRegle(),0)
- #### Traitement de RECU_FONCTION ##############################
- GenereErreurMCF(jdc,"RECU_FONCTION","TABLE")
+ #### traitement de RECU_FONCTION ##############################
+ genereErreurMCF(jdc,"RECU_FONCTION","TABLE")
- #### Traitement de C_COMP_INCR et C_COMP_ELAS ##############################
+ #### traitement de C_COMP_INCR et C_COMP_ELAS ##############################
lCOM=["CALCUL","STAT_NON_LINE","CALC_G", "CALC_PRECONT","DYNA_NON_LINE","CALC_META",
"TEST_COMPOR","SIMU_POINT_MAT","CALC_ESSAI_GEOMECA","CALC_FORC_NONL","LIRE_RESU",
"MACR_ASCOUF_CALC","MACR_ASPIC_CALC","CALC_EUROPLEXUS","MACR_ECREVISSE",]
for com in lCOM:
# chercheOperInsereFacteurSiRegle(jdc,com,"COMPORTEMENT",(((["COMPORTEMENT"],),"nexistepasMCFParmi"),),1)
- FusionMCFToMCF(jdc,com,["COMP_ELAS","COMP_INCR"],"COMPORTEMENT")
+ fusionMCFToMCF(jdc,com,["COMP_ELAS","COMP_INCR"],"COMPORTEMENT")
# renameMotCle(jdc,com,"COMP_ELAS","COMPORTEMENT")
# renameMotCle(jdc,com,"COMP_INCR","COMPORTEMENT")
chercheOperInsereFacteurSiRegle(jdc,com,"ETAT_INIT",((("COMPORTEMENT","SIGM_INIT",),"existeMCsousMCF"),),1)
renameMotCleInFact(jdc,com,"ETAT_INIT","SIGM_INIT","SIGM",pasDeRegle(),0)
removeMotCleInFact(jdc,com,"COMPORTEMENT","SIGM_INIT",pasDeRegle(),0)
- ChangementValeur(jdc,com,"OPTION",{"FORC_INT_ELEM":"FORC_INTE_ELEM"})
+ changementValeur(jdc,com,"OPTION",{"FORC_INT_ELEM":"FORC_INTE_ELEM"})
removeMotCleInFactSiRegle(jdc,com,"COMPORTEMENT","NB_VARI",((("COMPORTEMENT","RELATION","'MFRONT'",jdc),"MCsousMCFaPourValeur"),))
- #### Traitement de TEST_COMPOR ##############################
- GenereErreurPourCommande(jdc,"TEST_COMPOR")
+ #### traitement de TEST_COMPOR ##############################
+ genereErreurPourCommande(jdc,"TEST_COMPOR")
- #### Traitement de THER_NON_LINE ##############################
+ #### traitement de THER_NON_LINE ##############################
renameMotCle(jdc,"THER_NON_LINE","COMP_THER_NL","COMPORTEMENT")
- #### Traitement de C_SOLVEUR ##############################
+ #### traitement de C_SOLVEUR ##############################
lCOM=['CALC_ERREUR', 'CALC_FORC_AJOU', 'CALC_IFS_DNL', 'CALC_MATR_AJOU', 'CALC_PRECONT',
'CREA_ELEM_SSD', 'DEFI_BASE_MODALE', 'DYNA_LINE_HARM', 'DYNA_LINE_TRAN', 'DYNA_NON_LINE',
'DYNA_TRAN_MODAL', 'INFO_MODE', 'MACR_ASCOUF_CALC', 'MACR_ASPIC_CALC', 'MACRO_BASCULE_SCHEMA',
'STAT_NON_LINE', 'THER_LINEAIRE', 'THER_NON_LINE', 'THER_NON_LINE_MO', 'CALC_ERC_DYN','CALC_MODES',]
for com in lCOM:
# Suppression de ELIM_LAGR2
- ChangementValeurDsMCF(jdc,com,"SOLVEUR","ELIM_LAGR2",{"OUI":"LAGR2"})
+ changementValeurDsMCF(jdc,com,"SOLVEUR","ELIM_LAGR2",{"OUI":"LAGR2"})
removeMotCleInFactSiRegle(jdc,com,"SOLVEUR","ELIM_LAGR2",((("SOLVEUR","ELIM_LAGR2","NON",jdc),"MCsousMCFaPourValeur"),))
renameMotCleInFact(jdc,com,"SOLVEUR","ELIM_LAGR2","ELIM_LAGR")
# Suppression de la méthode FETI
- GenereErreurValeurDsMCF(jdc,com,"SOLVEUR","METHODE",["FETI"])
+ genereErreurValeurDsMCF(jdc,com,"SOLVEUR","METHODE",["FETI"])
lMCLE=["NB_REORTHO_DD","NMAX_ITER","INFO_FETI","RESI_RELA","PARTITION"]
for mocle in lMCLE:
- GenereErreurMotCleInFact(jdc,com,"SOLVEUR",mocle)
+ genereErreurMotCleInFact(jdc,com,"SOLVEUR",mocle)
- #### Traitement de DEFI_PART_FETI ##############################
- GenereErreurMCF(jdc,"DEFI_PART_FETI","EXCIT")
+ #### traitement de DEFI_PART_FETI ##############################
+ genereErreurMCF(jdc,"DEFI_PART_FETI","EXCIT")
removeMotCle(jdc,"DEFI_PART_FETI","EXCIT",pasDeRegle(),0)
removeMotCle(jdc,"DEFI_PART_FETI","CORRECTION_CONNEX",pasDeRegle(),0)
- GenereErreurPourCommande(jdc,"DEFI_PART_FETI")
+ genereErreurPourCommande(jdc,"DEFI_PART_FETI")
renameCommande(jdc,"DEFI_PART_FETI","DEFI_PARTITION", )
#################################################################
log.ferme(hdlr)
def main():
- parser = optparse.OptionParser(usage=usage)
+ parser = optparse.Optionparser(usage=usage)
parser.add_option('-i','--infile', dest="infile", default='toto.comm',
help="Le fichier à traduire")
from inseremocle import *
from changeValeur import *
from movemocle import *
-from dictErreurs import GenereErreurPourCommande,GenereErreurMotCleInFact
+from dictErreurs import genereErreurPourCommande,genereErreurMotCleInFact
import calcG
parseKeywords(root)
####################### traitement erreurs ########################
- GenereErreurPourCommande(jdc,("DEBUT","POST_RCCM","DIST_LIGN_3D","IMPR_OAR","COMB_CHAM_NO","COMB_CHAM_ELEM"))
+ genereErreurPourCommande(jdc,("DEBUT","POST_RCCM","DIST_LIGN_3D","IMPR_OAR","COMB_CHAM_NO","COMB_CHAM_ELEM"))
####################### traitement CALC_META #######################
renameMotCleInFact(jdc,"CALC_META","ETAT_INIT","META_INIT","META_INIT_ELNO")
dStatNonLine={"ELAS":"ELAS_THER"}
lavertit=("ELAS")
- ChangementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dStatNonLine,lavertit)
+ changementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dStatNonLine,lavertit)
lavertit=("CHABOCHE","ASSE_COMBU","OHNO","GLRC")
dchaboche={"CHABOCHE":"VMIS_CIN1_CHAB","ASSE_COMBU":"XXX_IRA","OHNO":"VISC_TAHERI","GLRC":"GLRC_DAMAGE"}
- ChangementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
- ChangementValeurDsMCFAvecAvertissement(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
+ changementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
+ changementValeurDsMCFAvecAvertissement(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegleAvecErreur(jdc,"STAT_NON_LINE","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
renameMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegleAvecErreur(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
renameMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
moveMotClefInOperToFact(jdc,"STAT_NON_LINE","PARM_THETA","COMP_INCR")
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","NU", ("ELAS",))
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","RHO",("ELAS",))
moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","ALPHA",("ELAS",))
- AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","ELAS","NU=0.,",((("ELAS","NU"),"nexistepasMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","ELAS","NU=0.,",((("ELAS","NU"),"nexistepasMCsousMCF"),))
removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","POLY_CFC")
removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ECOU_PLAS1")
lavertit=("ELAS_THM","SURF_ETAT_SATU","SURF_ETAT_NSAT","CAM_CLAY_THM","LIQU_SATU_GAT","LIQU_NSAT_GAT")
dTHM={"ELAS_THM":"xxx", "SURF_ETAT_SATU":"xxx", "SURF_ETAT_NSAT":"xxx","CAM_CLAY_THM":"xxx","LIQU_SATU_GAT":"xxx","LIQU_NSAT_GAT":"xxx"}
- ChangementValeurAvecAvertissement(jdc,"DEFI_MATERIAU","COMP_THM",dTHM,lavertit)
+ changementValeurAvecAvertissement(jdc,"DEFI_MATERIAU","COMP_THM",dTHM,lavertit)
dfatigue={"MATAKE":"MATAKE_MODI_AC", "DOMM_MAXI":"MATAKE_MODI_AV", "FATEMI_SOCIE":"FATESOCI_MODI_AV"}
- ChangementValeurDsMCF(jdc,"DEFI_MATERIAU","CISA_PLAN_CRIT","CRITERE",dfatigue)
+ changementValeurDsMCF(jdc,"DEFI_MATERIAU","CISA_PLAN_CRIT","CRITERE",dfatigue)
####################### traitement IMPR_CO #######################
chercheOperInsereFacteurSiRegle(jdc,"IMPR_CO","CONCEPT",((("CO",),"existe"),))
moveMotClefInOperToFact(jdc,"CALC_G_LOCAL_T","DEGRE","LISSAGE")
dlocal={"CALC_G_LGLO":"G_LAGR", "G_BILINEAIRE":"G_BILI", "CALC_G_MAX":"G_MAX"}
- ChangementValeur(jdc,"CALC_G_LOCAL_T","OPTION",dlocal)
+ changementValeur(jdc,"CALC_G_LOCAL_T","OPTION",dlocal)
#
dtheta={"CALC_G_LAGR":"G_LAGR_GLOB", "G_BILINEAIRE":"G_BILI_GLOB", "CALC_G_MAX":"G_MAX_GLOB","CALC_G":"CALC_G_GLOB"}
# Attention si le defaut doit generer un avertissement Il faut le mettre comme dernier mot de la liste
lavertit=("CALC_G_LAGR","CALC_G","defaut")
- ChangementValeurAvecAvertissement(jdc,"CALC_G_THETA_T","OPTION",dtheta,lavertit)
+ changementValeurAvecAvertissement(jdc,"CALC_G_THETA_T","OPTION",dtheta,lavertit)
renameOper(jdc,"CALC_G_LOCAL_T","CALC_G")
renameOper(jdc,"CALC_G_THETA_T","CALC_G")
####################### traitement AFFE_MODELE #######################
daffeModele={"PLAN_FISSURE":"PLAN_JOINT", "AXIS_FISSURE":"AXIS_JOINT"}
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",daffeModele)
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",daffeModele)
removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","APPUI_REP",jdc),"MCsousMCFaPourValeur"),))
removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","ASSE_GRIL",jdc),"MCsousMCFaPourValeur"),))
removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","3D_JOINT_CT",jdc),"MCsousMCFaPourValeur"),))
####################### traitement CALC_ELEM / CALC_NO #######################
dcalcelemno={"ERRE_ELGA_NORE":"ERRE_ELEM_SIGM","ERRE_ELEM_NOZ1":"ERZ1_ELEM_SIGM","ERRE_ELEM_NOZ2":"ERZ2_ELEM_SIGM","ERRE_ELNO_ELGA":"ERRE_ELNO_ELEM","ERRE_NOEU_ELGA":"ERRE_NOEU_ELEM","ERTH_ELEM_TEMP":"ERRE_ELEM_TEMP","ERTH_ELNO_ELEM":"ERRE_ELNO_ELEM","EPGR_ELNO":"EPFP_ELNO","EPGR_ELGA":"EPFP_ELGA","DURT_ELGA_TEMP":"DURT_ELNO_TEMP"}
- ChangementValeur(jdc,"CALC_ELEM","OPTION",dcalcelemno)
- ChangementValeur(jdc,"CALC_NO","OPTION",dcalcelemno)
- ChangementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dcalcelemno)
- ChangementValeur(jdc,"TEST_RESU","RESU",dcalcelemno)
+ changementValeur(jdc,"CALC_ELEM","OPTION",dcalcelemno)
+ changementValeur(jdc,"CALC_NO","OPTION",dcalcelemno)
+ changementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dcalcelemno)
+ changementValeur(jdc,"TEST_RESU","RESU",dcalcelemno)
removeMotCleAvecErreur(jdc,"TEST_RESU","UNITE")
chercheOperInsereFacteurSiRegle(jdc,"CALC_ELEM","REPE_COQUE",((("NUME_COUCHE","NIVE_COUCHE","ANGLE","PLAN"),"existeMCFParmi"),))
####################### traitement EXTR_MODE #######################
- AjouteMotClefDansFacteurSiRegle(jdc,"EXTR_MODE","FILTRE_MODE","SEUIL=1.E-3", ((("FILTRE_MODE","CRIT_EXTR",),"existeMCsousMCF"),(("FILTRE_MODE","SEUIL",),"nexistepasMCsousMCF")))
+ ajouteMotClefDansFacteurSiRegle(jdc,"EXTR_MODE","FILTRE_MODE","SEUIL=1.E-3", ((("FILTRE_MODE","CRIT_EXTR",),"existeMCsousMCF"),(("FILTRE_MODE","SEUIL",),"nexistepasMCsousMCF")))
####################### traitement DYNA_TRAN_EXPLI #######################
removeMotCle(jdc,"DYNA_TRAN_EXPLI","NEWMARK")
####################### traitement CREA_RESU #######################
dcrearesu={"HYDR_ELGA":"HYDR_NOEU_ELGA"}
lavertit=("HYDR_ELGA",)
- ChangementValeur(jdc,"CREA_RESU","NOM_CHAM",dcrearesu,lavertit)
+ changementValeur(jdc,"CREA_RESU","NOM_CHAM",dcrearesu,lavertit)
####################### traitement CREA_CHAMP #######################
dcrearesu={"HYDR_ELGA":"HYDR_ELNO_ELGA"}
lavertit=("HYDR_ELGA",)
- ChangementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dcrearesu,lavertit)
- ChangementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dcrearesu,lavertit)
+ changementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dcrearesu,lavertit)
+ changementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dcrearesu,lavertit)
####################### traitement TEST_RESU #######################
dcrearesu={"HYDR_ELGA":"HYDR_NOEU_ELGA"}
lavertit=("HYDR_ELGA",)
- ChangementValeurDsMCFAvecAvertissement(jdc,"TEST_RESU","RESU","NOM_CHAM",dcrearesu,lavertit)
+ changementValeurDsMCFAvecAvertissement(jdc,"TEST_RESU","RESU","NOM_CHAM",dcrearesu,lavertit)
####################### traitement DEBUT #######################
removeMotCleSiRegle(jdc,"DEBUT","BASE",((("BASE","FICHIER","LOCALE",jdc),"MCsousMCFaPourValeur"),))
removeCommandeSiRegleAvecErreur(jdc,"CALC_CHAM_ELEM",((("OPTION","SOUR_ELGA_ELEC",jdc),"MCaPourValeur"),))
####################### traitement MACR_LIGNE_COUPE #######################
- AppelleMacroSelonValeurConcept(jdc,"MACR_LIGN_COUPE",("LIGN_COUPE","TABLE"))
+ appelleMacroSelonValeurConcept(jdc,"MACR_LIGN_COUPE",("LIGN_COUPE","TABLE"))
removeMotCleInFact(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TABLE")
####################### traitement MODI_MAILLAGE #######################
removeMotCle(jdc,"RECU_FONCTION","TYPE_RESU")
chercheOperInsereFacteurSiRegle(jdc,"RECU_FONCTION","NOM_PARA_TABL='FONCTION',",((("OBSTACLE",),"existe"),),estunFacteur=0)
chercheOperInsereFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE",((("OBSTACLE",),"existe"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","NOM_PARA='LIEU',",((("OBSTACLE",),"existe"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","VALE_K='DEFIOBST',",((("OBSTACLE",),"existe"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","NOM_PARA='LIEU',",((("OBSTACLE",),"existe"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","VALE_K='DEFIOBST',",((("OBSTACLE",),"existe"),))
renameMotCle(jdc,"RECU_FONCTION","OBSTACLE","TABLE")
####################### traitement DYNA_TRAN_MODAL #######################
removeMotCleInFactSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegle(jdc,"CALC_PRECONT","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
removeMotCleInFactSiRegleAvecErreur(jdc,"CALC_PRECONT","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","ITER_INTE_PAS",("COMP_INCR","COMP_ELAS"))
chercheOperInsereFacteur(jdc,"COMB_CHAM_NO","MODELE=xxx,",estunFacteur=0,erreur=1)
chercheOperInsereFacteur(jdc,"COMB_CHAM_NO","OPERATION='ASSE',",estunFacteur=0,erreur=1)
renameMotCle(jdc,"COMB_CHAM_NO","COMB_C","ASSE")
- AjouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","CUMUL='NON',")
- AjouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","TOUT='OUI',")
+ ajouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","CUMUL='NON',")
+ ajouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","TOUT='OUI',")
renameOper(jdc,"COMB_CHAM_NO","CREA_CHAMP")
####################### traitement MACR_ASCOUF_CALC #######################
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_ASCOUF_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_ASCOUF_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
renameMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
moveMotCleFromFactToFactMulti(jdc,"MACR_ASCOUF_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
moveMotCleFromFactToFactMulti(jdc,"MACR_ASCOUF_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
####################### traitement MACR_ASPIC_CALC #######################
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_ASPIC_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_ASPIC_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
renameMotCleInFact(jdc,"MACR_ASPIC_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
moveMotCleFromFactToFactMulti(jdc,"MACR_ASPIC_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
moveMotCleFromFactToFactMulti(jdc,"MACR_ASPIC_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
####################### traitement MACR_CABRI_CALC #######################
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_CABRI_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_CABRI_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
renameMotCleInFact(jdc,"MACR_CABRI_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
moveMotCleFromFactToFactMulti(jdc,"MACR_CABRI_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
moveMotCleFromFactToFactMulti(jdc,"MACR_CABRI_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
####################### traitement CALC_FATIGUE #######################
dfatigue={"MATAKE":"MATAKE_MODI_AC", "DOMM_MAXI":"MATAKE_MODI_AV", "FATEMI_SOCIE":"FATESOCI_MODI_AV"}
- ChangementValeur(jdc,"CALC_FATIGUE","CRITERE",dfatigue)
+ changementValeur(jdc,"CALC_FATIGUE","CRITERE",dfatigue)
####################### traitement DEFI_PART_FETI #######################
removeMotCleSiRegle(jdc,"DEFI_PART_FETI","MAILLAGE", ((("MODELE",),"existeMCFParmi"),(("MAILLAGE",),"existeMCFParmi")))
removeMotCle(jdc,"MACR_ADAP_MAIL","ADAPTATION")
renameMotCle(jdc,"MACR_ADAP_MAIL","ADAPTATIONEW","ADAPTATION")
dcalcelemno={"ERRE_ELGA_NORE":"ERRE_ELEM_SIGM","ERRE_ELEM_NOZ1":"ERZ1_ELEM_SIGM","ERRE_ELEM_NOZ2":"ERZ2_ELEM_SIGM","ERRE_ELNO_ELGA":"ERRE_ELNO_ELEM","ERRE_NOEU_ELGA":"ERRE_NOEU_ELEM","ERTH_ELEM_TEMP":"ERRE_ELEM_TEMP","ERTH_ELNO_ELEM":"ERRE_ELNO_ELEM","EPGR_ELNO":"EPFP_ELNO","EPGR_ELGA":"EPFP_ELGA","DURT_ELGA_TEMP":"DURT_ELNO_TEMP"}
- ChangementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",dcalcelemno)
+ changementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",dcalcelemno)
####################### traitement IMPR_FICO_HOMARD #######################
log.ferme(hdlr)
def main():
- parser = optparse.OptionParser(usage=usage)
+ parser = optparse.Optionparser(usage=usage)
parser.add_option('-i','--infile', dest="infile", default='toto.comm',
help="Le fichier à traduire")
from inseremocle import *
from changeValeur import *
from movemocle import *
-from dictErreurs import GenereErreurPourCommande,GenereErreurMotCleInFact
+from dictErreurs import genereErreurPourCommande,genereErreurMotCleInFact
import calcG
parseKeywords(root)
####################### traitement erreurs ########################
- GenereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE","DEFI_FISS_XFEM","POST_MAIL_XFEM"))
+ genereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE","DEFI_FISS_XFEM","POST_MAIL_XFEM"))
####################### traitement Sous-Structuration #######################
renameMotCleInFact(jdc,"DEFI_MAILLAGE","DEFI_SUPER_MAILLE","MACR_ELEM_STAT","MACR_ELEM")
####################### traitement XFEM #######################
dXFEM={"3D_XFEM":"3D", "C_PLAN_X":"C_PLAN", "D_PLAN_X":"D_PLAN"}
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEM)
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEM)
renameMotCleInFact(jdc,"DEFI_FISS_XFEM","ORIE_FOND","PT_ORIGIN","POINT_ORIG")
removeMotCleAvecErreur(jdc,"DEFI_FISS_XFEM","CONTACT")
#########################################################################
removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NUME_PASSAGE",((("TYPE_RESU_MECA","TUYAUTERIE",jdc),"MCaPourValeur"),))
chercheOperInsereFacteurSiRegle(jdc,"POST_RCCM","SEISME", ((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
moveMotCleFromFactToFact(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME","SEISME")
-# AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+# ajouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
# removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
removeMotCleInFactSiRegle(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
removeMotCleInFact(jdc,"POST_RCCM","CHAR_MECA","TYPE_CHAR",)
moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","BARCELONE")
renameMotCleInFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","KCAM")
# CAM_CLAY
-# AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
-# AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),))
+# ajouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
+# ajouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),))
# VENDOCHAB
renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","S_VP","S")
renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","N_VP","N")
####################### traitement MACR_ADAP/INFO_MAIL ######################
dadap_mail={ "V8_5":"V9_5", "V8_N":"V9_N", "V8_N_PERSO":"V9_N_PERSO"}
- ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail)
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail)
+ changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail)
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail)
#########################################################################
####################### traitement REST_BASE_PHYS ######################
#########################################################################
####################### traitement COMB_SISM_MODAL ######################
- AjouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),))
#########################################################################
####################### traitement TEST_FICHIER ######################
####################### traitement DYNA_TRAN_EXPLI ######################
renameOper(jdc,"DYNA_TRAN_EXPLI","DYNA_NON_LINE")
- AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'")
- AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'")
+ ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'")
+ ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'")
#########################################################################
####################### traitement SCHEMA_TEMPS dans DYNA_NON_LINE ######################
- AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'")
- AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'")
- AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'")
+ ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'")
+ ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'")
+ ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'")
renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","ALPHA","BETA",)
renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","DELTA","GAMMA",)
renameMotCleInFact(jdc,"DYNA_NON_LINE","TETA_METHODE","TETA","THETA",)
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),))
- AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),))
renameMotCle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA_TEMPS")
renameMotCle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA_TEMPS")
renameMotCle(jdc,"DYNA_NON_LINE","HHT","SCHEMA_TEMPS")
removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","MOMENT_4")
removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","C_PRAGER_MZ")
dDis_Choc={"DIS_CONTACT":"DIS_CHOC"}
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_INCR","DIS_CONTACT","DIS_CHOC")
renameMotCleInFact(jdc,"DYNA_NON_LINE","COMP_INCR","DIS_CONTACT","DIS_CHOC")
dGrilles={"GRILLE_CRAYONS":"DIS_GRICRA"}
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles)
renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),))
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","RECHERCHE")
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_ORIE_POU")
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","MODL_AXIS")
dAppariement={"MAIT_ESCL_SYME":"MAIT_ESCL"}
- ChangementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement)
+ changementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement)
- AjouteMotClefDansFacteurSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","TYPE_APPA='FIXE'",((("CONTACT","DIRE_APPA",),"existeMCsousMCF"),))
+ ajouteMotClefDansFacteurSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","TYPE_APPA='FIXE'",((("CONTACT","DIRE_APPA",),"existeMCsousMCF"),))
#########################################################################
####################### traitement CREA_CHAMP ######################
chercheOperInsereFacteurSiRegle(jdc,"CREA_CHAMP","PRECISION=1.E-3,", ((("PRECISION",),"nexistepas"),(("CRITERE",),"existe"),),0)
dTypeChamp={"ELEM_ERREUR":"ELEM_ERRE_R"}
- ChangementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dTypeChamp)
+ changementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dTypeChamp)
#########################################################################
####################### traitement CALC_NO ######################
#########################################################################
######### traitement variables de commandes TEMP_CALCULEE/TEMP_REF ##############
- GenereErreurMotCleInFact(jdc,"AFFE_MATERIAU","AFFE","TEMP_REF")
+ genereErreurMotCleInFact(jdc,"AFFE_MATERIAU","AFFE","TEMP_REF")
################################################################################
################# traitement LIRE_CHAMP #######################################
# dTypeChamp={"ELEM_ERREUR":"ELEM_ERRE_R"}
- ChangementValeur(jdc,"LIRE_CHAMP","TYPE_CHAM",dTypeChamp)
+ changementValeur(jdc,"LIRE_CHAMP","TYPE_CHAM",dTypeChamp)
################################################################################
######### traitement SUIVI_DDL #################################################
# en pre-traitement il faudrait une methode qui separe tous les mots clefs facteurs en les dupliquant
# par exemple ici mettre autant de mots clefs facteurs SUIVI_DDL qu'il a de _F
- AjouteMotClefDansFacteur(jdc,"STAT_NON_LINE","SUIVI_DDL","SUIVI_DDL='OUI'")
+ ajouteMotClefDansFacteur(jdc,"STAT_NON_LINE","SUIVI_DDL","SUIVI_DDL='OUI'")
renameMotCle(jdc,"STAT_NON_LINE","SUIVI_DDL","OBSERVATION")
# en post-traitement il faudrait une methode qui fusionne tous les mots clefs facteurs en double
# par exemple ici les OBSERVATION
######### traitement du MODELE GRILLE ##############################################
dGrille={"GRILLE":"GRILLE_EXCENTRE"}
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dGrille)
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dGrille)
################################################################################
######### traitement de MACR_ASPIC/ASCOUF_CALC GRILLE ##########################
######### traitement de MACR_LIGN_COUPE ######################################
# il y a un probleme s'il y a plusieurs mots clefs facteurs LIGN_COUPE : la regle ne marche qu'une fois par commande
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","REPERE='LOCAL'", ((("LIGN_COUPE","VECT_Y",),"existeMCsousMCF"),),0)
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","REPERE='LOCAL'", ((("LIGN_COUPE","VECT_Y",),"existeMCsousMCF"),),0)
# autre probleme : s'il y a plusieurs mots clefs facteurs le traducteur peut, dans l'insertion, se tromper de mot clef facteur
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_NO'", ((("LIGN_COUPE","GROUP_NO",),"existeMCsousMCF"),),0)
- AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_MA'", ((("LIGN_COUPE","GROUP_MA",),"existeMCsousMCF"),),0)
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_NO'", ((("LIGN_COUPE","GROUP_NO",),"existeMCsousMCF"),),0)
+ ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_MA'", ((("LIGN_COUPE","GROUP_MA",),"existeMCsousMCF"),),0)
################################################################################
####################### traitement DRUCKER_PRAGER #######################
dPRAGER={"DRUCKER_PRAGER":"DRUCK_PRAGER",}
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dPRAGER)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dPRAGER)
- ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION",dPRAGER)
- ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION",dPRAGER)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dPRAGER)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dPRAGER)
+ changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION",dPRAGER)
+ changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION",dPRAGER)
#########################################################################
####################### traitement RELATION_KIT #######################
dKIT={"ELAS_THER":"ELAS",}
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
- ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION_KIT",dKIT)
- ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION_KIT",dKIT)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
+ changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION_KIT",dKIT)
+ changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION_KIT",dKIT)
#########################################################################
log.ferme(hdlr)
def main():
- parser = optparse.OptionParser(usage=usage)
+ parser = optparse.Optionparser(usage=usage)
parser.add_option('-i','--infile', dest="infile", default='toto.comm',
help="Le fichier à traduire")
#####RESORPTION
- GenereErreurPourCommande(jdc,("POST_ZAC",))
- GenereErreurMCF(jdc,"AFFE_CHAR_MECA","GRAPPE_FLUIDE")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC")
- GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC_FO")
- GenereErreurMCF(jdc,"AFFE_CHAR_MECA","ARLEQUIN")
+ genereErreurPourCommande(jdc,("POST_ZAC",))
+ genereErreurMCF(jdc,"AFFE_CHAR_MECA","GRAPPE_FLUIDE")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","LMARC")
+ genereErreurMCF(jdc,"DEFI_MATERIAU","LMARC_FO")
+ genereErreurMCF(jdc,"AFFE_CHAR_MECA","ARLEQUIN")
#####SOLVEUR
# */SOLVEUR/PARTITION --> AFFE_MODELE (ou MODI_MODELE)/PARTITION/PARTITION
- GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARTITION")
- GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARALLELISME")
- GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARTITION")
+ genereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARALLELISME")
+ genereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARTITION")
####################### traitement mot cle INCREMENT redecoupage en temps #######################
renameMotCleSiRegle(jdc,"STAT_NON_LINE","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1)
removeMotCle(jdc,"CALC_MODAL","SOLVEUR",pasDeRegle())
##################### traitement DYNA_TRAN-MODAL ADAPT #################
- ChangementValeur(jdc,"DYNA_TRAN_MODAL","METHODE",{"ADAPT":"ADAPT_ORDRE2"})
+ changementValeur(jdc,"DYNA_TRAN_MODAL","METHODE",{"ADAPT":"ADAPT_ORDRE2"})
#################### traitement STAT/DYNA_NON_LINE OBSERVATION SUIVI_DDL=NON ###########
removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","OBSERVATION","SUIVI_DDL",((("SUIVI_DDL","NON",jdc),"MCsousMCFcourantaPourValeur"),))
#####COMPORTEMENT/CARA
################### traitement AFFE_MODELE/SHB8 ##########################
- ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",{"SHB8":"SHB"})
+ changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",{"SHB8":"SHB"})
################### traitement COMP_ELAS et COMP_INCR DEFORMATION = GREEN ##############"
dGREEN={"GREEN_GR":"GROT_GDEP","GREEN":"GROT_GDEP","REAC_GEOM":"GROT_GDEP","EULER_ALMANSI":"GROT_GDEP","COROTATIONNEL":"GDEF_HYPO_ELAS"}
- ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"POST_GP","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"CALC_G","COMP_ELAS","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","DEFORMATION",dGREEN)
- ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"POST_GP","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"CALC_G","COMP_ELAS","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"CALCUL","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","DEFORMATION",dGREEN)
###################### traitement COMP_INCR/COMP_ELAS RESO_INTE ##########
dALGOI={"RUNGE_KUTTA_2":"RUNGE_KUTTA","RUNGE_KUTTA_4":"RUNGE_KUTTA"}
removeMotCleInFactCourantSiRegle(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),))
removeMotCleInFactCourantSiRegle(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),))
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",dALGOI)
- ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"CALCUL","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",dALGOI)
+ changementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",dALGOI)
renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE","ALGO_INTE")
renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE","ALGO_INTE")
removeMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","ITER_INTE_PAS",pasDeRegle(),0)
###################### traitement CALC_G/COMP_INCR/RELATION ELAS_VMIS_PUIS ####
- ChangementValeurDsMCF(jdc,"CALC_G","COMP_INCR","RELATION",{"ELAS_VMIS_PUIS":"VMIS_ISOT_PUIS"})
+ changementValeurDsMCF(jdc,"CALC_G","COMP_INCR","RELATION",{"ELAS_VMIS_PUIS":"VMIS_ISOT_PUIS"})
########################" traitement DEFI_COMPOR/MULTIFIBRE/DEFORMATION=REAC_GEOM #########
- ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION",dGREEN)
+ changementValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION",dGREEN)
####################### traitement DEFI_COMPOR/MONOCRISTAL/ECOULEMENT #############
dECOULEMENT={"ECOU_VISC1":"MONO_VISC1","ECOU_VISC2":"MONO_VISC2","ECOU_VISC3":"MONO_VISC3","KOCKS_RAUCH":"MONO_DD_KR"}
- ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",dECOULEMENT)
+ changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",dECOULEMENT)
dISOT={"ECRO_ISOT1":"MONO_ISOT1","ECRO_ISOT2":"MONO_ISOT2"}
dCINE={"ECRO_CINE1":"MONO_CINE1","ECRO_CINE2":"MONO_CINE2"}
- ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_ISOT",dISOT)
- ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_CINE",dCINE)
+ changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_ISOT",dISOT)
+ changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_CINE",dCINE)
################### traitement DEFI_MATERIAU monocristallin #######
renameMotCle(jdc,"DEFI_MATERIAU","ECOU_VISC1","MONO_VISC1")
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME")
removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","SYME")
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
- ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET_2D","CARA",dDISCRET)
- ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET","CARA",dDISCRET)
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
+ changementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET_2D","CARA",dDISCRET)
+ changementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET","CARA",dDISCRET)
#####CHARGEMENT
renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","ITER_MULT_MAXI","ITER_CONT_MULT")
renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","NB_REAC_GEOM","NB_ITER_GEOM")
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","RESOLUTION='NON'",((("METHODE","VERIF",jdc),"MCsousMCFcourantaPourValeur"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","RESOLUTION='NON'",((("METHODE","VERIF",jdc),"MCsousMCFcourantaPourValeur"),))
copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","CONTACT")
moveMCFToCommand(jdc,"AFFE_CHAR_MECA","CONTACT","DEFI_CONTACT","ZONE")
removeMotCle(jdc,"AFFE_CHAR_MECA","CONTACT",pasDeRegle(),1)
removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE")
- AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
+ ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","LIAISON_UNILATER")
moveMCFToCommand(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","DEFI_CONTACT","ZONE")
removeMotCle(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER",pasDeRegle(),1)
removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE")
- AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
- AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","FORMULATION='LIAISON_UNIL'",pasDeRegle())
+ ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
+ ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","FORMULATION='LIAISON_UNIL'",pasDeRegle())
copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA_F","MODELE","LIAISON_UNILATER")
moveMCFToCommand(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","DEFI_CONTACT","ZONE")
removeMotCle(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER",pasDeRegle(),1)
chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='LIAISON_UNIL'",((("ZONE","METHODE","LIAISON_UNIL",jdc),"MCsousMCFaPourValeur"),))
liste_meth_ZONE=["GCP","CONTRAINTE","LAGRANGIEN","PENALISATION"]
chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='DISCRETE'",((("ZONE","METHODE",liste_meth_ZONE,jdc),"MCsousMCFaPourValeurDansListe"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='GCP'",((("METHODE","GCP",jdc),"MCsousMCFcourantaPourValeur"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='CONTRAINTE'",((("METHODE","CONTRAINTE",jdc),"MCsousMCFcourantaPourValeur"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='GCP'",((("METHODE","GCP",jdc),"MCsousMCFcourantaPourValeur"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='CONTRAINTE'",((("METHODE","CONTRAINTE",jdc),"MCsousMCFcourantaPourValeur"),))
removeMotCleInFact(jdc,"DEFI_CONTACT","ZONE","METHODE")
renameMotCleSiRegle(jdc,"COMB_SISM_MODAL","COMB_MULT_APPUI","GROUP_APPUI",((("MULTI_APPUI","DECORRELE",jdc),"MCaPourValeur"),),1)
######################## traitement DYNA_TRAN_MODAL ##################
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_TRAN_MODAL","CHOC","FROTTEMENT='COULOMB'",((("COULOMB",),"existeMCsousMCFcourant"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_TRAN_MODAL","CHOC","FROTTEMENT='COULOMB'",((("COULOMB",),"existeMCsousMCFcourant"),))
######################### traitement AFFE_CHAR_MECA PESANTEUR ROTATION#################
- EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","PESANTEUR","GRAVITE","DIRECTION")
- EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","ROTATION","VITESSE","AXE")
+ eclaMotCleToFact(jdc,"AFFE_CHAR_MECA","PESANTEUR","GRAVITE","DIRECTION")
+ eclaMotCleToFact(jdc,"AFFE_CHAR_MECA","ROTATION","VITESSE","AXE")
moveMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","CENTRE","ROTATION")
######################## traitement DEFI_BASE_MODALE ##############
####################### traitement PROJ_CHAMP #####################
renameMotCle(jdc,"PROJ_CHAMP","CHAM_NO","CHAM_GD",1,pasDeRegle())
- ChangementValeur(jdc,"PROJ_CHAMP","METHODE",{ "ELEM":"COLLOCATION"})
+ changementValeur(jdc,"PROJ_CHAMP","METHODE",{ "ELEM":"COLLOCATION"})
####################### traitement MACR_ADAP_MAIL ##############"
- ChangementValeur(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA",{"V_ABSOLUE":"ABSOLU","V_RELATIVE":"RELATIF"})
+ changementValeur(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA",{"V_ABSOLUE":"ABSOLU","V_RELATIVE":"RELATIF"})
renameMotCle(jdc,"MACR_ADAP_MAIL","INDICATEUR","NOM_CHAM")
renameMotCle(jdc,"MACR_ADAP_MAIL","NOM_CMP_INDICA","NOM_CMP")
renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_OPER_INDICA","USAGE_CHAMP")
renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA","USAGE_CMP")
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='BOITE'",((("RAYON",),"nexistepasMCsousMCFcourant"),))
- AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='SPHERE'",((("RAYON",),"existeMCsousMCFcourant"),))
- ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
- ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
- ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='BOITE'",((("RAYON",),"nexistepasMCsousMCFcourant"),))
+ ajouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='SPHERE'",((("RAYON",),"existeMCsousMCFcourant"),))
+ changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
+ changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
+ changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
###################### traitement de POST_CHAM_XFEM #################
removeMotCle(jdc,"POST_CHAM_XFEM","MODELE",pasDeRegle(),0)
######### traitement CALC_ELEM/TYPE_ESTI ####
dESTI={"ERRE_ELEM_SIGM":"ERME_ELEM","ERZ1_ELEM_SIGM":"ERZ1_ELEM","ERZ2_ELEM_SIGM":"ERZ2_ELEM",
"QIRE_ELEM_SIGM":"QIRE_ELEM","QIZ1_ELEM_SIGM":"QIZ1_ELEM","QIZ2_ELEM_SIGM":"QIZ2_ELEM"}
- ChangementValeur(jdc,"CALC_ELEM","TYPE_ESTI",dESTI)
+ changementValeur(jdc,"CALC_ELEM","TYPE_ESTI",dESTI)
######### suppression CALC_ELEM/NORME ######
removeMotCle(jdc,"CALC_ELEM","NORME",pasDeRegle(),0)
"VARI_NOEU_ELGA":"VARI_NOEU","VARI_ELNO_ELGA":"VARI_ELNO",
"INDI_LOCA_ELGA":"INDL_ELGA"}
#"FORC_NODA":"FORC_NOEU","REAC_NODA":"REAC_NOEU"
- ChangementValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"COMB_FOURIER","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"CREA_RESU","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"LIRE_RESU","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"PROJ_CHAMP","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"RECU_FONCTION","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",dOPTION)
- ChangementValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"COMB_FOURIER","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"CREA_RESU","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"LIRE_RESU","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"PROJ_CHAMP","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"RECU_FONCTION","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",dOPTION)
+ changementValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",dOPTION)
+ changementValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",dOPTION)
- ChangementValeur(jdc,"CALC_CHAM_ELEM","OPTION",dOPTION)
- ChangementValeur(jdc,"CALC_ELEM","OPTION",dOPTION)
- ChangementValeur(jdc,"CALC_META","OPTION",dOPTION)
- ChangementValeur(jdc,"CALC_NO","OPTION",dOPTION)
- ChangementValeur(jdc,"COMB_SISM_MODAL","OPTION",dOPTION)
- ChangementValeur(jdc,"MECA_STATIQUE","OPTION",dOPTION)
- ChangementValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",dOPTION)
- ChangementValeur(jdc,"THER_NON_LINE","OPTION",dOPTION)
-
- ############ Message si SuppressionValeurs ou Valeurs ambigue CALC_ELEM/OPTION
+ changementValeur(jdc,"CALC_CHAM_ELEM","OPTION",dOPTION)
+ changementValeur(jdc,"CALC_ELEM","OPTION",dOPTION)
+ changementValeur(jdc,"CALC_META","OPTION",dOPTION)
+ changementValeur(jdc,"CALC_NO","OPTION",dOPTION)
+ changementValeur(jdc,"COMB_SISM_MODAL","OPTION",dOPTION)
+ changementValeur(jdc,"MECA_STATIQUE","OPTION",dOPTION)
+ changementValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",dOPTION)
+ changementValeur(jdc,"THER_NON_LINE","OPTION",dOPTION)
+
+ ############ Message si suppressionValeurs ou Valeurs ambigue CALC_ELEM/OPTION
rOPTION=("'DEUL_ELGA_DEPL'","'DEUL_ELGA_TEMP'","'DURT_ELGA_META'",
"'ERRE_ELNO_DEPL'", "'ERRE_NOEU_ELEM'", "'ERRE_ELNO_ELEM'","'EPSP_NOEU_ZAC'","'HYDR_ELNO_ELGA'",
"'SIGM_NOEU_ZAC'","'SIGM_ELNO_SIEF'","'SIGM_NOEU_SIEF'","'SIPO_ELNO_SIEF'","'SIPO_NOEU_SIEF'",
# Options ambigue : PRES_ELNO_DBEL --> prac_elno/prme_elno, ERRE* --> ERME_ELNO ou ERTH_ELNO selon PHENOMENE
# En commentaires les commandes non concernees par rOPTION
- GenereErreurValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",rOPTION)
- #GenereErreurValeur(jdc,"COMB_FOURIER","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"CREA_CHAMP","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"CREA_RESU","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",rOPTION)
- #GenereErreurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",rOPTION)
- #GenereErreurValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"PROJ_CHAMP","NOM_CHAM",rOPTION)
- #GenereErreurValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"RECU_FONCTION","NOM_CHAM",rOPTION)
- #GenereErreurValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",rOPTION)
- #GenereErreurValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",rOPTION)
- #GenereErreurValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",rOPTION)
- GenereErreurValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",rOPTION)
+ #genereErreurValeur(jdc,"COMB_FOURIER","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"CREA_CHAMP","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"CREA_RESU","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",rOPTION)
+ #genereErreurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",rOPTION)
+ #genereErreurValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"PROJ_CHAMP","NOM_CHAM",rOPTION)
+ #genereErreurValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",rOPTION)
+ genereErreurValeur(jdc,"RECU_FONCTION","NOM_CHAM",rOPTION)
+ #genereErreurValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",rOPTION)
+ #genereErreurValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",rOPTION)
+ #genereErreurValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",rOPTION)
+ genereErreurValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",rOPTION)
- GenereErreurValeur(jdc,"CALC_CHAM_ELEM","OPTION",rOPTION)
- GenereErreurValeur(jdc,"CALC_ELEM","OPTION",rOPTION)
- #GenereErreurValeur(jdc,"CALC_META","OPTION",rOPTION)
- GenereErreurValeur(jdc,"CALC_NO","OPTION",rOPTION)
- #GenereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",rOPTION)
- #GenereErreurValeur(jdc,"MECA_STATIQUE","OPTION",rOPTION)
- GenereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",rOPTION)
- #GenereErreurValeur(jdc,"THER_NON_LINE","OPTION",rOPTION)
+ genereErreurValeur(jdc,"CALC_CHAM_ELEM","OPTION",rOPTION)
+ genereErreurValeur(jdc,"CALC_ELEM","OPTION",rOPTION)
+ #genereErreurValeur(jdc,"CALC_META","OPTION",rOPTION)
+ genereErreurValeur(jdc,"CALC_NO","OPTION",rOPTION)
+ #genereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",rOPTION)
+ #genereErreurValeur(jdc,"MECA_STATIQUE","OPTION",rOPTION)
+ genereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",rOPTION)
+ #genereErreurValeur(jdc,"THER_NON_LINE","OPTION",rOPTION)
########### Message si CALC_ELEM/SENSIBILITE
- GenereErreurMCF(jdc,"CALC_ELEM","SENSIBILITE")
+ genereErreurMCF(jdc,"CALC_ELEM","SENSIBILITE")
# non fait CALC_NO OPTION=FORC_NODA_NONL
- ########## Traitement MACRO_MISS_3D --> CALC_MISS
+ ########## traitement MACRO_MISS_3D --> CALC_MISS
renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF"),"nexistepasMCsousMCF"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),))
renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF","NON",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),))
removeMotCleInFact(jdc,"CALC_MISS","PARAMETRE","FICH_RESU_IMPE",pasDeRegle(),0)
removeMotCle(jdc,"CALC_MISS","UNITE_OPTI_MISS",pasDeRegle())
removeMotCle(jdc,"CALC_MISS","UNITE_MODELE_SOL",pasDeRegle())
removeMotCle(jdc,"CALC_MISS","OPTION",pasDeRegle(),1)
- ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_4":"V6.5"})
- ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_5":"V6.6"})
- ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_3":"V6.5"})
+ changementValeur(jdc,"CALC_MISS","VERSION",{"V1_4":"V6.5"})
+ changementValeur(jdc,"CALC_MISS","VERSION",{"V1_5":"V6.6"})
+ changementValeur(jdc,"CALC_MISS","VERSION",{"V1_3":"V6.5"})
macr=""
interf=""
log.ferme(hdlr)
def main():
- parser = optparse.OptionParser(usage=usage)
+ parser = optparse.Optionparser(usage=usage)
parser.add_option('-i','--infile', dest="infile", default='toto.comm',
help="Le fichier à traduire")
i+=len(word)
return h
-def DictToLine(d):
+def dictToLine(d):
"""Transformation inverse: à partir d'un dictionnaire retourne une ligne"""
cols = d
cols.sort()
eficas_compile_ui ( desGroupeOptionnel.ui )
eficas_compile_ui ( Tuple2.ui )
eficas_compile_ui ( Tuple3.ui )
+eficas_compile_ui ( Tuple4.ui )
+eficas_compile_ui ( Tuple5.ui )
+eficas_compile_ui ( Tuple6.ui )
+eficas_compile_ui ( Tuple7.ui )
+eficas_compile_ui ( Tuple8.ui )
+eficas_compile_ui ( Tuple9.ui )
+eficas_compile_ui ( Tuple10.ui )
eficas_compile_ui ( desPBOptionnelMT.ui )
#
eficas_compile_ui ( desWidgetBloc.ui )
eficas_compile_ui ( desWidgetCB.ui )
+eficas_compile_ui ( desWidgetCBIntoSug.ui )
eficas_compile_ui ( desWidgetCommentaire.ui )
eficas_compile_ui ( desWidgetDate.ui )
eficas_compile_ui ( desWidgetFact.ui )
-eficas_compile_ui_2 ( desWidgetFactPlie.ui )
+eficas_compile_ui ( desWidgetFactPlie.ui )
+eficas_compile_ui ( desWidgetFactTableau.ui )
eficas_compile_ui ( desWidgetHeure.ui )
eficas_compile_ui ( desWidgetInactif.ui )
eficas_compile_ui ( desWidgetInformation.ui )
eficas_compile_ui ( desWidgetIntoSug.ui )
eficas_compile_ui ( desWidgetMatrice.ui )
+eficas_compile_ui ( desWidgetNiveauFact.ui )
eficas_compile_ui ( desWidgetParam.ui )
eficas_compile_ui ( desWidgetPlusieursBase.ui )
eficas_compile_ui ( desWidgetPlusieursInto.ui )
eficas_compile_ui ( desWidgetSimpFichier.ui )
eficas_compile_ui ( desWidgetSimpSalome.ui )
eficas_compile_ui ( desWidgetSimpTxt.ui )
+eficas_compile_ui ( desWidgetTableau.ui )
eficas_compile_ui ( desWidgetTuple2.ui )
eficas_compile_ui ( desWidgetTuple3.ui )
+eficas_compile_ui ( desWidgetTuple4.ui )
+eficas_compile_ui ( desWidgetTuple5.ui )
+eficas_compile_ui ( desWidgetTuple6.ui )
+eficas_compile_ui ( desWidgetTuple7.ui )
+eficas_compile_ui ( desWidgetTuple8.ui )
+eficas_compile_ui ( desWidgetTuple9.ui )
+eficas_compile_ui ( desWidgetTuple10.ui )
eficas_compile_ui ( desWidgetUniqueSDCO.ui )
eficas_compile_ui ( desWidgetVide.ui )
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple10</class>
+ <widget class="QWidget" name="Tuple10">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>742</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_10">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
<rect>
<x>0</x>
<y>0</y>
- <width>880</width>
- <height>33</height>
+ <width>490</width>
+ <height>29</height>
</rect>
</property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="spacing">
<number>0</number>
</property>
- <property name="margin">
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
<number>0</number>
</property>
<item>
<item>
<widget class="LECustomTuple" name="lineEditVal_1">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item>
<widget class="LECustomTuple" name="lineEditVal_2">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
- <width>805</width>
+ <width>10000</width>
<height>16777215</height>
</size>
</property>
<item>
<widget class="LECustomTuple" name="lineEditVal_3">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
- <width>805</width>
+ <width>10000</width>
<height>16777215</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
<property name="sizeHint" stdset="0">
<size>
- <width>123</width>
+ <width>5</width>
<height>20</height>
</size>
</property>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple4</class>
+ <widget class="QWidget" name="Tuple4">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>981</width>
+ <height>39</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple5</class>
+ <widget class="QWidget" name="Tuple5">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1152</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple6</class>
+ <widget class="QWidget" name="Tuple6">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>879</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple7</class>
+ <widget class="QWidget" name="Tuple7">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1019</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple8</class>
+ <widget class="QWidget" name="Tuple8">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1159</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple9</class>
+ <widget class="QWidget" name="Tuple9">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1299</width>
+ <height>46</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>5</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>281</width>
+ <height>51</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Saisie date et heure</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QTextEdit" name="te_date">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>101</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>101</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Entrer la date</string>
+ </property>
+ <property name="html">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Latin Modern Sans'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">18/12/17</p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QTextEdit" name="te_heure">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>101</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>101</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Entrer l'heure</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ChoixCode</class>
- <widget class="QWidget" name="ChoixCode">
+ <widget class="QDialog" name="ChoixCode">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>555</width>
- <height>332</height>
+ <width>205</width>
+ <height>96</height>
</rect>
</property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
<property name="windowTitle">
- <string>Choix du code</string>
+ <string>Coix du Code</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLabel" name="label_choix">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>30</height>
- </size>
- </property>
- <property name="text">
- <string>Veuillez choisir un code :</string>
- </property>
- </widget>
- </item>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<string/>
</property>
<layout class="QVBoxLayout" name="vlBouton">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
- <spacer name="verticalSpacer">
+ <spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
- <height>40</height>
+ <height>20</height>
</size>
</property>
</spacer>
</widget>
</item>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <property name="sizeConstraint">
- <enum>QLayout::SetFixedSize</enum>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
- <item>
- <spacer name="horizontalSpacer_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="pB_cancel">
- <property name="minimumSize">
- <size>
- <width>140</width>
- <height>40</height>
- </size>
- </property>
- <property name="toolTip">
- <string/>
- </property>
- <property name="styleSheet">
- <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
- </property>
- <property name="text">
- <string>&Cancel</string>
- </property>
- <property name="shortcut">
- <string/>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="pB_OK">
- <property name="minimumSize">
- <size>
- <width>140</width>
- <height>40</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Validate choice</string>
- </property>
- <property name="styleSheet">
- <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-
-</string>
- </property>
- <property name="text">
- <string>&OK</string>
- </property>
- <property name="shortcut">
- <string/>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- <property name="default">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
+ </widget>
</item>
</layout>
</widget>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ChoixCode</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ChoixCode</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
</ui>
<rect>
<x>0</x>
<y>0</y>
- <width>739</width>
- <height>63</height>
+ <width>809</width>
+ <height>56</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="maximumSize">
<size>
<width>1493</width>
- <height>85</height>
+ <height>95</height>
</size>
</property>
<property name="windowTitle">
<item>
<widget class="MonLabelClic" name="label">
<property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetCBIntoSug</class>
+ <widget class="QWidget" name="WidgetCBIntoSug">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1104</width>
+ <height>102</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>1493</width>
+ <height>150</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QComboBox{combobox-popup:0;};</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QFrame" name="frameHorsListe">
+ <property name="styleSheet">
+ <string notr="true">background:rgb(221, 221, 166)</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="styleSheet">
+ <string notr="true"/>
+ </property>
+ <property name="text">
+ <string>Valeurs hors liste - la valeur saisie sera ajoutée à la liste</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal">
+ <property name="styleSheet">
+ <string notr="true">background : white
+</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="CBChoix">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>361</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="accessibleName">
+ <string/>
+ </property>
+ <property name="accessibleDescription">
+ <string/>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QComboBox {
+ background:rgb(235,235,235);
+ }
+/*QComboBox: on {
+ font : italic
+ }
+background:rgb(235,235,235);
+border:0px;
+
+
+QComboBox:!editable:on, QComboBox::drop-down:editable:on {
+background: black;
+ font : italic 14px
+ }
+QComboBox:on {
+ font : italic 20px;
+ background: red ;
+}/*
+</string>
+ </property>
+ <property name="maxVisibleItems">
+ <number>100</number>
+ </property>
+ <property name="frame">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>301</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
<rect>
<x>0</x>
<y>0</y>
- <width>1353</width>
- <height>596</height>
+ <width>1110</width>
+ <height>731</height>
</rect>
</property>
<property name="sizePolicy">
<string notr="true">background-color : rgb(224,223,222);
font : 'times' 9px</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_4">
+ <layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<property name="minimumSize">
<size>
<width>0</width>
- <height>130</height>
+ <height>8</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
- <height>130</height>
+ <height>75</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color:rgb(224,223,222)</string>
</property>
- <layout class="QGridLayout" name="gridLayout_2">
- <property name="topMargin">
- <number>2</number>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
</property>
- <property name="bottomMargin">
- <number>3</number>
+ <property name="margin">
+ <number>0</number>
</property>
- <property name="verticalSpacing">
- <number>2</number>
- </property>
- <item row="0" column="0">
- <widget class="QFrame" name="frame_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>QFrame::Box</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <property name="spacing">
- <number>0</number>
- </property>
- <item>
- <spacer name="horizontalSpacer_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>13</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="MonBoutonValide" name="RBValide">
- <property name="minimumSize">
- <size>
- <width>17</width>
- <height>31</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>Affiche le rapport de validité de la commande</string>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>13</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="MonLabelClic" name="labelNomCommande">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>31</height>
- </size>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <property name="text">
- <string><html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html></string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="toto">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Maximum</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>2</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLineEdit" name="LENom">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="toolTip">
- <string>Nom de l'objet. Seuls, les objets valides peuvent être nommés</string>
- </property>
- <property name="styleSheet">
- <string notr="true"> QLineEdit {
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>17</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validité de la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="labelNomCommande">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="LENom">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>200</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Nom de l'objet. Seuls, les objets valides peuvent être nommés</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true"> QLineEdit {
border: 2px solid gray;
border-radius: 10px;
padding: 0 8px;
}
/*read-only {
background: lightblue;*/</string>
- </property>
- <property name="readOnly">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_7">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>108</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Ignored</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>2</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>4</number>
- </property>
- <property name="sizeConstraint">
- <enum>QLayout::SetFixedSize</enum>
- </property>
- <item>
- <widget class="QToolButton" name="RBRun">
- <property name="minimumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>Lance un script associé à la commande</string>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="CBScripts">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>38</height>
- </size>
- </property>
- <property name="frame">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="RBInfo">
- <property name="minimumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>31</width>
- <height>31</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>ouvre un navigateur sur l'aide contextuelle</string>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="RBRegle">
- <property name="minimumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>31</width>
- <height>31</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>affiche les régles de validité</string>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <spacer name="horizontalSpacer_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>13</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QToolButton" name="RBPoubelle">
- <property name="minimumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>Détruit la commande</string>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>31</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- <zorder>RBValide</zorder>
- <zorder>labelNomCommande</zorder>
- <zorder>LENom</zorder>
- <zorder>horizontalSpacer_3</zorder>
- <zorder>horizontalSpacer_4</zorder>
- <zorder>RBPoubelle</zorder>
- <zorder>horizontalSpacer_5</zorder>
- <zorder>horizontalSpacer_7</zorder>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QPushButton" name="bCatalogue">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>160</width>
- <height>40</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>Affiche les commandes possibles</string>
- </property>
- <property name="styleSheet">
- <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
- </property>
- <property name="text">
- <string>&Commandes</string>
- </property>
- <property name="shortcut">
- <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- <property name="default">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="labelDoc">
- <property name="text">
- <string>TextLabel</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <layout class="QGridLayout" name="gridLayout">
- <property name="verticalSpacing">
- <number>0</number>
- </property>
- <item row="0" column="0">
- <widget class="QPushButton" name="bAvant">
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_7">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>18</width>
+ <height>17</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBRun">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Lance un script associé à la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="CBScripts">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>38</height>
+ </size>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBRegle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>31</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>affiche les régles de validité</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBInfo">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>31</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>ouvre un navigateur sur l'aide contextuelle</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="labelDoc">
<property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="minimumSize">
- <size>
- <width>60</width>
- <height>24</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>60</width>
- <height>24</height>
- </size>
- </property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
- </property>
- <property name="toolTip">
- <string>Affiche le formulaire de la commande précédente</string>
- </property>
- <property name="styleSheet">
- <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
- </property>
<property name="text">
- <string><<</string>
- </property>
- <property name="shortcut">
- <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- <property name="default">
- <bool>true</bool>
+ <string><html><head/><body><p><br/></p></body></html></string>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QPushButton" name="bApres">
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <widget class="QPushButton" name="bCatalogue">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
</property>
<property name="minimumSize">
<size>
- <width>60</width>
- <height>24</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>60</width>
- <height>24</height>
+ <width>160</width>
+ <height>30</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="toolTip">
- <string>Affiche le formulaire de la commande suivante</string>
+ <string>Affiche les commandes possibles</string>
</property>
<property name="styleSheet">
<string notr="true">background-color:rgb(104,110,149);
</string>
</property>
<property name="text">
- <string>>></string>
+ <string>&Commandes</string>
</property>
<property name="shortcut">
<string>Shift+A, Alt+A, Alt+A, Alt+A</string>
</property>
</widget>
</item>
- <item row="1" column="0">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="bAvant">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>60</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le formulaire de la commande précédente</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color:rgb(104,110,149);
+color :white;
+border-radius : 12px
+</string>
+ </property>
+ <property name="text">
+ <string><<</string>
+ </property>
+ <property name="shortcut">
+ <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="bApres">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>60</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le formulaire de la commande suivante</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color:rgb(104,110,149);
+color :white;
+border-radius : 12px
+</string>
+ </property>
+ <property name="text">
+ <string>>></string>
+ </property>
+ <property name="shortcut">
+ <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
- <height>0</height>
+ <height>2</height>
</size>
</property>
</spacer>
<rect>
<x>0</x>
<y>0</y>
- <width>1353</width>
- <height>466</height>
+ <width>1110</width>
+ <height>656</height>
</rect>
</property>
- <layout class="QVBoxLayout" name="verticalLayout">
+ <layout class="QVBoxLayout" name="verticalLayoutCommande">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
<item>
<layout class="QVBoxLayout" name="commandesLayout">
<property name="spacing">
- <number>1</number>
+ <number>0</number>
</property>
</layout>
</item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>5</height>
- </size>
- </property>
- </spacer>
- </item>
</layout>
</widget>
</widget>
<rect>
<x>0</x>
<y>0</y>
- <width>949</width>
- <height>53</height>
+ <width>619</width>
+ <height>63</height>
</rect>
</property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
padding: 0 3px;
}</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing">
<number>0</number>
</property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
+ <property name="margin">
<number>0</number>
</property>
<item>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
- <height>5</height>
+ <height>4</height>
</size>
</property>
</spacer>
</layout>
</item>
<item>
- <layout class="QGridLayout" name="gridLayout">
- <property name="horizontalSpacing">
- <number>0</number>
- </property>
- <item row="0" column="0">
- <widget class="MonBoutonValide" name="RBValide">
- <property name="minimumSize">
- <size>
- <width>17</width>
- <height>25</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>21</width>
- <height>25</height>
- </size>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>25</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <layout class="QHBoxLayout" name="horizontalLayout">
- <property name="spacing">
- <number>0</number>
- </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="MonLabelClic" name="GroupBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <widget class="MonBoutonValide" name="RBValide">
<property name="minimumSize">
<size>
- <width>0</width>
+ <width>17</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>12121213</width>
+ <width>21</width>
<height>25</height>
</size>
</property>
- <property name="text">
- <string><html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html></string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>13</width>
- <height>20</height>
- </size>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
</property>
- </spacer>
- </item>
- <item>
- <widget class="Line" name="line_4">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <property name="text">
+ <string>...</string>
</property>
- <property name="minimumSize">
- <size>
- <width>200</width>
- <height>0</height>
- </size>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
</property>
- <property name="maximumSize">
+ <property name="iconSize">
<size>
- <width>1500</width>
- <height>16</height>
+ <width>21</width>
+ <height>25</height>
</size>
</property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
</widget>
</item>
<item>
- <spacer name="horizontalSpacer_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>13</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
- <property name="sizeConstraint">
- <enum>QLayout::SetFixedSize</enum>
- </property>
<item>
- <widget class="QToolButton" name="RBRun">
+ <widget class="MonLabelClic" name="GroupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="minimumSize">
<size>
- <width>21</width>
- <height>31</height>
+ <width>0</width>
+ <height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>21</width>
- <height>31</height>
+ <width>12121213</width>
+ <height>25</height>
</size>
</property>
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html></string>
</property>
- <property name="toolTip">
- <string>Lance un script associé à la commande</string>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
</property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
</property>
- <property name="text">
- <string>...</string>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
</property>
- <property name="icon">
- <iconset>
- <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+ </spacer>
+ </item>
+ <item>
+ <widget class="Line" name="line_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="iconSize">
+ <property name="minimumSize">
<size>
- <width>21</width>
- <height>31</height>
+ <width>200</width>
+ <height>0</height>
</size>
</property>
+ <property name="maximumSize">
+ <size>
+ <width>1500</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
</widget>
</item>
<item>
- <widget class="QToolButton" name="RBInfo">
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <widget class="QToolButton" name="RBRun">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Lance un script associé à la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBInfo">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="CBScripts">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>38</height>
+ </size>
+ </property>
+ <property name="cursor">
+ <cursorShape>ArrowCursor</cursorShape>
+ </property>
+ <property name="frame">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBRegle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPlus">
<property name="minimumSize">
<size>
<width>21</width>
</property>
<property name="icon">
<iconset>
- <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+ <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
</property>
<property name="iconSize">
<size>
</widget>
</item>
<item>
- <widget class="QComboBox" name="CBScripts">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>38</height>
- </size>
- </property>
- <property name="cursor">
- <cursorShape>ArrowCursor</cursorShape>
- </property>
- <property name="frame">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="RBRegle">
+ <widget class="QToolButton" name="RBPoubelle">
<property name="minimumSize">
<size>
<width>21</width>
</property>
<property name="icon">
<iconset>
- <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
</property>
<property name="iconSize">
<size>
</item>
</layout>
</item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="commandesLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
<item>
- <spacer name="horizontalSpacer_2">
+ <spacer name="verticalSpacer_2">
<property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>13</width>
- <height>20</height>
+ <width>2</width>
+ <height>2</height>
</size>
</property>
</spacer>
</item>
- <item>
- <widget class="QToolButton" name="RBPoubelle">
- <property name="minimumSize">
- <size>
- <width>21</width>
- <height>25</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>21</width>
- <height>25</height>
- </size>
- </property>
- <property name="styleSheet">
- <string notr="true">border : 0px</string>
- </property>
- <property name="text">
- <string>...</string>
- </property>
- <property name="icon">
- <iconset>
- <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>21</width>
- <height>25</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="1" column="1">
- <layout class="QVBoxLayout" name="commandesLayout">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
</layout>
</item>
</layout>
</property>
<property name="icon">
<iconset>
- <normaloff>../Editeur/icons/plusnode.png</normaloff>../Editeur/icons/plusnode.png</iconset>
+ <normaloff>../Editeur/icons/plusnode.png</normaloff>
+ <disabledoff>../Editeur/icons/ast-red-ball.png</disabledoff>../Editeur/icons/plusnode.png</iconset>
</property>
<property name="iconSize">
<size>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetFactTableau</class>
+ <widget class="QWidget" name="WidgetFactTableau">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>949</width>
+ <height>225</height>
+ </rect>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true"> QGroupBox {
+ border: 1px solid gray;
+ border-radius: 5px;
+ margin-top: 1ex; /* leave space at the top for the title */
+ }
+
+ QGroupBox::title {
+ padding: 0 3px;
+ }</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPlie">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>15</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>21</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/minusnode.png</normaloff>../Editeur/icons/minusnode.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>21</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="Line" name="line_7">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="horizontalSpacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>17</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="MonLabelClic" name="GroupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>12121213</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="Line" name="line_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>200</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>1500</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <widget class="QToolButton" name="RBRun">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Lance un script associé à la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBInfo">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBRegle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="1">
+ <layout class="QHBoxLayout" name="commandesLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <zorder></zorder>
+ <zorder></zorder>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetNiveauFact</class>
+ <widget class="QWidget" name="WidgetNiveauFact">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1353</width>
+ <height>596</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>DCommandeUnique</string>
+ </property>
+ <property name="toolTip">
+ <string/>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color : rgb(224,223,222);
+font : 'times' 9px</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QWidget" name="frameAffichage" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>130</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>130</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color:rgb(224,223,222)</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>3</number>
+ </property>
+ <property name="verticalSpacing">
+ <number>2</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QFrame" name="frame_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>17</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validité de la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="labelNomCommande">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="toto">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Maximum</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>2</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_7">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>108</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Ignored</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>2</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <widget class="QToolButton" name="RBRun">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Lance un script associé à la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="CBScripts">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>38</height>
+ </size>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBInfo">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>31</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>ouvre un navigateur sur l'aide contextuelle</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBRegle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>31</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>affiche les régles de validité</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit la commande</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ <zorder>RBValide</zorder>
+ <zorder>labelNomCommande</zorder>
+ <zorder>horizontalSpacer_3</zorder>
+ <zorder>horizontalSpacer_4</zorder>
+ <zorder>RBPoubelle</zorder>
+ <zorder>horizontalSpacer_5</zorder>
+ <zorder>horizontalSpacer_7</zorder>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelDoc">
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="verticalSpacing">
+ <number>0</number>
+ </property>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QScrollArea" name="scrollAreaCommandes">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>81</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background : rgb(247,247,247)
+
+
+</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="verticalScrollBarPolicy">
+ <enum>Qt::ScrollBarAsNeeded</enum>
+ </property>
+ <property name="horizontalScrollBarPolicy">
+ <enum>Qt::ScrollBarAsNeeded</enum>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1353</width>
+ <height>466</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="commandesLayout">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
<rect>
<x>0</x>
<y>0</y>
- <width>764</width>
- <height>86</height>
+ <width>1122</width>
+ <height>163</height>
</rect>
</property>
<property name="sizePolicy">
<x>0</x>
<y>0</y>
<width>300</width>
- <height>57</height>
+ <height>101</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<widget class="QLabel" name="monCommentaireLabel">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>0</height>
+ </size>
+ </property>
<property name="text">
- <string>TextLabel</string>
+ <string><html><head/><body><p>les types des tuples</p></body></html></string>
</property>
</widget>
</item>
<property name="lineWidth">
<number>1</number>
</property>
- <property name="sizeAdjustPolicy">
- <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
- </property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<rect>
<x>0</x>
<y>0</y>
- <width>398</width>
- <height>48</height>
+ <width>705</width>
+ <height>122</height>
</rect>
</property>
<property name="sizePolicy">
<rect>
<x>0</x>
<y>0</y>
- <width>612</width>
- <height>175</height>
+ <width>740</width>
+ <height>386</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
</widget>
</item>
<item>
- <widget class="QScrollArea" name="scrollArea_2">
+ <widget class="QLabel" name="monCommentaireLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>0</height>
+ </size>
</property>
- <property name="frameShadow">
- <enum>QFrame::Plain</enum>
+ <property name="maximumSize">
+ <size>
+ <width>300</width>
+ <height>16777215</height>
+ </size>
</property>
- <property name="widgetResizable">
- <bool>true</bool>
+ <property name="text">
+ <string><html><head/><body><p><br/></p><p><br/></p></body></html></string>
</property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>82</width>
- <height>111</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_7">
- <item>
- <widget class="QLabel" name="monCommentaireLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>TextLabel</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
</widget>
</item>
</layout>
<rect>
<x>0</x>
<y>0</y>
- <width>197</width>
- <height>110</height>
+ <width>265</width>
+ <height>307</height>
</rect>
</property>
<property name="sizePolicy">
</item>
</layout>
</item>
+ <item>
+ <widget class="QPushButton" name="PBValideFeuille">
+ <property name="text">
+ <string>Valide</string>
+ </property>
+ </widget>
+ </item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<x>0</x>
<y>0</y>
<width>743</width>
- <height>60</height>
+ <height>31</height>
</rect>
</property>
<property name="sizePolicy">
<number>0</number>
</property>
<property name="leftMargin">
- <number>1</number>
+ <number>0</number>
</property>
<property name="topMargin">
<number>0</number>
<number>0</number>
</property>
<property name="bottomMargin">
- <number>1</number>
+ <number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
</property>
<property name="maximumSize">
<size>
- <width>178</width>
+ <width>300</width>
<height>16777215</height>
</size>
</property>
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
- <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ <string><html><head/><body><p><br/></p></body></html></string>
</property>
<property name="scaledContents">
<bool>false</bool>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
- <height>5</height>
+ <height>1</height>
</size>
</property>
</spacer>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTableau</class>
+ <widget class="QWidget" name="WidgetTableau">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1094</width>
+ <height>304</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QToolButton" name="RBPlus">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Ajoute une ligne</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBMoins">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>supprime une ligne</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBHaut">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Remonte la ligne</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset theme="go-up">
+ <normaloff/>
+ </iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBBas">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Descend la ligne</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset theme="go-down">
+ <normaloff/>
+ </iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBVoisListe">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Montre l'ensemble des valeurs</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="LATitre">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background : rgb(247,247,247)</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="lineWidth">
+ <number>1</number>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+ </property>
+ <widget class="QWidget" name="verticalWidgetLE">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>947</width>
+ <height>205</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayoutLE">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>500</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="BSelectFichier">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>25</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Ouvre un fichier de sélection des valeurs</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border:0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset theme="text-x-generic">
+ <normaloff/>
+ </iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>31</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QPushButton" name="PBValideFeuille">
+ <property name="text">
+ <string>Valide</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <zorder></zorder>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple10</class>
+ <widget class="QWidget" name="WidgetTuple10">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_15">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple4</class>
+ <widget class="QWidget" name="WidgetTuple4">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple5</class>
+ <widget class="QWidget" name="WidgetTuple5">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple6</class>
+ <widget class="QWidget" name="WidgetTuple6">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple7</class>
+ <widget class="QWidget" name="WidgetTuple7">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple8</class>
+ <widget class="QWidget" name="WidgetTuple8">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple9</class>
+ <widget class="QWidget" name="WidgetTuple9">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1282</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="MonBoutonValide" name="RBValide">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Affiche le rapport de validation du mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>5</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="MonLabelClic" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>178</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string><html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html></string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditVal3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>805</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="LECustomTuple" name="lineEditVal_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string><html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="RBPoubelle">
+ <property name="minimumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>21</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Détruit le mot-clef</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">border : 0px</string>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>MonBoutonValide</class>
+ <extends>QToolButton</extends>
+ <header>monBoutonValide.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MonLabelClic</class>
+ <extends>QLabel</extends>
+ <header>monLabelClic.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LECustomTuple</class>
+ <extends>QLineEdit</extends>
+ <header>gereListe.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
<string notr="true">QComboBox{combobox-popup:0;}</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
+ <property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<property name="minimumSize">
<size>
<width>0</width>
- <height>61</height>
+ <height>60</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
- <height>61</height>
+ <height>60</height>
</size>
</property>
<property name="styleSheet">
<x>0</x>
<y>0</y>
<width>1676</width>
- <height>25</height>
+ <height>24</height>
</rect>
</property>
<widget class="QMenu" name="menuFichier">
<addaction name="separator"/>
<addaction name="actionParametres"/>
</widget>
+ <widget class="QToolBar" name="toolBarCommande">
+ <property name="windowTitle">
+ <string>toolBar_2</string>
+ </property>
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ </widget>
<action name="action_Nouveau">
<property name="icon">
<iconset theme="document-new">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>&Nouveau</string>
<action name="actionOuvrir">
<property name="icon">
<iconset theme="document-open">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>&Ouvrir</string>
<action name="actionEnregistrer">
<property name="icon">
<iconset theme="document-save">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Enregistrer</string>
<action name="actionEnregistrer_sous">
<property name="icon">
<iconset theme="document-save-as">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Enregistrer sous</string>
<action name="actionCouper">
<property name="icon">
<iconset theme="edit-cut">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Couper</string>
<action name="actionCopier">
<property name="icon">
<iconset theme="edit-copy">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Copier</string>
<action name="actionColler">
<property name="icon">
<iconset theme="edit-paste">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Coller</string>
</property>
</action>
<action name="actionLecteur_Pdf">
+ <property name="icon">
+ <iconset theme="edit-delete">
+ <normaloff/>
+ </iconset>
+ </property>
<property name="text">
<string>Lecteur documentation</string>
</property>
<action name="actionSupprimer">
<property name="icon">
<iconset theme="edit-delete">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Supprimer</string>
<action name="actionRechercher">
<property name="icon">
<iconset theme="edit-find">
- <normaloff>.</normaloff>.</iconset>
+ <normaloff/>
+ </iconset>
</property>
<property name="text">
<string>Rechercher</string>
# on compte le nombre de mots cles presents
text = ''
count = 0
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
for mc in self.mcs:
if mc in args :
count = count + 1
# on compte le nombre de mots cles presents
text = ''
count = 0
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
for mc in self.mcs:
count = count + args.get(mc, 0)
if count > 1:
return text, 0
return text, 1
- def liste_to_dico(self, args):
+ def listeToDico(self, args):
if type(args) is dict:
return args
elif type(args) in (list, tuple):
liste.extend(self.args0)
liste.extend(self.args1)
self.mcs = liste
- self.init_couples_permis()
+ self.initCouplesPermis()
- def init_couples_permis(self):
+ def initCouplesPermis(self):
""" Cree la liste des couples permis parmi les self.args, cad pour chaque element
de self.args0 cree tous les couples possibles avec un element de self.args1"""
liste = []
# figurant dans la regle
text = ''
test = 1
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
pivot = None
for mc in self.mcs:
if mc in args:
"""
"""
- def valid_child(self):
+ def validChild(self):
""" Cette methode teste la validite des mots cles de l'etape """
- for child in self.mc_liste:
- if not child.isvalid():
+ for child in self.mcListe:
+ if not child.isValid():
return 0
return 1
- def valid_regles(self, cr):
+ def validRegles(self, cr):
""" Cette methode teste la validite des regles de l'etape """
- text_erreurs, test_regles = self.verif_regles()
+ text_erreurs, test_regles = self.verifRegles()
if not test_regles:
if cr == 'oui':
self.cr.fatal( "Regle(s) non respectee(s) : %s" % text_erreurs)
return 0
return 1
- def valid_sdnom(self, cr):
+ def validSdnom(self, cr):
""" Cette methode teste la validite du nom du concept produit par l'etape """
valid = 1
if self.sd.nom != None:
valid = 0
return valid
- def get_valid(self):
+ def getValid(self):
if hasattr(self, 'valid'):
return self.valid
else:
self.valid = None
return None
- def set_valid(self, valid):
- old_valid = self.get_valid()
+ def setValid(self, valid):
+ old_valid = self.getValid()
self.valid = valid
self.state = 'unchanged'
if not old_valid or old_valid != self.valid:
- self.init_modif_up()
+ self.initModifUp()
- def isvalid(self, sd='oui', cr='non'):
+ def isValid(self, sd='oui', cr='non'):
"""
Methode pour verifier la validite de l'objet ETAPE. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
"""
if CONTEXT.debug:
- print(("ETAPE.isvalid ", self.nom))
+ print(("ETAPE.isValid ", self.nom))
if self.state == 'unchanged':
return self.valid
else:
- valid = self.valid_child()
- valid = valid * self.valid_regles(cr)
+ valid = self.validChild()
+ valid = valid * self.validRegles(cr)
if self.reste_val != {}:
if cr == 'oui':
self.cr.fatal(("Concept is not defined"))
valid = 0
else:
- valid = valid * self.valid_sdnom(cr)
+ valid = valid * self.validSdnom(cr)
if valid:
- valid = self.update_sdprod(cr)
+ valid = self.updateSdprod(cr)
- self.set_valid(valid)
+ self.setValid(valid)
return self.valid
- def update_sdprod(self, cr='non'):
+ def updateSdprod(self, cr='non'):
"""
Cette methode met a jour le concept produit en fonction des conditions initiales :
"""
sd_prod = self.definition.sd_prod
if type(sd_prod) == types.FunctionType: # Type de concept retourne calcule
- d = self.cree_dict_valeurs(self.mc_liste)
+ d = self.creeDictValeurs(self.mcListe)
try:
sd_prod = sd_prod(*(), **d)
except:
if CONTEXT.debug:
print(("changement de type:", self.sd, sd_prod))
if self.sd.__class__ != sd_prod:
- self.sd.change_type(sd_prod)
+ self.sd.changeType(sd_prod)
else:
# Le sd n existait pas , on ne le cree pas
if cr == 'oui':
fin='End Command : ' + tr(self.nom))
self.state = 'modified'
try:
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
except AsException as e:
if CONTEXT.debug:
traceback.print_exc()
self.cr.fatal('Command : %s line : %r file : %r %s' % (tr(self.nom), self.appel[0], self.appel[1], e))
i = 0
- for child in self.mc_liste:
+ for child in self.mcListe:
i += 1
if i > MAXSIZE:
- print (MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mc_liste)))
+ print (MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mcListe)))
break
self.cr.add(child.report())
return self.cr
# on compte le nombre de mots cles presents
text = ''
count = 0
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
for mc in self.mcs:
if mc in args:
count = count + 1
self.cr.debut = "BEGIN validation report : " + self.nom
self.cr.fin = "END validation report :" + self.nom
for e in self.etapes:
- if e.isactif():
+ if e.isActif():
self.cr.add(e.report())
self.state = 'modified'
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
return self.cr
- def isvalid(self, cr='non'):
+ def isValid(self, cr='non'):
"""
Methode booleenne qui retourne 0 si le JDC est invalide, 1 sinon
"""
return self.valid
else:
valid = 1
- texte, test = self.verif_regles()
+ texte, test = self.verifRegles()
if test == 0:
if cr == 'oui':
if texte != "" and (' '.strip(texte) == "") : self.cr.fatal(texte)
valid = 0
if valid:
for e in self.etapes:
- if not e.isactif():
+ if not e.isActif():
continue
- if not e.isvalid():
+ if not e.isValid():
valid = 0
break
self.state = "unchanged"
self.valid = valid
return self.valid
- def verif_regles(self):
+ def verifRegles(self):
"""
Effectue la verification de validite des regles du jeu de commandes
"""
"""
"""
- def isvalid(self, sd='oui', cr='non'):
+ def isValid(self, sd='oui', cr='non'):
"""
Methode pour verifier la validite de l'objet ETAPE. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
"""
if CONTEXT.debug:
- print(("ETAPE.isvalid ", self.nom))
+ print(("ETAPE.isValid ", self.nom))
if self.state == 'unchanged':
return self.valid
else:
valid = 1
# On marque les concepts CO pour verification ulterieure de leur
# bonne utilisation
- l = self.get_all_co()
- # On verifie que les concepts CO sont bien passes par type_sdprod
+ l = self.getAllCo()
+ # On verifie que les concepts CO sont bien passes par typeSDProd
for c in l:
# if c.etape is self.parent:
- if c.is_typco() != 2:
+ if c.isTypCO() != 2:
# le concept est propriete de l'etape parent
- # Il n'a pas ete transforme par type_sdprod
+ # Il n'a pas ete transforme par typeSDProd
# Cette situation est interdite
# Pb: La macro-commande a passe le concept a une commande
# (macro ?) mal definie
if cr == 'oui':
- self.cr.fatal("Macro-commande mal definie : le concept n'a pas ete type par un appel a type_sdprod pour %s" % c.nom)
+ self.cr.fatal("Macro-commande mal definie : le concept n'a pas ete type par un appel a typeSDProd pour %s" % c.nom)
valid = 0
- valid = valid * self.valid_child()
- valid = valid * self.valid_regles(cr)
+ valid = valid * self.validChild()
+ valid = valid * self.validRegles(cr)
if self.reste_val != {}:
if cr == 'oui':
return valid
if self.sd != None:
- valid = valid * self.valid_sdnom(cr)
+ valid = valid * self.validSdnom(cr)
if self.definition.reentrant == 'n' and self.reuse:
# Il ne peut y avoir de concept reutilise avec une MACRO non
valid = 0
if valid:
- valid = self.update_sdprod(cr)
+ valid = self.updateSdprod(cr)
# Si la macro comprend des etapes internes, on teste leur validite
for e in self.etapes:
- if not e.isvalid():
+ if not e.isValid():
valid = 0
break
- self.set_valid(valid)
+ self.setValid(valid)
return self.valid
- def update_sdprod(self, cr='non'):
+ def updateSdprod(self, cr='non'):
"""
Cette methode met a jour le concept produit en fonction des conditions initiales :
self.typret = None
if type(sd_prod) == types.FunctionType:
# Type de concept retourne calcule
- d = self.cree_dict_valeurs(self.mc_liste)
+ d = self.creeDictValeurs(self.mcListe)
try:
# la sd_prod d'une macro a l'objet lui meme en premier argument
# contrairement a une ETAPE ou PROC_ETAPE
- # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+ # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
# les concepts produits dans self.sdprods, il faut le mettre a
# zero
self.sdprods = []
if CONTEXT.debug:
print(("changement de type:", self.sd, sd_prod))
if self.sd.__class__ != sd_prod:
- self.sd.change_type(sd_prod)
+ self.sd.changeType(sd_prod)
self.typret = sd_prod
else:
# Le sd n existait pas , on ne le cree pas
txt_nat = u"Bloc :"
- def isvalid(self, sd='oui', cr='non'):
+ def isValid(self, sd='oui', cr='non'):
"""
Methode pour verifier la validite du MCBLOC. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
old_valid = self.valid
else:
old_valid = None
- for child in self.mc_liste:
- if not child.isvalid():
+ for child in self.mcListe:
+ if not child.isValid():
valid = 0
break
# Apres avoir verifie la validite de tous les sous-objets, on verifie
# la validite des regles
- text_erreurs, test_regles = self.verif_regles()
+ text_erreurs, test_regles = self.verifRegles()
if not test_regles:
if cr == 'oui':
self.cr.fatal( "Regle(s) non respectee(s) : %s" % text_erreurs)
self.valid = valid
self.state = 'unchanged'
if not old_valid or old_valid != self.valid:
- self.init_modif_up()
+ self.initModifUp()
return self.valid
class MCCOMPO(object):
"""
- L'attribut mc_liste a ete cree par une classe derivee de la
+ L'attribut mcListe a ete cree par une classe derivee de la
classe MCCOMPO du Noyau
"""
# defini dans les classes derivees
self.txt_nat = ''
- def init_modif_up(self):
+ def initModifUp(self):
"""
Propage l'etat modifie au parent s'il existe et n'est pas l'objet
lui-meme
self.cr.debut = self.txt_nat + self.nom
self.cr.fin = "END " + self.txt_nat + self.nom
i = 0
- for child in self.mc_liste:
+ for child in self.mcListe:
i += 1
if i > MAXSIZE:
- print(MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mc_liste)))
+ print(MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mcListe)))
break
self.cr.add(child.report())
self.state = 'modified'
try:
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
except AsException as e:
if CONTEXT.debug:
traceback.print_exc()
self.cr.fatal(' '.join((self.txt_nat, self.nom, str(e))))
return self.cr
- def verif_regles(self):
+ def verifRegles(self):
"""
A partir du dictionnaire des mots-cles presents, verifie si les regles
de self sont valides ou non.
- testglob = booleen 1 si toutes les regles OK, 0 sinon
"""
# On verifie les regles avec les defauts affectes
- dictionnaire = self.dict_mc_presents(restreint='non')
+ dictionnaire = self.dictMcPresents(restreint='non')
texte = ['']
testglob = 1
for r in self.definition.regles:
texte = os.linesep.join(texte)
return texte, testglob
- def dict_mc_presents(self, restreint='non'):
+ def dictMcPresents(self, restreint='non'):
"""
- Retourne le dictionnaire {mocle : objet} construit a partir de self.mc_liste
+ Retourne le dictionnaire {mocle : objet} construit a partir de self.mcListe
Si restreint == 'non' : on ajoute tous les mots-cles simples du catalogue qui ont
une valeur par defaut
Si restreint == 'oui' : on ne prend que les mots-cles effectivement entres par
dico = {}
# on ajoute les couples {nom mot-cle:objet mot-cle} effectivement
# presents
- for v in self.mc_liste:
+ for v in self.mcListe:
if v == None:
continue
k = v.nom
txt_nat = "Mot cle Facteur :"
- def isvalid(self, sd='oui', cr='non'):
+ def isValid(self, sd='oui', cr='non'):
"""
Methode pour verifier la validite du MCFACT. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
old_valid = self.valid
else:
old_valid = None
- for child in self.mc_liste:
- if not child.isvalid():
+ for child in self.mcListe:
+ if not child.isValid():
valid = 0
break
# Apres avoir verifie la validite de tous les sous-objets, on verifie
# la validite des regles
- text_erreurs, test_regles = self.verif_regles()
+ text_erreurs, test_regles = self.verifRegles()
if not test_regles:
if cr == 'oui':
self.cr.fatal("Regle(s) non respectee(s) : %s" % text_erreurs)
self.valid = valid
self.state = 'unchanged'
if not old_valid or old_valid != self.valid:
- self.init_modif_up()
+ self.initModifUp()
return self.valid
CR = N_CR.CR
txt_nat = "Mot cle Facteur Multiple :"
- def isvalid(self, cr='non'):
+ def isValid(self, cr='non'):
"""
Methode pour verifier la validite du MCList. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
num = 0
for i in self.data:
num = num + 1
- if not i.isvalid():
+ if not i.isValid():
valid = 0
if cr == 'oui' and len(self) > 1:
self.cr.fatal( "L'occurrence numero %d du mot-cle facteur : %s n'est pas valide" % (num, self.nom))
fin="Fin Mot-cle facteur : " + tr(self.nom))
try:
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
except AsException as e:
if CONTEXT.debug:
traceback.print_exc()
self.cardProto = CardProtocol(
"card", min=self.definition.min, max=self.definition.max)
- def get_valid(self):
+ def getValid(self):
if hasattr(self, 'valid'):
return self.valid
else:
self.valid = None
return None
- def set_valid(self, valid):
- old_valid = self.get_valid()
+ def setValid(self, valid):
+ old_valid = self.getValid()
self.valid = valid
self.state = 'unchanged'
if not old_valid or old_valid != self.valid:
- self.init_modif_up()
+ self.initModifUp()
- def isvalid(self, cr='non'):
+ def isValid(self, cr='non'):
"""
Cette methode retourne un indicateur de validite de l'objet de type MCSIMP
valid = 1
v = self.valeur
# verification presence
- if self.isoblig() and (v == None or v == "" ):
+ if self.isOblig() and (v == None or v == "" ):
if cr == 'oui':
self.cr.fatal( "Mandatory keyword : %s has no value" % tr(self.nom))
valid = 0
# Pour tenir compte des Tuples
if hasattr(self.definition.type[0],'ntuple') :
try :
- if not (type(lval[0]) is tuple) : lval=(lval,)
+ if (not (type(lval[0]) is tuple)) and (not (type(lval[0]) is list)) : lval=(lval,)
except :
pass
-
if lval is None:
valid = 0
if cr == 'oui':
except ValError as e:
valid = 0
- self.set_valid(valid)
+ self.setValid(valid)
return self.valid
- def isoblig(self):
+ def isOblig(self):
""" indique si le mot-cle est obligatoire
"""
return self.definition.statut == 'o'
- def init_modif_up(self):
+ def initModifUp(self):
"""
Propage l'etat modifie au parent s'il existe et n'est l'objet
lui-meme
self.cr.fin = "End Simple Keyword: " + tr(self.nom)
self.state = 'modified'
try:
- self.isvalid(cr='oui')
+ self.isValid(cr='oui')
except AsException as e:
if CONTEXT.debug:
traceback.print_exc()
"""
# on compte le nombre de mots cles presents
text = ''
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
size = -1
for mc in self.mcs:
# les autres sont absents
text = ''
test = 1
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
mc0 = self.mcs[0]
if mc0 in args :
for mc in self.mcs[1:len(self.mcs)]:
mc0 = self.mcs[0]
text = ''
test = 1
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
if mc0 in args :
for mc in self.mcs[1:len(self.mcs)]:
if not mc in args :
class PROC_ETAPE(V_ETAPE.ETAPE):
"""
- On reutilise les methodes report,verif_regles
+ On reutilise les methodes report,verifRegles
de ETAPE par heritage.
"""
- def isvalid(self, sd='oui', cr='non'):
+ def isValid(self, sd='oui', cr='non'):
"""
Methode pour verifier la validite de l'objet PROC_ETAPE. Cette methode
peut etre appelee selon plusieurs modes en fonction de la valeur
- propager l'eventuel changement d'etat au parent
"""
if CONTEXT.debug:
- print(("ETAPE.isvalid ", self.nom))
+ print(("ETAPE.isValid ", self.nom))
if self.state == 'unchanged':
return self.valid
else:
- valid = self.valid_child()
- valid = valid * self.valid_regles(cr)
+ valid = self.validChild()
+ valid = valid * self.validRegles(cr)
if self.reste_val != {}:
if cr == 'oui':
self.cr.fatal(
tr("unknown keywords : %s") % ','.join(list(self.reste_val.keys())))
valid = 0
- self.set_valid(valid)
+ self.setValid(valid)
return self.valid
# on compte le nombre de mots cles presents
text = ''
count = 0
- args = self.liste_to_dico(args)
+ args = self.listeToDico(args)
for mc in self.mcs:
if mc in args :
count = count + 1
def __init__(self):
self.texte = ''
- def set_text(self,texte):
+ def setText(self,texte):
self.texte = texte
- def append_text(self,texte):
+ def appendText(self,texte):
"""
"""
self.texte = self.texte +texte
t=repr(self.texte)
return "COMMENTAIRE(u"+t+")\n"
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant le # initial
"""
class AFFECTATION(ENTITE_JDC):
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant tout retour chariot et tout point virgule
"""
class COMMANDE_COMMENTARISEE(ENTITE_JDC):
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant les doubles commentaires
"""
self.buffer=[]
self.buffer_indent=""
- def getoptions(self):
+ def getOptions(self):
m= self.optionprog.match(self.line)
if m:
option=m.group(1)
self.line= self.texte.readline()
#print "line:",self.line
# option ?
- self.getoptions()
+ self.getOptions()
return self.line
- def get_texte(self,appli=None):
+ def getTexte(self,appli=None):
"""
Retourne le texte issu de l'analyse
"""
for tk in tokenize.generate_tokens(self.readline):
- self.process_token(tk)
+ self.processToken(tk)
return self.out
- def process_token(self, tk):
+ def processToken(self, tk):
"""
"""
ttype, tstring, spos, epos, line = tk
return
if ttype != tokenize.DEDENT and ttype != tokenize.INDENT and self.please_indent:
- self.do_indent()
+ self.doIndent()
fn(tstring)
self.lastrow, self.lastcol = epos
self.out=self.out+tstring
- def output_com(self,tstring):
+ def outputCom(self,tstring):
self.out=self.out+tstring
- def update_indent(self):
- #print "update_indent",len(self.indent_list[-1]),len(self.buffer_indent)
+ def updateIndent(self):
+ #print "updateIndent",len(self.indent_list[-1]),len(self.buffer_indent)
if len(self.indent_list[-1]) > len(self.buffer_indent):
self.out=self.out+(len(self.indent_list[-1]) - len(self.buffer_indent))*" "
self.buffer_indent=self.indent_list[-1]
- def do_indent(self):
- #print "indentation dans do_indent",len(self.indent_list)
+ def doIndent(self):
+ #print "indentation dans doIndent",len(self.indent_list)
self.out=self.out+self.indent_list[-1]
self.buffer_indent=self.indent_list[-1]
# print len(self.indent_list),self.please_indent
for ob in self.buffer:
self.out= self.out+ str(ob)
- self.do_indent()
+ self.doIndent()
self.buffer=[]
self.objet_courant=None
self.affectation=0
else:
# affectation en cours, on ajoute
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
return
if self.objet_courant:
if not self.buffer:self.buffer_indent=self.indent_list[-1]
self.objet_courant=COMMANDE_COMMENTARISEE()
self.buffer.append(self.objet_courant)
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
elif isinstance(self.objet_courant,COMMENTAIRE):
self.objet_courant=COMMANDE_COMMENTARISEE()
self.buffer.append(self.objet_courant)
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
else:
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
else:
# commentaire inline
if not self.buffer:self.buffer_indent=self.indent_list[-1]
self.objet_courant=COMMENTAIRE()
self.buffer.append(self.objet_courant)
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
elif isinstance(self.objet_courant,COMMANDE_COMMENTARISEE):
self.objet_courant=COMMENTAIRE()
self.buffer.append(self.objet_courant)
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
else:
- self.objet_courant.append_text(tstring)
+ self.objet_courant.appendText(tstring)
self.please_indent = None
else:
# commentaire inline
def NAME(self, tstring):
if self.buffer:
- self.update_indent()
+ self.updateIndent()
self.flush_buffer()
if self.affectation ==1:
# on ne veut pas des expressions qui commencent par NAME=NAME(NAME=
# on en prend le chemin : on met affectation a 3 pour le signaler
# on attend d'en savoir plus
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=3
return
elif self.affectation ==4:
# on a une expression qui commence par NAME=NAME(NAME
# il s'agit tres probablement d'une commande
# on annule l'affectation en cours
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=5
return
elif self.affectation == 2:
# affectation en cours, on ajoute
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=2
return
self.affectation=0
self.flush_buffer()
if self.affectation>=1:
# affectation en cours, on ajoute
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=2
return
self.output(tstring)
elif tstring == '(' and self.affectation == 3:
# on a deja trouve NAME=NAME
# on passe affectation a 4
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=4
return
elif tstring == ';' and self.affectation>=1:
self.affectation=0
elif self.affectation>=1:
# on complete l'affectation
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=2
return
#print "indentation dans INDENT",len(self.indent_list),len(tstring)
self.affectation=0
if self.buffer:
- self.update_indent()
+ self.updateIndent()
self.flush_buffer()
def DEDENT(self, tstring):
self.out= self.out+ str(self.buffer[0])
if len(self.buffer) > 1:
for ob in self.buffer[1:]:
- self.do_indent()
+ self.doIndent()
self.out= self.out+ str(ob)
self.buffer=[]
self.objet_courant=None
self.flush_buffer()
if self.affectation>=1:
# affectation en cours, on ajoute
- if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
- self.affectation_courante.append_text(tstring)
+ if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.appendText(tstring)
self.affectation=2
return
self.output(tstring)
f.close()
else:
t=text
- txt = PARSEUR_PYTHON(t).get_texte()
+ txt = PARSEUR_PYTHON(t).getTexte()
print (txt)
compile(txt,"<string>",'exec')
import re
from Extensions.i18n import tr
+#import traceback
+#traceback.print_stack()
-from .convert_python import PythonParser
-import six
+from convert.convert_python import Pythonparser
from six.moves import range
try:
basestring
#Si le code n est pas Telemac
-try :
- from enum_Telemac2d_auto import TelemacdicoEn
-except :
- pass
+#try :
+# from enum_Telemac2d_auto import self.TelemacdicoEn
+#except :
+# pass
from Extensions import localisation
"""
return {
'name' : 'TELEMAC',
- 'factory' : TELEMACParser
+ 'factory' : TELEMACparser
}
-class TELEMACParser(PythonParser):
+class TELEMACparser(Pythonparser):
"""
- This converter works like PythonParser, except that it also initializes all
+ This converter works like Pythonparser, except that it also initializes all
model variables to None in order to avoid Python syntax errors when loading
a file with a different or inexistent definition of variables.
"""
+
+
def convert(self, outformat, appli=None):
from Accas import A_BLOC, A_FACT, A_SIMP
- self.dicoCasToCata=appli.readercata.dicoCasToCata
- self.dicoInverse=appli.readercata.dicoInverse
- self.dicoMC=appli.readercata.dicoMC
- self.Ordre_Des_Commandes=appli.readercata.Ordre_Des_Commandes
+ try :
+ self.dicoCasToCata = appli.readercata.dicoCasToCata
+ except :
+ self.dicoCasToCata = {}
+ print ('pas de dicoCasToCata')
+ self.dicoInverse = appli.readercata.dicoInverse
+ self.dicoMC = appli.readercata.dicoMC
+ self.Ordre_Des_Commandes = appli.readercata.Ordre_Des_Commandes
+ try :
+ self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+ except :
+ self.TelemacdicoEn = {}
+ print ('pas de TelemacdicoEn')
+ try :
+ self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+ except :
+ self.DicoEnumCasFrToEnumCasEn = {}
+ print ('pas de DicoEnumCasFrToEnumCasEn')
+
if appli.langue=='fr' :
- from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
- for k in DicoEnumCasFrToEnumCasEn :
- TelemacdicoEn[k]=DicoEnumCasFrToEnumCasEn[k]
+ #from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
+ for k in self.DicoEnumCasFrToEnumCasEn :
+ self.TelemacdicoEn[k]=self.DicoEnumCasFrToEnumCasEn[k]
text=""
self.dictSimp={}
dicoParMC={}
for simp in self.dictSimp:
- if simp in TELEMACParser.__dict__ : TELEMACParser.__dict__[simp](self,)
+ if simp in TELEMACparser.__dict__ : TELEMACparser.__dict__[simp](self,)
for simp in self.dictSimp:
if simp not in self.dicoInverse :
def convertFACT(self,obj,nom,valeur):
# traitement LIQUID_BOUNDARIES
- if nom in TELEMACParser.__dict__ :
- TELEMACParser.__dict__[nom](self,)
+ if nom in TELEMACparser.__dict__ :
+ TELEMACparser.__dict__[nom](self,)
return
self.textePy += nom + "=_F( "
self.traiteMC(valeur)
try : valeur=eval(valeur,{})
except : pass
- if nom in TelemacdicoEn:
+ if nom in self.TelemacdicoEn:
try :
- valeur=TelemacdicoEn[nom][valeur]
+ valeur=self.TelemacdicoEn[nom][valeur]
self.textePy += nom + "= '" + str(valeur) +"',"
return
except : pass
# Attention : on attend une liste mais on a une seule valeur!
try : oldValeur=eval(oldValeur,{})
except : pass
- if nom in TelemacdicoEn :
- v=TelemacdicoEn[nom][oldValeur]
+ if nom in self.TelemacdicoEn :
+ v=self.TelemacdicoEn[nom][oldValeur]
self.textePy += nom + "= ('" + str(v) +"',),"
else :
self.textePy += nom + "= (" + str(oldValeur) +",),"
for v in valeur :
try : v=eval(v,{})
except : pass
- if nom in TelemacdicoEn:
- try : v=TelemacdicoEn[nom][v]
+ if nom in self.TelemacdicoEn:
+ try : v=self.TelemacdicoEn[nom][v]
except : pass
newVal.append(v)
self.textePy += nom + "=" + str(newVal) +","
def tri(self, listeIn):
+ if len(listeIn) == 0 : return listeIn
if len(listeIn) == 1 : return listeIn
if self.Ordre_Des_Commandes == None : return listeIn
listeOut=[listeIn[0],]
--- /dev/null
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+from __future__ import absolute_import
+
+
+import re
+from Extensions.i18n import tr
+
+#import traceback
+#traceback.print_stack()
+
+from Extensions import localisation
+from Noyau import N_CR
+
+
+def entryPoint():
+ """
+ Return a dictionary containing the description needed to load the plugin
+ """
+ return {
+ 'name' : 'xml',
+ 'factory' : XMLparser
+ }
+
+class XMLparser:
+ """
+ This converter works like Pythonparser, except that it is supposed to read XML
+ """
+
+ def __init__(self,cr=None):
+ self.text=''
+ if cr : self.cr=cr
+ else: self.cr=N_CR.CR(debut='CR convertisseur format XML',
+ fin='fin CR format XML')
+
+ def readfile(self,filename):
+ self.filename=filename
+ try:
+ self.text=open(filename).read()
+ except:
+ self.cr.exception(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+ self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+ return
+
+
+
+ def convert(self, outformat, appli=None):
+ # ici on ne fait rien
+ # on le fera a la creation du JDC
+ try:
+ return self.text
+ except EficasException:
+ # Erreur lors de la conversion
+ l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
+ sys.exc_info()[2])
+ self.cr.exception(tr("Impossible de convertir le fichier XML\n %s", ''.join(l)))
+ return ""
+
+
+
+
+
--- /dev/null
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+from __future__ import absolute_import
+
+
+#from Extensions.i18n import tr
+#from Extensions import localisation
+
+
+from .convert_python import Pythonparser
+from Noyau import N_CR
+
+try:
+ basestring
+except NameError:
+ basestring = str
+
+
+
+def entryPoint():
+ """
+ Return a dictionary containing the description needed to load the plugin
+ """
+ return {
+ 'name' : 'dico',
+ 'factory' : Dicoparser
+ }
+
+class Dicoparser(Pythonparser):
+ """
+ This converter initializes model variable from a python dictionnary
+ """
+
+ def __init__(self,cr=None):
+ # Si l'objet compte-rendu n'est pas fourni, on utilise le
+ # compte-rendu standard
+ self.text=''
+ self.textePy=''
+ if cr :
+ self.cr=cr
+ else:
+ self.cr=N_CR.CR(debut='CR convertisseur format dico',
+ fin='fin CR format dico')
+
+ def readfile(self,filename):
+ self.filename=filename
+ try:
+ self.text=open(filename).read()
+ except:
+ self.cr.exception(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+ self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+ return
+
+ def convert(self,outformat,appli=None):
+ monTexteDico={}
+ exec (self.text,globals(),monTexteDico)
+ if len(monTexteDico.keys()) != 1 :
+ self.cr.exception(tr("Impossible de traiter le fichier %s" ,str(filename)))
+ self.cr.fatal(tr("Impossible de traiter le fichier %s" ,str(filename)))
+ return
+ self.textePy=""
+ monDico=monTexteDico[monTexteDico.keys()[0]]
+ for commande in monDico :
+ valeurs=monDico[commande]
+ if valeurs.has_key('NomDeLaSdCommande') :
+ # cas d un oper
+ self.textePy+=valeurs['NomDeLaSdCommande']+' = '+commande+'('
+ del valeurs['NomDeLaSdCommande']
+ else :
+ self.textePy+=commande+'('
+ for mot in valeurs :
+ if isinstance(valeurs[mot],dict) : self.traiteMCFact(mot,valeurs[mot])
+ else : self.textePy += mot+' = ' +str(valeurs[mot])+','
+ self.textePy+=');\n' # fin de la commande
+ print (self.textePy)
+ return self.textePy
+
+ def traiteMCFact(self,mot,valeurs):
+ self.textePy += mot + '=_F('
+ for mot in valeurs :
+ if isinstance(valeurs[mot],dict) : self.traiteMCFact(mot,valeurs[mot])
+ else : self.textePy +=mot+' = ' +str(valeurs[mot])+','
+ self.textePy +='),'
+
"""
from __future__ import absolute_import
-from .convert_python import PythonParser
+from .convert_python import Pythonparser
def entryPoint():
"""
# Le nom du plugin
'name' : 'MAP',
# La factory pour creer une instance du plugin
- 'factory' : PythonParser,
+ 'factory' : Pythonparser,
}
# Le nom du plugin
'name' : 'pyth',
# La factory pour creer une instance du plugin
- 'factory' : PythParser,
+ 'factory' : Pythparser,
}
-class PythParser(object):
+class Pythparser(object):
"""
Ce convertisseur lit un fichier au format pyth avec la
methode readfile : convertisseur.readfile(nom_fichier)
# Le nom du plugin
'name' : 'python',
# La factory pour creer une instance du plugin
- 'factory' : PythonParser,
+ 'factory' : Pythonparser,
}
-class PythonParser(object):
+class Pythonparser(object):
"""
Ce convertisseur lit un fichier au format python avec la
methode readfile : convertisseur.readfile(nom_fichier)
#import cProfile, pstats, StringIO
#pr = cProfile.Profile()
#pr.enable()
- l= PARSEUR_PYTHON(self.text).get_texte(appli)
+ l= PARSEUR_PYTHON(self.text).getTexte(appli)
#pr.disable()
#s = StringIO.StringIO()
#sortby = 'cumulative'
#ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
#ps.print_stats()
- #print (s.getvalue())
+ #print (s.getValue())
return l
except EficasException:
linecontinueRE = re.compile(r"\\\s*(#.*)?$")
emptyHangingBraces = [0,0,0,0,0]
-class ParserException(Exception): pass
+class parserException(Exception): pass
class FatalError(Exception): pass
#commentaire double precede d'un nombre quelconque de blancs (pas multiligne)
)
""",re.VERBOSE|re.MULTILINE)
-def construit_genea(texte,liste_mc):
+def construitGenea(texte,listeMc):
"""
Retourne un dictionnaire dont les cles sont des reels et les valeurs sont leurs representations textuelles.
Realise un filtrage sur les reels :
- Ne garde que les reels pour lesquels str ne donne pas une bonne representation.
- - Ne garde que les reels derriere un argument keyword dont le nom est dans liste_mc
+ - Ne garde que les reels derriere un argument keyword dont le nom est dans listeMc
>>> s = '''a=+21.3e-5*85,b=-.1234,c=81.6 , d= -8 , e=_F(x=342.67,y=-1), f=+1.1, g=(1.3,-5,1.54E-3),
... #POMPE_PRIMA._BOUCLE_N._2_ELEMENT_NUMERO:0239
... h=_F(x=34.6,y=-1)'''
- >>> construit_genea(s,['a','x'])
+ >>> construitGenea(s,['a','x'])
{0.000213: '21.3e-5'}
"""
d={}
#argument keyword
mot=m[:-1]
else:
- if mot not in liste_mc:continue
+ if mot not in listeMc:continue
#valeur
key=eval(m)
if str(key) != m: d[key]=m
self.texte = ''
pere.l_objets.append(self)
- def set_text(self,texte):
+ def setText(self,texte):
self.texte = texte
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en mettant un retour chariot a la fin de texte
"""
#s='COMMENTAIRE(u"""'+self.texte+'""")\n\n'
#return s
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant le # initial
"""
"""
return self.texte+'\n'
- def get_nb_par(self):
+ def getNbPar(self):
"""
Retourne la difference entre le nombre de parentheses ouvrantes
et le nombre de parentheses fermantes presentes dans self.texte
class AFFECTATION(ENTITE_JDC):
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant tout retour chariot et tout point virgule
PN et tout commentaire
class COMMANDE_COMMENTARISEE(ENTITE_JDC):
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant les doubles commentaires
"""
class AFFECTATION_EVAL(ENTITE_JDC):
- def append_text(self,texte):
+ def appendText(self,texte):
"""
Ajoute texte a self.texte en enlevant tout retour chariot
"""
self.l_objets=None
self.appli=None
- def is_affectation(self,texte):
+ def isAffectation(self,texte):
"""
Methode booleenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes
Aster, 0 sinon
"""
+ print (texte)
if '=' not in texte : return 0
if self.pattern_commande.match(texte):
# cas d'une procedure ...
if m.end() != len(s):return 0
return 1
- def is_eval(self,texte):
+ def isEval(self,texte):
"""
Methode booleenne qui retourne 1 si le texte est celui d'une affectation de type EVAL
dans un jeu de commandes Aster, 0 sinon
else:
return 0
- def is_commande(self,texte):
+ def isCommande(self,texte):
"""
Methode booleenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes
Aster, 0 sinon
else:
return 0
- def is_modification_catalogue(self,texte) :
+ def isModificationCatalogue(self,texte) :
if self.pattern_commande.match(texte):
return 1
hangingComments ^= line.count(u"'''") % 2
#print (hangingComments,hangingBraces)
if hangingBraces[0] < 0 or hangingBraces[1] < 0 or hangingBraces[2] < 0:
- raise ParserException()
+ raise parserException()
if ligne.strip() == '':
# il s'agit d'un saut de ligne
# on a un objet commentarise a l'interieur d'une commande
# --> non traite pour l'instant : on l'ajoute simplement a la commande courante comme
# un commentaire ordinaire
- commande_courante.append_text(ligne)
+ commande_courante.appendText(ligne)
elif commande_commentarisee_courante :
# commande_commentarisee en cours : on ajoute la ligne
- commande_commentarisee_courante.append_text(ligne)
+ commande_commentarisee_courante.appendText(ligne)
# on a 2 commandes commentarisees de suite
if pattern_finComments.match(ligne) :
commande_commentarisee_courante = None
else:
# debut de commande commentarisee : on cree un objet commande_commentarisee_courante
commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
- commande_commentarisee_courante.append_text(ligne)
+ commande_commentarisee_courante.appendText(ligne)
#on passe a la ligne suivante
continue
if commande_courante :
# il s'agit d'un commentaire a l'interieur d'une commande --> on ne fait rien de special
#on l'ajoute au texte de la commande
- commande_courante.append_text(ligne)
+ commande_courante.appendText(ligne)
elif commentaire_courant :
# il s'agit de la nieme ligne d'un commentaire entre deux commandes
# --> on ajoute cette ligne au commentaire courant
- commentaire_courant.append_text(ligne)
+ commentaire_courant.appendText(ligne)
else :
# il s'agit d'un nouveau commentaire entre deux commandes
# --> on le cree et il devient le commentaire courant
commentaire_courant = COMMENTAIRE(self)
- commentaire_courant.append_text(ligne)
+ commentaire_courant.appendText(ligne)
#on passe a la ligne suivante
continue
if commande_courante :
#on a une commande en cours. On l'enrichit ou on la termine
- commande_courante.append_text(ligne)
+ commande_courante.appendText(ligne)
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
#la commande est terminee
- self.analyse_reel(commande_courante.texte)
+ self.analyseReel(commande_courante.texte)
commande_courante = None
#on passe a la ligne suivante
if affectation_courante != None :
#poursuite d'une affectation
- affectation_courante.append_text(ligne)
+ affectation_courante.appendText(ligne)
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
# il peut s'agir d'une commande ou d'une affectation ...
# ou d'un EVAL !!!
- if self.is_eval(ligne):
+ if self.isEval(ligne):
# --> affectation de type EVAL
if affectation_courante : affectation_courante = None
affectation = AFFECTATION_EVAL(self)
- affectation.append_text(ligne)
+ affectation.appendText(ligne)
#on passe a la ligne suivante
continue
- if self.is_affectation(ligne):
+ if self.isAffectation(ligne):
#print( '--> affectation')
text=ligne
#traitement des commentaires en fin de ligne
if compos > 2:
#commentaire en fin de ligne
#on cree un nouveau commentaire avant le parametre
- COMMENTAIRE(self).append_text(ligne[compos:])
+ COMMENTAIRE(self).appendText(ligne[compos:])
text=ligne[:compos]
#si plusieurs instructions separees par des ; sur la meme ligne
inspos=line.find(u";")
sur la meme ligne : %s", ligne))
affectation_courante = AFFECTATION(self)
- affectation_courante.append_text(text)
+ affectation_courante.appendText(text)
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
#on passe a la ligne suivante
continue
- if self.is_commande(ligne):
+ if self.isCommande(ligne):
# --> nouvelle commande
affectation_courante = None
commande_courante = COMMANDE(self)
- commande_courante.append_text(ligne)
+ commande_courante.appendText(ligne)
#si la commande est complete, on la termine
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
#la commande est terminee
- self.analyse_reel(commande_courante.texte)
+ self.analyseReel(commande_courante.texte)
commande_courante = None
#on passe a la ligne suivante
continue
i=i+1
return chaine
- def construit_genea(self,texte):
+ def construitGenea(self,texte):
indiceC=0
mot=""
dict_reel_concept={}
# c est un ;
return dict_reel_concept
- def analyse_reel(self,commande) :
+ def analyseReel(self,commande) :
nomConcept=None
# On verifie qu on a bien un OPER
# et pas une MACRO
#nomConcept=epure1.split(u"=")[0]
#index=epure1.find(u"=")
#epure2=epure1[index+1:len(epure1)].replace(u"_F(u","(u")
- #dict_reel_concept=self.construit_genea(epure2)
+ #dict_reel_concept=self.construitGenea(epure2)
if self.appli:
- dict_reel_concept=construit_genea(epure2,self.appli.liste_simp_reel)
+ dict_reel_concept=construitGenea(epure2,self.appli.liste_simp_reel)
else:
dict_reel_concept={}
if nomConcept == "sansnom" :
if len(dict_reel_concept) != 0:
self.appli.dict_reels[nomConcept]=dict_reel_concept
- def get_texte(self,appli=None):
+ def getTexte(self,appli=None):
"""
Retourne le texte issu de l'analyse
"""
for obj in self.l_objets:
txt = txt+str(obj)
#else :
- except ParserException:
+ except parserException:
#Impossible de convertir le texte, on le retourne tel que
txt=self.texte
return txt
--- /dev/null
+# -*- coding: utf-8 -*-
+import raw.cata_map_genere as mdm
+mdm.pyxb.GlobalValidationConfig._setContentInfluencesGeneration(mdm.pyxb.GlobalValidationConfig.ALWAYS)
+mdm.pyxb.GlobalValidationConfig._setInvalidElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+mdm.pyxb.GlobalValidationConfig._setOrphanElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+
+
+print dir(mdm)
self.sep = ':'
self.l_max = 72
- def formate_jdc(self):
+ def formateJdc(self):
comment=re.compile("\n#")
commentaireavant=0
for etape in self.l_jdc:
self.count = self.count+1
self.texte_etape = ''
- #if type(etape)==types.ListType:
if type(etape)==list:
# L'etape est sous la forme d'une liste dont le premier element est une chaine
self.indent=[]
self.indent_courant = self.indent[0]
self.texte_etape = '\n' + etape[0]
if len(etape)>1 :
- self.formate_etape(etape[1:])
+ self.formateEtape(etape[1:])
else :
# L'etape est deja sous forme de chaine de caracteres
self.indent=[]
- def formate_etape(self,liste):
+ def formateEtape(self,liste):
"""
Enrichissement de la chaine de caracteres representant l'etape (attribut
texte_etape de l'objet Formatage).
ind = 0
for element in liste :
- if type(element) == types.ListType:
+ if type(element)==list:
# il s'agit d'un mot-clé facteur
# on écrit son nom (element[0])
self.indent.insert(length,self.indent[length-1]+len(element[0]))
self.indent_courant = self.indent[length]
# on écrit ses fils
- self.formate_etape(element[1:])
+ self.formateEtape(element[1:])
#elif type(element) == types.StringType:
- elif type(element) == bytes:
+ #elif type(element) == bytes:
+ # PNPNPN -> marre du python 2 et 3
+ # on remplace par else dans if
+ else :
# il s'agit d'un mot-clé simple ou de ')' ou ');' ou '),' ou ');\n'
if element in l_patterns_fin_mcf :
- self.traite_mcfact(s_mcfact=element,ind=ind)
+ self.traiteMcfact(s_mcfact=element,ind=ind)
elif element in l_patterns_fin_etape :
- self.traite_etape(s_etape=element,ind=ind)
+ self.traiteEtape(s_etape=element,ind=ind)
else :
- self.traite_mcsimp(s_mcsimp=element,ind=ind)
+ self.traiteMcsimp(s_mcsimp=element,ind=ind)
ind = 1
- def traite_etape(self,s_etape,ind) :
+ def traiteEtape(self,s_etape,ind) :
"""
Traite une partie du jdc formaté : s_etape, une chaîne de caractères
contenant une étape
self.indent_courant=self.indent[0]
self.texte_etape = self.texte_etape + s_etape.strip()
- def traite_mcfact(self,s_mcfact,ind) :
+ def traiteMcfact(self,s_mcfact,ind) :
"""
Traite une partie du jdc formaté : s_mcfact, une chaîne de caractères
contenant un mot-clef facteur.
return
- def traite_mcsimp(self,s_mcsimp,ind) :
+ def traiteMcsimp(self,s_mcsimp,ind) :
"""
Traite une partie du jdc formaté : s_mcsimp, une chaîne de caractères
contenant un mot-clef simple.
# il faut couper ...
#nom,valeur = string.split(s_mcsimp,self.sep,1)
nom,valeur = str.split(s_mcsimp,self.sep,1)
- chaine = self.creer_chaine(nom,valeur,'\n'+self.indent_courant*' ',ind)
+ chaine = self.creerChaine(nom,valeur,'\n'+self.indent_courant*' ',ind)
#self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + s_mcsimp.strip()
self.texte_etape = self.texte_etape + chaine
return
return len(texte[texte.rfind('\n'):-1])
- def creer_chaine(self,nom,valeur,increment,ind):
+ def creerChaine(self,nom,valeur,increment,ind):
"""
- La methode creer_chaine reconstitue un objet Eficas à partir de
+ La methode creerChaine reconstitue un objet Eficas à partir de
- son nom,
- sa valeur.
"""
def __init__(self,l_jdc,code=None,mode=None,sep='=',l_max="**"):
Formatage.__init__(self,l_jdc,code=None,mode=None,sep='=',l_max="**")
- def formate_jdc(self):
- texte1=Formatage.formate_jdc(self)
+ def formateJdc(self):
+ texte1=Formatage.formateJdc(self)
newText=""
lignes=texte1.split("\n")
texte=""
# Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D
# si le jdc est valide (sinon cela n a pas de sens)
- if obj.isvalid() :
+ if obj.isValid() :
try :
# constitution du bloc VERSION du fichier PHYS (existe toujours)
self.generBLOC_VERSION(obj)
self.dicoCourant=self.dicoMCFACTCourant
s=PythonGenerator.generMCFACT(self,obj)
# sauvegarde, dans self.dicoEtapeCourant, de la valeur du FACT courant, pour utilisation ultérieure dans generETAPE et generPROC_ETAPE
- # Traitement des FACT CUTLINE et CUTPLANE multiples (max='**' dans le catalogue)
+ # traitement des FACT CUTLINE et CUTPLANE multiples (max='**' dans le catalogue)
# Ce traitement spécial est nécessaire pour le moment car le générateur bogue sinon au niveau des matériaux (non-linéaires ?)
if obj.nom in ('FIELDDUMP','CUTLINE', 'CUTPLANE', 'FIELDMAP', 'VISU3D' ):
# Remplissage se self.dicoEtapeCourant pour le nom du FACT courant
"""
try:
if usePrefix:
- nomGroupe = self.nomReelGroupe(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
+ nomGroupe = self.nomReelGroupe(obj.getSdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
print "liste des noms sans prefixes %s" %(nomGroupe)
else:
- nomGroupe = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept
+ nomGroupe = obj.getSdname() # nom du groupe de maillage, i.e. nom du concept
print "liste des noms sans prefixes %s" %(nomGroupe)
# test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement.
texte=""
texte+="%s"%(obj.valeur['Domaine'])
print"le texte=%s" %(texte)
- self.dictDomaine[obj.get_sdname()]=texte
+ self.dictDomaine[obj.getSdname()]=texte
print "liste des domaines =%s" %(self.dictGroupes[nomGroupe]['DOMAINE'])
# else:
try:
#nomGroupe={'SOURCE':[], 'MATERIAL':[], 'LISTE':[], 'STRAND':[], }
if usePrefix:
- nomGroupe = self.nomReelGroupe(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
+ nomGroupe = self.nomReelGroupe(obj.getSdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
print "liste des noms sans prefixes %s" %(nomGroupe)
else:
- nomGroupe = obj.get_sdname() # nom du macro groupe
+ nomGroupe = obj.getSdname() # nom du macro groupe
print "liste des noms sans prefixes %s" %(nomGroupe)
self.dictGroupes[nomGroupe] = {}
texte=""
texte+="%s"%(obj.valeur['Domaine'])
print"le texte=%s" %(texte)
- self.dictDomaine[obj.get_sdname()]=texte
+ self.dictDomaine[obj.getSdname()]=texte
else: # Erreur si Domaine et macro-groupe pas complètement inducteur
raise ValueError, nomGroupe + tr(" : ce MACRO_GROUPE ne doit pas contenir de Domaine car il contient, dans LISTE_MESHGROUP, des groupes qui ne sont pas que des morceaux d'inducteurs bobines ou topologiques.")
else: # Domaine manquant
print "_____________cond_____________"
# verification des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY)
if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur:
- print "ERREUR! Le matériau conducteur (CONDUCTOR) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.get_sdname()
- raise ValueError, obj.get_sdname() + tr(" : ce materiau conducteur (CONDUCTOR) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
+ print "ERREUR! Le matériau conducteur (CONDUCTOR) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.getSdname()
+ raise ValueError, obj.getSdname() + tr(" : ce materiau conducteur (CONDUCTOR) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
else:
# parcours des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY)
for keyN1 in ('PERMEABILITY','CONDUCTIVITY') :
texte+=" ]"+"\n"
if self.debug:
print "texte = %s", texte
- self.dictMaterConductor[obj.get_sdname()]={'texte': texte, 'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
+ self.dictMaterConductor[obj.getSdname()]={'texte': texte, 'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
def generMATERIAL_DIELECTRIC(self,obj):
"""preparation du sous bloc DIELECTRIC"""
texte+=" ]"+"\n"
if self.debug:
print "texte = %s" % texte
- self.dictMaterDielectric[obj.get_sdname()]={'texte': texte, 'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
+ self.dictMaterDielectric[obj.getSdname()]={'texte': texte, 'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
def generMATERIAL_ZSURFACIC(self,obj):
"""preparation du sous bloc ZSURFACIC"""
print "______________zsurf_____________"
# verification des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY)
if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur:
- print "ERREUR! Le matériau impedance de surface (ZSURFACIC) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.get_sdname()
- raise ValueError, obj.get_sdname() + tr(" : ce materiau impedance de surface (ZSURFACIC) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
+ print "ERREUR! Le matériau impedance de surface (ZSURFACIC) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.getSdname()
+ raise ValueError, obj.getSdname() + tr(" : ce materiau impedance de surface (ZSURFACIC) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
else:
# parcours des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY)
for keyN1 in obj.valeur :
texte+=" ]"+"\n"
if self.debug:
print "texte = %s", texte
- self.dictMaterZsurfacic[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc
+ self.dictMaterZsurfacic[obj.getSdname()]=texte # sauvegarde du texte pour ce bloc
def generMATERIAL_EMISO(self,obj):
"""preparation du sous bloc EM_ISOTROPIC_FILES.
#from os.path import basename
#texte =" CONDUCTIVITY MED "+basename(str(obj.valeur["CONDUCTIVITY_File"]))+"\n"
#texte+=" PERMEABILITY MED "+basename(str(obj.valeur["PERMEABILITY_File"]))+"\n"
- # print "obj get sdname= ", obj.get_sdname()
- # if obj.get_sdname() in self.dictMaterEmIso.keys() :
- # self.dictMaterEmIso[obj.get_sdname()].append(texte)
+ # print "obj get sdname= ", obj.getSdname()
+ # if obj.getSdname() in self.dictMaterEmIso.keys() :
+ # self.dictMaterEmIso[obj.getSdname()].append(texte)
# else :
- self.dictMaterEmIso[obj.get_sdname()]=texte
+ self.dictMaterEmIso[obj.getSdname()]=texte
def generMATERIAL_EMANISO(self,obj):
"""preparation du sous bloc EM_ANISOTROPIC_FILES.
texte =" CONDUCTIVITY MATER "+str(obj.valeur["CONDUCTIVITY_File"])+"\n"
if "PERMEABILITY_File" in obj.valeur:
texte+=" PERMEABILITY MATER "+str(obj.valeur["PERMEABILITY_File"])+"\n"
- # print "obj get sdname= ", obj.get_sdname()
- # if obj.get_sdname() in self.dictMaterEmAnIso.keys() :
- # self.dictMaterEmAnIso[obj.get_sdname()].append(texte)
+ # print "obj get sdname= ", obj.getSdname()
+ # if obj.getSdname() in self.dictMaterEmAnIso.keys() :
+ # self.dictMaterEmAnIso[obj.getSdname()].append(texte)
# else :
- self.dictMaterEmAnIso[obj.get_sdname()]=texte
+ self.dictMaterEmAnIso[obj.getSdname()]=texte
def generMATERIAL_NILMAT(self,obj):
"""preparation du sous bloc NILMAT"""
texte=""
- self.dictMaterNilmat[obj.get_sdname()]=texte
+ self.dictMaterNilmat[obj.getSdname()]=texte
def generMATERIAL_ZINSULATOR(self,obj):
""""preparation du sous bloc ZINSULATOR"""
texte=""
- self.dictMaterZinsulator[obj.get_sdname()]=texte
+ self.dictMaterZinsulator[obj.getSdname()]=texte
#-------------------------------------------------------------------
if self.problem == HARMONIC:
texte+=" CURJ POLAR %(ampli)s %(phase)s\n" \
% {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
- self.dictSourceStInd[obj.get_sdname()]=texte
+ self.dictSourceStInd[obj.getSdname()]=texte
if self.debug:
print texte
except ValueError, err:
"""preparation du sous bloc HPORT"""
texte=""
sdict = obj.valeur['HPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source
- nomPort = obj.get_sdname()
+ nomPort = obj.getSdname()
self.dictPort[nomPort] = {}
self.dictPort[nomPort]['HPORT']=str(sdict['TYPE'])
try :
if self.problem == HARMONIC:
texte+=" AMP POLAR %(ampli)s %(phase)s\n" \
% {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
- self.dictSourceHport[obj.get_sdname()]=texte
+ self.dictSourceHport[obj.getSdname()]=texte
if self.debug:
print texte
except ValueError, err:
"""preparation du sous bloc EPORT"""
texte=""
sdict = obj.valeur['EPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source
- nomPort = obj.get_sdname()
+ nomPort = obj.getSdname()
self.dictPort[nomPort] = {}
self.dictPort[nomPort]['EPORT']=str(sdict['TYPE'])
print "sdict=%s" %(sdict)
if self.problem == HARMONIC:
texte+=" AMP POLAR %(ampli)s %(phase)s\n" \
% {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
- self.dictSourceEport[obj.get_sdname()]=texte
+ self.dictSourceEport[obj.getSdname()]=texte
if self.debug:
print texte
except ValueError, err:
# constitution du bloc VERSION du fichier PHYS
# creation d une entite VERSION ; elle sera du type PROC car decrit ainsi
# dans le du catalogue
- version=obj.addentite('VERSION',pos=None)
+ version=obj.addEntite('VERSION',pos=None)
self.generPROC_ETAPE(obj.etapes[0])
self.texteCarmel3D+="["+obj.etapes[0].nom+"\n"
for cle in obj.etapes[0].valeur :
self.texteCarmel3D+=" "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n"
self.texteCarmel3D+="]\n"
# destruction de l entite creee
- obj.suppentite(version)
+ obj.suppEntite(version)
#print 'ERREUR : test erreur boite graphique BLOC_VERSION'
#raise ValueError, 'test erreur boite graphique BLOC_VERSION'
texte+="\n1"
texte+="\n%s" % ' '.join(map(str, self.direction))
texte+="\n%g" % (self.section)
- self.dictStrand[obj.get_sdname()]=texte
+ self.dictStrand[obj.getSdname()]=texte
if self.debug:
print texte
texte+="\n%s" % ' '.join(map(str,self.direction))
texte+="\n%s" % ' '.join(map(str, self.centre))
texte+="\n%g" % (self.section)
- self.dictStrand[obj.get_sdname()]=texte
+ self.dictStrand[obj.getSdname()]=texte
if self.debug:
print texte
# Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D
# si le jdc est valide (sinon cela n a pas de sens)
- if obj.isvalid() :
+ if obj.isValid() :
try :
# constitution du bloc VERSION du fichier PHYS (existe toujours)
self.generBLOC_VERSION(obj)
on sauvegarde aussi les noms des groupes de maillage
"""
try:
- nomGroupe = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept
+ nomGroupe = obj.getSdname() # nom du groupe de maillage, i.e. nom du concept
print "liste des noms sans prefixes %s" %(nomGroupe)
# test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement.
texte=""
texte+="%s"%(obj.valeur['Domaine'])
print"le texte=%s" %(texte)
- self.dictDomaine[obj.get_sdname()]=texte
+ self.dictDomaine[obj.getSdname()]=texte
print "liste des domaines =%s" %(self.dictGroupes[nomGroupe]['DOMAINE'])
if 'Potentiel_Flottant' in obj.valeur.keys():
self.dictGroupes[nomGroupe]['Potentiel_Flottant'] = True
on sauvegarde aussi les noms des macros groupes
"""
try:
- nomMacroGroupe = obj.get_sdname() # nom du macro groupe
+ nomMacroGroupe = obj.getSdname() # nom du macro groupe
print "liste des noms sans prefixes %s" %(nomMacroGroupe)
self.dictMacroGroupes[nomMacroGroupe] = obj.valeur # sauvegarde des propriétés du macro-groupe
if self.debug:
print "generation material obj.valeur = %s" % obj.valeur
try :
- nomMaterial = obj.get_sdname()
+ nomMaterial = obj.getSdname()
self.dictMaterial[nomMaterial]=obj.valeur
print"self.dictMaterial=%s" %(self.dictMaterial)
except ValueError, err:
print "generation source obj valeur = %s" % obj.valeur
texte=""
try :
- nomSource = obj.get_sdname()
+ nomSource = obj.getSdname()
self.dictSource[nomSource]=obj.valeur # dictionnaire
self.dictSource[nomSource]['milieux'] = [] # liste ordonnée des groupes associés à cette source
print"mon dico des sources=%s" %(self.dictSource)
# constitution du bloc VERSION du fichier PHYS
# creation d une entite VERSION ; elle sera du type PROC car decrit ainsi
# dans le du catalogue
- version=obj.addentite('VERSION',pos=None)
+ version=obj.addEntite('VERSION',pos=None)
self.generPROC_ETAPE(obj.etapes[0])
self.texteCarmel3D+="["+obj.etapes[0].nom+"\n"
for cle in obj.etapes[0].valeur :
self.texteCarmel3D+=" "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n"
self.texteCarmel3D+="]\n"
# destruction de l entite creee
- obj.suppentite(version)
+ obj.suppEntite(version)
#print 'ERREUR : test erreur boite graphique BLOC_VERSION'
#raise ValueError, 'test erreur boite graphique BLOC_VERSION'
print "generation du mouvement obj.valeur = %s" % obj.valeur
try:
- nom = obj.get_sdname()
+ nom = obj.getSdname()
self.nombreMouvements = self.nombreMouvements+1
self.dictMouvement[nom] = {'ordre': self.nombreMouvements, 'valeurs': obj.valeur}
self.dictMouvement['ordre'].append(nom)
if self.debug:
print "generation strand obj valeur = %s" % obj.valeur
try :
- nomStrand = obj.get_sdname()
+ nomStrand = obj.getSdname()
self.dictStrand[nomStrand]=obj.valeur
print"mon dico des stranded inductor geometry=%s" %(self.dictStrand)
"""
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None,appli=None,statut="Entier"):
-
- self.statut=statut
- self.langue=appli.langue
- self.DicoEnumCasEnInverse={}
- from enum_Telemac2d_auto import TelemacdicoEn
- for motClef in TelemacdicoEn:
+ def gener(self,obj,format='brut',config=None,appli=None,statut="Leger"):
+
+ self.statut = statut
+ self.langue = appli.langue
+ try : self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+ except :
+ print ('Attention : pas de TelemacdicoEn declare')
+ self.TelemacdicoEn = {}
+ self.DicoEnumCasEnInverse = {}
+ #from enum_Telemac2d_auto import self.TelemacdicoEn
+ for motClef in self.TelemacdicoEn:
d={}
- for valTelemac in TelemacdicoEn[motClef]:
- valEficas= TelemacdicoEn[motClef][valTelemac]
- d[valEficas]=valTelemac
+ for valTelemac in self.TelemacdicoEn[motClef]:
+ valEficas = self.TelemacdicoEn[motClef][valTelemac]
+ d[valEficas] =valTelemac
self.DicoEnumCasEnInverse[motClef]=d
if self.langue == 'fr' :
- from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
- for motClef in DicoEnumCasFrToEnumCasEn:
+ #from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
+ self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+ for motClef in self.DicoEnumCasFrToEnumCasEn:
d={}
- for valTelemac in DicoEnumCasFrToEnumCasEn[motClef]:
- valEficas= DicoEnumCasFrToEnumCasEn[motClef][valTelemac]
- d[valEficas]=valTelemac
+ for valTelemac in self.DicoEnumCasFrToEnumCasEn[motClef]:
+ valEficas = self.DicoEnumCasFrToEnumCasEn[motClef][valTelemac]
+ d[valEficas] = valTelemac
self.DicoEnumCasEnInverse[motClef]=d
self.initDico()
- #print (self.DicoEnumCasEnInverse.keys())
# Pour Simplifier les verifs d ecriture
if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac
else : self.listeTelemac = ()
self.dicoCataToCas={}
- self.dicoCasToCata=appli.readercata.dicoCasToCata
+ try :
+ self.dicoCasToCata=appli.readercata.dicoCasToCata
+ except :
+ print ('Attention pas de dicoCasToCata declare')
+ self.dicoCasToCata={}
+ self.dicoCataToCas={}
for motClef in self.dicoCasToCata:
self.dicoCataToCas[self.dicoCasToCata[motClef]]=motClef
def writeDefault(self,fn) :
self.texteDico+='&ETA\n'
- if self.statut == 'Leger' : extension = ".Lcas"
- else : extension = ".cas"
+ if self.statut == 'Leger' : extension = ".cas"
+ else : extension = "_complet.cas"
fileDico = fn[:fn.rfind(".")] + extension
f = open( str(fileDico), 'w')
f.write( self.texteDico )
# ecriture de Leger
#----------------------------------------------------------------------------------------
- def writeLeger(self,fn,jdc,config,appli) :
- jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Leger")
+ def writeComplet(self,fn,jdc,config,appli) :
+ jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Entier")
self.writeDefault(fn)
if hasattr(obj.definition,'defaut') and (obj.definition.defaut == obj.valeur) and (obj.nom not in self.listeTelemac) : return s
if hasattr(obj.definition,'defaut') and obj.definition.defaut != None and (type(obj.valeur) == tuple or type(obj.valeur) == list) and (tuple(obj.definition.defaut) == tuple(obj.valeur)) and (obj.nom not in self.listeTelemac) : return s
+
#nomMajuscule=obj.nom.upper()
#nom=nomMajuscule.replace('_',' ')
#if obj.nom in ('PRESCRIBED_FLOWRATES','PRESCRIBED_VELOCITIES','PRESCRIBED_ELEVATIONS') :
# return s
+ # cas des Tuples
+ if obj.waitTuple() and s3 != '' and s3 != 'None':
+ s3=s
+ if s3[-1] == ',': s3=s3[:-1]
+
+
if obj.nom not in self.dicoCataToCas :
if obj.nom == 'Consigne' : return ""
return s
return s
-# def LIQUID_BOUNDARIES(self,obj):
-# print ('jkljklj')
-# if 'BOUNDARY_TYPE' in obj.liste_mc_presents() :
-# objForme=obj.get_child('BOUNDARY_TYPE')
-# valForme=objForme.valeur
-# if valForme == None : return
-
-
-# if valForme == 'Prescribed Unknown':
-# nomBloc='b_'+valForme.split(" ")[1]
-# if nomBloc in obj.liste_mc_presents() :
-# objBloc=obj.get_child(nomBloc)
-# valeurPE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[0]).valeur
-# valeurFE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[1]).valeur
-# valeurVE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[2]).valeur
-# if valeurPE== None : valeurPE="0."
-# if valeurFE== None : valeurPE="0."
-# if valeurVE== None : valeurPE="0."
-# self.PE=True
-# self.textPE += str(valeurPE) +"; "
-# self.FE=True
-# self.textFE += str(valeurFE) +"; "
-# self.VE=True
-# self.textVE += str(valeurVE) +"; "
-# else:
-# nomBloc='b_'+valForme.split(" ")[1]
-# if nomBloc in obj.liste_mc_presents() :
-# objBloc=obj.get_child(nomBloc)
-# objValeur=objBloc.get_child(objBloc.liste_mc_presents()[0])
-# valeur=objValeur.valeur
-# if valeur== None : valeur="0."
-# if valForme == 'Prescribed Elevations' :
-# self.PE=True
-# self.textPE += str(valeur) +"; "
-# else : self.textPE += "0.; "
-# if valForme == 'Prescribed Flowrates' :
-# self.FE=True
-# self.textFE += str(valeur) +"; "
-# else : self.textFE += "0.; "
-# if valForme == 'Prescribed Velocity' :
-# self.VE=True
-# self.textVE += str(valeur) +"; "
-# else : self.textVE += "0.; "
-
-# def BOUNDARY_CONDITIONS(self,obj):
-# # sans '; '
-# if self.FE : self.texteDico += self.textFE[0:-2]+'\n'
-# if self.PE : self.texteDico += self.textPE[0:-2]+'\n'
-# if self.VE : self.texteDico += self.textVE[0:-2]+'\n'
-
def TRACERS(self,obj):
if self.nbTracers != 0 : self.texteDico += 'NUMBER_OF_TRACERS : '+str(self.nbTracers) + '\n'
def NAME_OF_TRACER(self,obj):
print((dir(obj) ))
- print((obj.get_genealogie_precise()))
+ print((obj.getGenealogiePrecise()))
def Validation(self,obj):
self.texteDico += "VALIDATION : True \n"
def Date_De_L_Origine_Des_Temps (self,obj):
- an=obj.get_child('Year').valeur
- mois=obj.get_child('Month').valeur
- jour=obj.get_child('Day').valeur
+ an=obj.getChild('Year').valeur
+ mois=obj.getChild('Month').valeur
+ jour=obj.getChild('Day').valeur
self.texteDico += "ORIGINAL DATE OF TIME :"+ str(an)+ " ,"+str(mois)+ "," +str(jour)+ "\n"
def Original_Hour_Of_Time (self,obj):
- hh=obj.get_child('Hour').valeur
- mm=obj.get_child('Minute').valeur
- ss=obj.get_child('Second').valeur
+ hh=obj.getChild('Hour').valeur
+ mm=obj.getChild('Minute').valeur
+ ss=obj.getChild('Second').valeur
self.texteDico += "ORIGINAL HOUR OF TIME :"+str(hh)+" ,"+str(mm)+ ","+str(ss)+"\n"
def Type_Of_Advection(self,obj):
self.texteDico += "UPWIND COEFFICIENTS = "+ str(listeUpwind) + "\n"
def chercheChildren(self,obj):
- for c in obj.liste_mc_presents():
- objc=obj.get_child(c)
- if hasattr(objc,'liste_mc_presents') and objc.liste_mc_presents() != [] : self.chercheChildren(objc)
+ for c in obj.listeMcPresents():
+ objc=obj.getChild(c)
+ if hasattr(objc,'listeMcPresents') and objc.listeMcPresents() != [] : self.chercheChildren(objc)
else : self.listeMCAdvection.append(objc)
lval=valeur.split(";")
ligne=" "
for v in lval :
- if len(ligne) < 70 : ligne += str(v)+'; '
+ if len(ligne+ str(v)+'; ') < 70 : ligne += str(v)+'; '
else :
text+= ligne+"\n"
ligne=" "+str(v)+'; '
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS.
+"""
+
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+ from builtins import str
+except : pass
+
+import traceback
+import types,re,os
+from Extensions.i18n import tr
+from .generator_python import PythonGenerator
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'xml',
+ # La factory pour creer une instance du plugin
+ 'factory' : XMLGenerator,
+ }
+
+
+class XMLGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+
+ """
+ # Les extensions de fichier permis?
+ extensions=('.comm',)
+
+#----------------------------------------------------------------------------------------
+ def gener(self,obj,format='brut',config=None,appli=None):
+
+ try :
+ print (obj)
+ self.texteXML=obj.toXml()
+ except :
+ self.texteXML='erreur generation'
+ pass
+
+ # Cette instruction genere le contenu du fichier de commandes (persistance)
+ self.text=PythonGenerator.gener(self,obj,format)
+ return self.text
+
+
+#----------------------------------------------------------------------------------------
+# initialisations
+#----------------------------------------------------------------------------------------
+
+# ecriture
+#----------------------------------------------------------------------------------------
+
+ def writeDefault(self,fn) :
+ #fileDico = fn[:fn.rfind(".")] + '.py'
+ fileDico='/tmp/toto.xml'
+ print (self.texteXML)
+ f = open( str(fileDico), 'w')
+ f.write('Dico = '+str(self.texteXML))
+ f.close()
+
+
en une chaine de caracteres a la syntaxe aplat
"""
text=''
- for v in obj.mc_liste:
+ for v in obj.mcListe:
text=text + self.generator(v)
if text=='':
return self.init+'\n'
Convertit un objet derive d'ASSD en une chaine de caracteres a la
syntaxe aplat
"""
- return obj.get_name()
+ return obj.getName()
def generMCList(self,obj):
"""
text = ''
old_init=self.init
self.init = self.init + self.sep + obj.nom
- for mocle in obj.mc_liste :
+ for mocle in obj.mcListe :
text = text + self.generator(mocle)
self.init=old_init
return text
def writeDefault(self,fn) :
fileDico = fn[:fn.rfind(".")] + '.py'
- f = open( str(fileDico), 'wb')
- f.write( self.texteDico )
- print((self.texteDico))
+ f = open( str(fileDico), 'w')
+ f.write('Dico = '+str(self.Dico))
f.close()
#----------------------------------------------------------------------------------------
def generMCSIMP(self,obj) :
"""recuperation de l objet MCSIMP"""
s=PythonGenerator.generMCSIMP(self,obj)
+ print ('jjjjjjjjjj')
+ print (obj.nom)
+ print (s)
courant=self.Dico
- for p in obj.get_genealogie_precise()[0:-1]:
+ for p in obj.getGenealogiePrecise()[0:-1]:
if not (p in courant.keys()) : courant[p]={}
courant=courant[p]
courant[obj.nom]=obj.val
self.texteDico+=obj.nom+ "=" + s[0:-1]+ "\n"
return s
-
# Cette instruction genere le contenu du fichier de commandes (persistance)
self.text=PythonGenerator.gener(self,obj,format)
#print (self.text)
+ print (self.Dico)
return self.text
s=PythonGenerator.generMCSIMP(self,obj)
if obj.isInformation() : return s
- if not obj.isvalid() : return s
+ if not obj.isValid() : return s
- liste=obj.get_genealogie_precise()
+ liste=obj.getGenealogiePrecise()
if obj.etape.nom=='MODIFICATION_CATALOGUE' : return s
nom = obj.etape.nom
def gener(self,obj,format='brut',config=None,appli=None):
self.initDico()
self.text=PythonGenerator.gener(self,obj,format)
- if obj.isvalid() :self.genereExeMap()
+ if obj.isValid() :self.genereExeMap()
return self.text
Remplit le dictionnaire des MCSIMP
"""
- if obj.get_genealogie()[0][-6:-1]=="_PARA":
+ if obj.getGenealogie()[0][-6:-1]=="_PARA":
self.dictParam[obj.nom]=obj.valeur
else :
self.dictValeur[obj.nom]=obj.valeur
def generRUN(self,obj,schema):
- if not(obj.isvalid()) :
+ if not(obj.isValid()) :
print ("TODO TODO TODO")
self.texteEXE=""
self.schema=schema
if obj == None :
print ('appel a gener avec None')
return
- self.appli=obj.get_jdc_root().appli
+ self.appli=obj.getJdcRoot().appli
#self.appli=obj.appli
liste= self.generator(obj)
#format='standard'
#import cProfile, pstats, StringIO
#pr = cProfile.Profile()
#pr.enable()
- self.text=jdc_formate.formate_jdc()
+ self.text=jdc_formate.formateJdc()
#pr.disable()
#s = StringIO.StringIO()
#sortby = 'cumulative'
#ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
#ps.print_stats()
- #print (s.getvalue())
+ #print (s.getValue())
elif format == 'Ligne':
jdc_formate = FormatageLigne(liste,mode='.py')
- self.text=jdc_formate.formate_jdc()
+ self.text=jdc_formate.formateJdc()
else:
raise EficasException(tr("Format non implemente ") +format)
return self.text
"""
l=[]
l.append('(')
- for v in obj.mc_liste:
+ for v in obj.mcListe:
text = re.sub(".*=","",self.generator(v))
l.append(text)
l.append('),')
if obj.reuse != None :
str = 'reuse ='+ self.generator(obj.reuse) + ','
l.append(str)
- for v in obj.mc_liste:
+ for v in obj.mcListe:
if isinstance(v,Accas.MCBLOC) :
liste=self.generator(v)
for mocle in liste :
Methode particuliere pour les objets de type FORMULE
"""
l=[]
- nom = obj.get_nom()
+ nom = obj.getNom()
if nom == '' : nom = 'sansnom'
l.append(nom + ' = FORMULE(')
- for v in obj.mc_liste:
+ for v in obj.mcListe:
text=self.generator(v)
l.append(v.nom+'='+text)
l.append(');')
# XXX faut il la virgule ou pas ????
str = "reuse =" + self.generator(obj.reuse) + ','
l.append(str)
- for v in obj.mc_liste:
+ for v in obj.mcListe:
if isinstance(v,Accas.MCBLOC) :
liste=self.generator(v)
for mocle in liste :
l=[]
label=obj.definition.nom+'('
l.append(label)
- for v in obj.mc_liste:
+ for v in obj.mcListe:
if isinstance(v,Accas.MCBLOC) :
liste=self.generator(v)
for mocle in liste :
Convertit un objet derive d'ASSD en une chaine de caracteres a la
syntaxe python
"""
- return obj.get_name()
+ return obj.getName()
def generMCFACT(self,obj):
"""
"""
l=[]
l.append('_F(')
- for v in obj.mc_liste:
+ for v in obj.mcListe:
if not isinstance(v,Accas.MCSIMP) and not isinstance (v,Accas.MCBLOC) :
# on est en presence d'une entite composee : on recupere une liste
liste=self.generator(v)
syntaxe python
"""
l=[]
- for v in obj.mc_liste:
+ for v in obj.mcListe:
if isinstance(v,Accas.MCBLOC) :
liste=self.generator(v)
for mocle in liste :
return l
- def format_item(self,valeur,etape,obj,vientDeListe=0):
+ def formatItem(self,valeur,etape,obj,vientDeListe=0):
if (type(valeur) == float or 'R' in obj.definition.type) and not(isinstance(valeur,Accas.PARAMETRE)) :
# Pour un flottant on utilise str ou repr si on vient d une liste
# ou la notation scientifique
s = str(valeur)
if vientDeListe and repr(valeur) != str(valeur) : s=repr(valeur)
if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.0'
- clefobj=etape.get_sdname()
+ clefobj=etape.getSdname()
if self.appli.appliEficas and clefobj in self.appli.appliEficas.dict_reels:
if valeur in self.appli.appliEficas.dict_reels[clefobj]:
s=self.appli.appliEficas.dict_reels[clefobj][valeur]
if waitTuple :
#s = str(obj.valeur) +','
#obj.valeurFormatee=obj.valeur
- s = obj.GetText() +','
- obj.valeurFormatee=obj.GetText()
+ s = obj.getText() +','
+ obj.valeurFormatee=obj.getText()
else :
obj.valeurFormatee=[]
for val in obj.valeur :
- s =s +self.format_item(val,obj.etape,obj,1) + ','
- if obj.wait_TXM() :
+ s =s +self.formatItem(val,obj.etape,obj,1) + ','
+ if obj.waitTxm() :
obj.valeurFormatee.append(val)
else :
- obj.valeurFormatee.append(self.format_item(val,obj.etape,obj))
+ obj.valeurFormatee.append(self.formatItem(val,obj.etape,obj))
if len(obj.valeur) >= 1:
s = '(' + s + '),'
if obj.valeur==[] or obj.valeur==() : s="(),"
s=self.formatColonnes(obj.nbrColonnes(),obj.valeur,obj)
else :
obj.valeurFormatee=obj.valeur
- s=self.format_item(obj.valeur,obj.etape,obj) + ','
+ s=self.formatItem(obj.valeur,obj.etape,obj) + ','
return s
try :
#if 1 :
for l in range(nbrColonnes) :
- texteVariable=self.format_item(listeValeurs[indice],obj.etape,obj)
+ texteVariable=self.formatItem(listeValeurs[indice],obj.etape,obj)
textformat=textformat+texteVariable+" ,"
indice=indice+1
textformat=textformat+"\n"
except :
#else :
while ( indice < len(listeValeurs) ) :
- texteVariable=self.format_item(listeValeurs[indice],obj.etape,obj)
+ texteVariable=self.formatItem(listeValeurs[indice],obj.etape,obj)
textformat=textformat+texteVariable+", "
indice=indice+1
textformat=textformat+"\n"
self.dict_traduit={"VARI_SECT":"extrusion","EXCENTREMENT":"Excentre","EPAIS":"Epais","VECTEUR":"Vecteur"}
- self.init_ligne()
+ self.initLigne ()
- def init_jdc(self,jdc) :
+ def initJdc(self,jdc) :
self.jdc=jdc
- def init_ligne (self) :
+ def initLigne (self) :
self.boolGpMa = 0
self.commande = ""
self.dict_attributs = {}
return self.list_commandes
def generator(self,obj):
- if (obj.nom in self.liste_motetat) and (self.calcule_ouinon(obj)):
+ if (obj.nom in self.liste_motetat) and (self.calculeOuiNon(obj)):
PythonGenerator.generator(self,obj)
"""
f1=PythonGenerator.generator(self,obj)
return ""
"""
- def calcule_ouinon(self,obj):
+ def calculeOuiNon(self,obj):
ouinon=1
- for l in obj.get_genealogie() :
+ for l in obj.getGenealogie() :
if not l in self.liste_motetat :
ouinon=0
break
def generETAPE(self,obj):
"""
"""
- if obj.isvalid() == 0 :
+ if obj.isValid() == 0 :
#showerror("Element non valide","Salome ne sait pas traiter les elements non valides")
return
- for v in obj.mc_liste:
+ for v in obj.mcListe:
liste=self.generator(v)
def generMACRO_ETAPE(self,obj):
"""
"""
- if obj.isvalid() == 0 :
+ if obj.isValid() == 0 :
#showerror("Element non valide","Salome ne sait pas traiter les elements non valides")
return
- for v in obj.mc_liste:
+ for v in obj.mcListe:
liste=self.generator(v)
suite = self.__class__.__dict__[obj.nom](self,obj)
else :
clef=self.dict_traduit[obj.nom]
- # Traitement des parametres
+ # traitement des parametres
try :
self.dict_attributs[clef]=obj.val.eval()
except :
Convertit un objet MCFACT en une liste de chaines de caracteres a la
syntaxe python
"""
- self.init_ligne()
+ self.initLigne ()
self.commande=self.dict_deb_com[obj.nom]
- for v in obj.mc_liste:
+ for v in obj.mcListe:
self.generator(v)
if self.boolGpMa == 1:
self.list_commandes.append((self.commande,self.dict_attributs))
def generMCBLOC(self,obj):
"""
"""
- for v in obj.mc_liste:
+ for v in obj.mcListe:
self.generator(v)
def GROUP_MA(self,obj):