+
+ #------------#
+ def run(self):
+ #------------#
+ fonction="run"+self.code
+ if fonction in JDCEditor.__dict__.keys(): apply(JDCEditor.__dict__[fonction],(self,))
+
+ #------------#
+ def saveRun(self):
+ #------------#
+ fonction="saveRun"+self.code
+ if fonction in JDCEditor.__dict__.keys(): apply(JDCEditor.__dict__[fonction],(self,))
+
+ #---------------#
+ def runMAP(self):
+ #---------------#
+
+ if not(self.jdc.isvalid()):
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP"))
+ return
+ if len(self.jdc.etapes) != 1 :
+ QMessageBox.critical( self, tr("Execution impossible "),tr("le JDC doit contenir un et un seul composant"))
+ return
+ if self.modified or self.fichier==None :
+ self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
+ texte=self.get_text_JDC("MAP")
+ self.writeFile( self.fichierMapInput, txt = texte)
+ else :
+ self.fichierMapInput=self.fichier
+ composant=self.jdc.etapes[0].nom.lower()[0:-5]
+
+
+ # :TRICKY: to determine if a component requires SALOME, loads the component from Eficas catalog
+ # then instantiate corresponding class and call getUseSalome() method
+ try:
+ from mapengine.spec import factory
+ mapComponent = factory.new(composant)[0]
+
+ command = "map"
+ if mapComponent.getUseSalome():
+ command += " -r sappli"
+ textePython=(command + " run -n "+composant +" -i "+self.fichierMapInput)
+
+ #textePython="ls -l"
+ self._viewTextExecute( textePython,"map_run",".sh")
+ try:
+ commande="rm "+self.fichierMapInput
+ os.system(commande)
+ except :
+ pass
+ except Exception, e:
+ print traceback.print_exc()
+
+ #-------------------#
+ def runZCRACKS(self):
+ #-------------------#
+ if not(self.jdc.isvalid()):
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
+ return
+ if self.modified or self.fichier==None :
+ #if 1:
+ self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p")
+ texte=self.get_text_JDC("ZCRACKS",pourRun=1)
+ self.writeFile( self.fichierZcracksInput, txt = texte)
+ else :
+ self.fichierZcracksInput=self.fichier
+ try :
+ #commande ="Zrun -zp "
+ commande="more "
+ textePython=(commande + self.fichierZcracksInput)
+ self._viewTextExecute( textePython,"run_zcracks",".sh")
+ except Exception, e:
+ print traceback.print_exc()
+
+ #-------------------#
+ def runCARMELCND(self):
+ #-------------------#
+ #if not(self.jdc.isvalid()):
+ # QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
+ # return
+ if self.modified or self.fichier==None :
+ QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution "))
+ return
+ if not hasattr(self,'generator'): texte=self.get_text_JDC(self.format)
+ from PrepareRunCarmel import prepareRunCarmel
+ fichierGenerique=os.path.basename(self.fichier).split(".")[0]
+ repMed=os.path.dirname(self.fichier)
+ repExeCarmel=self.generator.get_repExeCarmel()
+ textePython=prepareRunCarmel(repExeCarmel,repMed,fichierGenerique)
+ nomFichier = self.__generateTempFilename("carmel_run", suffix = ".sh")
+ f=open(nomFichier,'w')
+ f.write(textePython)
+ f.close()
+ commande="xterm -e sh "+nomFichier +"\n"
+ os.system(commande)
+ #try :
+ # self._viewTextExecute( textePython,"carmel_run",".sh")
+ #except Exception, e:
+ # print traceback.print_exc()
+
+ #-------------------#
+ def runCarmelCS(self):
+ #-------------------#
+ try :
+ commande="runSession pilotyacsCS.py"
+ os.system(commande)
+ except Exception, e:
+ print traceback.print_exc()
+
+ #-----------------------------------------------------#
+ def determineNomFichier(self,path,extension):
+ #-----------------------------------------------------#
+ if DictExtensions.has_key(self.appli.code) :
+ chaine1="JDC (*"+DictExtensions[self.appli.code]+");;"
+ extensions= self.trUtf8(chaine1+ "All Files (*)")
+ else :
+ extensions= self.trUtf8("JDC (*.comm);;" "All Files (*)")
+
+ if self.appli.code == "MAP" :
+ extensions = extensions + ";; Run (*.input);;"
+
+ fn = QFileDialog.getSaveFileName( self,
+ tr("sauvegarde"), path,
+ extensions,None,
+ QFileDialog.DontConfirmOverwrite)
+ if fn.isNull(): return (0, None)
+ ext = QFileInfo(fn).suffix()
+ if ext.isEmpty(): fn.append(extension)
+
+ if QFileInfo(fn).exists():
+ abort = QMessageBox.warning(self,
+ tr("Sauvegarde du Fichier"),
+ tr("Le fichier <b>%s</b> existe deja.",str(fn)),
+ tr("&Ecraser"),
+ self.trUtf8("&Abandonner"))
+ if abort == 1 : return (0, "")
+ return (1,fn)
+
+ #-----------------#
+ def saveRunMAP(self):
+ #-----------------#
+ extension=".input"
+ if not(self.jdc.isvalid()):
+ QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
+ tr("Un JdC valide est necessaire pour creer un .input")
+ )
+ return
+ try :
+ composant=self.jdc.etapes[0].nom.lower()[0:-5]
+ except :
+ QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
+ tr("Choix du composant obligatoire")
+ )
+ return
+ if hasattr(self.CONFIGURATION, "savedir"): path=self.CONFIGURATION.savedir
+ else : path=os.environ['HOME']
+
+ monNomFichier=""
+ if self.fichier is not None and self.fichier != "" :
+ maBase=str(QFileInfo(self.fichier).baseName())+".input"
+ monPath=str(QFileInfo(self.fichier).absolutePath())
+ monNomFichier=os.path.join(monPath,maBase)
+ elif hasattr(self,'monNomFichierInput'):
+ monNomFichier=self.monNomFichierInput
+
+
+ monDialog=QFileDialog(self.appliEficas)
+ monDialog.setDirectory (path)
+ monDialog.setWindowTitle ("Save")
+
+ for c in monDialog.children():
+ if isinstance(c,QDialogButtonBox):
+ for b in c.children():
+ if isinstance(b,QPushButton):
+ avant=b.text()
+ if avant.toLatin1()=="&Open":
+ b.setText("Save")
+ 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 fn == "" or fn == None : return
+ if not fn.endswith(".input"):
+ fn += ".input"
+ self.monNomFichierInput=fn
+
+ if not hasattr(self, 'fichierMapInput') or not self.fichierMapInput or not os.path.exists(self.fichierMapInput):
+ self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
+ texte=self.get_text_JDC("MAP")
+ self.writeFile( self.fichierMapInput, txt = texte)
+
+ cmd = ("map gen -t dat -n " + composant + " -i " + self.fichierMapInput + " -o " + fn)
+ p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
+ (output, err) = p.communicate()
+
+
+ #-----------------------------------------#
+ def cherche_Groupes(self):
+ #-----------------------------------------#
+ listeMA,listeNO=self.get_text_JDC("GroupMA")
+ return listeMA,listeNO
+
+ #-----------------------------------------#
+ def cherche_Dico(self):
+ #-----------------------------------------#
+ dicoCourant={}
+ format = self.appliEficas.format_fichier
+ if generator.plugins.has_key(format):
+ # Le generateur existe on l'utilise
+ self.generator=generator.plugins[format]()
+ jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
+ dicoCourant=self.generator.dico
+ return dicoCourant
+
+
+