import salome_iapp
from launchConfigureParser import verbose
-myStudyManager = None
-myStudyId = None
myStudy = None
myStudyName = None
#--------------------------------------------------------------------------
-def DumpComponent(Study, SO, Builder,offset):
- it = Study.NewChildIterator(SO)
+def DumpComponent(SO, Builder,offset):
+ global myStudy
+ it = myStudy.NewChildIterator(SO)
while it.More():
CSO = it.Value()
a=offset*"--" + ">" + CSO.GetID()
if find:
a=a+":"+RefSO.GetID()
print(a)
- DumpComponent(Study, CSO, Builder,offset+2)
+ DumpComponent(CSO, Builder,offset+2)
it.Next()
#--------------------------------------------------------------------------
-def DumpStudy(Study):
+def DumpStudy():
"""
Dump a study, given the ior
"""
- itcomp = Study.NewComponentIterator()
- Builder = Study.NewBuilder()
+ global myStudy
+ itcomp = myStudy.NewComponentIterator()
+ Builder = myStudy.NewBuilder()
while itcomp.More():
SC = itcomp.Value()
name = SC.ComponentDataType()
print("-> ComponentDataType is " + name)
- DumpComponent(Study, SC,Builder, 1)
+ DumpComponent(SC,Builder, 1)
itcomp.Next()
-def DumpStudies():
- """
- Dump all studies in a StudyManager
- """
- global myStudyManager
- for name in myStudyManager.GetOpenStudies():
- s = myStudyManager.GetStudyByName(name)
- print("study:",name, s._get_StudyId())
- DumpStudy(s)
-
-
#--------------------------------------------------------------------------
def IDToObject(id):
return myObj
def ObjectToSObject(obj):
+ global myStudy
mySO = None
if obj is not None:
ior = orb.object_to_string(obj)
#--------------------------------------------------------------------------
-def PersistentPresentation(theStudy, theSO, theWithID):
+def PersistentPresentation(theSO, theWithID):
+ global myStudy
# put the sobject's content (with subchildren) to the string
aResult = ""
attrs = theSO.GetAllAttributes()
aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
else:
aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
- anIter = theStudy.NewChildIterator(theSO)
+ anIter = myStudy.NewChildIterator(theSO)
while anIter.More():
- aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID)
+ aResult += PersistentPresentation(anIter.Value(), theWithID)
anIter.Next()
return aResult
#--------------------------------------------------------------------------
def CheckCopyPaste(theSO, theInfo ,theComponentPaste):
- global myStudyManager, myStudy
+ global myStudy
aRoot = theSO
while aRoot.GetID() != "0:":
aRoot = aRoot.GetFather()
aTree = GetTree(aRoot)
- aStudyPersist = PersistentPresentation(myStudy, aRoot, 1)
+ aStudyPersist = PersistentPresentation(aRoot, 1)
- if not myStudyManager.CanCopy(theSO):
+ if not myStudy.CanCopy(theSO):
raise RuntimeError("<CanCopy> for "+theInfo+" returns false")
- if not myStudyManager.Copy(theSO):
+ if not myStudy.Copy(theSO):
raise RuntimeError("<Copy> for "+theInfo+" returns false")
- if not myStudyManager.CanPaste(theSO):
+ if not myStudy.CanPaste(theSO):
raise RuntimeError("<CanPaste> for "+theInfo+" returns false")
# check: before paste study is not changed check
- if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1):
+ if aStudyPersist != PersistentPresentation(aRoot, 1):
raise RuntimeError("Study is changed before Paste calling for "+theInfo)
aSObj = theSO
if theComponentPaste:
aSObj = theSO.GetFatherComponent()
theInfo = theInfo + "(paste for component)"
- if myStudyManager.Paste(aSObj) == None:
+ if myStudy.Paste(aSObj) == None:
raise RuntimeError("<Paste> for "+theInfo+" returns None object")
aNewTree = GetTree(aRoot)
aLen = len(aTree)
#--------------------------------------------------------------------------
-salome_study_ID = -1
-
-# *args are used here to support backward compatibility
-# previously it was possible to pass theStudyId parameter to this function
-# which is no more supported.
-def getActiveStudy(*args):
- global myStudyManager
- global salome_study_ID
-
- if not myStudyManager:
- print("No active study")
- return None
- pass
-
- if verbose(): print("getActiveStudy")
- if salome_study_ID == -1:
- listOpenStudies = myStudyManager.GetOpenStudies()
- if len(listOpenStudies) == 0:
- return None
- else:
- print(listOpenStudies[0])
- s = myStudyManager.GetStudyByName(listOpenStudies[0])
- salome_study_ID = s._get_StudyId()
- if verbose(): print("--- Study Id ", salome_study_ID)
- return salome_study_ID
-
- #--------------------------------------------------------------------------
-
-def setCurrentStudy(theStudy):
- """
- Change current study : an existing one given by a study object.
-
- :param theStudy: the study CORBA object to set as current study
-
- Obsolete: only one study can be opened at the moment.
- This function works properly if specified theStudy parameter
- corresponds to the currently opened study.
- Kept for backward compatibility only.
- """
- global myStudyId, myStudy, myStudyName
- global salome_study_ID
- myStudy = theStudy
- myStudyId = theStudy._get_StudyId()
- myStudyName = theStudy._get_Name()
- return myStudyId, myStudy, myStudyName
-
- #--------------------------------------------------------------------------
-
-# *args are used here to support backward compatibility
-# previously it was possible to pass theStudyId parameter to this function
-# which is no more supported.
-def setCurrentStudyId(*args):
- """
- Change current study : an existing or new one.
-
- This function connects to the single opened study if there is any; otherwise
- new empty study is created.
-
- Obsolete: only one study can be opened at the moment.
- Kept for backward compatibility only.
- """
- global myStudyManager, myStudyId, myStudy, myStudyName
- global salome_study_ID
- salome_study_ID = -1
- myStudyId = getActiveStudy()
- if not myStudyId:
- myStudyId = createNewStudy()
- if verbose(): print("myStudyId",myStudyId)
- myStudy = myStudyManager.GetStudyByID(myStudyId)
- myStudyName = myStudy._get_Name()
- return myStudyId, myStudy, myStudyName
-
- #--------------------------------------------------------------------------
-
-def createNewStudy():
- global myStudyManager
- print("createNewStudy")
- aStudyName = "étudeExt"
- theStudy = myStudyManager.NewStudy(aStudyName)
- theStudyId = theStudy._get_StudyId()
- print(aStudyName, theStudyId)
- return theStudyId
-
- #--------------------------------------------------------------------------
-
def openStudy(theStudyPath):
- global myStudyManager
print("openStudy")
- theStudy = myStudyManager.Open(theStudyPath)
- theStudyId = theStudy._get_StudyId()
- print(theStudyPath, theStudyId)
- return theStudyId
+ global myStudy, myStudyName
+ myStudy.Open(theStudyPath)
+ myStudyName = myStudy._get_Name()
+ print(theStudyPath, myStudy._get_Name())
#--------------------------------------------------------------------------
create new empty study if there is active study
<URL> (str) : open study with the given file name
"""
- global myStudyManager, myStudyId, myStudy, myStudyName
+ global myStudy, myStudyName
global orb, lcc, naming_service, cm
if verbose(): print("theStudyPath:", theStudyPath)
- if not myStudyManager:
+ if not myStudy:
orb, lcc, naming_service, cm = salome_kernel.salome_kernel_init()
- # get Study Manager reference
- if verbose(): print("looking for studyManager ...")
- obj = naming_service.Resolve('myStudyManager')
- myStudyManager = obj._narrow(SALOMEDS.StudyManager)
- if verbose(): print("studyManager found")
+ # get Study reference
+ if verbose(): print("looking for study...")
+ obj = naming_service.Resolve('/Study')
+ myStudy = obj._narrow(SALOMEDS.Study)
+ if verbose(): print("Study found")
pass
- # get active study Id, ref and name
- myStudy = None
- myStudyId = getActiveStudy()
- if myStudyId == None :
- if theStudyPath and isinstance(theStudyPath, (str, bytes)):
- if isinstance(theStudyPath, bytes):
- theStudyPath = str(theStudyPath, 'UTF8')
- myStudyId = openStudy(theStudyPath)
- else:
- myStudyId = createNewStudy()
- if verbose(): print("myStudyId", myStudyId)
-
- if myStudy == None:
- myStudy = myStudyManager.GetStudyByID(myStudyId)
- myStudyName = myStudy._get_Name()
+ import types
+ if theStudyPath and isinstance(theStudyPath, (str, bytes)):
+ if isinstance(theStudyPath, bytes):
+ theStudyPath = str(theStudyPath, 'UTF8')
+ openStudy(theStudyPath)
- return myStudyManager, myStudyId, myStudy, myStudyName
+ myStudyName = myStudy._get_Name()
-def salome_study_close():
- global salome_study_ID
- global myStudyId, myStudy, myStudyName
- salome_study_ID = -1
- myStudyId, myStudy, myStudyName = None, None, None
- pass
+ return myStudy, myStudyName