class ObjectTreeItem(TreeItem,Delegate):
- def __init__(self, appli, labeltext, object, setFunction=None):
+ def __init__(self, appliEficas, labeltext, object, setFunction=None):
self.labeltext = labeltext
- self.appli = appli
+ self.appliEficas = appliEficas
# L'objet delegue est stocke dans l'attribut object
# L'objet associe a l'item est stocke dans l'attribut _object
# Il peut etre obtenu par appel a la methode getObject
Cree un item copie de self
"""
object = self._object.copy()
- appli = copy(self.appli)
+ appliEficas = copy(self.appliEficas)
labeltext = copy(self.labeltext)
fonction = deepcopy(self.setFunction)
- item = makeObjecttreeitem(appli,labeltext,object,fonction)
+ item = makeObjecttreeitem(appliEficas,labeltext,object,fonction)
return item
def isActif(self):
except AttributeError:
continue
item = makeObjecttreeitem(
- self.appli,
+ self.appliEficas,
str(key) + " =",
value,
lambda value, key=key, object=self.object:
(ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
# return self.object.definition.fichier_ini
- def makeObjecttreeitem(self,appli,labeltext, object, setFunction=None):
+ def makeObjecttreeitem(self,appliEficas,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 makeObjecttreeitem(appli,labeltext,object,setFunction)
+ return makeObjecttreeitem(appliEficas,labeltext,object,setFunction)
#def __del__(self):
# print "__del__",self
def addItem(self,obj,pos):
self._object.insert(pos,obj)
- item = self.makeObjecttreeitem(self.appli, obj.nom + ":", obj)
+ item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj)
return item
def suppItem(self,item):
self._object.remove(item.getObject())
# la liste peut etre retournee vide !
message = "Mot-clef " + item.getObject().nom + " supprime"
- self.appli.afficheInfos(message)
+ self.appliEficas.afficheInfos(message)
return 1
except:
return 0
# nouvel objet : on cree un nouvel item
def setFunction(value, object=obj):
object=value
- it = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+ it = self.makeObjecttreeitem(self.appliEficas, 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)
class TroisDPilote(object):
- def __init__(self,node,appli):
+ def __init__(self,node,appliEficas):
self.node=node
- self.appli=appli
+ self.appliEficas=appliEficas
def envoievisu(self):
"""
return ""
from Extensions.param2 import originalMath
originalMath.toOriginal()
- self.appli.envoievisu(texte)
+ self.appliEficas.envoievisu(texte)
originalMath.toSurcharge()
+++ /dev/null
-#!/usr/bin/env python
-# -*- 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 object
-except :
- pass
-import sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-
-import xml.etree.ElementTree as ET
-from xml.dom import minidom
-
-from PyQt4.QtGui import *
-
-def prettify(elem):
- """Return a pretty-printed XML string for the Element.
- """
- rough_string = ET.tostring(elem, 'iso-8859-1')
- reparsed = minidom.parseString(rough_string)
- return reparsed.toprettyxml(indent=" ")
-
-
-class CatalogueXML(object):
- def __init__(self,cata,cataName):
- self.fichier="/tmp/XML/"+cataName+".xml"
- self.cata=cata
- self.first=ET.Element('cata')
- comment=ET.Comment("catalogue "+str(cataName))
- self.first.append(comment)
- self.reglesUtilisees=[]
- self.validatorsUtilises=[]
- self.constrListTxtCmd()
- self.ecrire_fichier()
-
-
- def ecrire_fichier(self):
- try :
- import codecs
- f = codecs.open(self.fichier, "w", "ISO-8859-1")
- #print prettify(self.first)
- f.write(prettify(self.first))
- f.close()
- except :
- print(("Impossible d'ecrire le fichier : "+ str(self.fichier)))
-
- def constrListTxtCmd(self):
- mesCommandes=self.cata.JdC.commandes
- self.commandes=ET.SubElement(self.first,'commandes')
- for maCommande in mesCommandes:
- maCommande.enregistreXMLStructure(self.commandes,self)
-
-
-if __name__ == "__main__" :
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- code="Aster"
- version=None
-
- from Editeur import session
- options=session.parse(sys.argv)
- if options.code!= None : code=options.code
- if options.cata!= None : monCata=options.cata
- if options.ssCode!= None : ssCode=options.ssCode
-
- sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
- from InterfaceQT4.ssIhm import QWParentSSIhm, appliEficasSSIhm
- Eficas=appliEficasSSIhm(code=code)
- parent=QWParentSSIhm(code,Eficas,version)
-
- import readercata
- monreadercata = readercata.READERCATA( parent, parent )
- Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
-
- monCataXML=CatalogueXML(monCata,code)
-
-
-
-
+++ /dev/null
-#!/usr/bin/env python
-# -*- 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
-#
-
-import sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-import Accas
-
-
-class ChercheInto:
- def __init__(self,cata,cataName):
- self.cata=cata
- self.dictInto={}
- mesCommandes=self.cata.JdC.commandes
- for maCommande in mesCommandes:
- self.construitListeInto(maCommande)
-
-
- def construitListeInto(self,e):
- if isinstance(e,Accas.A_BLOC.BLOC) :
- print (e.condition)
- for nomFils, fils in e.entites.items():
- self.construitListeInto(fils)
-
-
-if __name__ == "__main__" :
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- code="Aster"
- version=None
-
- from Editeur import session
- options=session.parse(sys.argv)
- if options.code!= None : code=options.code
- if options.cata!= None : monCata=options.cata
- if options.ssCode!= None : ssCode=options.ssCode
-
- sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
- from InterfaceQT4.ssIhm import QWParentSSIhm, appliEficasSSIhm
- Eficas=appliEficasSSIhm(code=code)
- parent=QWParentSSIhm(code,Eficas,version)
-
- import readercata
- monreadercata = readercata.READERCATA( parent, parent )
- Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
-
- monConstruitInto=ChercheInto(monCata,code)
-
-
-
-
+++ /dev/null
-#!/usr/bin/env python
-# -*- 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
-#
-
-import sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-import Accas
-
-
-class ChercheInto:
- def __init__(self,cata,cataName):
- self.cata=cata
- self.dictInto={}
- mesCommandes=self.cata.JdC.commandes
- for maCommande in mesCommandes:
- print (maCommande.nom)
- print (maCommande.entites )
- print (len(maCommande.entites) )
-
-
-# def construitListeInto(self,e):
-# if isinstance(e,Accas.A_BLOC.BLOC) :
-# print (e.condition.
-# for nomFils, fils in e.entites.items():
-# self.construitListeInto(fils)
-
-
-if __name__ == "__main__" :
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
- #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
- code="MAP"
- version=None
-
- from Editeur import session
- options=session.parse(sys.argv)
- if options.code!= None : code=options.code
- if options.cata!= None : monCata=options.cata
- if options.ssCode!= None : ssCode=options.ssCode
-
- sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
- from InterfaceQT4.ssIhm import QWParentSSIhm, appliEficasSSIhm
- Eficas=appliEficasSSIhm(code=code)
- parent=QWParentSSIhm(code,Eficas,version)
-
- import readercata
- monreadercata = readercata.READERCATA( parent, parent )
- Eficas.readercata=monreadercata
- monCata=monreadercata.cata[0]
-
- monConstruitInto=ChercheInto(monCata,code)
-
-
-
-
le dictionnaire composants.
- gettreeitem(object) -> type d'item : fonction qui retourne un type
d'item correspondant au type de l'objet noyau fourni.
- - makeObjecttreeitem(appli,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
+ - makeObjecttreeitem(appliEficas,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
correspondant a l'objet noyau fourni.
"""
# import generaux
itemtype=composants[None]
return itemtype
-def makeObjecttreeitem(appli,labeltext, object, setFunction=None):
+def makeObjecttreeitem(appliEficas,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)
- return c(appli,labeltext, object, setFunction)
+ return c(appliEficas,labeltext, object, setFunction)
#printDEnv()
return options
-def getUnit(d_study,appli):
+def getUnit(d_study,appliEficas):
"""
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 getSource)
+ appliEficas : objet application EFICAS (permet d'acceder aux services comme getSource)
"""
- return getDunit(d_study,appli)
+ return getDunit(d_study,appliEficas)
-def getDunit(d_unit,appli):
+def getDunit(d_unit,appliEficas):
d={}
if 'pours' in d_unit:
# on a une poursuite
comm=d_unit["pours"]["comm"]
- g=getDunit(d_unit["pours"],appli)
- text=appli.getSource(comm)
+ g=getDunit(d_unit["pours"],appliEficas)
+ text=appliEficas.getSource(comm)
d[None]=comm,text,g
for k,v in list(d_unit.items()):
if k in (u"pours","comm"): continue
- text=appli.getSource(v)
+ text=appliEficas.getSource(v)
d[k]=v,text,d
return d
+++ /dev/null
-echo "Aster"
-./cata2Xml.py -k Aster
-
-echo "Adao"
-read a
-./cata2Xml.py -k Adao
-
-echo "Carmel3D"
-read a
-./cata2Xml.py -k Carmel3D
-
-echo "CarmelCND"
-read a
-./cata2Xml.py -k CarmelCND
-
-echo "Openturns_Wrapper"
-read a
-./cata2Xml.py -k Openturns_Wrapper
-
-echo "Openturns_Study"
-read a
-./cata2Xml.py -k Openturns_Study
-
-echo "MAP"
-read a
-./cata2Xml.py -k MAP
-
-echo "MT"
-read a
-./cata2Xml.py -k MT
-
-echo "SPECA"
-read a
-./cata2Xml.py -k SPECA
-
+++ /dev/null
-echo "Aster"
-./chercheBlocInto.py -k Aster
-
-echo "Adao"
-read a
-./chercheBlocInto.py -k Adao
-
-echo "Carmel3D"
-read a
-./chercheBlocInto.py -k Carmel3D
-
-echo "CarmelCND"
-read a
-./chercheBlocInto.py -k CarmelCND
-
-echo "Openturns_Wrapper"
-read a
-./chercheBlocInto.py -k Openturns_Wrapper
-
-echo "Openturns_Study"
-read a
-./chercheBlocInto.py -k Openturns_Study
-
-echo "MAP"
-read a
-./chercheBlocInto.py -k MAP
-
-echo "MT"
-read a
-./chercheBlocInto.py -k MT
-
-echo "SPECA"
-read a
-./chercheBlocInto.py -k SPECA
-
class X_OBJECT:
# -------------
- def delObjPyxb(self):
+ def delObjPyxb(self, debug = False):
if not self.cata.modeleMetier : return
if self.nom == 'Consigne' : return None
- #print ('----------- delObjPyxb', self.nom)
trouve = False
listeArg=[]
- #print self.perePyxb.nom
- #print self.perePyxb.objPyxb.orderedContent()
- #print (dir(self.perePyxb.objPyxb))
- for i in self.perePyxb.objPyxb.orderedContent():
- if id(self.objPyxb) == id(i._Content__value) : trouve = True ;continue
- #print ('j ajoute', i._Content__value)
- listeArg.append(i._Content__value)
- if not trouve : print ('objet pas trouve')
- grandPere=self.perePyxb.perePyxb
- ancienObjPerePyxb=self.perePyxb.objPyxb
-
- #print (listeArg)
- nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
- #print (nvlObjPerePyxb)
- #print (nvlObjPerePyxb.orderedContent())
- self.perePyxb.objPyxb=nvlObjPerePyxb
- self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
-
- #print (self.nom, ' a pour gp ', grandPere)
- if grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
- #print ('----------- fin delObjPyxb', self.nom)
+ if debug : print self.perePyxb.objPyxb.orderedContent()
+ if debug : print (map(lambda o:o.value, self.perePyxb.objPyxb.orderedContent()))
- def addObjPyxbV0(self,indiceDansLeContenu):
- if not self.cata.modeleMetier : return
- #print ('**********************************************')
- #print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDansLeContenu)
- # adherence Accas sur le parent
- parent=self.parent
- while (parent.isBLOC()): parent=parent.parent
- self.perePyxb=parent
- grandPere=self.perePyxb.perePyxb
- ancienObjPerePyxb=self.perePyxb.objPyxb
- #print ('dans le perePyxb', self.perePyxb.nom)
- #print ('j ai pour orderedContent', self.objPyxb.orderedContent())
- self.objPyxb.objAccas=self
+ elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=self.perePyxb.objPyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
+ if debug : print ('element moi = ', elt, 'id de moi = ', id(self.objPyxb))
+ if (elt.elementDeclaration.isPlural()):
+ if debug : print ('je suis Plural')
+ monIndexInOrderedContent=0
+ for c in self.perePyxb.objPyxb.orderedContent():
+ if isinstance(c._Content__value,list) and isinstance(c._Content__value[0], type(self.objPyxb)): monIndexInOrderedContent += 1
+
+ listeObjetsAccas=self.parent.getChild(self.nom,restreint='oui')
+ if len(listeObjetsAccas) == 1 : monIndex=0
+ else : monIndex=listeObjetsAccas.index(self)
+
+ listeObjetsPyxb=getattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key)
+ listeObjetsPyxb.pop(monIndex)
+ monIndexInOrderedContent += monIndex
+ self.perePyxb.objPyxb.orderedContent().pop(monIndexInOrderedContent)
+ else :
+ newOrderedContent = []
+ for i in self.perePyxb.objPyxb.orderedContent():
+ if id(self.objPyxb) == id(i._Content__value) : trouve = True ;continue
+ newOrderedContent.append(i)
+ if not trouve : print ('elt a supprimer ', self.nom, 'non trouve')
+ for i in xrange(len(newOrderedContent)):
+ self.perePyxb.objPyxb.orderedContent()[i]=newOrderedContent[i]
+ self.perePyxb.objPyxb.orderedContent().pop(len(newOrderedContent))
+
+ setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,None)
+ if debug : print (map(lambda o:o.value, self.perePyxb.objPyxb.orderedContent()))
+
- listeArg=[]
- indice=0
- # a tester
- # a affiner si on ajoute en fin
- #print (indiceDansLeContenu)
- #print (self.perePyxb.objPyxb.orderedContent())
- for i in self.perePyxb.objPyxb.orderedContent():
- if indice==indiceDansLeContenu : listeArg.append(self.objPyxb)
- else : listeArg.append(i._Content__value)
- indice=indice+1
- #print ('avec', listeArg)
- if indiceDansLeContenu == len(self.perePyxb.objPyxb.orderedContent()):
- listeArg.append(self.objPyxb)
-
- #print ('avec', listeArg)
-
- nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
- self.perePyxb.objPyxb=nvlObjPerePyxb
- self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
- #print (self.nom, ' a pour gp ', grandPere)
- if grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
-
- def addObjPyxb(self,indiceDansLeContenu):
+
+ def addObjPyxb(self,indiceDsLeContenu):
if not self.cata.modeleMetier : return
- #print ('**********************************************')
- #print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDansLeContenu)
+ print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDsLeContenu)
# adherence Accas sur le parent
parent=self.parent
- while (parent.isBLOC()): parent=parent.parent
+ while (parent.isBLOC()):
+ if parent != self.parent : indiceDsLeContenu += parent.rangDsPyxb()
+ parent=parent.parent
self.perePyxb=parent
- #EF: grandPere et ancienObjPerePyxb sont devenus inutiles
- # grandPere=self.perePyxb.perePyxb
- # ancienObjPerePyxb=self.perePyxb.objPyxb
- # print ('dans le perePyxb', self.perePyxb.nom)
- # print ('j ai pour orderedContent', self.objPyxb.orderedContent())
-
self.objPyxb.objAccas=self
-
- # listeArg=[]
- # indice=0
- # # a tester
- # # a affiner si on ajoute en fin
- # #print (indiceDansLeContenu)
- # #print (self.perePyxb.objPyxb.orderedContent())
- # for i in self.perePyxb.objPyxb.orderedContent():
- # if indice==indiceDansLeContenu : listeArg.append(self.objPyxb)
- # else : listeArg.append(i._Content__value)
- # indice=indice+1
- # #print ('avec', listeArg)
- # if indiceDansLeContenu == len(self.perePyxb.objPyxb.orderedContent()):
- # listeArg.append(self.objPyxb)
- #print('self.cata.modeleMetier.Namespace : ',self.cata.modeleMetier.Namespace)
- #print('self.nom : ',self.nom)
elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=self.perePyxb.objPyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
- #perePyxb est en fait l'objet ACAS père de notre objet PyxB (Il peut être éloigné à cause des BLOCS)
- self.perePyxb.objPyxb.orderedContent().insert(indiceDansLeContenu,elt)
- setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
- #print ('avec', listeArg)
-
- #EF: J'imagine que la ligne suivante sert a demander au père de se reconstruire avec la liste des args
- #nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
- #self.perePyxb.objPyxb=nvlObjPerePyxb
- #self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
- #print (self.nom, ' a pour gp ', grandPere)
- #if grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
-
- def reconstruitAvecNvlObj(self, ancienObj,nvlObj):
- if not self.cata.modeleMetier : return
- #print ('reconstruitAvecNvlObj pour', self, self.nom, ancienObj,nvlObj)
- listeArg=[]
- for i in self.objPyxb.orderedContent():
- if id(ancienObj) == id(i._Content__value) : listeArg.append(nvlObj)
- else : listeArg.append(i._Content__value)
- nouveauMoiPyxb=self.maClasseModeleMetier(*listeArg)
- nouveauMoiPyxb.objAccas=self
- self.objPyxb=nouveauMoiPyxb
- if self.perePyxb : self.perePyxb.reconstruitAvecNvlObj(self.objPyxb,nouveauMoiPyxb)
-
-
-
+ self.perePyxb.objPyxb.orderedContent().insert(indiceDsLeContenu,elt)
+ if (elt.elementDeclaration.isPlural()):
+ # je suis donc un MCList
+ listeObjetsAccas=self.parent.getChild(self.nom,restreint='oui')
+ if len(listeObjetsAccas) == 1 : monIndex=1
+ else : monIndex=listeObjetsAccas.index(self)
+ listeObjetsPyxb=getattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key)
+ listeObjetsPyxb.insert(monIndex,self.objPyxb)
+ else :
+ setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
+
+ def rangDsPyxb(self):
+ monRangEnAccas=self.parent.mcListe.index(self)
+ rangEnPyxb=0
+ for frere in self.parent.mcListe[0: monRangEnAccas] :
+ rangEnPyxb += frere.longueurDsArbre()
+ return rangEnPyxb
+
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.modeleMetier : return
+ if self.nom == 'Consigne' : return None
+ if self.nom == 'Spring_Stifness' :
+ #trace()
+ print ('Sprinf_Stifness' ,self.valeur)
#print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
#print ('objPyxbDeConstruction', self.objPyxbDeConstruction)
#if self.objPyxbDeConstruction == None : print (self.nom, ' pas de pyxb')
- if self.nom == 'Consigne' : return None
if self.objPyxbDeConstruction != None :
self.objPyxb = self.objPyxbDeConstruction
self.objPyxb.objAccas=self
self.maClasseModeleMetier =type(self.objPyxb)
- #print (self.maClasseModeleMetier)
self.objPyxbDeConstruction = None
else :
self.monNomClasseModeleMetier='T_'+self.nom
if self.nom in list(self.cata.DicoNomTypeDifferentNomElt.keys()) :
self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
- #print (self.nom, self.monNomClasseModeleMetier)
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)
else : self.objPyxb=self.maClasseModeleMetier(_validate_constraints=False);
def setValeurObjPyxb(self,newVal):
if not self.cata.modeleMetier : return
- #print ('------------------------------------------------------------------')
- #print ('dans setValeurObjPyxb MCSIMP ', self.nom)
+ print ('dans setValeurObjPyxb MCSIMP ', self.nom, newVal)
+ #print (' self.perePyxb = ', self.perePyxb.nom)
if inspect.isclass(newVal) and issubclass(newVal,A_ASSD) : newVal = newVal.nom
- #print (newVal)
-
#print (self.nom , ' a pour pere', self.perePyxb, self.perePyxb.nom, self.perePyxb.objPyxb)
if newVal != None : nvlObj=self.maClasseModeleMetier(newVal)
- #else : nvlObj=self.maClasseModeleMetier()
# a priori impossible mais ?
else : nvlObj=self.maClasseModeleMetier(_validate_constraints=False)
self.val=newVal
- #print (self.perePyxb.objPyxb.orderedContent())
setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
trouve=False
indice=0
if not trouve : print ('Attention souci au changement de valeur de ', self.nom)
self.objPyxb=nvlObj
self.objPyxb.objAccas=self
- #print (self.perePyxb.objPyxb.orderedContent())
- #print ('------------------------------------------------------------------')
+ #print ('fin du setValeurObjPyxb pour ', self.nom, self.perePyxb.objPyxb.orderedContent())
- def addObjPyxb(self, indiceDsLeContenu):
- if not self.cata.modeleMetier : return
- if self.nom == 'Consigne' : return None
- #print ('addObjPyxb : ajout de ', self.nom, 'en ', indiceDsLeContenu)
-
- # adherence Accas sur le parent
- # parent=self.parent
- # while (parent.isBLOC() ): parent=parent.parent
- # self.perePyxb=parent
- #print ('dans le perePyxb', self.perePyxb.nom)
- #print (dir(self.perePyxb))
-
- self.monNomClasseModeleMetier='T_'+self.nom
- if self.nom in list(self.cata.DicoNomTypeDifferentNomElt.keys()) :
- self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
- self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
- #nvlObj=self.maClasseModeleMetier()
- #nvlObj=self.maClasseModeleMetier(_validate_constraints=False)
- if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
- else : self.objPyxb=self.maClasseModeleMetier(_validate_constraints=False);
- #print (self.perePyxb.objPyxb.orderedContent())
- #for i in (self.perePyxb.objPyxb.orderedContent()): print i._Content__value;print (type(i._Content__value))
-
- X_OBJECT.addObjPyxb(self, indiceDsLeContenu)
-
- # setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
- # tampon=self.perePyxb.objPyxb.orderedContent()[-1]
- # self.objPyxb = nvlObj
- # self.objPyxb.objAccas=self
- # indexOC=-1
- # longueur=len(self.perePyxb.objPyxb.orderedContent())
- # #print (self.perePyxb.objPyxb.orderedContent())
- # #print (self.perePyxb.nom)
- # 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
-
-
class X_MCCOMPO(X_OBJECT) :
# -------------------------
#
def buildObjPyxb(self,mc_list) :
- #print ('________________________________________________')
if not self.cata.modeleMetier : return
#print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
-
self.listArg=[]
self.dicoArg={}
for objAccas in mc_list :
- #print (objAccas.nom,objAccas.nature)
if objAccas.nature == 'MCBLOC' :
self.exploreBLOC(objAccas)
elif objAccas.nature == 'MCList' :
- #print ('MCList explore', objAccas.nom, len(objAccas), objAccas[0].definition.max )
if objAccas[0].definition.max > 1 :
self.listArg.append(objAccas) # les MCList n ont pas objPyxb
self.dicoArg[objAccas.nom]=[]
else :
if objAccas.nom == 'Consigne' : continue
self.listArg.append(objAccas.objPyxb)
- #print (self.listArg)
self.dicoArg[objAccas.nom]=objAccas.objPyxb
objAccas.perePyxb=self
self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+ # PN : Ne doit-on pas tester avant
if self.objPyxbDeConstruction != None :
self.objPyxb = self.objPyxbDeConstruction
self.objPyxbDeConstruction = None
# self.objPyxb=self.maClasseModeleMetier(*self.listArg)
self.objPyxb=self.maClasseModeleMetier(**self.dicoArg)
newordercontent=[]
-
- # print ('uuuuuuuuuuuuuu', self.objPyxb.orderedContent())
- # print ('kkkkkkkkkkkkkkkkkkkkk listArg', self.listArg)
for obj in self.listArg:
- # print (obj)
# on teste le caractere pluriel
if (hasattr(obj, 'nature')) : # attention on a un object Accas et non un pyxb car les MCList n ont pas de objPyxb
- # print ('obj----------', obj.nom)
max=obj[0].definition.max
else : max = 1
- # print (max)
if max == 1 :
if not(issubclass(type(obj), pyxb.binding.basis.enumeration_mixin) ):
newordercontent.append(self.objPyxb.orderedContent()[map(lambda o:id(o.value), self.objPyxb.orderedContent()).index(id(obj))] )
else : # element Pural
for c in self.objPyxb.orderedContent() :
if isinstance(c._Content__value,list) and isinstance(c._Content__value[0], type(obj[0].objPyxb)): newordercontent.append(c)
- # print ('uuuuuuuuuuuuuu', newordercontent)
-
for i in xrange(len(self.listArg)):
self.objPyxb.orderedContent()[i]=newordercontent[i]
#print ('_______________________________________')
# assert(self.objPyxb.validateBinding())
- def delObjPyxb(self):
- if not self.cata.modeleMetier : return
- #print ('******************************************')
- #print ('je passe ds delObjPyxb pour ', self, self.nom)
- #print (self.perePyxb)
- #print (dir(self))
- #print ('******************************************')
def exploreBLOC(self,objAccas):
#print (' ds exploreBLOC', objAccas .nom)
# --------------------------
def buildObjPyxb(self,mc_list):
if not self.cata.modeleMetier : return
- # mise a none ? le bloc n a pas d existence en pyxb
+ #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list, 'ne fait rien')
self.perePyxb=None
- #print ('_______________________________________')
- #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list)
- self.filsPyxb=[]
self.objPyxb=None
- # Pas sur d en avoir besoin du filsPyxb
- # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc
- #for objAccas in mc_list :
- # self.filsPyxb.append(objAccas.objPyxb)
- #print (self.filsPyxb)
- #print ('Fin ', self.nom, self.objPyxb)
- #print ('_______________________________________')
-
def addObjPyxb(self, indiceDsLeContenu):
if not self.cata.modeleMetier : return
+ print ('X_MCBLOC addObjPyxb', self.nom, self, self.mcListe, indiceDsLeContenu)
rangDeLObjet=indiceDsLeContenu
for obj in self.mcListe:
obj.addObjPyxb( rangDeLObjet)
rangDeLObjet=rangDeLObjet+obj.longueurDsArbre()
+ def delObjPyxb(self):
+ if not self.cata.modeleMetier : return
+ #print ('X_MCBLOC delObjPyxb', self.nom, ' --------------------------')
+ for obj in self.mcListe:
+ obj.delObjPyxb()
+ #print ('fin X_MCBLOC delObjPyxb --------------------------')
class X_MCLIST (X_MCCOMPO):
# --------------------------
#print ('X_MCLIST buildObjPyxb ne fait rien', self.nom, self, mc_list)
pass
- def addObjPyxb(self,indiceDansLeContenu):
- #traceback.print_stack()
- #print ('X_MCLIST addObjPyxb ne fait rien', self.nom)
- pass
+ def addObjPyxb(self,indiceDsLeContenu):
+ #print ('X_MCLIST addObjPyxb', self.nom, indiceDsLeContenu)
+ rangDeLObjet=indiceDsLeContenu
+ for objFils in self :
+ objFils.addObjPyxb(rangDeLObjet)
+ rangDeLObjet= rangDeLObjet + 1
+ def delObjPyxb(self):
+ if not self.cata.modeleMetier : return
+ #print ('X_MCLIST delObjPyxb', self.nom, ' --------------------------')
+ for obj in self:
+ obj.delObjPyxb()
+ #print ('fin X_MCLIST delObjPyxb --------------------------')
class X_MCFACT (X_MCCOMPO):
# -------------------------
-# on gere au niveau du MCCOMPO
-
-
- def addObjPyxb(self,indiceDansLeContenu):
- if not self.cata.modeleMetier : return
- #print ('**********************************************')
- #print ('_____________ addObjPyxb ds X_MCLIST', self.nom, indiceDansLeContenu)
- # adherence Accas sur le parent
- #perePyxb est en fait l'objet ACCAS père de notre objet PyxB (Il peut être éloigné à cause des BLOCS)
- parentNonBloc=self.parent
- while (parentNonBloc.isBLOC()): parentNonBloc=parentNonBloc.parent
- self.perePyxb=parentNonBloc
- objPerePyxb=self.perePyxb.objPyxb
-
- self.objPyxb.objAccas=self
-
- # print('self.cata.modeleMetier.Namespace : ',self.cata.modeleMetier.Namespace)
- # print('self.nom : ',self.nom)
-
- listeObjets=self.parent.getChild(self.nom,restreint='oui')
- nbObjsPresents=len(listeObjets)
- # nbObjsPresents == 1 nous indique qu'il n'y avait pas d'objet avec notre 'nom' dans le père
-
- #Il y a une symetrie entre le contenu de l'orderedContent pour l'objet plural et la liste maintenue pas pyxb pour l'attribut et la mcListe ACCAS
- elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=objPerePyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
- objPerePyxb.orderedContent().insert(indiceDansLeContenu,elt)
-
- if (elt.elementDeclaration.isPlural()):
- if (nbObjsPresents == 1):
- #vérifier que lorsque l'élément est optionnel il existe une liste vide ??
- # setattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb,)
- ouAjouter=0
- else:
- ouAjouter=listeObjets.getIndex(self)
- liste=getattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key)
- liste.insert(ouAjouter,self.objPyxb)
- else:
- setattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
-
+ pass
class X_JDC (X_MCCOMPO):
# ---------------------
Noyau.N_JDC.JDC.supprime(self)
for etape in self.etapes:
etape.supprime()
- self.appli=None
+ self.appliEficas=None
self.g_context={}
self.const_context={}
self.sds_dict={}
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.getFile(unite,fic_origine)
+ if self.appliEficas is not None:
+ # Si le JDC est relie a une appliEficascation maitre, on delegue la recherche
+ file,text= self.appliEficas.getFile(unite,fic_origine)
else:
file = None
if unite != None:
self.text_converted=0
self.text_error=""
if self.nom != "INCLUDE_MATERIAU":
- format=self.parent.appli.appliEficas.format_fichier
+ format=self.jdc.appliEficas.format_fichier
#on force a python pour Carmel
if format=="CARMEL3D" : format="python"
import convert
# Le convertisseur existe on l'utilise
p=convert.plugins[format]()
p.text=text
- text=p.convert('exec',self.jdc.appli)
+ text=p.convert('exec',self.jdc.appliEficas)
#Si le fichier ne peut pas etre converti, le cr n'est pas vide
#et le texte est retourne tel que
if not p.cr.estvide():
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,
+ appliEficas=self.jdc.appliEficas,
cata=self.jdc.cata,
cata_ord_dico=self.jdc.cata_ordonne_dico,
context_ini = context_ini,
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.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ if self.jdc.appliEficas is not None:
+ self.jdc.appliEficas.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={}
f,text=None,None
self.recorded_units=units
- if f is None and self.jdc.appli:
- self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ if f is None and self.jdc.appliEficas:
+ self.jdc.appliEficas.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
for concept in self.old_context_fichier_init.values():
self.jdc.deleteConcept(concept)
if fichier == None :
- fichier=str(self.jdc.appli.getFile_dictDonnees())
+ fichier=str(self.jdc.appliEficas.getFile_dictDonnees())
if fichier == str("") :
self.fichier_ini="badfile"
self.fichier_text=""
self.jdc.deleteConcept(concept)
if fichier == None :
- fichier=str(self.jdc.appli.getFileVariable())
+ fichier=str(self.jdc.appliEficas.getFileVariable())
if fichier == str("") :
self.fichier_ini="badfile"
self.fichier_text=""
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 self.jdc.appliEficas is not None:
if mess == None :
- self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appliEficas.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.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
message=tr(mess))
#self.parent.recordUnit(unite,self)
self.g_context={}
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.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+ if self.jdc.appliEficas:
+ self.jdc.appliEficas.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.recordUnit(unite,self)
self.g_context={}
self.parent.recordUnit(None,self)
except:
l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
- if self.jdc.appli:
- self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
+ if self.jdc.appliEficas:
+ self.jdc.appliEficas.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.recordUnit(None,self)
self.g_context={}
# ajoute la taille des les Blocs
# faut -il chercher plus loin ds les petits-enfants ?
if objet.nature == 'MCList' : objet=objet[0]
- print ('je cherche ',objet, objet.nom, self.nom)
leRang=0
positionDsLaListe=0
try :
positionDsLaListe=self.mcListe.index(objet)
positionDsLaListeDeFactSiFact =0
- print ('en position', positionDsLaListe)
except :
for mc in self.mcListe:
- print (mc)
if mc.nature == 'MCList':
try :
- print ('ds try')
positionDsLaListeDeFactSiFact=mc.index(objet)
- print ('break')
break
except :
- print ('ds except')
positionDsLaListe=positionDsLaListe+1
else : positionDsLaListe=positionDsLaListe+1
i=0
leRang= leRang + self.mcListe[i].longueurDsArbre()
i=i+1
leRang=leRang+positionDsLaListeDeFactSiFact
- print (leRang)
return leRang
return 0
self.initModif()
- print ('suppEntite MCCOMPO _____________________________________________________')
- print ( objet.nom)
- print ('_____________________________________________________')
objet.delObjPyxb()
self.mcListe.remove(objet)
CONNECTOR.Emit(self,"supp",objet)
Ajoute le mot-cle name a la liste des mots-cles de
l'objet MCCOMPOSE
"""
- print ('addEntite', name, pos)
+ #print ('addEntite', name, pos)
self.initModif()
if type(name)==bytes or type(name) == str :
# on est en mode creation d'un motcle
# On verifie que l'ajout d'objet est autorise
if self.ispermis(objet) == 0:
- self.jdc.appli.afficheAlerte(tr("Erreur"),
+ self.jdc.appliEficas.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.finModif()
# on cree une liste d'objets. Dans le cas contraire,
# on emet un message d'erreur.
if not old_obj.isRepetable():
- self.jdc.appli.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
+ self.jdc.appliEficas.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
self.finModif()
return 0
else:
raise EficasException(tr("traitement non-prevu"))
if not self.ajoutPossible():
- self.jdc.appli.afficheAlerte(tr("Erreur"),
+ self.jdc.appliEficas.afficheAlerte(tr("Erreur"),
tr("L'objet %s ne peut pas etre ajoute", obj.nom))
return None
# traitement d'un flottant isole
txt = str(self.valeur)
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]
+ if clefobj in self.jdc.appliEficas.dict_reels :
+ if self.valeur in self.jdc.appliEficas.dict_reels[clefobj]:
+ txt=self.jdc.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
for val in self.valeur:
if type(val) == float :
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 clefobj in self.jdc.appliEficas.dict_reels:
+ if val in self.jdc.appliEficas.dict_reels[clefobj]:
+ txt=txt + sep +self.jdc.appliEficas.dict_reels[clefobj][val]
else :
txt=txt + sep + str(val)
else :
val=self.valeur
if type(val) == float :
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 clefobj in self.jdc.appliEficas.dict_reels :
+ if val in self.jdc.appliEficas.appliEficas.dict_reels[clefobj] :
+ return self.jdc.appliEficas.dict_reels[clefobj][val]
if type(val) != tuple :
try:
return val.getName()
# nouvel objet : on cree un nouvel item
def setFunction(value, object=obj):
object.setval(value)
- item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+ item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
sublist[pos]=item
pos=pos+1
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
- item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj)
+ item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj)
sublist[pos]=item
pos=pos+1
class INCLUDETreeItemBase(MACROTreeItem):
- def __init__(self,appli, labeltext, object, setFunction):
- MACROTreeItem.__init__(self,appli, labeltext, object, setFunction)
+ def __init__(self,appliEficas, labeltext, object, setFunction):
+ MACROTreeItem.__init__(self,appliEficas, labeltext, object, setFunction)
def isCopiable(self):
return 0
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
- def makeEdit(self): #,appli,node
+ def makeEdit(self): #,appliEficas,node
if self.item.object.text_converted == 0:
# Le texte du fichier inclus n'a pas pu etre converti par le module convert
msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
- def makeEdit(self): #,appli,node
+ def makeEdit(self): #,appliEficas,node
if self.item.object.text_converted == 0:
msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
msg=msg+self.item.object.text_error
# ------------------------------------
-def treeitem(appli, labeltext, object, setFunction=None):
+def treeitem(appliEficas, 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(appliEficas, labeltext, object, setFunction)
elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
- return INCLUDETreeItem(appli, labeltext, object, setFunction)
+ return INCLUDETreeItem(appliEficas, labeltext, object, setFunction)
elif object.nom == "POURSUITE":
- return POURSUITETreeItem(appli, labeltext, object, setFunction)
+ return POURSUITETreeItem(appliEficas, labeltext, object, setFunction)
else:
- return MACROTreeItem(appli, labeltext, object, setFunction)
+ return MACROTreeItem(appliEficas, labeltext, object, setFunction)
import Accas
objet=Accas.MACRO_ETAPE
# nouvel objet : on cree un nouvel item
def setFunction(value, object=obj):
object=value
- item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+ item = self.makeObjecttreeitem(self.appliEficas, 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
import Accas
objet = Accas.MCList
-def treeitem(appli,labeltext,object,setFunction):
+def treeitem(appliEficas,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(appliEficas,labeltext,object,setFunction)
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
-# 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() :
-# self.ViewElt.setEnabled(1)
-# else:
-# self.ViewElt.setEnabled(0)
-# 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() :
-# self.Graphe.setEnabled(1)
-# else:
-# self.Graphe.setEnabled(0)
# def view3D(self) :
# from Editeur import TroisDPal
# troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
# troisD.envoievisu()
-# def viewPng(self) :
-# from monPixmap import MonLabelPixmap
-# import generator
-# try:
-# from PyQt5.QtCore import Qt
-# from PyQt5.QtWidgets import QMessageBox, QAction, QApplication
-# QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
-# g = generator.plugins[self.appliEficas.format_fichier]()
-# g.gener(self.item.object, format='beautifie')
-# stdGener = g.getGenerateur()
-# loi = list(g.dictMCLois.keys())[0]
-# nomLoi = loi.getName()
-# (fd, fichier) = tempfile.mkstemp(prefix = "openturns_graph_", suffix = ".png")
-# os.close(fd)
-# chemin = os.path.dirname(fichier)
-# base = os.path.splitext(os.path.basename(fichier))[0]
-# script = stdGener.GraphiquePDF(loi, chemin, base)
- #print script
-# d = {}
-# exec(script, d)
-# widgetPng=MonLabelPixmap(self.appliEficas,fichier,nomLoi)
-# os.remove(fichier)
-# QApplication.restoreOverrideCursor()
-# widgetPng.show()
-# except:
-# QApplication.restoreOverrideCursor()
-# QMessageBox.warning(
-# self.appliEficas,
-# tr("Erreur interne"),
-# tr("La PDF de la loi ne peut pas etre affichee."),
-# tr("&Annuler"))
class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
""" La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
# nouvel objet : on cree un nouvel item
def setFunction(value, object=obj):
object.setval(value)
- item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+ item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
sublist[pos]=item
pos=pos+1
oldnom=self.object.sd.nom
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]
+ if (test and oldnom in self.appliEficas.dict_reels ):
+ self.appliEficas.dict_reels[nom]=self.appliEficas.dict_reels[oldnom]
return test,mess
def isReentrant(self):
représentatif de self.object
"""
# Format de fichier utilisé
- format=self.appli.appliEficas.format_fichier
+ format=self.appliEficas.format_fichier
return self.object.getObjetCommentarise(format)
def getObjetCommentarise_BAK(self):
"""
import generator,Accas
# Format de fichier utilisé
- format=self.appli.appliEficas.format_fichier
+ format=self.appliEficas.format_fichier
g=generator.plugins[format]()
texte_commande = g.gener(self.object,format='beautifie')
# Il faut enlever la premiere ligne vide de texte_commande que
try :
if "R" in self.object.definition.type:
clef=self.object.getNomConcept()
- if clef in self.appli.dict_reels:
+ if clef in self.appliEficas.dict_reels:
if type(valeurs) == tuple:
valeurs_reelles=[]
for val in valeurs :
- if val in self.appli.dict_reels[clef]:
- valeurs_reelles.append(self.appli.dict_reels[clef][val])
+ if val in self.appliEficas.dict_reels[clef]:
+ valeurs_reelles.append(self.appliEficas.dict_reels[clef][val])
else :
valeurs_reelles.append(val)
else :
- if valeurs in self.appli.dict_reels[clef]:
- valeurs_reelles=self.appli.dict_reels[clef][valeurs]
+ if valeurs in self.appliEficas.dict_reels[clef]:
+ valeurs_reelles=self.appliEficas.dict_reels[clef][valeurs]
valeurs=valeurs_reelles
except :
pass
def getIconName(self):
- if self.appli.maConfiguration.differencieSiDefaut and self.isValid():
+ if self.appliEficas.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"
class configBase(object):
#-------------------------------
- def __init__(self,appli,repIni):
+ def __init__(self,appliEficas,repIni):
#-------------------------------
# Classe de base permettant de lire, afficher
# 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
+ self.appliEficas = appliEficas
+ self.code = appliEficas.code
+ self.salome = appliEficas.salome
if self.salome : self.name="editeur_salome.ini"
else : self.name="editeur.ini"
self.rep_mat = None
#Particularite des schemas MAP
if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
- #if self.appli: self.parent=appli.top
+ #if self.appliEficas: self.parent=appliEficas.top
#else: self.parent=None
if not os.path.isdir(self.savedir) :
self.ajoutExecution=False
self.utilParExtensions=[]
self.rendVisiblesLesCaches=False
+ self.pasDeMCOptionnels=False
self.dumpXSD=False
self.withXSD=False
def lectureFichierIniStandard(self):
#--------------------------------------
- name='prefs_'+self.appli.code
+ name='prefs_'+self.appliEficas.code
try :
prefsCode=__import__(name)
except :
#
-def makeConfig(appli,rep):
- return configBase(appli,rep)
+def makeConfig(appliEficas,rep):
+ return configBase(appliEficas,rep)
+++ /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
-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
-
-import traceback
-
-# Modules Eficas
-
-import convert, generator
-from Editeur import session
-from Editeur import comploader
-from Editeur import Objecttreeitem
-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'}
-
-
-
-
-class JDCEditor(Ui_baseWidget,QWidget):
-# ----------------------------------------- #
- """
- Editeur de jdc
- """
-
- def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):
- #----------------------------------------------------------------------------------------------------------#
-
- 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 ????????")
-
- # ces attributs sont mis a jour par definitCode appelee par newEditor
- self.code = self.appliEficas.CONFIGURATION.code
- self.initSplitterSizes()
-
- #self.afficheListesPliees=False
- self.afficheListesPliees=True
- 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.version_code = session.d_env.cata
-
-
- 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.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=''
- 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 ['Adao','ADAO','TELEMAC'] : self.affichePlie=True
- else : self.affichePlie=False
-
- self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue
-
- #------- construction du jdc --------------
-
- 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 )
- 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
-
-
- self.saveFile()
-
- # lancement avec le .bat
- path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../', '../', 'PSEN_Eficas', 'PSEN'))
- filer = open('temp.txt', 'r')
- _path = []
- for line in filer:
- _path.append(line)
- filer.close()
-
-
- if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
- Python3_path = _path[2].replace('\n', '')
- import subprocess
-
- # execfile
- # 'PF_PARAMETERS' in self.readercata.Ordre_Des_Commandes
- if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
- WrapperFilePath = os.path.join(path1, 'PFWrapper.py')
- p = subprocess.Popen([Python3_path + '/python.exe', WrapperFilePath])
- else:
- WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
- 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()
- #cmd = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_N1','run.py'))
- #cmd = "from run import runPSEN_N1; dico="+str(dico)
-
- #textePython=("python "+ cmd + " "+ str(dico))
- #self._viewTextExecute( textePython,"psen_run",".sh")
-
- 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 generator.plugins.has_key('dicoImbrique'):
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.generator.Dico
-
- ##to delete
- fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
- f = open( str(fileDico), 'wb')
- f.write("Dico =" + str(dico) )
- f.close()
-
- if 'PSSE_path' in dico['CASE_SELECTION']:
- from Run import run
- #self.appliEficas.close()
- run(dico)
- elif 'PF_path' in dico['CASE_SELECTION']:
- import subprocess
- RunPFfile = os.path.join(path1, 'RunPF.py')
- Python3_path=dico['CASE_SELECTION']['Python3_path']
- p = subprocess.Popen([Python3_path + '/python.exe', RunPFfile])
- p.wait()
-
-
- #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 generator.plugins.has_key('dicoImbrique'):
- self.generator=generator.plugins['dicoImbrique']()
- jdc_formate=self.generator.gener(self.jdc)
- dico=self.getDico() #generator.Dico
-
-
- for k in dico['CONTINGENCY_PROCESSING'].keys():
-
- 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), 'wb')
- 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
-
-
- #--------------------------------#
- 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 _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
- text=p.convert('exec',self.appliEficas)
- 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
-
-# qApp.restoreOverrideCursor()
- if self.fileInfo!= None :
- self.lastModified = self.fileInfo.lastModified()
- else :
- self.lastModified = 1
- nouveauTitre=self.titre+" "+os.path.basename(self.fichier)
- self.appliEficas.setWindowTitle(nouveauTitre)
- 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
-
- #-----------------------------------------------------------------------#
- 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 _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 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.getTextJDC(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()
- self.close()
-
- #----------------------------------------------#
- def affiche_infos(self,message,couleur=Qt.black):
- #----------------------------------------------#
- 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 affiche_alerte(self,titre,message):
- #------------------------------#
- # appele par I_MACRO_ETAPE
- QMessageBox.information( self, titre, message)
-
- #-----------------------------------#
- def affiche_commentaire(self,message):
- #-----------------------------------#
- self.labelCommentaire.setText(message)
- QTimer.singleShot(6000, self.rendInvisible)
-
- #----------------------#
- def rendInvisible(self):
- #----------------------#
- self.labelCommentaire.setText("")
-
- #-------------------#
- 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 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.get_child(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.affiche_infos("Copie refusee",Qt.red)
- if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
- try :
- nom=noeudACopier.item.sd.nom
- child.item.nomme_sd(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.affiche_infos("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 getFileName(self):
- #---------------------#
- return self.fichier
-
- #---------------------------#
- 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.CONFIGURATION.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.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)
- checksum=self.getChecksum(txt)
- 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 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.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 getDico(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="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,)
-
- #---------------#
- 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.CONFIGURATION, "savedir"): path=self.CONFIGURATION.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()
- 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.CONFIGURATION)
- dicoCourant=self.generator.dico
- return dicoCourant
-
-
-
- #-----------------------------------------#
- def handleAjoutGroup(self,listeGroup):
- #-----------------------------------------#
- try :
- #if 1:
- from ajoutGroupe import handleAjoutGroupFiltre
- #print listeGroup
- handleAjoutGroupFiltre(self,listeGroup)
- #print "apres handleAjoutGroupFiltre"
- except :
- #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"):
- #-----------------------------------------------------------------#
- extension='.casR'
- fn = self.fichier
- #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
- 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]
- fn = six.text_type(QDir.toNativeSeparators(fn))
-
- self.fichier = 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 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 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.CONFIGURATION.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]
- 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()
-
- if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
- self.generator.writeDefault(fn)
- elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
- self.generator.writeDefault(fn)
-
- 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.CONFIGURATION.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.CONFIGURATION.savedir=os.path.split(ulfile)[0]
-
- # On utilise le convertisseur defini par format_fichier
- source=self.get_source(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, itemApres,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.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.buildChildren()
- return ok
-
-
-
-
-
-
- #----------------------------------------------#
- 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 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")
- 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.setValeur(valeur)
- monMC.isvalid()
-
-
- #-------------------------------------#
- def deleteEtape(self,etape):
- #-------------------------------------#
- self.jdc.suppentite(etape)
-
- #-------------------------------------#
- def deleteMC(self,etape,MCFils,listeAvant=()):
- #-------------------------------------#
- 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=()):
- #-------------------------------------#
- print('debut ajoutMC')
- ouChercher=etape
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- monMC=etape.get_child(ouChercher,restreint="oui")
- print( monMC)
- if monMC== None : monMC= ouChercher.addentite(MCFils)
- monMC.valeur=valeurs
- monMC.val=valeurs
- monMC.state='changed'
- monMC.isvalid()
- print(monMC)
-
-
- #-----------------------------------------------------------#
- def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
- #-----------------------------------------------------------#
- ouChercher=etape
- for mot in listeAvant :
- ouChercher=ouChercher.get_child(mot,restreint="oui")
- if ouChercher ==None : print( 'SOUCI'); return
- monMC=ouChercher.get_child(MCFils,restreint="oui")
- if monMC== None : monMC= ouChercher.addentite(MCFils)
- monMC.definition.into=valeurs
- monMC.state='changed'
- monMC.isvalid()
-
- #-------------------------------------#
- def changeIntoDefMC(self,etape,listeMC,valeurs):
- #-------------------------------------#
- definitionEtape=getattr(self.jdc.cata[0],etape)
- ouChercher=definitionEtape
- if len(listeMC) > 1 :
- for mc in listeMC[0:-1]:
- mcfact=ouChercher.entites[mc]
- ouChercher=mcfact
-
- mcAccas=ouChercher.entites[listeMC[-1]]
- mcAccas.into=valeurs
-
- #-------------------------------------------------------------#
- def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
- #-------------------------------------------------------------#
- #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
- 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)
- del ouChercher.entites[nomDuMC]
- del self.dicoNouveauxMC[nomDuMC]
-
-
- #-------------------------------------------------------------#
- def ajoutDefinitionMC(self,etape,listeAvant,nomDuMC,typ,**args):
- #-------------------------------------------------------------#
- print('debut ajoutDefinitionMC')
- definitionEtape=getattr(self.jdc.cata[0],etape)
- 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)
- self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',etape,listeAvant,nomDuMC,typ,args)
- print( self.dicoNouveauxMC)
- print('fin ajoutDefinitionMC')
-
- #----------------------------------------------------#
- def changeIntoMCandSet(self,etape,MCFils,into,valeurs):
- #----------------------------------------------------#
- monMC=etape.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 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[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 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 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]
- checksum=self.getChecksum(textJDC)
- pareil=(checkAvant==checksum)
- 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 _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):
- #---------------------------#
- if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
- texte = "DIRECTORY() ;PF_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
- else:
- 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()
-
-
- #-----------------------------------------
- def initSplitterSizes(self, nbWidget=3):
- #-----------------------------------------
- #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]
- else : self.splitterSizes3=[150,1000,300]
-
- if self.code in [ 'Adao', 'ADAO', ] : 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 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
-
-if __name__ == "__main__":
- self.code='ASTER'
- name='prefs_'+prefs.code
- prefsCode=__import__(name)
-
-
- 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
-
-# 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)
# Methodes faisant appel a ssIhm
# ----------------------------------------
- def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+ def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, units = None, include=0):
#------------------------------------------------------------------------------------------
self.fenetreCentraleAffichee=None
self.dejaDansPlieTout=False
self.listeDesListesOuvertes=set()
- if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+ if appliEficas!=None and hasattr(appliEficas,"statusBar"): self.sb = appliEficas.statusBar()
else : self.sb = None
self.QWParent=QWParent
- JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
+ JDCEditorSsIhm. __init__ (self,appliEficas,fichier, jdc,units,include)
if self.jdc:
comploader.chargerComposants()
self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
def run(self):
#------------#
fonction="run"+self.code
- #print fonction
if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
#------------#
# ---------------------------------------------
# Methodes Non Crees dans ssIHM
# ---------------------------------------------
+ #---------------#
+ def runVP(self):
+ #---------------#
+ texte=self.getTextJDC("MAPVp",pourRun=1)
+ print (texte)
#---------------#
def runMAP(self):
#-----------------------------------------------------#
def determineNomFichier(self,path,extension):
#-----------------------------------------------------#
- if self.appli.code in DictExtensions:
- chaine1=DictExtensions[self.appli.code]+" (*."+DictExtensions[self.appli.code]+");;"
+ if self.appliEficas.code in DictExtensions:
+ chaine1=DictExtensions[self.appliEficas.code]+" (*."+DictExtensions[self.appliEficas.code]+");;"
extensions= tr(chaine1+ "All Files (*)")
else :
extensions= tr("JDC (*.comm);;" "All Files (*)")
- if self.appli.code == "MAP" :
+ if self.appliEficas.code == "MAP" :
extensions = extensions + ";; Run (*.input);;"
fn = QFileDialog.getSaveFileName( self,
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)
+ self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
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]
+ if self.appliEficas.code in DictExtensions :
+ extension=DictExtensions[self.appliEficas.code]
else :
extension='.comm'
# Methodes Communes ou appelees depuis avec Ihm
# ---------------------------------------------
- def __init__ (self,appli,fichier = None, jdc = None, units = None, include=0 ):
+ def __init__ (self,appliEficas,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.appliEficas = appliEficas
self.fichier = fichier
self.fichierComplet = fichier
self.jdc = jdc
self.dict_reels = {}
self.liste_simp_reel = []
- if appli != None : self.salome = self.appliEficas.salome
+ if self.appliEficas != None : self.salome = self.appliEficas.salome
else : self.salome = 0
# ces attributs sont mis a jour par definitCode appelee par newEditor
self.nouveau=1
if self.jdc:
- self.jdc.appli = self # a resorber
self.jdc.editor = self
- self.jdc.lang = self.appli.langue
+ self.jdc.lang = self.appliEficas.langue
self.jdc.aReafficher=False
txt_exception = None
if not jdc:
#jdc=self.readercata.cata[0].JdC(procedure=text,
jdc=self.readercata.cata.JdC(procedure=text,
- appli=self,
+ appliEficas=self,
cata=self.readercata.cata,
cata_ord_dico=self.readercata.cata_ordonne_dico,
nom=jdcName,
#jdc=self.readercata.cata[0].JdC( procedure =texte,
#print (self.readercata.cata)
jdc=self.readercata.cata.JdC( procedure =texte,
- appli=self,
+ appliEficas=self,
cata=self.readercata.cata,
cata_ord_dico=self.readercata.cata_ordonne_dico,
rep_mat=self.maConfiguration.rep_mat
)
- jdc.lang = self.appli.langue
+ jdc.lang = self.appliEficas.langue
if units is not None:
jdc.recorded_units=units
jdc.old_recorded_units=units
#jaux=self.readercata.cata[0].JdC( procedure="",
jaux=self.readercata.cata.JdC( procedure="",
- appli=self,
+ appliEficas=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,
+ appliEficas=self,
cata=self.readercata.cata,
cata_ord_dico=self.readercata.cata_ordonne_dico,
jdc_pere=jaux,
# 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)
+ jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
if pourRun : jdc_formate=self.generator.textePourRun
if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
except ValueError as e:
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)
+ self.generator.writeComplet(fichier,self.jdc,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
# ---------------------------------------------
monEditeur=JDCEditorSsIhm(monEficasSsIhm,fichier)
fichierXML=fichier[:fichier.rfind(".")]+'.xml'
monEditeur.saveFile(fichierXML)
- print (fichierXML)
+ monEditeur.generator.writeDefault(fichierXML)
def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
self.listeMCAAjouter=[]
self.dictMCVenantDesBlocs={}
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)
+ #if hasattr (self, 'commandesLayout'):
+ # print (' j ajoute un spacer dans ', self.node.item.nom)
+ # spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
+ # self.commandesLayout.addItem(spacerItem)
def donneFocus(self):
for fenetre in self.listeFocus:
for node in self.node.children:
# 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)
self.listeFocus.append(node.fenetre)
def afficheOptionnel(self):
if self.editor.maConfiguration.closeOptionnel : return
liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
- listeSsLesPlus = []
- # ------
- genea =self.obj.getGenealogie()
- listeMcPossible = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico)
- listeMcPresents = self.obj.listeMcPresents()
- for MC in liste :
- if MC not in listeMcPresents : listeSsLesPlus.append(MC)
-
- #print (liste,liste_rouge,listeSsLesPlus,self)
self.monOptionnel=self.editor.widgetOptionnel
- #self.monOptionnel.afficheOptionnel(listeSsLesPlus,liste_rouge,self)
self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
- #self.monOptionnel.affiche(liste)
def ajouteMCOptionnelDesBlocs(self):
"""
"""
def __init__(self,node,editor,etape):
+
self.listeAffichageWidget=[]
self.inhibe=0
self.ensure=0
editor.inhibeSplitter=1
Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self)
+ spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self.verticalLayoutCommande.addItem(spacerItem)
editor.inhibeSplitter=0
- resize=0
- if node.item.getFr() != "" :
- self.labelDoc.setText(node.item.getFr())
- resize=1
- else : self.labelDoc.close()
-
- if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close()
+ # Gestion du nom de L OPER si il est nomme
+ 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)
- resize=resize*1
+ self.LENom.setText(etape.sdnom)
else :
- self.LENom.setText("")
- resize=resize*1
- if resize :
+ self.LENom.setText("")
+ if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
+ self.racine=self.node.tree.racine
+ if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True)
+
+ # Gestion de la doc de l objet
+ if node.item.getFr() != "" :
+ self.labelDoc.setText(node.item.getFr())
nouvelleSize=self.frameAffichage.height()+60
self.frameAffichage.setMinimumHeight(nouvelleSize)
self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize)
+ else : self.labelDoc.close()
-
-
+
+ # Gestion du nom de l etape
maPolice= QFont("Times", 10,)
self.setFont(maPolice)
self.labelNomCommande.setText(tr(self.obj.nom))
- self.editor.maConfiguration.closeAutreCommande=False
+ # Gestion du Frame d affichage des autres commandes
if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande()
else :
- try :
- self.bCatalogue.clicked.connect(self.afficheCatalogue)
- self.bAvant.clicked.connect(self.afficheAvant)
- self.bApres.clicked.connect(self.afficheApres)
- except :
- pass
+ self.bCatalogue.clicked.connect(self.afficheCatalogue)
+ self.bAvant.clicked.connect(self.afficheAvant)
+ self.bApres.clicked.connect(self.afficheApres)
- if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
-
if self.editor.maConfiguration.closeFrameRechercheCommande==True :
self.frameAffichage.close()
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)
self.setAcceptDrops(True)
self.etablitOrdre()
- if self.editor.code == "CARMELCND" :
- self.RBPoubelle.close() # JDC Fige
- return # Pas de MC Optionnels pour Carmel
-
if self.editor.maConfiguration.enleverPoubellePourCommande :
self.RBPoubelle.close() # JDC Fige
+
+ if self.editor.maConfiguration.pasDeMCOptionnels :
return # Pas de MC Optionnels pour Carmel
from .monWidgetOptionnel import MonWidgetOptionnel
if self.editor.widgetOptionnel!= None :
- self.monOptionnel=self.editor.widgetOptionnel
+ 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=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()
+ 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=self.editor.widgetOptionnel
+ self.afficheOptionnel()
#print "fin init de widget Commande"
# 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()
+ 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()
+ f = f.parentWidget()
if hasattr(f,'AAfficher') : f=f.AAfficher
if i != -1 : i=self.listeAffichageWidget.index(f)
else :i=self.listeAffichageWidget.index(f)
i=i+1
# si on boucle on perd l'ordre
- def afficheNieme(self,n):
- #print ('ds afficheNieme')
- self.listeAffichageWidget[n].setFocus(7)
-
def afficheSuivant(self,f):
#print ('ds afficheSuivant')
try :
def focusInEvent(self,event):
#print "je mets a jour dans focusInEvent de monWidget Commande "
- if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
self.afficheOptionnel()
else : self.recentre()
self.inhibeExpand=False
- def reafficheSeulement(self,nodeAReafficher,index):
- #print ('ds reafficheSeulement', nodeAReafficher)
- parentNodeAReafficher=nodeAReafficher.parentQt
- index=parentNodeAReafficher.commandesLayout.indexOf(nodeAReafficher)
- oldFenetre=nodeAReafficher.node.fenetre
- newWidget=nodeAReafficher.node.getPanelGroupe(parentNodeAReafficher,self,index)
- nodeAReafficher.node.fenetre=newWidget
- oldFenetre.setParent(None)
- oldFenetre.close()
- oldFenetre.deleteLater()
- #print ("fin pour " , self.node.item.nom)
def recentre(self):
s.horizontalScrollBar().setSliderPosition(self.avantH)
s.verticalScrollBar().setSliderPosition(self.avantV)
- def rendVisibleNoeud(self,node):
- self.f=node.fenetre
- #print "dans rendVisibleNoeud",self.f
- QTimer.singleShot(1, self.rendVisible)
-
def rendVisible(self):
- #print "dans rendVisible",self.f
QApplication.processEvents()
self.f.setFocus(7)
self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f)
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")
+ 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)
+ if nomIcone == "ast-red-square" : self.LENom.setDisabled(True)
self.LENom.setDisabled(False)
self.RBValide.setIcon(icon)
if valeur == None : return
if valeur == True : self.RBTrue.setChecked(True)
if valeur == False : self.RBFalse.setChecked(True)
-
+ if self.monSimpDef.homo == 'constant' :
+ if valeur == True : self.RBFalse.setDisabled(True)
+ else : self.RBTrue.setDisabled(True)
def boutonTrueClic(self):
SaisieValeur.LEvaleurPressed(self,True)
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())
self.resize(self.taille,self.height())
def initEditor(self,fichier = None,jdc = None, units = None,include=0):
if (hasattr(self, 'editor')) and self.editor != None :
- print ('un seul editeur par appli')
+ print ('un seul editeur par application')
sys.Exit()
#self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
self.editor = self.viewmanager.getNewEditorNormal()
def initEditorNormal(self,fichier = None,jdc = None, units = None,include=0):
if (hasattr(self, 'editor')) and self.editor != None :
- print ('un seul editeur par appli')
+ print ('un seul editeur par application')
sys.Exit()
#self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
self.editor = self.viewmanager.getNewEditorNormal()
self.cata = self.importCata(self.fic_cata)
# pointeur pour le dumpXSD
self.cata.JdC.module=self.cata
+ if self.cata.JdC.fichierSource == None : self.cata.JdC.fichierSource = self.cata.__file__
self.cata.modeleMetier = modeleMetier
if not self.cata :
try:
def __init__(self, definition=None, procedure=None, cata=None,
cata_ord_dico=None, parent=None,
- nom='SansNom', appli=None, context_ini=None, **args):
+ nom='SansNom', appliEficas=None, context_ini=None, **args):
self.procedure = procedure
self.definition = definition
self.cata = cata
self._build_reserved_kw_list()
self.cata_ordonne_dico = cata_ord_dico
self.nom = nom
- self.appli = appli
+ self.appliEficas = appliEficas
self.parent = parent
self.context_ini = context_ini
# On conserve les arguments supplementaires. Il est possible de passer
compte-rendu self.cr
"""
try:
- #if self.appli != None:
- # self.appli.afficheInfos( 'Compilation du fichier de commandes en cours ...')
+ #if self.appliEficas != None:
+ # self.appliEficas.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
if isinstance(sd, ASSD):
self.sds_dict[sdnom] = sd
- #if self.appli != None:
- # self.appli.afficheInfos(
+ #if self.appliEficas != None:
+ # self.appliEficas.afficheInfos(
# 'Interpretation du fichier de commandes en cours ...')
# On sauve le contexte pour garder la memoire des constantes
exec(self.proc_compile, self.g_context)
CONTEXT.unsetCurrentStep()
- if self.appli != None:
- self.appli.afficheInfos('')
+ if self.appliEficas != None:
+ self.appliEficas.afficheInfos('')
except InterruptParsingError:
# interrupt the command file parsing used by FIN to ignore the end
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
+ if self.appliEficas:
+ # Si le JDC est relie a une appliEficascation maitre, on delègue la
# recherche
- return self.appli.getFile(unite, fic_origine)
+ return self.appliEficas.getFile(unite, fic_origine)
else:
if unite != None:
if os.path.exists("fort." + str(unite)):
Met le mode de traitement a PAR LOT
ou a COMMANDE par COMMANDE
en fonction de la valeur du mot cle PAR_LOT et
- du contexte : application maitre ou pas
+ du contexte : appliEficascation maitre ou pas
En PAR_LOT='NON', il n'y a pas d'ambiguite.
d'analyse et juste avant la phase d'execution.
"""
if user_value:
self.parLot_user = parLot
- if self.appli == None:
- # Pas d application maitre
+ if self.appliEficas == None:
+ # Pas d appliEficascation maitre
self.parLot = parLot
else:
- # Avec application maitre
+ # Avec appliEficascation maitre
self.parLot = 'OUI'
def accept(self, visitor):
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, nomXML=None,
- sug=None,fenetreIhm=None, attribut=False, creeDesObjetsDeType = None):
+ sug=None,fenetreIhm=None, attribut=False, creeDesObjetsDeType = None, sortie='n'):
"""
Un mot-clé simple est caractérisé par les attributs suivants :
- type : cet attribut est obligatoire et indique le type de valeur attendue
- attribut : si projection XSD sur attribut
- creeDesObjetsDeType : type des UserASSD si siValide en cree
- nomXML : se projette en XSD avec un autre nom pour accepter les tirets
+ - sortie : force l ecriture dans le fichier de sortie (utile pour Telemac)
"""
#print (self)
#import traceback
self.attribut = attribut
self.creeDesObjetsDeType = creeDesObjetsDeType
self.nomXML = nomXML
+ self.sortie=sortie
def verifCata(self):
"""
self.getOptions()
return self.line
- def getTexte(self,appli=None):
+ def getTexte(self,appliEficas=None):
"""
Retourne le texte issu de l'analyse
"""
- def convert(self, outformat, appli=None):
+ def convert(self, outformat, appliEficas=None):
from Accas import A_BLOC, A_FACT, A_SIMP
try :
- self.dicoCasToCata = appli.readercata.dicoCasToCata
+ self.dicoCasToCata = appliEficas.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
+ self.dicoInverse = appliEficas.readercata.dicoInverse
+ self.dicoMC = appliEficas.readercata.dicoMC
+ self.Ordre_Des_Commandes = appliEficas.readercata.Ordre_Des_Commandes
try :
- self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+ self.TelemacdicoEn = appliEficas.readercata.TelemacdicoEn
except :
self.TelemacdicoEn = {}
print ('pas de TelemacdicoEn')
try :
- self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+ self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn
except :
self.DicoEnumCasFrToEnumCasEn = {}
print ('pas de DicoEnumCasFrToEnumCasEn')
- if appli.langue=='fr' :
+ if appliEficas.langue=='fr' :
#from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
for k in self.DicoEnumCasFrToEnumCasEn :
self.TelemacdicoEn[k]=self.DicoEnumCasFrToEnumCasEn[k]
# ne sert plus
- #appli.listeTelemac=self.dictSimp
- appli.listeTelemac={}
+ #appliEficas.listeTelemac=self.dictSimp
+ appliEficas.listeTelemac={}
if 'debut' in dicoComment :
commentaire="COMMENTAIRE("+repr(dicoComment['debut'])+")\n"
self.textePy=commentaire+self.textePy
- def convert(self, outformat, appli=None):
+ def convert(self, outformat, appliEficas=None):
# ici on ne fait rien
# on le fera a la creation du JDC
try:
s= s.replace('"<string>"','"<%s>"'%self.filename)
self.cr.fatal(tr("Erreur a l'evaluation :\n %s", s))
- def convert(self,outformat,appli=None):
+ def convert(self,outformat,appliEficas=None):
if outformat == 'dict':
return self.getdict()
else:
self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
return
- def convert(self,outformat,appli=None):
+ def convert(self,outformat,appliEficas=None):
if outformat == 'exec':
try:
#import cProfile, pstats, StringIO
#pr = cProfile.Profile()
#pr.enable()
- l= PARSEUR_PYTHON(self.text).getTexte(appli)
+ l= PARSEUR_PYTHON(self.text).getTexte(appliEficas)
#pr.disable()
#s = StringIO.StringIO()
def __init__(self,texte):
self.texte = texte
self.l_objets=None
- self.appli=None
+ self.appliEficas=None
def isAffectation(self,texte):
"""
if nouvelindice == len(texte) :
nouvelindice=nouvelindice -1
break
- if mot in self.appli.liste_simp_reel:
+ if mot in self.appliEficas.liste_simp_reel:
if valeur[0] != "'":
try :
clef=eval(valeur)
#cas du tuple de valeurs
valeur=texte[indiceC+1:nouvelindice+1]
indiceC=nouvelindice+1
- if mot in self.appli.liste_simp_reel:
+ if mot in self.appliEficas.liste_simp_reel:
valeur=valeur[1:-1]
for val in valeur.split(',') :
# Attention la derniere valeur est""
#index=epure1.find(u"=")
#epure2=epure1[index+1:len(epure1)].replace(u"_F(u","(u")
#dict_reel_concept=self.construitGenea(epure2)
- if self.appli:
- dict_reel_concept=construitGenea(epure2,self.appli.liste_simp_reel)
+ if self.appliEficas:
+ dict_reel_concept=construitGenea(epure2,self.appliEficas.liste_simp_reel)
else:
dict_reel_concept={}
if nomConcept == "sansnom" :
nomConcept = ""
if nomConcept !=None :
if len(dict_reel_concept) != 0:
- self.appli.dict_reels[nomConcept]=dict_reel_concept
+ self.appliEficas.dict_reels[nomConcept]=dict_reel_concept
- def getTexte(self,appli=None):
+ def getTexte(self,appliEficas=None):
"""
Retourne le texte issu de l'analyse
"""
- self.appli=appli
+ self.appliEficas=appliEficas
try:
#if 1:
if not self.l_objets : self.analyse()
#fichier = 'D:/Eficas_dev/Tests/zzzz100a.comm'
#fichier = 'U:/Eficas_dev/Tests/test_eval.comm'
texte = open(fichier,'r').read()
- class appli(object):
+ class appliEficas(object):
dict_reels={}
liste_simp_reel=["VALE","VALE_C","GROUP_MA","RAYON"]
- a=appli()
+ a=appliEficas()
compile(txt, '<string>', 'exec')
print((a.dict_reels))
--- /dev/null
+Title = 'toto'
+txt=''
+txt += "Title" + "= " + str(Title) + "\n"
+print txt
+
extensions=('.comm',)
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None, appli=None):
+ def gener(self,obj,format='brut',config=None, appliEficas=None):
try :
self.MachineDico = obj.MachineDico
extensions=('.comm',)
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None, appli=None):
+ def gener(self,obj,format='brut',config=None, appliEficas=None):
# Cette instruction genere le contenu du fichier de commandes (persistance)
texteModification=self.generTexteModif(obj)
"""
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None,appli=None,statut="Leger"):
+ def gener(self,obj,format='brut',config=None,appliEficas=None,statut="Leger"):
self.statut = statut
- self.langue = appli.langue
- try : self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+ self.langue = appliEficas.langue
+ try : self.TelemacdicoEn = appliEficas.readercata.TelemacdicoEn
except :
print ('Attention : pas de TelemacdicoEn declare')
self.TelemacdicoEn = {}
self.DicoEnumCasEnInverse[motClef]=d
if self.langue == 'fr' :
#from enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
- self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+ self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn
for motClef in self.DicoEnumCasFrToEnumCasEn:
d={}
for valTelemac in self.DicoEnumCasFrToEnumCasEn[motClef]:
self.DicoEnumCasEnInverse[motClef]=d
self.initDico()
# Pour Simplifier les verifs d ecriture
- if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac
+ if hasattr(appliEficas,'listeTelemac') : self.listeTelemac=appliEficas.listeTelemac
else : self.listeTelemac = ()
self.dicoCataToCas={}
try :
- self.dicoCasToCata=appli.readercata.dicoCasToCata
+ self.dicoCasToCata=appliEficas.readercata.dicoCasToCata
except :
print ('Attention pas de dicoCasToCata declare')
self.dicoCasToCata={}
# ecriture de Leger
#----------------------------------------------------------------------------------------
- def writeComplet(self,fn,jdc,config,appli) :
- jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Entier")
+ def writeComplet(self,fn,jdc,config,appliEficas) :
+ jdc_formate=self.gener(jdc,config=config,appliEficas=appliEficas,statut="Entier")
self.writeDefault(fn)
s=PythonGenerator.generMCSIMP(self,obj)
- # Attention pas sur --> ds certains cas non traite par MCFACT ?
- # a reflechir avec Yoann
- # ajouter le statut ?
- if self.statut == 'Leger' :
+ # si le statut = Leger on peut vouloir forcer l ecriture
+ if self.statut == 'Leger' and obj.definition.sortie == 'n':
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
extensions=('.comm',)
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
try :
self.texteXML=obj.toXml()
fp.write(self.text)
fp.close()
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
"""
Retourne une representation du JDC obj sous une forme qui est parametree par format.
Si format vaut 'brut', 'standard' ou 'beautifie', retourne le texte issu de generator
extensions=('.comm',)
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
self.initDico()
extensions=('.comm',)
#----------------------------------------------------------------------------------------
- def gener(self,obj,format='brut',config=None, appli=None):
+ def gener(self,obj,format='brut',config=None, appliEficas=None):
self.initDico()
"""
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
self.initDico()
self.text=PythonGenerator.gener(self,obj,format)
if obj.isValid() :self.genereExeMap()
"""
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
+ self.appliEficas=appliEficas
+ self.cata=self.appliEficas.readercata.cata
self.initDico()
self.text=PythonGenerator.gener(self,obj,format)
+ self.textePourRun =''
if obj.isValid() :self.genereExeMap()
return self.text
def genereExeMap(self) :
'''
Prepare le contenu du fichier de parametres python
- peut ensuite etre obtenu au moyen de la fonction getTubePy().
'''
- #nomSpec="spec_"+self.schema
- #self.texteEXE="from map.spec import %s;\n"%nomSpec
- #self.texteEXE+="node=%s.new();\n"%nomSpec
- #self.texteEXE+="node.getInputData();\n"
- #self.texteEXE+="node.setInputData(%s);\n"%self.dictValeur
- #self.texteEXE+="node.execute();\n"
- #self.texteEXE+="res=node.getOutputData();\n"
- #self.texteEXE = "%s\n"%self.dictValeur
self.texteEXE = ""
- self.txtEquations += ']\n'
self.texteEXE += self.genereCsv()
self.texteEXE += self.genereCalc()
self.texteEXE += self.txtNomCst
self.texteEXE += self.txtValNA
self.texteEXE += self.txtInitName
self.texteEXE += self.txtInitVal
- self.texteEXE += self.txtEquations
+ self.texteEXE += self.genereEquations()
+ self.textePourRun = self.texteEXE
+ #print (self.texteEXE)
txt = txtNom + txtVal
return txt
-
+ def genereEquations(self) :
+ txt="equation =["
+ index=0
+ for param in self.listInitialParameters:
+ print (param)
+ txt+= 'Dy[j*5 + '+str(index)+ '] = '
+ txt+=","
+ #if obj.nom in( 'initiation','propagation','termination','stabilization') :
+ # for objFils in obj.data:
+ # for mc in objFils.mcListe :
+ # self.txtEquations += "'" + mc.nom + "', "
+ txt=txt[0:-1]
+ txt+="]\n"
+ return txt
+
def genereCsv(self) :
txt = 'study_name = ' +self.dictValeur['SimulationName'] + "\n"
txt += 'csv_output_file_name = ' + self.dictValeur['OutPutFolder'] + '/c_solver_stiff_ode_1d_' + self.dictValeur['SimulationName']+ '.csv\n'
if not hasattr(self,'schema') : self.schema=""
self.dictParam={}
self.dictValeur={}
- self.txtEquations = "equation = [ "
def writeDefault(self, fn):
fileEXE = fn[:fn.rfind(".")] + '.py'
self.txtValNA += ']\n'
if obj.nom == 'InitialParameters' :
+ self.listInitialParameters =[]
self.txtInitName = "initial_Value_names = [ "
self.txtInitVal = "initial_Values = [ "
for objFils in obj.data:
for mc in objFils.mcListe :
self.txtInitName += "'" + mc.nom + "', "
self.txtInitVal += str(mc.valeur) + ", "
+ self.listInitialParameters.append(mc.nom)
self.txtInitName += ']\n'
self.txtInitVal += ']\n'
- if obj.nom in( 'initiation','propagation','termination','stabilization') :
- for objFils in obj.data:
- for mc in objFils.mcListe :
- self.txtEquations += "'" + mc.nom + "', "
return s
def generMCSIMP(self,obj) :
fin='fin CR format python pour python')
# Le texte au format python est stocke dans l'attribut text
self.text=''
- self.appli=None
+ self.appliEficas=None
def writefile(self,filename):
fp=open(filename,'w')
fp.write(self.text)
fp.close()
- def gener(self,obj,format='brut',config=None,appli=None):
+ def gener(self,obj,format='brut',config=None,appliEficas=None):
"""
Retourne une representation du JDC obj sous une
forme qui est parametree par format.
if obj == None :
print ('appel a gener avec None')
return
- self.appli=obj.getJdcRoot().appli
- #self.appli=obj.appli
+ self.appliEficas=appliEficas
liste= self.generator(obj)
#format='standard'
if format == 'brut':
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.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 self.appliEficas and clefobj in self.appliEficas.dict_reels:
+ if valeur in self.appliEficas.dict_reels[clefobj]:
+ s=self.appliEficas.dict_reels[clefobj][valeur]
elif type(valeur) == bytes or type(valeur) == str :
if valeur.find('\n') == -1:
self.commande = ""
self.dict_attributs = {}
- def gener(self,node,config=None,appli=None):
+ def gener(self,node,config=None,appliEficas=None):
"""
"""
self.node=node