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,lang=None):
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':'Telemac',
70 # 'pytel' : 'pytel', 'telemac2d' : 'telemac2dSalome','coupling1d2d':'coupling1d2d',
71 # 'mascaret':'mascaret','boundary_conditions':'boundary_conditions'}
73 dictPathCode={'ADAO':'Adao','MT':'MT','CARMEL3D':'Carmel3D', 'CF':'CF',
74 'SPECA':'SPECA','MAP':'MAP','SEP':'SEP', 'TELEMAC':'Telemac'}
76 if code in dictPathCode.keys():
77 pathCode=dictPathCode[code]
78 sys.path[:0]=[os.path.join(eficasConfig.eficasPath,pathCode)]
80 if Editeur.__dict__.has_key( 'session' ):
81 from Editeur import session
85 eficasArg += [ fichier ]
87 eficasArg += [ "-c", version ]
90 session.parse( eficasArg )
92 self.editor = getStudyEditor() # Editeur de l'arbre d'etude
94 if lang!=None : langue=lang
95 qtEficas.Appli.__init__( self,code=code,salome=1,parent=parent,multi=multi,langue=langue)
97 #--------------- specialisation EFICAS dans SALOME -------------------
99 self.salome = True #active les parties de code specifique dans Salome( pour le logiciel Eficas )
100 self.module = module #indique sous quel module dans l'arbre d'etude ajouter le JDC.
101 self.componentName = componentName
103 # donnee pour la creation de groupe de maille
104 self.mainShapeNames = {} #dictionnaire pour gerer les multiples fichiers possibles ouverts par
105 #eficas ( cle = identifiant du JDC ), une mainshape par fichier ouvert.
106 #dictionnaire des sous-geometrie de la geometrie principale ( cle = entry, valeur = name )
107 #----------------------------------------------------------------------
109 self.icolor = 0 # compteur pour memoriser la couleur courante
113 def closeEvent(self,event):
118 if hasattr(self,'readercata') :
127 from Extensions.param2 import originalMath
128 #Numeric.cos=originalMath.numeric_ncos
129 #Numeric.sin=originalMath.numeric_nsin
130 #Numeric.array=originalMath.numeric_narray
131 #math.sin=originalMath.sin
132 #math.cos=originalMath.cos
133 #math.sqrt=originalMath.sqrt
134 #math.ceil=originalMath.ceil
135 #math.pi=originalMath.pi
136 originalMath.toOriginal()
143 # ___________________________ Methodes de l ex Pal __________________________________
145 #----------------------------------------------------------------
146 def getCORBAObjectInComponent( self, entry, composant ):
147 #----------------------------------------------------------------
149 mySO = self.editor.study.FindObjectID(entry)
151 object = mySO.GetObject()
153 myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", composant)
154 SCom = self.editor.study.FindComponent( composant )
155 print myComponent , SCom
156 self.editor.builder.LoadWith( SCom , myComponent )
157 object = mySO.GetObject()
159 logger.debug("selectedEntry: An error occurs")
163 #----------------------------------------------
164 def giveMeshGroups( self,entry,label1,typeMesh):
165 #----------------------------------------------
170 monMaillage =self.getCORBAObjectInComponent(entry,"SMESH")
171 if monMaillage != None : # selection d'un groupe de SMESH
172 if monMaillage._narrow(SMESH.SMESH_Mesh):
173 mailSO = self.editor.study.FindObjectID(entry)
174 if mailSO == None : return names, msg
177 subIt = self.editor.study.NewChildIterator(mailSO)
179 subSO = subIt.Value()
182 if (subSO.GetName()[0:9]!=label1) : continue
183 subSSMeshit=self.editor.study.NewChildIterator(subSO)
184 while subSSMeshit.More():
185 subSSMeshSO = subSSMeshit.Value()
187 if subSSMeshSO.GetObject()._narrow(typeMesh):
188 names.append(subSSMeshSO.GetName())
190 msg=entry + self.tr(" n est pas un maillage")
192 logger.debug(' giveMeshGroups pb avec ( entry = %s ) ' %entry )
193 msg=' giveMeshGroup pb avec ( entry = %s ) '+ entry
196 #-------------------------------------
197 def isMeshGroup( self,entry):
198 #-------------------------------------
202 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
203 if monObjet != None : # selection d'un groupe de SMESH
204 if monObjet._narrow(SMESH.SMESH_GroupBase):
207 logger.debug(' isMeshGroup pb avec ( entry = %s ) ' %entry )
210 #-------------------------------------
211 def isMesh( self,entry):
212 #-------------------------------------
216 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
217 if monObjet != None : # selection d'un groupe de SMESH
218 if monObjet._narrow(SMESH.SMESH_Mesh):
221 logger.debug(' isMesh pb avec ( entry = %s ) ' %entry )
224 #-------------------------------------
225 def getMesh( self,entry):
226 #-------------------------------------
231 monObjet =self.getCORBAObjectInComponent(entry,"SMESH")
232 if monObjet != None : # selection d'un groupe de SMESH
233 meshObject=monObjet._narrow(SMESH.SMESH_Mesh)
235 logger.debug(' pb avec ( entry = %s ) ' %entry )
238 #-------------------------------------
240 #-------------------------------------
241 def isShape( self,entry):
242 #-------------------------------------
246 monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
247 if monObjet != None : # selection d'un objet GEOM
248 if monObjet._narrow(GEOM.GEOM_Object ):
251 logger.debug(' isShape pb avec ( entry = %s ) ' %entry )
254 #-----------------------------------------------------------------
255 def getMainShapeEntry(self,entry):
256 #-----------------------------------------------------------------
259 mainShapeEntry = entry.split(':')[:4]
260 if len(mainShapeEntry) == 4:
261 strMainShapeEntry = '%s:%s:%s:%s'%tuple(mainShapeEntry)
262 if self.isMainShape(strMainShapeEntry):
263 result = strMainShapeEntry
265 logger.debug( 'Erreur pour SalomeStudy.getMainShapeEntry( entry = %s ) ' %entry )
269 #-----------------------------------------------------------------
270 def isMainShape(self,entry):
271 #-----------------------------------------------------------------
274 monObjet =self.getCORBAObjectInComponent(entry,"GEOM")
276 shape = monObjet._narrow( GEOM.GEOM_Object )
277 if shape.IsMainShape():
280 logger.debug( 'Errreur pour SalomeStudy.isMainShape( entry = %s ) ' %entry )
285 #-----------------------------------------------------------------
286 def ChercheType( self, shape ):
287 #-----------------------------------------------------------------
288 tgeo = shape.GetShapeType()
289 geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
290 #print dir(self.editor.study)
291 groupIMeasureOp = geomEngine.GetIMeasureOperations(self.editor.study._get_StudyId())
292 if tgeo != "COMPOUND" : return tgeo
294 strInfo = groupIMeasureOp.WhatIs( shape )
296 l = strInfo.split('\n')
299 nom, valeur = couple.split(':')
300 dictInfo[ nom.strip() ] = valeur.strip()
302 ordre = [ "COMPSOLID", "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX" ]
304 if dictInfo[ t ] != '0':
310 #-----------------------------------------------------------------
311 def selectShape( self, editor, entry, kwType = None ):
312 #-----------------------------------------------------------------
314 selection sous-geometrie dans Salome:
315 -test1) si c'est un element sous-geometrique .
316 -test2) si appartient a la geometrie principale.
318 name, msgError = '',''
319 mySO = self.editor.study.FindObjectID(entry)
321 return name, msgError
322 object = mySO.GetObject()
324 return name, msgError
327 shape = object._narrow( GEOM.GEOM_Object )
329 return name, msgError
331 tGeo=self.ChercheType(shape)
333 return name, msgError
334 #if kwType == "GROUP_NO" and str(tGeo) != "VERTEX":
335 # name,msgError = '',"la selection n est pas un Vertex"
336 # return name, msgError
337 if kwType == "GROUP_MA" and str(tGeo) == "VERTEX":
338 name, msgError = '', "la selection n est pas un groupe de maille"
339 return name, msgError
341 mainShapeEntry = self.getMainShapeEntry( entry )
342 if self.mainShapeNames.has_key( editor ):
343 #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
344 if self.mainShapeNames[editor] == mainShapeEntry:
347 msgError="Le groupe reference la geometrie " + mainShapeEntry + " et non " + self.mainShapeNames[editor]
349 self.mainShapeNames[editor] = mainShapeEntry
352 return name, msgError
355 #-----------------------------------------------------------------
356 def selectMeshGroup( self, editor, selectedEntry, kwType = None ):
357 #-----------------------------------------------------------------
359 selection groupe de maille dans Salome:
360 -test 1) si c'est un groupe de maille
361 -test 2) si le maillage fait reference a la geometrie principale
363 name, msgError = '',''
365 mySO=self.editor.study.FindObjectID(selectedEntry )
366 from salome.smesh.smeshstudytools import SMeshStudyTools
367 monSMeshStudyTools=SMeshStudyTools(self.editor)
368 meshSO = monSMeshStudyTools.getMeshFromGroup(mySO)
369 if meshSO == None : return name, msgError
371 # on verifie que l entree selectionnee a le bon type (NODE ou EDGE...)
373 groupObject = self.getCORBAObjectInComponent(selectedEntry,"SMESH")
375 logger.debug("selectedMeshEntry: An error occurs")
378 aGroup = groupObject._narrow( SMESH.SMESH_GroupBase )
379 if aGroup: tGroup = aGroup.GetType()
381 if kwType == "GROUP_NO" and tGroup != SMESH.NODE:
382 msgError = self.tr("GROUP_NO attend un groupe de noeud")
383 return name, msgError
384 elif kwType == "GROUP_MA" and tGroup == SMESH.NODE:
385 msgError = self.tr("GROUP_MA attend un point goupe de maille")
386 return name, msgError
388 # on cherche la shape associee
389 #PN PN mesh_Object est un SOject
390 meshObject = meshSO.GetObject()
391 mesh = meshObject._narrow( SMESH.SMESH_Mesh )
392 if mesh: #c'est bien un objet maillage
393 shape = mesh.GetShapeToMesh()
395 ior = salome.orb.object_to_string( shape )
397 sObject = self.editor.study.FindObjectIOR( ior )
398 mainShapeID = sObject.GetID()
402 return name, self.tr("Type d objet non permis")
404 # on cherche si la shape associee est la bonne
405 #print "------------- mainShapeID" , mainShapeID
406 if self.mainShapeNames.has_key( editor ):
407 #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
408 if self.mainShapeNames[editor] == mainShapeID:
411 msgError=self.tr("Le groupe reference la geometrie ") + mainShapeID + self.tr(" et non ") + self.mainShapeNames[editor]
413 self.mainShapeNames[editor] = mainShapeID
416 #print "------------------------------ name :", name
417 #print "------------------------------ name :", name
418 #print "------------------------------ name :", name
422 def displayMeshGroups(self, meshGroupName):
424 visualisation group de maille de nom meshGroupName dans salome
426 ok, msgError = False, ''
429 sg = salome.ImportComponentGUI('SMESH')
430 meshGroupEntries = []
432 selMeshGroupEntry = None
434 # liste des groupes de maille de nom meshGroupName
435 listSO = self.editor.study.FindObjectByName(meshGroupName, "SMESH")
437 #print "liste des groupes de maille de nom %s: "%(meshGroupName), listSO
440 return 0,self.tr('Plusieurs objets portent ce nom')
442 return 0,self.tr('Aucun objet ne porte ce nom')
444 groupEntry = SObjet.GetID()
445 myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
446 SCom = self.editor.study.FindComponent("SMESH")
447 myBuilder = self.editor.study.NewBuilder()
448 myBuilder.LoadWith( SCom , myComponent )
449 sg.CreateAndDisplayActor(groupEntry)
450 #color = COLORS[ self.icolor % LEN_COLORS ]
451 #self.icolor = self.icolor + 1
452 #sg.SetColor(groupEntry, color[0], color[1], color[2])
453 salome.sg.Display(groupEntry)
459 msgError = self.tr("Impossible d afficher ")+shapeName
463 # ___________________________ Methodes appelees par EFICAS __________________________________
464 #----------------------------------------------------------------
465 def selectGroupFromSalome( self, kwType = None, editor=None):
466 #----------------------------------------------------------------
468 Selection d'element(s) d'une geometrie ( sub-shape ) ou d'element(s) de maillage ( groupe de maille) partir de l'arbre salome
469 retourne ( la liste des noms des groupes, message d'erreur )
471 Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel GROUPMA
475 atLeastOneStudy = self.editor.study
476 if not atLeastOneStudy:
479 # recupere toutes les selections de l'utilsateur dans l'arbre Salome
480 entries = salome.sg.getAllSelected()
481 nbEntries = len( entries )
483 for entry in entries:
484 if self.isMeshGroup(entry): # selection d 'un sous maillage
485 name, msg = self.selectMeshGroup( editor, entry, kwType )
486 elif self.isShape(entry): # selection d'une sous-geometrie
487 name, msg = self.selectShape( editor, entry, kwType )
489 name, msg = None,self.tr("Selection SALOME non autorisee.")
494 logger.debug("selectGroupFromSalome: An error occurs")
495 #print "=================== selectGroupFromSalome ", names, msg
496 #print "=================== selectGroupFromSalome ", names, msg
497 #print "=================== selectGroupFromSalome ", names, msg
500 #----------------------------------------------------------------
501 def selectMeshFile( self, editor=None):
502 #----------------------------------------------------------------
506 atLeastOneStudy = self.editor.study
507 if not atLeastOneStudy: return "", 'Pas d etude'
509 # recupere toutes les selections de l'utilsateur dans l'arbre Salome
510 entries = salome.sg.getAllSelected()
511 nbEntries = len( entries )
512 if nbEntries != 1 : return "", 'select a Mesh'
514 if not self.isMesh(entry): return "", 'select a Mesh'
515 mySO=self.editor.study.FindObjectID(entry)
517 ok, anAttr = mySO.FindAttribute("AttributeName")
518 if not ok : return "" ,'Pb de nommage'
519 meshFile="/tmp/"+str(anAttr.Value())+'.med'
520 myMesh=self.getMesh(entry)
521 if myMesh==None : return "" ,'Pb dans la selection '
522 myMesh.ExportMED( meshFile, 0)
525 return "", "Pb dans la selection "
527 #----------------------------------------------------------------
528 def importMedFile( self,fileName, editor=None):
529 #----------------------------------------------------------------
531 theStudy = self.editor.study
532 if not theStudy: return (0, 'Pas d etude')
533 from salome.smesh import smeshBuilder
534 smesh = smeshBuilder.New(theStudy)
535 aMesh,aResult = smesh.CreateMeshesFromMED(fileName)
536 salome.sg.updateObjBrowser(1)
539 return (O,"Pb a l import")
541 #----------------------------------------------------------------
542 def selectEntryFromSalome( self, kwType = None, editor=None):
543 #----------------------------------------------------------------
545 Selection d'element a partir de l'arbre salome
546 Ne verifie que l unicite de la selection
547 retourne ( la liste avec le nom du groupe, message d'erreur )
549 retourne une liste pour etre coherent avec selectGroupFromSalome
550 Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel SalomeEntry
553 if self.editor.study._non_existent():
554 raise Exception(self.tr(u"L'etude Salome n'existe plus"))
555 entries = salome.sg.getAllSelected()
556 nbEntries = len( entries )
558 raise Exception(self.tr(u"Veuillez selectionner une entree de l'arbre d'etude de Salome"))
560 raise Exception(self.tr(u"Une seule entree doit être selectionnee dans l'arbre d'etude de Salome"))
562 value = kwType.get_selected_value(entries[0], self.editor)
563 msg = self.tr(u"L'entree de l'arbre d'etude de Salome a ete selectionnee")
566 QMessageBox.information(self, self.tr(u"Selection depuis Salome"), unicode(e))
567 return [], unicode(e)
570 #---------------------------------------------
571 def addJdcInSalome( self, jdcPath ):
572 #---------------------------------------------
574 Ajoute le Jeu De Commande dans l'arbre d'etude Salome dans la rubrique EFICAS
577 msgError = "Erreur dans l'export du fichier de commande dans l'arbre d'etude Salome"
580 atLeastOneStudy = self.editor.study
581 if not atLeastOneStudy:
584 fileType = { 'TELEMAC' : "FICHIER_EFICAS_TELEMAC",
585 'ADAO' : "FICHIER_EFICAS_ADAO",
586 'SEP' : "FICHIER_EFICAS_SEP",
587 'SPECA' : "FICHIER_EFICAS_SPECA",
588 'MT' : "FICHIER_EFICAS_MT",
589 'CF' : "FICHIER_EFICAS_CF",
590 'MAP' : "FICHIER_EFICAS_MAP",
591 'CARMEL3D' : "FICHIER_EFICAS_CARMEL3D",
595 folderName = { 'TELEMAC' : "TelemacFiles",
596 'ADAO' : "AdaoFiles",
598 'SPECA' : "SpecaFiles",
601 'CARMEL3D' : 'CARMEL3DFiles' ,
606 folderType = { 'TELEMAC' : "TELEMAC_FILE_FOLDER",
607 'ADAO' : "ADAO_FILE_FOLDER",
608 'SEP' : "SEP_FILE_FOLDER",
609 'SPECA' : "SPECA_FILE_FOLDER",
610 'MT' : "MT_FILE_FOLDER",
611 'CF' : "CF_FILE_FOLDER",
612 'SEP' : "SEP_FILE_FOLDER",
613 'MAP' : "MAP_FILE_FOLDER",
614 'CARMEL3D' : "CARMEL3D_FILE_FOLDER",
618 moduleEntry = self.editor.findOrCreateComponent(self.module, self.componentName)
619 itemName = re.split("/",jdcPath)[-1]
621 if folderName.has_key(self.code) :
622 monFolderName=folderName[ self.code ]
624 monFolderName=str(self.code)+"Files"
626 if folderType.has_key(self.code) :
627 monFolderType=fileType[ self.code ]
629 monFolderType=str(self.code)+"_FILE_FOLDER"
631 if fileType.has_key(self.code) :
632 monFileType=fileType[ self.code ]
634 monFileType="FICHIER_EFICAS_"+str(self.code)
636 fatherEntry = self.editor.findOrCreateItem(
638 name = monFolderName,
639 #icon = "ICON_COMM_FOLDER",
640 fileType = monFolderType)
642 commEntry = self.editor.findOrCreateItem( fatherEntry ,
644 fileType = monFileType,
646 #icon = "ICON_COMM_FILE",
647 comment = str( jdcPath ))
649 salome.sg.updateObjBrowser(1)
651 #print 'addJdcInSalome commEntry->', commEntry
653 ok, msgError = True, ''
654 except Exception, exc:
655 msgError = "Can't add Eficas file to Salome study tree"
656 logger.debug(msgError, exc_info = True)
657 QMessageBox.warning(self, self.tr("Warning"),
658 self.tr("%s. Raison:\n%s\n\n Voir la log pour plus de details " % (msgError, exc)))
662 #---------------------------------------
663 def displayShape( self, shapeName ):
664 #---------------------------------------
666 visualisation de nom shapeName dans salome
668 ok, msgError = False, ''
672 sgPyQt = SalomePyQt.SalomePyQt()
673 myActiveView=sgPyQt.getActiveView()
674 if myActiveView < 0 :
675 return ok, 'pas de vue courante'
677 currentViewType=sgPyQt.getViewType(myActiveView)
678 if str(currentViewType) != "OCCViewer" : # maillage
679 ok, msgError = self.displayMeshGroups(shapeName)
681 current_color = COLORS[ self.icolor % LEN_COLORS ]
682 from salome.geom.geomtools import GeomStudyTools
683 myGeomTools=GeomStudyTools(self.editor)
684 ok = myGeomTools.displayShapeByName( shapeName, current_color )
686 self.icolor = self.icolor + 1
688 msgError =self.tr("Impossible d afficher ")+shapeName
694 #---------------------------------------
695 def ChercheGrpMeshInSalome(self):
696 #---------------------------------------
697 print "je passe par la"
702 entries = salome.sg.getAllSelected()
703 nbEntries = len( entries )
704 names, msg = None, self.tr("Selection SALOME non autorisee.")
706 for entry in entries:
707 names,msg=self.giveMeshGroups(entry,"SubMeshes",SMESH.SMESH_subMesh)
713 #---------------------------------------
714 def ChercheGrpMailleInSalome(self):
715 #---------------------------------------
720 entries = salome.sg.getAllSelected()
721 nbEntries = len( entries )
722 names, msg = None, self.tr("Selection SALOME non autorisee.")
724 for entry in entries:
726 names,msg=self.giveMeshGroups(entry,"Groups of",SMESH.SMESH_GroupBase)
737 #-------------------------------------------------------------------------------------------------------
738 # Pilotage de la Visu des elements de structures
742 def envoievisu(self,liste_commandes):
744 from salome.geom.structelem import StructuralElementManager, InvalidParameterError
746 QMessageBox.critical(self, self.tr("Error"),
747 self.tr("Impossible d'afficher les elements de structure: "
748 "module GEOM n est pas installe."))
751 atLeastOneStudy = self.editor.study
752 if not atLeastOneStudy:
754 logger.debug(10*'#'+":envoievisu: creating a StructuralElementManager instance")
755 structElemManager = StructuralElementManager()
756 elem = structElemManager.createElement(liste_commandes)
758 salome.sg.updateObjBrowser(True)
759 except InvalidParameterError, err:
760 trStr = self.tr("Invalid parameter for group %(group)s: %(expr)s must be "
761 "greater than %(minval)g (actual value is %(value)g)")
762 msg = str(trStr) % {"group": err.groupName, "expr": err.expression,
763 "minval": err.minValue, "value": err.value}
764 QMessageBox.warning(self, self.tr("Error"), msg)
766 traceback.print_exc()
767 logger.debug(10*'#'+":pb dans envoievisu")
772 This class replaces the class Accas.SalomeEntry (defined in EFICAS tool)
773 when Eficas is launched in Salome context. It handles the objects that can
774 be selected from Salome object browser.
775 By default, the selected value is the entry of the selected item in the
776 object browser. This class can be subclassed to provide more advanced
780 help_message = u"Une entree de l'arbre d'etude de Salome est attendue"
782 def __init__(self, entryStr):
783 self._entry = entryStr
786 def __convert__(entryStr):
787 return SalomeEntry(entryStr)
790 def get_selected_value(selected_entry, study_editor):
791 return selected_entry
794 #-------------------------------------------------------------------------------------------------------
795 # Point d'entree lancement EFICAS
797 def runEficas( code=None, fichier=None, module = "EFICAS", version=None, componentName = "Eficas",multi=False):
798 logger.debug(10*'#'+":runEficas: START")
800 logger.debug(10*'#'+":runEficas: code="+str(code))
801 logger.debug(10*'#'+":runEficas: fichier="+str(fichier))
802 logger.debug(10*'#'+":runEficas: module="+str(module))
803 logger.debug(10*'#'+":runEficas: version="+str(version))
805 #if not appli: #une seul instance possible!
806 appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
807 module = module, version = version, componentName = componentName,multi=multi )
808 #if not appli: #une seul instance possible!
809 # appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
810 # module = module, componentName = componentName, version=version )
811 logger.debug(10*'#'+":runEficas: END")