1 # -*- coding: utf-8 -*-
2 #_____________________________________
4 import sys, os, re,types
6 from PyQt5.QtWidgets import QMessageBox
7 from PyQt5.QtWidgets import QApplication
10 from salome.kernel.logger import Logger
11 logger = Logger( "EFICAS_SRC.EFICASGUI.eficasSalome.py" )
14 # eficasConfig definit le EFICAS_ROOT
15 # lignes de path ajoutees pour acceder aux packages python du
16 # logiciel Eficas. Le package Aster est ajoute explicitement pour
17 # acceder au module prefs.py. A
18 # ajout de InterfaceQT4 pour permettre l acces a la fenetre Option
19 sys.path[:0]=[eficasConfig.eficasPath,
20 os.path.join( eficasConfig.eficasPath,'Editeur'),
21 os.path.join( eficasConfig.eficasPath,'UiQT5'),
22 os.path.join( eficasConfig.eficasPath,'InterfaceQT4'),
23 #os.path.join( eficasConfig.eficasPath,'Extensions'),
24 eficasConfig.eficasPath,
29 from InterfaceQT4 import qtEficas
33 sgPyQt = SalomePyQt.SalomePyQt()
34 langue=str(sgPyQt.stringSetting("language","language"))
37 from salome.kernel.studyedit import getStudyEditor
40 # couleur pour visualisation des geometries
42 COLORS = colors.ListeColors
43 LEN_COLORS = len( COLORS )
45 from Extensions import localisation
46 localisation.localise(None,langue)
49 class MyEficas( qtEficas.Appli ):
51 Classe de lancement du logiciel EFICAS dans SALOME
52 Cette classe specialise le logiciel Eficas par l'ajout de:
53 a)la creation de groupes de mailles dans le composant SMESH de SALOME
54 b)la visualisation d'elements geometrique dans le coposant GEOM de SALOME par selection dans EFICAS
56 def __init__( self, parent, code = None, fichier = None, module = "EFICAS",
57 version = None, componentName = "Eficas",multi=False):
61 @param parent: widget Qt parent
63 @param code: catalogue a lancer
65 @param fichier: chemin absolu du fichier eficas a ouvrir a das le lancement. optionnel
68 dictPathCode={'ADAO':'Adao','MT':'MT','CARMEL3D':'Carmel3D', 'CF':'CF',
69 'SPECA':'SPECA','MAP':'MAP','SEP':'SEP', 'TELEMAC':'Telemac3'}
70 if code in dictPathCode.keys():
71 pathCode=dictPathCode[code]
72 sys.path[:0]=[os.path.join(eficasConfig.eficasPath,pathCode)]
74 if Editeur.__dict__.has_key( 'session' ):
75 from Editeur import session
79 eficasArg += [ fichier ]
81 eficasArg += [ "-c", version ]
84 session.parse( eficasArg )
86 self.editor = getStudyEditor() # Editeur de l'arbre d'etude
88 qtEficas.Appli.__init__( self,code=code,salome=1,parent=parent,multi=multi,langue=langue)
90 #--------------- specialisation EFICAS dans SALOME -------------------
92 self.salome = True #active les parties de code specifique dans Salome( pour le logiciel Eficas )
93 self.module = module #indique sous quel module dans l'arbre d'etude ajouter le JDC.
94 self.componentName = componentName
96 # donnee pour la creation de groupe de maille
97 self.mainShapeNames = {} #dictionnaire pour gerer les multiples fichiers possibles ouverts par
98 #eficas ( cle = identifiant du JDC ), une mainshape par fichier ouvert.
99 #dictionnaire des sous-geometrie de la geometrie principale ( cle = entry, valeur = name )
100 #----------------------------------------------------------------------
102 self.icolor = 0 # compteur pour memoriser la couleur courante
106 def closeEvent(self,event):
111 if hasattr(self,'readercata') :
120 from Extensions.param2 import originalMath
121 #Numeric.cos=originalMath.numeric_ncos
122 #Numeric.sin=originalMath.numeric_nsin
123 #Numeric.array=originalMath.numeric_narray
124 #math.sin=originalMath.sin
125 #math.cos=originalMath.cos
126 #math.sqrt=originalMath.sqrt
127 #math.ceil=originalMath.ceil
128 #math.pi=originalMath.pi
129 originalMath.toOriginal()
136 # ___________________________ Methodes de l ex Pal __________________________________
138 #----------------------------------------------------------------
139 def getCORBAObjectInComponent( self, entry, composant ):
140 #----------------------------------------------------------------
142 mySO = self.editor.study.FindObjectID(entry)
144 object = mySO.GetObject()
146 myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", composant)
147 SCom = self.editor.study.FindComponent( composant )
148 print myComponent , SCom
149 self.editor.builder.LoadWith( SCom , myComponent )
150 object = mySO.GetObject()
152 logger.debug("selectedEntry: An error occurs")
156 #----------------------------------------------
157 def giveMeshGroups( self,entry,label1,typeMesh):
158 #----------------------------------------------
163 monMaillage =self.getCORBAObjectInComponent(entry,"SMESH")
164 if monMaillage != None : # selection d'un groupe de SMESH
165 if monMaillage._narrow(SMESH.SMESH_Mesh):
166 mailSO = self.editor.study.FindObjectID(entry)
167 if mailSO == None : return names, msg
170 subIt = self.editor.study.NewChildIterator(mailSO)
172 subSO = subIt.Value()
175 if (subSO.GetName()[0:9]!=label1) : continue
176 subSSMeshit=self.editor.study.NewChildIterator(subSO)
177 while subSSMeshit.More():
178 subSSMeshSO = subSSMeshit.Value()
180 if subSSMeshSO.GetObject()._narrow(typeMesh):
181 names.append(subSSMeshSO.GetName())
183 msg=entry + self.tr(" n est pas un maillage")
185 logger.debug(' giveMeshGroups pb avec ( entry = %s ) ' %entry )
186 msg=' giveMeshGroup pb avec ( entry = %s ) '+ entry
189 #-------------------------------------
190 def isMeshGroup( self,entry):
191 #-------------------------------------
195 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
196 if monObjet != None : # selection d'un groupe de SMESH
197 if monObjet._narrow(SMESH.SMESH_GroupBase):
200 logger.debug(' isMeshGroup pb avec ( entry = %s ) ' %entry )
203 #-------------------------------------
204 def isMesh( self,entry):
205 #-------------------------------------
209 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
210 if monObjet != None : # selection d'un groupe de SMESH
211 if monObjet._narrow(SMESH.SMESH_Mesh):
214 logger.debug(' isMesh pb avec ( entry = %s ) ' %entry )
217 #-------------------------------------
218 def getMesh( self,entry):
219 #-------------------------------------
224 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
225 if monObjet != None : # selection d'un groupe de SMESH
226 meshObject=monObjet._narrow(SMESH.SMESH_Mesh)
228 logger.debug(' pb avec ( entry = %s ) ' %entry )
231 #-------------------------------------
233 #-------------------------------------
234 def isShape( self,entry):
235 #-------------------------------------
239 monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
240 if monObjet != None : # selection d'un objet GEOM
241 if monObjet._narrow(GEOM.GEOM_Object ):
244 logger.debug(' isShape pb avec ( entry = %s ) ' %entry )
247 #-----------------------------------------------------------------
248 def getMainShapeEntry(self,entry):
249 #-----------------------------------------------------------------
252 mainShapeEntry = entry.split(':')[:4]
253 if len(mainShapeEntry) == 4:
254 strMainShapeEntry = '%s:%s:%s:%s'%tuple(mainShapeEntry)
255 if self.isMainShape(strMainShapeEntry):
256 result = strMainShapeEntry
258 logger.debug( 'Erreur pour SalomeStudy.getMainShapeEntry( entry = %s ) ' %entry )
262 #-----------------------------------------------------------------
263 def isMainShape(self,entry):
264 #-----------------------------------------------------------------
267 monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
269 shape = monObjet._narrow( GEOM.GEOM_Object )
270 if shape.IsMainShape():
273 logger.debug( 'Errreur pour SalomeStudy.isMainShape( entry = %s ) ' %entry )
278 #-----------------------------------------------------------------
279 def ChercheType( self, shape ):
280 #-----------------------------------------------------------------
281 tgeo = shape.GetShapeType()
282 geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
283 #print dir(self.editor.study)
284 groupIMeasureOp = geomEngine.GetIMeasureOperations(self.editor.study._get_StudyId())
285 if tgeo != "COMPOUND" : return tgeo
287 strInfo = groupIMeasureOp.WhatIs( shape )
289 l = strInfo.split('\n')
292 nom, valeur = couple.split(':')
293 dictInfo[ nom.strip() ] = valeur.strip()
295 ordre = [ "COMPSOLID", "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX" ]
297 if dictInfo[ t ] != '0':
303 #-----------------------------------------------------------------
304 def selectShape( self, editor, entry, kwType = None ):
305 #-----------------------------------------------------------------
307 selection sous-geometrie dans Salome:
308 -test1) si c'est un element sous-geometrique .
309 -test2) si appartient a la geometrie principale.
311 name, msgError = '',''
312 mySO = self.editor.study.FindObjectID(entry)
314 return name, msgError
315 object = mySO.GetObject()
317 return name, msgError
320 shape = object._narrow( GEOM.GEOM_Object )
322 return name, msgError
324 tGeo=self.ChercheType(shape)
326 return name, msgError
327 #if kwType == "GROUP_NO" and str(tGeo) != "VERTEX":
328 # name,msgError = '',"la selection n est pas un Vertex"
329 # return name, msgError
330 if kwType == "GROUP_MA" and str(tGeo) == "VERTEX":
331 name, msgError = '', "la selection n est pas un groupe de maille"
332 return name, msgError
334 mainShapeEntry = self.getMainShapeEntry( entry )
335 if self.mainShapeNames.has_key( editor ):
336 #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
337 if self.mainShapeNames[editor] == mainShapeEntry:
340 msgError="Le groupe reference la geometrie " + mainShapeEntry + " et non " + self.mainShapeNames[editor]
342 self.mainShapeNames[editor] = mainShapeEntry
345 return name, msgError
348 #-----------------------------------------------------------------
349 def selectMeshGroup( self, editor, selectedEntry, kwType = None ):
350 #-----------------------------------------------------------------
352 selection groupe de maille dans Salome:
353 -test 1) si c'est un groupe de maille
354 -test 2) si le maillage fait reference a la geometrie principale
356 name, msgError = '',''
358 mySO=self.editor.study.FindObjectID(selectedEntry )
359 from salome.smesh.smeshstudytools import SMeshStudyTools
360 monSMeshStudyTools=SMeshStudyTools(self.editor)
361 meshSO = monSMeshStudyTools.getMeshFromGroup(mySO)
362 if meshSO == None : return name, msgError
364 # on verifie que l entree selectionnee a le bon type (NODE ou EDGE...)
366 groupObject = self.getCORBAObjectInComponent(selectedEntry,"SMESH")
368 logger.debug("selectedMeshEntry: An error occurs")
371 aGroup = groupObject._narrow( SMESH.SMESH_GroupBase )
372 if aGroup: tGroup = aGroup.GetType()
374 if kwType == "GROUP_NO" and tGroup != SMESH.NODE:
375 msgError = self.tr("GROUP_NO attend un groupe de noeud")
376 return name, msgError
377 elif kwType == "GROUP_MA" and tGroup == SMESH.NODE:
378 msgError = self.tr("GROUP_MA attend un point goupe de maille")
379 return name, msgError
381 # on cherche la shape associee
382 #PN PN mesh_Object est un SOject
383 meshObject = meshSO.GetObject()
384 mesh = meshObject._narrow( SMESH.SMESH_Mesh )
385 if mesh: #c'est bien un objet maillage
386 shape = mesh.GetShapeToMesh()
388 ior = salome.orb.object_to_string( shape )
390 sObject = self.editor.study.FindObjectIOR( ior )
391 mainShapeID = sObject.GetID()
395 return name, self.tr("Type d objet non permis")
397 # on cherche si la shape associee est la bonne
398 #print "------------- mainShapeID" , mainShapeID
399 if self.mainShapeNames.has_key( editor ):
400 #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
401 if self.mainShapeNames[editor] == mainShapeID:
404 msgError=self.tr("Le groupe reference la geometrie ") + mainShapeID + self.tr(" et non ") + self.mainShapeNames[editor]
406 self.mainShapeNames[editor] = mainShapeID
409 #print "------------------------------ name :", name
410 #print "------------------------------ name :", name
411 #print "------------------------------ name :", name
415 def displayMeshGroups(self, meshGroupName):
417 visualisation group de maille de nom meshGroupName dans salome
419 ok, msgError = False, ''
422 sg = salome.ImportComponentGUI('SMESH')
423 meshGroupEntries = []
425 selMeshGroupEntry = None
427 # liste des groupes de maille de nom meshGroupName
428 listSO = self.editor.study.FindObjectByName(meshGroupName, "SMESH")
430 #print "liste des groupes de maille de nom %s: "%(meshGroupName), listSO
433 return 0,self.tr('Plusieurs objets portent ce nom')
435 return 0,self.tr('Aucun objet ne porte ce nom')
437 groupEntry = SObjet.GetID()
438 myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
439 SCom = self.editor.study.FindComponent("SMESH")
440 myBuilder = self.editor.study.NewBuilder()
441 myBuilder.LoadWith( SCom , myComponent )
442 sg.CreateAndDisplayActor(groupEntry)
443 #color = COLORS[ self.icolor % LEN_COLORS ]
444 #self.icolor = self.icolor + 1
445 #sg.SetColor(groupEntry, color[0], color[1], color[2])
446 salome.sg.Display(groupEntry)
452 msgError = self.tr("Impossible d afficher ")+shapeName
456 # ___________________________ Methodes appelees par EFICAS __________________________________
457 #----------------------------------------------------------------
458 def selectGroupFromSalome( self, kwType = None, editor=None):
459 #----------------------------------------------------------------
461 Selection d'element(s) d'une geometrie ( sub-shape ) ou d'element(s) de maillage ( groupe de maille) partir de l'arbre salome
462 retourne ( la liste des noms des groupes, message d'erreur )
464 Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel GROUPMA
468 atLeastOneStudy = self.editor.study
469 if not atLeastOneStudy:
472 # recupere toutes les selections de l'utilsateur dans l'arbre Salome
473 entries = salome.sg.getAllSelected()
474 nbEntries = len( entries )
476 for entry in entries:
477 if self.isMeshGroup(entry): # selection d 'un sous maillage
478 name, msg = self.selectMeshGroup( editor, entry, kwType )
479 elif self.isShape(entry): # selection d'une sous-geometrie
480 name, msg = self.selectShape( editor, entry, kwType )
482 name, msg = None,self.tr("Selection SALOME non autorisee.")
487 logger.debug("selectGroupFromSalome: An error occurs")
488 #print "=================== selectGroupFromSalome ", names, msg
489 #print "=================== selectGroupFromSalome ", names, msg
490 #print "=================== selectGroupFromSalome ", names, msg
493 #----------------------------------------------------------------
494 def selectMeshFile( self, editor=None):
495 #----------------------------------------------------------------
499 atLeastOneStudy = self.editor.study
500 if not atLeastOneStudy: return "", 'Pas d etude'
502 # recupere toutes les selections de l'utilsateur dans l'arbre Salome
503 entries = salome.sg.getAllSelected()
504 nbEntries = len( entries )
505 if nbEntries != 1 : return "", 'select a Mesh'
507 if not self.isMesh(entry): return "", 'select a Mesh'
508 mySO=self.editor.study.FindObjectID(entry)
510 ok, anAttr = mySO.FindAttribute("AttributeName")
511 if not ok : return "" ,'Pb de nommage'
512 meshFile="/tmp/"+str(anAttr.Value())+'.med'
513 myMesh=self.getMesh(entry)
514 if myMesh==None : return "" ,'Pb dans la selection '
515 myMesh.ExportMED( meshFile, 0)
518 return "", "Pb dans la selection "
520 #----------------------------------------------------------------
521 def importMedFile( self,fileName, editor=None):
522 #----------------------------------------------------------------
524 theStudy = self.editor.study
525 if not theStudy: return (0, 'Pas d etude')
526 from salome.smesh import smeshBuilder
527 smesh = smeshBuilder.New(theStudy)
528 aMesh,aResult = smesh.CreateMeshesFromMED(fileName)
529 salome.sg.updateObjBrowser(1)
532 return (O,"Pb a l import")
534 #----------------------------------------------------------------
535 def selectEntryFromSalome( self, kwType = None, editor=None):
536 #----------------------------------------------------------------
538 Selection d'element a partir de l'arbre salome
539 Ne verifie que l unicite de la selection
540 retourne ( la liste avec le nom du groupe, message d'erreur )
542 retourne une liste pour etre coherent avec selectGroupFromSalome
543 Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel SalomeEntry
546 if self.editor.study._non_existent():
547 raise Exception(self.tr(u"L'etude Salome n'existe plus"))
548 entries = salome.sg.getAllSelected()
549 nbEntries = len( entries )
551 raise Exception(self.tr(u"Veuillez selectionner une entree de l'arbre d'etude de Salome"))
553 raise Exception(self.tr(u"Une seule entree doit être selectionnee dans l'arbre d'etude de Salome"))
555 value = kwType.get_selected_value(entries[0], self.editor)
556 msg = self.tr(u"L'entree de l'arbre d'etude de Salome a ete selectionnee")
559 QMessageBox.information(self, self.tr(u"Selection depuis Salome"), unicode(e))
560 return [], unicode(e)
563 #---------------------------------------------
564 def addJdcInSalome( self, jdcPath ):
565 #---------------------------------------------
567 Ajoute le Jeu De Commande dans l'arbre d'etude Salome dans la rubrique EFICAS
570 msgError = "Erreur dans l'export du fichier de commande dans l'arbre d'etude Salome"
573 atLeastOneStudy = self.editor.study
574 if not atLeastOneStudy:
577 fileType = { 'TELEMAC' : "FICHIER_EFICAS_TELEMAC",
578 'ADAO' : "FICHIER_EFICAS_ADAO",
579 'SEP' : "FICHIER_EFICAS_SEP",
580 'SPECA' : "FICHIER_EFICAS_SPECA",
581 'MT' : "FICHIER_EFICAS_MT",
582 'CF' : "FICHIER_EFICAS_CF",
583 'MAP' : "FICHIER_EFICAS_MAP",
584 'CARMEL3D' : "FICHIER_EFICAS_CARMEL3D",
588 folderName = { 'TELEMAC' : "TelemacFiles",
589 'ADAO' : "AdaoFiles",
591 'SPECA' : "SpecaFiles",
594 'CARMEL3D' : 'CARMEL3DFiles' ,
599 folderType = { 'TELEMAC' : "TELEMAC_FILE_FOLDER",
600 'ADAO' : "ADAO_FILE_FOLDER",
601 'SEP' : "SEP_FILE_FOLDER",
602 'SPECA' : "SPECA_FILE_FOLDER",
603 'MT' : "MT_FILE_FOLDER",
604 'CF' : "CF_FILE_FOLDER",
605 'SEP' : "SEP_FILE_FOLDER",
606 'MAP' : "MAP_FILE_FOLDER",
607 'CARMEL3D' : "CARMEL3D_FILE_FOLDER",
611 moduleEntry = self.editor.findOrCreateComponent(self.module, self.componentName)
612 itemName = re.split("/",jdcPath)[-1]
614 if folderName.has_key(self.code) :
615 monFolderName=folderName[ self.code ]
617 monFolderName=str(self.code)+"Files"
619 if folderType.has_key(self.code) :
620 monFolderType=fileType[ self.code ]
622 monFolderType=str(self.code)+"_FILE_FOLDER"
624 if fileType.has_key(self.code) :
625 monFileType=fileType[ self.code ]
627 monFileType="FICHIER_EFICAS_"+str(self.code)
629 fatherEntry = self.editor.findOrCreateItem(
631 name = monFolderName,
632 #icon = "ICON_COMM_FOLDER",
633 fileType = monFolderType)
635 commEntry = self.editor.findOrCreateItem( fatherEntry ,
637 fileType = monFileType,
639 #icon = "ICON_COMM_FILE",
640 comment = str( jdcPath ))
642 salome.sg.updateObjBrowser(1)
644 #print 'addJdcInSalome commEntry->', commEntry
646 ok, msgError = True, ''
647 except Exception, exc:
648 msgError = "Can't add Eficas file to Salome study tree"
649 logger.debug(msgError, exc_info = True)
650 QMessageBox.warning(self, self.tr("Warning"),
651 self.tr("%s. Raison:\n%s\n\n Voir la log pour plus de details " % (msgError, exc)))
655 #---------------------------------------
656 def displayShape( self, shapeName ):
657 #---------------------------------------
659 visualisation de nom shapeName dans salome
661 ok, msgError = False, ''
665 sgPyQt = SalomePyQt.SalomePyQt()
666 myActiveView=sgPyQt.getActiveView()
667 if myActiveView < 0 :
668 return ok, 'pas de vue courante'
670 currentViewType=sgPyQt.getViewType(myActiveView)
671 if str(currentViewType) != "OCCViewer" : # maillage
672 ok, msgError = self.displayMeshGroups(shapeName)
674 current_color = COLORS[ self.icolor % LEN_COLORS ]
675 from salome.geom.geomtools import GeomStudyTools
676 myGeomTools=GeomStudyTools(self.editor)
677 ok = myGeomTools.displayShapeByName( shapeName, current_color )
679 self.icolor = self.icolor + 1
681 msgError =self.tr("Impossible d afficher ")+shapeName
687 #---------------------------------------
688 def ChercheGrpMeshInSalome(self):
689 #---------------------------------------
690 print "je passe par la"
695 entries = salome.sg.getAllSelected()
696 nbEntries = len( entries )
697 names, msg = None, self.tr("Selection SALOME non autorisee.")
699 for entry in entries:
700 names,msg=self.giveMeshGroups(entry,"SubMeshes",SMESH.SMESH_subMesh)
706 #---------------------------------------
707 def ChercheGrpMailleInSalome(self):
708 #---------------------------------------
713 entries = salome.sg.getAllSelected()
714 nbEntries = len( entries )
715 names, msg = None, self.tr("Selection SALOME non autorisee.")
717 for entry in entries:
719 names,msg=self.giveMeshGroups(entry,"Groups of",SMESH.SMESH_GroupBase)
730 #-------------------------------------------------------------------------------------------------------
731 # Pilotage de la Visu des elements de structures
735 def envoievisu(self,liste_commandes):
737 from salome.geom.structelem import StructuralElementManager, InvalidParameterError
739 QMessageBox.critical(self, self.tr("Error"),
740 self.tr("Impossible d'afficher les elements de structure: "
741 "module GEOM n est pas installe."))
744 atLeastOneStudy = self.editor.study
745 if not atLeastOneStudy:
747 logger.debug(10*'#'+":envoievisu: creating a StructuralElementManager instance")
748 structElemManager = StructuralElementManager()
749 elem = structElemManager.createElement(liste_commandes)
751 salome.sg.updateObjBrowser(True)
752 except InvalidParameterError, err:
753 trStr = self.tr("Invalid parameter for group %(group)s: %(expr)s must be "
754 "greater than %(minval)g (actual value is %(value)g)")
755 msg = str(trStr) % {"group": err.groupName, "expr": err.expression,
756 "minval": err.minValue, "value": err.value}
757 QMessageBox.warning(self, self.tr("Error"), msg)
759 traceback.print_exc()
760 logger.debug(10*'#'+":pb dans envoievisu")
765 This class replaces the class Accas.SalomeEntry (defined in EFICAS tool)
766 when Eficas is launched in Salome context. It handles the objects that can
767 be selected from Salome object browser.
768 By default, the selected value is the entry of the selected item in the
769 object browser. This class can be subclassed to provide more advanced
773 help_message = u"Une entree de l'arbre d'etude de Salome est attendue"
775 def __init__(self, entryStr):
776 self._entry = entryStr
779 def __convert__(entryStr):
780 return SalomeEntry(entryStr)
783 def get_selected_value(selected_entry, study_editor):
784 return selected_entry
787 #-------------------------------------------------------------------------------------------------------
788 # Point d'entree lancement EFICAS
790 def runEficas( code=None, fichier=None, module = "EFICAS", version=None, componentName = "Eficas",multi=False):
791 logger.debug(10*'#'+":runEficas: START")
793 logger.debug(10*'#'+":runEficas: code="+str(code))
794 logger.debug(10*'#'+":runEficas: fichier="+str(fichier))
795 logger.debug(10*'#'+":runEficas: module="+str(module))
796 logger.debug(10*'#'+":runEficas: version="+str(version))
798 #if not appli: #une seul instance possible!
799 appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
800 module = module, version = version, componentName = componentName,multi=multi )
801 #if not appli: #une seul instance possible!
802 # appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
803 # module = module, componentName = componentName, version=version )
804 logger.debug(10*'#'+":runEficas: END")