Salome HOME
Make PYHELLO component appear into SALOME_Session_Server_No_Server application
[samples/pyhello.git] / src / PYHELLO / PYHELLO_utils.py
1 # Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 # ---
21 # File   : PYHELLO_utils.py
22 # Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
23 # ---
24 #
25 __all__ = [
26     "moduleID",
27     "objectID",
28     "unknownID",
29     "moduleName",
30     "modulePixmap",
31     "verbose",
32     "getORB",
33     "getLCC",
34     "getEngine",
35     "getStudy",
36     "getEngineIOR",
37     "findOrCreateComponent",
38     "getObjectID",
39     ]
40
41
42 from omniORB import CORBA
43 from SALOME_NamingServicePy import SALOME_NamingServicePy_i
44 from LifeCycleCORBA import LifeCycleCORBA
45 import SALOMEDS
46 import SALOMEDS_Attributes_idl
47 import PYHELLO_ORB
48 import os
49
50 ###
51 # Get PYHELLO module's ID
52 ###
53 def moduleID():
54     MODULE_ID = 1000
55     return MODULE_ID
56
57 ###
58 # Get PYHELLO object's ID
59 ###
60 def objectID():
61     OBJECT_ID = 1010
62     return OBJECT_ID
63
64 ###
65 # Get unknown ID
66 ###
67 def unknownID():
68     FOREIGN_ID = -1
69     return FOREIGN_ID
70
71 ###
72 # Get PYHELLO module's name
73 ###
74 def moduleName():
75     return "PYHELLO"
76
77 ###
78 # Get module's pixmap name
79 ###
80 def modulePixmap():
81     return "PYHELLO_small.png"
82
83 ###
84 # Get verbose level
85 ### 
86 __verbose__ = None
87 def verbose():
88     global __verbose__
89     if __verbose__ is None:
90         try:
91             __verbose__ = int( os.getenv( 'SALOME_VERBOSE', 0 ) )
92         except:
93             __verbose__ = 0
94             pass
95         pass
96     return __verbose__
97
98 ###
99 # Get ORB reference
100 ###
101 __orb__ = None
102 def getORB():
103     global __orb__
104     if __orb__ is None:
105         __orb__ = CORBA.ORB_init( [''], CORBA.ORB_ID )
106         pass
107     return __orb__
108
109 ##
110 # Get life cycle CORBA instance
111 ##
112 __lcc__ = None
113 def getLCC():
114     global __lcc__
115     if __lcc__ is None:
116         __lcc__ = LifeCycleCORBA( getORB() )
117         pass
118     return __lcc__
119
120 ##
121 # Get study
122 ###
123 __study__ = None
124 def getStudy():
125     global __study__
126     if __study__ is None:
127         obj = __engine__.getNamingService().Resolve( '/Study' )
128         __study__ = obj._narrow( SALOMEDS.Study )
129         pass
130     return __study__
131
132 ###
133 # Get PYHELLO engine
134 ###
135 __engine__ = None
136 def getEngine():
137     global __engine__
138     if __engine__ is None:
139         import KernelBasis
140         if KernelBasis.getSSLMode():
141             import salome
142             import PYHELLO
143             from SALOME_ContainerPy import SALOME_ContainerPy_SSL_i
144             poa = salome.orb.resolve_initial_references("RootPOA")
145             poaManager = poa._get_the_POAManager()
146             poaManager.activate()
147             cpy_i = SALOME_ContainerPy_SSL_i(salome.orb, poa, "FactoryServerPy")
148             cpy_ref = cpy_i._this()
149             __engine__ = PYHELLO.PYHELLO(salome.orb,poa,cpy_ref,"FactoryServerPy", "PYHELLO_inst_2" , moduleName())
150         else:
151             __engine__ = getLCC().FindOrLoadComponent( "FactoryServerPy", moduleName() )
152         pass
153     return __engine__
154
155 ###
156 # Get PYHELLO engine IOR
157 ###
158 def getEngineIOR():
159     IOR = ""
160     if getORB() and getEngine():
161         IOR = getORB().object_to_string( getEngine() )
162         pass
163     return IOR
164
165 ###
166 # Find or create PYHELLO component object in a study
167 ###
168 def findOrCreateComponent():
169     study = getStudy()
170     father =study.FindComponent( moduleName() )
171     if father is None:
172         builder = study.NewBuilder()
173         father = builder.NewComponent( moduleName() )
174         attr = builder.FindOrCreateAttribute( father, "AttributeName" )
175         attr.SetValue( moduleName() )
176         attr = builder.FindOrCreateAttribute( father, "AttributePixMap" )
177         attr.SetPixMap( modulePixmap() )
178         attr = builder.FindOrCreateAttribute( father, "AttributeLocalID" )
179         attr.SetValue( moduleID() )
180         try:
181             builder.DefineComponentInstance( father, getEngine() )
182             pass
183         except:
184             pass
185         pass
186     return father
187
188 ###
189 # Get object's ID
190 ###
191 def getObjectID( entry ):
192     ID = unknownID()
193     study = getStudy()
194     if entry:
195         sobj = study.FindObjectID( entry )
196         if sobj is not None:
197             test, anAttr = sobj.FindAttribute( "AttributeLocalID" )
198             if test: ID = anAttr._narrow( SALOMEDS.AttributeLocalID ).Value()
199             pass
200         pass
201     return ID
202