X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2Feditor.py;h=ed534c90ba357b6457e7fbfaff9e8e7ad7cdb3be;hb=9bf98fc1cb51814c31679120598dc309e0802e31;hp=f37b1fa2d99d78c987d71bf0e4f7be98f523b5f8;hpb=1d010ff4e7d10301413f4760ae487291fcb2b2ca;p=tools%2Feficas.git diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py old mode 100644 new mode 100755 index f37b1fa2..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,16 +47,17 @@ from Editeur import session from Editeur import comploader from Editeur import Objecttreeitem from desBaseWidget import Ui_baseWidget -from monViewTexte import ViewText -from monWidgetParam import MonWidgetParam -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 @@ -53,13 +66,15 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None): #----------------------------------------------------------------------------------------------------------# - self.a=0 - 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 @@ -67,39 +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.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 - self.affiche_alpha=1 - if self.code in ['MAP',] : + 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) @@ -116,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) @@ -134,11 +174,11 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): self.node_selected = [] self.deplier = True self.message='' - if self.code in ['Adao','MAP'] : self.afficheApresInsert=True + if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True else : self.afficheApresInsert=False if self.code in ['TELEMAC',] : self.enteteQTree='premier' else : self.enteteQTree='complet' - if self.code in ['Adao','TELEMAC'] : self.affichePlie=True + if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True else : self.affichePlie=False self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue @@ -146,19 +186,16 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): #------- 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 : - if 1: + try : self.jdc = self.readFile(self.fichier) - #except : - else : - print "mauvaise lecture" + except : + print ("mauvaise lecture") else : self.jdc=jdc if self.jdc is not None and units is not None: @@ -173,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: @@ -190,14 +229,121 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): if (not self.jdc.isvalid()) and (not self.nouveau) and (self.appliEficas.ssIhm == False): self.viewJdcRapport() - if self.code=="TELEMAC" : print "kkkkkkkk" - if jdc_item: + if jdc_item and self.appliEficas.ssIhm==False: self.tree = browser.JDCTree( jdc_item, self ) - self.jdc.aReafficher=False 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): #--------------------------------# @@ -211,6 +357,12 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): 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, @@ -266,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 @@ -274,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]() @@ -326,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) @@ -368,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_() @@ -380,26 +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 = MonWidgetParam( self) + w = MonWidgetCreeParam( self) w.show() #-----------------------# def viewJdcSource(self): #-----------------------# + if self.fichier == None : return f=open(self.fichier,'r') texteSource=f.read() f.close() @@ -414,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): #----------------# @@ -432,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): @@ -443,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): #-------------------# @@ -476,14 +662,21 @@ 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): #---------------------# - print "je passe ici" if self.tree == None : return #self.tree.collapseAll() if self.deplier : @@ -543,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 = '' @@ -594,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() @@ -700,7 +885,7 @@ 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 #--------------------------------------------------# @@ -709,11 +894,11 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): """ 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,formatLigne=formatLigne) @@ -726,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,formatLigne="beautifie"): #-----------------------------------------------------------# - if self.code == "MAP" and not(generator.plugins.has_key(format)): format = "MAP" - if generator.plugins.has_key(format): + 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) + 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")) @@ -761,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): @@ -805,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): @@ -831,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): @@ -855,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): @@ -866,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);;" @@ -885,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) @@ -915,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 != "" : @@ -935,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" @@ -959,6 +1164,13 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): (output, err) = p.communicate() + #-----------------# + def saveRunPSEN(self): + #-----------------# + #print ("saveRunPSEN") + self.saveFile() + + #-----------------------------------------# def cherche_Groupes(self): #-----------------------------------------# @@ -970,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) @@ -992,6 +1204,44 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): #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"): #-----------------------------------------------------------------# @@ -1003,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' @@ -1016,18 +1265,18 @@ 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,formatLigne=formatLigne)): return (0, None) self.fichier = fn self.modified = False @@ -1042,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) @@ -1095,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 @@ -1117,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): @@ -1196,10 +1723,33 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget): return ligne + #---------------------------# + def _new_CF(self): + #---------------------------# + texte="CONDUITE_FORCEE();" + return texte + + #---------------------------# def _newTELEMAC(self): #---------------------------# - texte="INITIALIZATION();TIDE_PARAMETERS();INITIAL_STATE();NUMERICAL_PARAMETERS();PHYSICAL_PARAMETERS()" + #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 #---------------------------# @@ -1222,10 +1772,11 @@ 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" + if erreur != "" : print ("a traiter") texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n" texteSources="" texteCond="" @@ -1251,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): @@ -1265,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