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