X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2Feditor.py;h=ed534c90ba357b6457e7fbfaff9e8e7ad7cdb3be;hb=9bf98fc1cb51814c31679120598dc309e0802e31;hp=1dcfac5af32df132c45ecd389b78c6928a560dc2;hpb=2c5a8689b9c6cc46804fd268d416d1de2777059e;p=tools%2Feficas.git
diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py
old mode 100644
new mode 100755
index 1dcfac5a..ed534c90
--- a/InterfaceQT4/editor.py
+++ b/InterfaceQT4/editor.py
@@ -17,16 +17,28 @@
#
# 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
-from PyQt4 import *
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+
+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
@@ -35,15 +47,17 @@ from Editeur import session
from Editeur import comploader
from Editeur import Objecttreeitem
from desBaseWidget import Ui_baseWidget
-from monViewTexte import ViewText
-import browser
-import readercata
+from InterfaceQT4.monViewTexte import ViewText
+from monWidgetCreeParam import MonWidgetCreeParam
+from . import browser
+from . import readercata
-DictExtensions= {"MAP" : ".map"}
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.comm'}
+
-class JDCEditor(Ui_baseWidget,QtGui.QWidget):
+class JDCEditor(Ui_baseWidget,QWidget):
# ----------------------------------------- #
"""
Editeur de jdc
@@ -52,10 +66,15 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):
#----------------------------------------------------------------------------------------------------------#
- QtGui.QWidget.__init__(self,None)
+ QWidget.__init__(self,None)
+ self.i=0
self.setupUi(self)
- self.monOptionnel=None
+ 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
@@ -63,38 +82,63 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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 ????????"
+ print ("dans JDC pas d appli ????????")
# ces attributs sont mis a jour par definitCode appelee par newEditor
- self.code = self.appliEficas.CONFIGURATION.code
- self.affiche_alpha=1
- if self.code in ['MAP','Adao'] :
+ 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
- self.appliEficas.resize(1440,self.appliEficas.height())
- else :
- self.appliEficas.resize(2000,self.appliEficas.height())
+ 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)
@@ -111,6 +155,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
try:
self.CONFIGURATION.convert_module
+ #print self.CONFIGURATION.convert_module
_module = __import__(self.CONFIGURATION.convert_module)
info = _module.entryPoint()
convert.plugins.addEntryPoint(info)
@@ -129,13 +174,18 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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.mode_nouv_commande=self.readercata.mode_nouv_commande
self.nouveau=0
if self.fichier is not None: # fichier jdc fourni
@@ -145,7 +195,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
try :
self.jdc = self.readFile(self.fichier)
except :
- print "mauvaise lecture"
+ print ("mauvaise lecture")
else :
self.jdc=jdc
if self.jdc is not None and units is not None:
@@ -160,15 +210,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
self.nouveau=1
if self.jdc:
- self.jdc.appli = self
+ 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
- qApp.restoreOverrideCursor()
+ 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:
@@ -176,11 +228,122 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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:
+ 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)
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def runPSEN_N1(self):
+ #-------------------#
+
+
+ self.saveFile()
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
+
+ if not(self.jdc.isvalid()):
+ QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.generator.Dico
+
+ ###to delete
+ #fileDico = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ fileDico = os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+
+
+ #print ('in runPSEN_N1', dico)
+ from Run import run
+ run(dico)
+ #res,txt_exception=run(dico)
+ #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception)
+ #else : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception)
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_N1(self):
+ #-------------------#
+
+ path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+ sys.path.append(path1)
+
+
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.get_Dico() #generator.Dico
+
+
+ for k in dico['CONTINGENCY_PROCESSING']:
+ #print (k)
+ if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' :
+ newK=k.replace('___',' ')
+ l="'"+str(newK)+"'"
+ dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k]
+ del dico['CONTINGENCY_PROCESSING'][k]
+
+ ###to delete
+ fileDico = os.path.join(path1, 'dicoN1_process.py')
+ f = open( str(fileDico), 'w')
+ f.write("Dico =" + str(dico) )
+ f.close()
+ ###
+ return dico
+
+ #return self.get_Dico()
+
+ #-------------------# Pour execution avec output et error dans le bash
+ def process_VP(self):
+ #-------------------#
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.get_Dico() #generator.Dico
+ return dico
+
+
+ #--------------------------------#
+ def ajoutCommentaire(self):
+ #--------------------------------#
+ if self.tree.selectedItems()==[] :
+ QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne"))
+ return
+ noeudAvantCommentaire=self.tree.selectedItems()[0]
+ if noeudAvantCommentaire ==self.tree.racine :
+ self.tree.racine.append_child("COMMENTAIRE",pos=0)
+ return
+ noeudAvantCommentaire.addComment(True)
+
+
+
#--------------------------------#
def _newJDC( self ,units = None):
#--------------------------------#
@@ -193,6 +356,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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,
@@ -248,7 +418,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
Public slot to read the text from a file.
@param fn filename to read from (string or QString)
"""
- fn = unicode(fn)
+ fn = six.text_type(fn)
# ------------------------------------------------------------------------------------
# charge le JDC
@@ -256,7 +426,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
jdcName=os.path.basename(fn)
# Il faut convertir le contenu du fichier en fonction du format
- if convert.plugins.has_key( self.appliEficas.format_fichier_in ):
+ 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]()
@@ -308,7 +478,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#-----------------------#
# Il faut convertir le contenu du fichier en fonction du format
- if convert.plugins.has_key(self.format):
+ if self.format in convert.plugins :
# Le convertisseur existe on l'utilise
p=convert.plugins[self.format]()
p.readfile(file)
@@ -322,12 +492,10 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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"):
- #----------------------------------------------#
- w = ViewText( self.QWParent )
- w.setWindowTitle( caption )
- w.setText(txt)
+ #-----------------------------------------------------------------------#
+ def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
+ #--------------------------------------------------------------------#
+ w = ViewText( self.QWParent,self ,caption,txt,largeur,hauteur)
w.show()
#
@@ -352,9 +520,9 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
f=open(nomFichier,'w')
f.write(txt)
f.close()
- self.connect(self.monExe, SIGNAL("readyReadStandardOutput()"), self.readFromStdOut )
- self.connect(self.monExe, SIGNAL("readyReadStandardError()"), self.readFromStdErr )
- exe='sh /tmp/test.sh'
+ 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_()
@@ -364,20 +532,41 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
except :
pass
-
def readFromStdErr(self):
a=self.monExe.readAllStandardError()
- self.w.view.append(QString.fromUtf8(a.data(),len(a))) ;
+ 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()
@@ -392,9 +581,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#-----------------------#
def viewJdcRapport(self):
#-----------------------#
- strRapport = unicode( self.jdc.report() )
+ 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):
#----------------#
@@ -410,10 +607,10 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#----------------------------------------------#
if self.sb:
mapalette=self.sb.palette()
- from PyQt4.QtGui import QPalette
mapalette.setColor( QPalette.WindowText, couleur )
self.sb.setPalette( mapalette );
- self.sb.showMessage(QString.fromUtf8(message))#,2000)
+ self.sb.showMessage(message,4000)
+ self.couleur=couleur
#------------------------------#
def affiche_alerte(self,titre,message):
@@ -421,6 +618,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
# 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 init_modif(self):
#-------------------#
@@ -454,21 +662,37 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#---------------------#
def handleRechercher(self):
#---------------------#
- from monRecherche import DRecherche
+ 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()
+ #self.tree.collapseAll()
if self.deplier :
- self.tree.collapseItem(self.tree.topLevelItem(0))
+ #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):
@@ -512,32 +736,23 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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()
+ #self.handleEditPasteMultiple()
+ QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe"))
return
- noeudOuColler=self.node_selected[0]
- pos='after'
- if noeudOuColler == self.tree.racine:
- indexNoeudOuColler=0
- pos='before'
- else :
- indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler)
-
- try :
- noeudACopier=self.QWParent.noeud_a_editer[0]
- indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
- except :
- 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)
+ child=noeudOuColler.doPastePremier(noeudACopier)
else :
- child=noeudACopier.doPaste(noeudOuColler,pos)
+ 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 = ''
@@ -563,13 +778,14 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
# si possible on renomme l objet comme le noeud couper
if (self.QWParent.edit == "couper"):
- #try :
+ 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=noeudACopier.treeParent.children.index(noeudACopier)
+ indexNoeudACopier=self.getTreeIndex(noeudACopier)
noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
noeudACopier.treeParent.build_children()
@@ -669,23 +885,23 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
fichier = QFileDialog.getOpenFileName(self.appliEficas,
tr('Ouvrir Fichier'),
self.appliEficas.CONFIGURATION.savedir,
- self.appliEficas.trUtf8('Wrapper Files (*.xml);;''All Files (*)'))
+ tr('Wrapper Files (*.xml);;''All Files (*)'))
return fichier
- #----------------------------------#
- def writeFile(self, fn, txt = None):
- #----------------------------------#
+ #--------------------------------------------------#
+ def writeFile(self, fn, txt = None,formatLigne="beautifie"):
+ #--------------------------------------------------#
"""
Public slot to write the text to a file.
- @param fn filename to write to (string or QString)
+ @param fn filename to write to string
@return flag indicating success
"""
- fn = unicode(fn)
-
+ fn = six.text_type(fn)
+
if txt == None :
- txt = self.get_text_JDC(self.format)
+ txt = self.get_text_JDC(self.format,formatLigne=formatLigne)
eol = '\n'
if len(txt) >= len(eol):
if txt[-len(eol):] != eol:
@@ -695,29 +911,36 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
txt=self.ajoutVersionCataDsJDC(txt)
checksum=self.get_checksum(txt)
txt=txt+checksum
+ if self.code=="TELEMAC" : return 1
try:
- f = open(fn, 'wb')
+ f = open(fn, 'w')
f.write(txt)
f.close()
return 1
- except IOError, why:
- QMessageBox.critical(self, self.trUtf8('Save File'),
- self.trUtf8('The file %1 could not be saved.
Reason: %2')
- .arg(unicode(fn)).arg(str(why)))
+ except IOError as why:
+ if (self.appliEficas.ssIhm == False):
+ QMessageBox.critical(self, tr('Sauvegarde du Fichier'),
+ tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why))
+ else :
+ print (why)
return 0
- #-------------------------------------#
- def get_text_JDC(self,format,pourRun=0):
- #-------------------------------------#
- if self.code == "MAP" and not(generator.plugins.has_key(format)): format = "MAP"
- if generator.plugins.has_key(format):
+ #-----------------------------------------------------------#
+ def get_text_JDC(self,format,pourRun=0,formatLigne="beautifie"):
+ #-----------------------------------------------------------#
+ if self.code == "MAP" and not(format in generator.plugins): format = "MAP"
+ if format in generator.plugins:
+
# Le generateur existe on l'utilise
self.generator=generator.plugins[format]()
try :
- jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
+ jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas)
if pourRun : jdc_formate=self.generator.textePourRun
- except ValueError,e:
+ 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"))
@@ -730,17 +953,32 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
QMessageBox.critical( self, "Format non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
return ""
+ #----------------------#
+ def get_Dico(self):
+ #---------------------#
+ if 'dicoImbrique' in generator.plugins:
+ self.generator=generator.plugins['dicoImbrique']()
+ jdc_formate=self.generator.gener(self.jdc)
+ dico=self.generator.Dico
+ return dico
+ else :
+ self.affiche_infos(tr("Format %s non reconnu" , self.format),Qt.red)
+ QMessageBox.critical( self, "Format non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
+ return ""
+
+
#------------#
def run(self):
#------------#
fonction="run"+self.code
- if fonction in JDCEditor.__dict__.keys(): apply(JDCEditor.__dict__[fonction],(self,))
+ #print fonction
+ if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
#------------#
def saveRun(self):
#------------#
fonction="saveRun"+self.code
- if fonction in JDCEditor.__dict__.keys(): apply(JDCEditor.__dict__[fonction],(self,))
+ if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
#---------------#
def runMAP(self):
@@ -774,13 +1012,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#textePython="ls -l"
self._viewTextExecute( textePython,"map_run",".sh")
- try:
- commande="rm "+self.fichierMapInput
- os.system(commande)
- except :
- pass
- except Exception, e:
- print traceback.print_exc()
+ #try:
+ # commande="rm "+self.fichierMapInput
+ # os.system(commande)
+ #except :
+ # pass
+ except Exception as e:
+ print((traceback.print_exc()))
#-------------------#
def runZCRACKS(self):
@@ -800,8 +1038,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
commande="more "
textePython=(commande + self.fichierZcracksInput)
self._viewTextExecute( textePython,"run_zcracks",".sh")
- except Exception, e:
- print traceback.print_exc()
+ except Exception as e:
+ print((traceback.print_exc()))
#-------------------#
def runCARMELCND(self):
@@ -824,10 +1062,6 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
f.close()
commande="xterm -e sh "+nomFichier +"\n"
os.system(commande)
- #try :
- # self._viewTextExecute( textePython,"carmel_run",".sh")
- #except Exception, e:
- # print traceback.print_exc()
#-------------------#
def runCarmelCS(self):
@@ -835,17 +1069,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
try :
commande="runSession pilotyacsCS.py"
os.system(commande)
- except Exception, e:
- print traceback.print_exc()
+ except Exception as e:
+ print((traceback.print_exc()))
#-----------------------------------------------------#
def determineNomFichier(self,path,extension):
#-----------------------------------------------------#
- if DictExtensions.has_key(self.appli.code) :
+ if self.appli.code in DictExtensions:
chaine1="JDC (*"+DictExtensions[self.appli.code]+");;"
- extensions= self.trUtf8(chaine1+ "All Files (*)")
+ extensions= tr(chaine1+ "All Files (*)")
else :
- extensions= self.trUtf8("JDC (*.comm);;" "All Files (*)")
+ extensions= tr("JDC (*.comm);;" "All Files (*)")
if self.appli.code == "MAP" :
extensions = extensions + ";; Run (*.input);;"
@@ -854,16 +1088,20 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
tr("sauvegarde"), path,
extensions,None,
QFileDialog.DontConfirmOverwrite)
- if fn.isNull(): return (0, None)
+ if fn == None : return (0, None)
+ fn=fn[0]
+ if fn=='': return (0, None)
+
ext = QFileInfo(fn).suffix()
- if ext.isEmpty(): fn.append(extension)
+ if ext == '': fn+=extension
if QFileInfo(fn).exists():
- abort = QMessageBox.warning(self,
- tr("Sauvegarde du Fichier"),
- tr("Le fichier %s existe deja.",str(fn)),
- tr("&Ecraser"),
- self.trUtf8("&Abandonner"))
+ msgBox = QMessageBox(self)
+ msgBox.setWindowTitle(tr("Sauvegarde du Fichier"))
+ msgBox.setText(tr("Le fichier %s 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)
@@ -884,7 +1122,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
)
return
if hasattr(self.CONFIGURATION, "savedir"): path=self.CONFIGURATION.savedir
- else : path=os.environ['HOME']
+ else : path='C:/'
monNomFichier=""
if self.fichier is not None and self.fichier != "" :
@@ -904,15 +1142,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
for b in c.children():
if isinstance(b,QPushButton):
avant=b.text()
- if avant.toLatin1()=="&Open":
- b.setText("Save")
- mesFiltres=QStringList()
- mesFiltres << "input Map (*.input)" << "All Files (*)"
+ 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].toLatin1())
+ fn=str(monDialog.selectedFiles()[0])
if fn == "" or fn == None : return
if not fn.endswith(".input"):
fn += ".input"
@@ -928,6 +1164,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
(output, err) = p.communicate()
+ #-----------------#
+ def saveRunPSEN(self):
+ #-----------------#
+ #print ("saveRunPSEN")
+ self.saveFile()
+
+
#-----------------------------------------#
def cherche_Groupes(self):
#-----------------------------------------#
@@ -939,7 +1182,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#-----------------------------------------#
dicoCourant={}
format = self.appliEficas.format_fichier
- if generator.plugins.has_key(format):
+ 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)
@@ -961,9 +1204,47 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#else :
pass
- #-----------------------------------------#
- def saveFile(self, path = None, saveas= 0):
- #-----------------------------------------#
+ #-----------------------------------------------------------------#
+ 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.
@@ -972,12 +1253,11 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
the name of the saved file
"""
- #self.modified=1
+ self.modified=1
if not self.modified and not saveas:
return (0, None) # do nothing if text wasn't changed
- extension='.py'
- if DictExtensions.has_key(self.appli.code) :
+ if self.appli.code in DictExtensions :
extension=DictExtensions[self.appli.code]
else :
extension='.comm'
@@ -985,19 +1265,19 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
newName = None
fn = self.fichier
if self.fichier is None or saveas:
- if path is None:
- path=self.CONFIGURATION.savedir
+ if path is None: path=self.CONFIGURATION.savedir
bOK, fn=self.determineNomFichier(path,extension)
if bOK == 0 : return (0, None)
if fn == None : return (0, None)
- if fn.isNull(): return (0, None)
+ if fn== '' : return (0, None)
- ulfile = os.path.abspath(unicode(fn))
+ ulfile = os.path.abspath(six.text_type(fn))
self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
- fn = unicode(QDir.convertSeparators(fn))
+ fn = six.text_type(QDir.toNativeSeparators(fn))
newName = fn
- if not (self.writeFile(fn)): return (0, None)
+
+ if not (self.writeFile(fn,formatLigne=formatLigne)): return (0, None)
self.fichier = fn
self.modified = False
if self.fileInfo is None or saveas:
@@ -1011,6 +1291,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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)
@@ -1020,6 +1302,14 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
return (1, self.fichier)
#
+
+ #----------------------------------------------#
+ def sauveLigneFile(self):
+ #----------------------------------------------#
+ self.modified=1
+ return self.saveFile(formatLigne="Ligne")
+
+
#----------------------------------------------#
def saveFileAs(self, path = None,fileName=None):
#----------------------------------------------#
@@ -1033,7 +1323,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
if fileName != None :
self.fichier = fileName
return self.saveFile()
- return self.saveFile(path,1)
+ return self.saveFile(path,1,"beautifie")
@@ -1056,16 +1346,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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,QString.fromUtf8(texte))
+ QMessageBox.information( self, titre,texte)
fn = QFileDialog.getOpenFileName(self.appliEficas,
titre,
self.appliEficas.CONFIGURATION.savedir)
- if fn.isNull():
# ce retour est impose par le get_file d'I_JDC
- return None," "
+ if fn== '' : return None," "
+ if not fn : return (0, " ")
+ fn=fn[0]
- ulfile = os.path.abspath(unicode(fn))
+ 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
@@ -1078,18 +1369,293 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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.build_children()
+ #-----------------------------------#
+ 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)
+ etape.build_includeEtape(texte)
+ self.tree.racine.build_children()
+
+
+ #-------------------------------------#
+ def deleteEtape(self,etape):
+ #-------------------------------------#
+ # dans le JDC
+ self.jdc.suppentite(etape)
+
+ #-------------------------------------#
+ def deleteMC(self,etape,MCFils,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC != None : ouChercher.suppentite(monMC)
+ ouChercher.state='changed'
+ ouChercher.isvalid()
+
+ #-------------------------------------#
+ def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ monMC=etape.get_child(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isvalid()
+ #----------------------------------------------#
+ def ajoutMCFact(self,etape,MCFils,listeAvant=()):
+ #----------------------------------------------#
+ # dans le JDC
+ print ('ajoutMCFact')
+ ouChercher=etape
+ print (ouChercher)
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ print (mot)
+ print (ouChercher)
+ monMC=etape.get_child(ouChercher,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+ monMC.isvalid()
+ #-------------------------------------#
+ def getValeur(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+ if 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.set_valeur(valeur)
+ monMC.isvalid()
+
+ #-----------------------------------------------------------#
+ def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
+ #-----------------------------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ if isinstance (etape, str):
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == etape : ouChercher=e; break
+ if ouChercher==None : return
+
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+
+ monMC.definition.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
+ monMC.state='changed'
+ monMC.isvalid()
+
+ #-------------------------------------------------------------------#
+ def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------------------------------------#
+ # dans le JDC
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+
+ for mot in listeAvant :
+ try :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ try :
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ if monMC == None : return 0
+
+ if hasattr(monMC.definition,'into') :
+ if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
+ else : maListeDeValeur=monMC.definition.into
+ else :
+ return 0
+
+ monMC.state='changed'
+ return 1
+
+ #-------------------------------------#
+ def changeDefautDefMC(self,nomEtape,listeMC,valeurs):
+ #-------------------------------------#
+ # dans le MDD
+
+ #if isinstance (etape, str):
+ # for e in self.jdc.etapes:
+ # if e.nom == etape : etape=e; break
+ #if etape == None : return
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ if len(listeMC) > 1 :
+
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+
+ mcAccas=ouChercher.entites[listeMC[-1]]
+ mcAccas.defaut=valeurs
+ return 1
+
+ #------------------------------------------------#
+ def changeIntoDefMC(self,nomEtape,listeMC,valeurs):
+ #------------------------------------------------#
+ # dans le MDD
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+
+ if len(listeMC) > 1 :
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+ mcAccas=ouChercher.entites[listeMC[-1]]
+
+ if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
+ else : oldValeurs=None
+ if oldValeurs==valeurs : return 0
+
+ mcAccas.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
+ return 1
+
+ #-------------------------------------------------------------#
+ def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+ definitionEtape=getattr(self.jdc.cata[0],etape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ MCADetruire=ouChercher.entites[nomDuMC]
+ ouChercher.ordre_mc.remove(nomDuMC)
+ del ouChercher.entites[nomDuMC]
+ del self.dicoNouveauxMC[nomDuMC]
+
+
+ #-------------------------------------------------------------#
+ def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ Nouveau=A_SIMP.SIMP(typ,**args)
+ Nouveau.pere=ouChercher
+ Nouveau.nom=nomDuMC
+ #Nouveau.ordre_mc=[]
+ ouChercher.entites[nomDuMC]=Nouveau
+ ouChercher.ordre_mc.append(nomDuMC)
+ self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
+ #print self.dicoNouveauxMC
+
+ #---------------------------------------------------------------------#
+ def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
+ #---------------------------------------------------------------------#
+ # dans le MDD
+ print ('ajoutDefinitionMCFact', nomDuMC)
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ for mc in listeMC :
+ nomMC=mc[0]
+ typMC=mc[1]
+ argsMC=mc[2]
+ nouveauMC=A_SIMP.SIMP(typMC,**argsMC)
+ nouveauMC.nom=nomMC
+ args[nomMC]=nouveauMC
+ from Accas import A_FACT
+ nouveauFact=A_FACT.FACT(**args)
+ nouveauFact.pere=ouChercher
+ nouveauFact.nom=nomDuMC
+ from Editeur.autre_analyse_cata import traite_entite
+ traite_entite(nouveauFact,[])
+ ouChercher.entites[nomDuMC]=nouveauFact
+ ouChercher.ordre_mc.append(nomDuMC)
+ self.dicoNouveauxFact[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,listeMC,args)
+ #print self.dicoNouveauxMC
+
+ #----------------------------------------------------#
+
+ #----------------------------------------------------#
+ def changeIntoMCandSet(self,etape,listeMC,into,valeurs):
+ #----------------------------------------------------#
+ # dans le MDD et le JDC
+
+ self.changeIntoDefMC(etape,listeMC,into)
+
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+
+ ouChercher = etape
+ for mot in listeMC[:-1] :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ MCFils=listeMC[-1]
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= etape.addentite(MCFils)
+
+ monMC.definition.into=into
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isvalid()
#-------------------------------------#
def ajoutVersionCataDsJDC(self,txt):
@@ -1157,6 +1723,37 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
return ligne
+ #---------------------------#
+ def _new_CF(self):
+ #---------------------------#
+ texte="CONDUITE_FORCEE();"
+ return texte
+
+
+ #---------------------------#
+ def _newTELEMAC(self):
+ #---------------------------#
+ #texte="INITIALIZATION();BOUNDARY_CONDITIONS();GENERAL_PARAMETERS();PHYSICAL_PARAMETERS();NUMERICAL_PARAMETERS();"
+ texte="COMPUTATION_ENVIRONMENT();HYDRO();GENERAL_PARAMETERS();NUMERICAL_PARAMETERS()"
+ #texte="TRACERS();"
+ return texte
+
+ #---------------------------#
+ def _newPSEN(self):
+ #---------------------------#
+ texte="DIRECTORY() ; PSSE_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
+ #texte=""
+ return texte
+
+ #---------------------------#
+ def _newPSEN_N1(self):
+ #---------------------------#
+ texte="CASE_SELECTION();N_PROCESSING_OPTIONS();CONTINGENCY_OPTIONS();CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
+ texte="CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
+ return texte
+
+ #---------------------------#
+
#---------------------------#
def _newZCRACKS(self):
#---------------------------#
@@ -1175,28 +1772,17 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
QSfichier = QFileDialog.getOpenFileName(self.appliEficas,
caption='Fichier Med',
filter=extensions)
- self.fichierMED=str(QSfichier.toLatin1())
+ 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"
- #else :
- # from monBoutonSalome import MonBoutonSalome
- # desBoutonSalome = MonBoutonSalome()
- # icon = QIcon()
- # icon = QIcon(self.appli.repIcon+"/image240.png")
- # desBoutonSalome.pushButton.setIcon(icon)
- # desBoutonSalome.setMinimumSize(QtCore.QSize(453, 103))
-
- # self.openfile=QFileDialog(self.appli,caption='Fichier Med',filter=extensions)
- # self.openfile.layout().addWidget(desBoutonSalome)
- # self.connect(desBoutonSalome.pushButton,SIGNAL("clicked()"),self.BoutonSalomePressed)
- # self.connect(self.openfile,SIGNAL("fileSelected(QString)"),self.BoutonFileSelected)
- # r=self.openfile.exec_()
+ 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("
@@ -1204,7 +1790,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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"
- texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut
+ 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
@@ -1215,10 +1802,10 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
#---------------------------#
QSfichier=self.openfile.selectedFiles()[0]
- self.fichierMED=str(QSfichier.toLatin1())
+ self.fichierMED=str(QSfichier)
from acquiertGroupes import getGroupes
erreur,self.listeGroupes,self.nomMaillage=getGroupes(self.fichierMED)
- if erreur != "" : print "a traiter"
+ if erreur != "" : print ("a traiter")
#-----------------------------
def BoutonSalomePressed(self):
@@ -1229,6 +1816,105 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
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