X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2Feditor.py;h=aeb17793b26cc194b57240441d34d7f09f1de3ae;hb=e1844ffac8bfa7d564b0cc67c8dad0084b6ef4ad;hp=dc96afa1e2f0a0e4da6979b6620f3c3eee268c6b;hpb=df0e1a1f57e70d3d99dd7fb381845500c3d3c6dd;p=tools%2Feficas.git diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py old mode 100644 new mode 100755 index dc96afa1..aeb17793 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -20,10 +20,17 @@ import types,sys,os, re import subprocess import traceback -from PyQt4 import * -from PyQt4.QtGui import * -from PyQt4.QtCore import * + +from determine import monEnvQT5 +if monEnvQT5: + from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter + from PyQt5.QtGui import QPalette + from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize +else : + from PyQt4.QtGui import * + from PyQt4.QtCore import * import time +import pdb from datetime import date from Extensions.i18n import tr @@ -36,14 +43,16 @@ from Editeur import comploader from Editeur import Objecttreeitem from desBaseWidget import Ui_baseWidget from monViewTexte import ViewText +from monWidgetCreeParam import MonWidgetCreeParam import browser import readercata DictExtensions= {"MAP" : ".map"} + -class JDCEditor(Ui_baseWidget,QtGui.QWidget): +class JDCEditor(Ui_baseWidget,QWidget): # ----------------------------------------- # """ Editeur de jdc @@ -52,10 +61,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,6 +77,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): self.jdc = jdc self.first = True self.QWParent = QWParent + self.couleur = Qt.black if appli != None : self.salome = self.appliEficas.salome @@ -72,29 +87,46 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): # 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.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.affiche=self.appliEficas.CONFIGURATION.affiche + #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()) + self.appliEficas.resize(1800,self.appliEficas.height()) 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.splitterSizes = [320,1320,320] + self.oldSizeWidgetOptionnel = 320 self.liste_simp_reel=[] self.ihm="QT" + self.dicoNouveauxMC={} nameConf='configuration_'+self.code configuration=__import__(nameConf) @@ -111,6 +143,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,22 +162,29 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): self.node_selected = [] self.deplier = True self.message='' + if self.code in ['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','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 self.fileInfo = QFileInfo(self.fichier) self.fileInfo.setCaching(0) if jdc==None : - try : + # try : + if 1: self.jdc = self.readFile(self.fichier) - except : + #except : + else : print "mauvaise lecture" else : self.jdc=jdc @@ -160,16 +200,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 - print self.jdc.lang + 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: @@ -177,11 +218,71 @@ 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.splitterSizes = [320,1320,320] + self.splitter.setSizes(self.splitterSizes) + self.saveSplitterSizes() + + + #-------------------# 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): + #-------------------# + #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") + 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 = r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py' + #f = open( str(fileDico), 'wb') + #f.write("Dico =" + str(dico) ) + #f.close() + ### + + + path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs')) + sys.path.append(path1) + print 'in runPSEN_N1', dico + #from Run import run + #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): + #-------------------# + return self.get_Dico() + + #--------------------------------# def _newJDC( self ,units = None): #--------------------------------# @@ -194,6 +295,10 @@ 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 self.code == "CF" : texte = self._new_CF() # texte=self.newTexteCND jdc=self.readercata.cata[0].JdC( procedure =texte, @@ -323,12 +428,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() # @@ -353,9 +456,13 @@ 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' + if monEnvQT5 : + self.monExe.readyReadStandardOutput.connect( self.readFromStdOut) + self.monExe.readyReadStandardError.connect( self.readFromStdErr) + else : + self.connect(self.monExe, SIGNAL("readyReadStandardOutput()"), self.readFromStdOutQT4 ) + self.connect(self.monExe, SIGNAL("readyReadStandardError()"), self.readFromStdErrQT4 ) + exe='sh ' + nomFichier self.monExe.start(exe) self.monExe.closeWriteChannel() self.w.exec_() @@ -365,17 +472,30 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): except : pass - def readFromStdErr(self): + a=self.monExe.readAllStandardError() + self.w.view.append(str(a.data(),len(a))) + + def readFromStdErr(self) : + a=self.monExe.readAllStandardOutput() + self.w.view.append(str(a.data(),len(a))) + + def readFromStdErrQT4(self): a=self.monExe.readAllStandardError() self.w.view.append(QString.fromUtf8(a.data(),len(a))) ; - def readFromStdOut(self) : + def readFromStdOutQT4(self) : a=self.monExe.readAllStandardOutput() self.w.view.append(QString.fromUtf8(a.data(),len(a))) ; + #-----------------------# + def gestionParam(self): + #-----------------------# + w = MonWidgetCreeParam( self) + w.show() + #-----------------------# def viewJdcSource(self): #-----------------------# @@ -394,8 +514,16 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): def viewJdcRapport(self): #-----------------------# strRapport = unicode( self.jdc.report() ) + # on ajoute les regles + self._viewText(strRapport, "JDC_RAPPORT") + #-----------------------# + def viewJdcRegles(self): + #-----------------------# + if self.tree :self.tree.AppelleBuildLBRegles() + + #----------------# def closeIt(self): #----------------# @@ -411,10 +539,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): @@ -422,6 +550,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): #-------------------# @@ -459,17 +598,33 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): 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): @@ -524,11 +679,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): indexNoeudOuColler=0 pos='before' else : - indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler) + #indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler) + indexNoeudOuColler=self.getTreeIndex(noeudOuColler) try : noeudACopier=self.QWParent.noeud_a_editer[0] - indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier) + #indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier) + indexNoeudACopier=self.getTreeIndex(noeudACopier) except : QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe")) return @@ -570,7 +727,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): #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() @@ -670,23 +828,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) - + 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: @@ -702,20 +860,23 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): 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))) + 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): - #-------------------------------------# + #-----------------------------------------------------------# + def get_text_JDC(self,format,pourRun=0,formatLigne="beautifie"): + #-----------------------------------------------------------# if self.code == "MAP" and not(generator.plugins.has_key(format)): format = "MAP" if generator.plugins.has_key(format): + # 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: QMessageBox.critical(self, tr("Erreur a la generation"),str(e)) @@ -731,10 +892,25 @@ 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 generator.plugins.has_key('dicoImbrique'): + 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__.keys(): apply(JDCEditor.__dict__[fonction],(self,)) #------------# @@ -775,11 +951,11 @@ 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 + #try: + # commande="rm "+self.fichierMapInput + # os.system(commande) + #except : + # pass except Exception, e: print traceback.print_exc() @@ -844,9 +1020,9 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): #-----------------------------------------------------# if DictExtensions.has_key(self.appli.code) : 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);;" @@ -855,16 +1031,27 @@ 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) + if monEnvQT5 : 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, + if monEnvQT5 : + msgBox = QMessageBox(self) + msgBox.setWindowTitle(tr("Sauvegarde du Fichier")) + msgBox.setText(tr("Le fichier %s existe deja.", unicode(fn))) + msgBox.addButton(tr("&Ecraser"),0) + msgBox.addButton(tr("&Abandonner"),1) + abort=msgBox.exec_() + else : + abort = QMessageBox.warning(self, tr("Sauvegarde du Fichier"), tr("Le fichier %s existe deja.",str(fn)), tr("&Ecraser"), - self.trUtf8("&Abandonner")) + tr("&Abandonner")) if abort == 1 : return (0, "") return (1,fn) @@ -885,7 +1072,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 != "" : @@ -905,15 +1092,19 @@ 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 (not monEnvQT5) and avant.toLatin1()=="&Open": b.setText("Save") + if monEnvQT5 and avant=="&Open": b.setText("Save") + if monEnvQT5 : + mesFiltres= "input Map (*.input);;All Files (*)" + else : + mesFiltres=QStringList() + 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()) + if monEnvQT5 : fn=str(monDialog.selectedFiles()[0]) + else : fn=str(monDialog.selectedFiles()[0].toLatin1()) if fn == "" or fn == None : return if not fn.endswith(".input"): fn += ".input" @@ -929,6 +1120,41 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): (output, err) = p.communicate() + #-----------------# + def saveRunPSEN(self): + #-----------------# + print "saveRunPSEN" + self.saveFile() + return + 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 + + #print generator.plugins.has_key(self.format) + if generator.plugins.has_key(self.format): + # Le generateur existe on l'utilise + self.generator=generator.plugins[self.format]() + try : + self.generator.gener(self.jdc) + self.generator.writeDefault('') + except ValueError,e: + QMessageBox.critical(self, tr("Erreur a la generation"),str(e)) + 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: + # 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 "" + #print "HELLO" + + + + #-----------------------------------------# def cherche_Groupes(self): #-----------------------------------------# @@ -962,9 +1188,9 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): #else : pass - #-----------------------------------------# - def saveFile(self, path = None, saveas= 0): - #-----------------------------------------# + #-----------------------------------------------------------------# + def saveFile(self, path = None, saveas= 0,formatLigne="beautifie"): + #-----------------------------------------------------------------# """ Public slot to save the text to a file. @@ -973,7 +1199,7 @@ 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 @@ -986,19 +1212,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)) self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] - fn = unicode(QDir.convertSeparators(fn)) + fn = unicode(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: @@ -1012,6 +1238,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"): self.generator.writeDefault(fn) + if self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"): + self.generator.writeDefault(fn) if self.salome : self.appliEficas.addJdcInSalome( self.fichier) @@ -1021,6 +1249,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): #----------------------------------------------# @@ -1034,7 +1270,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") @@ -1057,14 +1293,15 @@ 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, " ") + if monEnvQT5 : fn=fn[0] ulfile = os.path.abspath(unicode(fn)) self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] @@ -1089,8 +1326,102 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): etape.build_includeInclude(texte) self.tree.racine.build_children() + #-------------------------------------# + 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=()): + #-------------------------------------# + 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 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): + #-------------------------------------------------------------# + 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 + + #----------------------------------------------------# + 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 ajoutVersionCataDsJDC(self,txt): @@ -1158,6 +1489,36 @@ 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="" + 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() ; CONTINGENCY_OPTIONS() ; OUTPUT_OPTIONS() ; " + texte="CASE_SELECTION() ; N_PROCESSING_OPTIONS() ; CONTINGENCY_OPTIONS() ; CONTINGENCY_SELECTION(); CONTINGENCY_PROCESSING(); " + return texte + + #---------------------------# + #---------------------------# def _newZCRACKS(self): #---------------------------# @@ -1176,7 +1537,8 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): QSfichier = QFileDialog.getOpenFileName(self.appliEficas, caption='Fichier Med', filter=extensions) - self.fichierMED=str(QSfichier.toLatin1()) + if monEnvQT5 : 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" @@ -1205,7 +1567,7 @@ 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" @@ -1218,6 +1580,81 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): self.nomMaillage="A_partir_de_SMESH" self.openfile.close() + #------------------------------------- + def saveSplitterSizes(self,event=None): + #------------------------------------ + if self.inhibeSplitter : return + if not hasattr(self,'splitter') : return + if self.splitterSizes[2] != 0 : self.oldSizeWidgetOptionnel = self.splitterSizes[2] + #print self.splitterSizes + #print self.splitter.sizes() + # PNPNPNPN parfoir self.splitter.sizes() a une longueur de 4... + nbAGarder=len(self.splitter.sizes()) + if nbAGarder > 3 : nbAGarder=3 + for i in range(nbAGarder): + self.splitterSizes[i] = self.splitter.sizes()[i] + self.splitter.widget(i).resizeEvent=self.saveSplitterSizes + #print self.splitter.sizes() + + + #----------------------------------------- + def restoreSplitterSizes(self,nbWigdet=3): + #---------------------------------------- + self.inhibeSplitter = 1 + self.i+=1 + if not(hasattr(self,'splitter')) : return + newSizes=self.splitterSizes[:nbWigdet] + self.splitter.setSizes(newSizes) + self.inhibeSplitter = 0 + + #------------------------ + def fermeOptionnel(self): + #------------------------ + if self.widgetOptionnel == None : return + + self.inhibeSplitter=1 + self.splitterSizes[1] = self.splitterSizes[1] + self.splitterSizes[2] + if self.splitterSizes[2]!=0 : self.oldSizeWidgetOptionnel = self.splitterSizes[2] + self.splitterSizes[2]=0 + + self.widgetOptionnel.setParent(None) + self.widgetOptionnel.close() + self.widgetOptionnel.deleteLater() + self.widgetOptionnel=None + self.inhibeSplitter=0 + self.restoreSplitterSizes(2) + + #------------------------ + def ajoutOptionnel(self): + #------------------------ + #print "ajoutOptionnel" + #print self.splitterSizes + self.splitterSizes[2] = self.oldSizeWidgetOptionnel + self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2] + self.inhibeSplitter=0 + 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'