Salome HOME
Add missing include directory for CMake compilation.
[modules/kernel.git] / src / KERNEL_PY / salome.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 # ================================================================================
25 # WARNING: this file is deprecated and should not be used any more. It has been
26 # replaced by the file __init__.py of the python package named "salome".
27 # To prevent any error, a warning is raised in the case where this file is imported
28 raise RuntimeError("WRN - the file salome.py is deprecated. It should NOT be used any more.")
29 # ================================================================================
30
31
32 #  File   : salome.py
33 #  Author : Paul RASCLE, EDF
34 #  Module : SALOME
35 #  $Header$
36 #
37 """ 
38 Module salome gives access to Salome ressources.
39
40 variables:
41
42   - salome.orb             : CORBA
43   - salome.naming_service  : instance of naming Service class
44       - methods:
45           - Resolve(name)  : find a CORBA object (ior) by its pathname
46           - Register(name) : register a CORBA object under a pathname
47
48   - salome.lcc             : instance of lifeCycleCORBA class
49       - methods:
50           - FindOrLoadComponent(server,name) :
51                            obtain an Engine (CORBA object)
52                            or launch the Engine if not found,
53                            with a Server name and an Engine name
54
55   - salome.sg              : salome object to communicate with the graphical user interface (if any)
56       - methods:
57          - updateObjBrowser(bool):
58          - getActiveStudyId():
59          - getActiveStudyName():
60
61          - SelectedCount():      returns number of selected objects
62          - getSelected(i):       returns entry of selected object number i
63          - getAllSelected():     returns list of entry of selected objects
64          - AddIObject(Entry):    select an existing Interactive object
65          - RemoveIObject(Entry): remove object from selection
66          - ClearIObjects():      clear selection
67
68          - Display(*Entry):
69          - DisplayOnly(Entry):
70          - Erase(Entry):
71          - DisplayAll():
72          - EraseAll():
73
74          - IDToObject(Entry):    returns CORBA reference from entry
75
76   - salome.myStudyName     : active Study Name
77   - salome.myStudyId       : active Study Id
78   - salome.myStudy         : the active Study itself (CORBA ior)
79       - methods : defined in SALOMEDS.idl
80
81 """
82 ## @package salome
83 # Module salome gives access to Salome ressources.
84 #
85 #  \param salome.orb             : CORBA orb object
86 #  \param salome.naming_service  : instance of naming Service class (SALOME_NamingServicePy::SALOME_NamingServicePy_i)
87 #  \param salome.lcc             : instance of lifeCycleCORBA class (SALOME_LifeCycleCORBA)
88 #  \param salome.sg              : Salome object to communicate with the graphical user interface, if running (see interface in salome_iapp::SalomeOutsideGUI)
89 #  \param salome.myStudyName     : active Study Name
90 #  \param salome.myStudyId       : active Study Id
91 #  \param salome.myStudy         : the active Study (interface SALOMEDS::Study)
92
93 #
94 from salome_kernel import *
95 from salome_study import *
96 from salome_iapp import *
97
98
99 #
100 # The next block is workaround for the problem of shared symbols loading for the extension modules (e.g. SWIG-generated)
101 # that causes RTTI unavailable in some cases. To solve this problem, sys.setdlopenflags() function is used.
102 # Depending on the Python version and platform, the dlopen flags can be defined in the dl, DLFUN or ctypes module.
103
104 import sys
105 flags = None
106 if not flags:
107     try:
108         # dl module can be unavailable
109         import dl
110         flags = dl.RTLD_NOW | dl.RTLD_GLOBAL
111     except:
112         pass
113     pass
114 if not flags:
115     try:
116         # DLFCN module can be unavailable
117         import DLFCN
118         flags = DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL
119     except:
120         pass
121     pass
122 if not flags:
123     try:
124         # ctypes module can be unavailable
125         import ctypes
126         flags = ctypes.RTLD_GLOBAL
127     except:
128         pass
129     pass
130     
131 if flags:
132     sys.setdlopenflags(flags)
133     pass
134
135 orb, lcc, naming_service, cm,sg=None,None,None,None,None
136 myStudyManager, myStudyId, myStudy, myStudyName=None,None,None,None
137
138 salome_initial=1
139 def salome_init(theStudyId=0,embedded=0):
140     """
141     Performs only once SALOME general purpose intialisation for scripts.
142     optional argument : theStudyId
143       When in embedded interpreter inside IAPP, theStudyId is not used
144       When used without GUI (external interpreter)
145         0      : create a new study (default).
146         n (>0) : try connection to study with Id = n, or create a new one
147                  if study not found.
148                  If study creation, its Id may be different from theStudyId !
149     Provides:
150     orb             reference to CORBA
151     lcc             a LifeCycleCorba instance
152     naming_service  a naming service instance
153     cm              reference to the container manager
154     sg              access to SALOME GUI (when linked with IAPP GUI)
155     myStudyManager  the study manager
156     myStudyId       active study identifier
157     myStudy         active study itself (CORBA reference)
158     myStudyName     active study name
159     """
160     global salome_initial
161     global orb, lcc, naming_service, cm
162     global sg
163     global myStudyManager, myStudyId, myStudy, myStudyName
164
165     try:
166         if salome_initial:
167             salome_initial=0
168             sg = salome_iapp_init(embedded)
169             orb, lcc, naming_service, cm = salome_kernel_init()
170             myStudyManager, myStudyId, myStudy, myStudyName =salome_study_init(theStudyId)
171             pass
172         pass
173     except RuntimeError, inst:
174         # wait a little to avoid trace mix
175         import time
176         time.sleep(0.2)
177         x = inst
178         print "salome.salome_init():", x
179         print """
180         ============================================
181         May be there is no running SALOME session
182         salome.salome_init() is intented to be used
183         within an already running session
184         ============================================
185         """
186         raise
187
188 #to expose all objects to pydoc
189 __all__=dir()