Salome HOME
This commit was generated by cvs2git to create tag 'V1_4_0b2'.
[modules/kernel.git] / idl / SALOME_ModuleCatalog.idl
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
19 //
20 //
21 //
22 //  File   : SALOME_ModuleCatalog.idl
23 //  Author : Estelle Deville
24 //  $Header$
25
26 /*! \file SALOME_ModuleCatalog.idl This file conatins a set of interfaces used for  
27   creation of the catalog of components in %SALOME application
28 */
29
30 /*!  
31 The main package of interfaces used for creation of the module catalog in %SALOME application.
32 Module catalog allows to manage components of %SALOME application, to call specified in the
33 xml files interfaces with the help of AComponent interface.
34 */
35 module SALOME_ModuleCatalog
36 {
37   // Type Definitions
38 /*! 
39 This enumeration contains a current set of definitions of the components integrated
40 into %SALOME application.
41 */
42   enum ComponentType {  GEOM,  /*!<Module %GEOM */
43                         MESH,  /*!<Module %MESH */
44                          Med,  /*!<Module %Med*/
45                       SOLVER,  /*!<Module of %SOLVER type */
46                         DATA,  /*!<Module %DATA */
47                         VISU,  /*!<Module %VISU */
48                       SUPERV,  /*!<Module %SUPERVISION */
49                        OTHER   /*!<Any other type of module */
50                      } ;
51 /*! 
52 This struct contains fields defining the parameter of the service.
53 */
54
55   struct ServicesParameter
56   {
57     string Parametertype; /*!<Type of the parameter.*/
58     string Parametername; /*!<Name of the parameter.*/
59   } ;
60
61 /*! 
62 The list of the parameters of service.
63 */
64
65   typedef sequence<ServicesParameter> ListOfServicesParameter;
66
67 /*! 
68 This struct contains fields completely defining each service.
69 */
70
71   struct Service
72   {
73     string                  ServiceName; /*!<Name of the service.*/
74     ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
75     ListOfServicesParameter ServiceoutParameter; /*!< List of output parameters of the services.*/
76     boolean                 Servicebydefault; /*!<True if the service is taken with its defult fields.*/
77   } ;
78 /*! 
79 List of services of the interface.
80 */
81   typedef sequence<Service> ListOfInterfaceService;
82 /*! 
83 List of services.
84 */
85   typedef sequence<string> ListOfServices ;
86 /*! 
87 This struct contains fields defining each interface.
88 */
89   struct DefinitionInterface
90   {
91     string                 interfacename ; /*!<Name of the interface.*/
92     ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
93   } ;
94 /*! 
95 List of interface definitions.
96 */
97   typedef sequence<DefinitionInterface> ListOfDefInterface ;
98 /*! 
99 List of names of interfaces.
100 */
101   typedef sequence<string> ListOfInterfaces ;
102 /*! 
103 List of names of components.
104 */
105   typedef sequence<string> ListOfComponents ;
106 /*! 
107 List of names of computers.
108 */
109   typedef sequence<string> ListOfComputers ;
110 /*! 
111 This struct contains GUI elements used for representation of the module in %IAPP component.
112 */
113   struct IAPP_Affich
114   {
115     string modulename; /*!<Name of the module.*/
116     string moduleusername; /*!<UserName of the module.*/
117     string moduleicone; /*!<Icone representing the module.*/
118   };
119 /*!
120 List of pair GUI elements (component name, component icone)
121  used for representation of the module in %IAPP component.
122 */
123   typedef sequence<IAPP_Affich> ListOfIAPP_Affich ;
124
125 /*! 
126  This exception is raised when a %component, a %service or a % pathPrefix is not found.
127 */
128   exception NotFound
129   {
130     string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
131   } ;
132
133   /*!
134    This interface provides the common funcionality information of corresponding component.
135    Information is loaded from specific xml files.
136   */
137   interface Acomponent
138   {
139     // GetInterfaceList : operation to get a list of the interfaces name of
140     //                    a component
141   /*!
142    Gets the list of names of interfaces of the component
143     \return a list of interfaces of the component 
144   */
145     ListOfInterfaces GetInterfaceList() ;
146
147     // GetInterface : operation to get one interface of a component
148   
149   /*! 
150     Gets a definite interface of the component
151     \note <BR>If the specified interface doesn't exist, Notfound exception is thrown
152     \param interfacename  Name of the interface 
153     \return Required interface
154   */
155     DefinitionInterface GetInterface(in string interfacename) raises(NotFound);
156
157     // GetServiceList : operation to get a list of the services name of
158     //                  an interface of a component
159  /*! 
160    Gets the list of names of services of a definite interface belonging to the component.
161    \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
162    \param interfacename Name of the interface 
163    \return List of services of the required interface
164  */
165     ListOfServices GetServiceList(in string interfacename) raises(NotFound);
166
167     
168     // GetService : operation to get one service of an interface of a component
169   
170  /*! 
171    Gets a definite service of an interface of the component.
172    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
173    \param interfacename Name of the interface
174    \param servicename Name of the service
175    \return Required service
176  */
177
178     Service GetService(in string interfacename, 
179                        in string servicename) raises(NotFound);
180
181     // GetDefaultService : operation to get the default service
182     //                     of an interface of a component
183 /*! 
184    Gets the default service of an interface of the component.
185    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
186    \param interfacename Name of the interface
187    \return Required service
188  */
189
190     Service GetDefaultService(in string interfacename) raises(NotFound);
191
192     // GetPathPrefix : operation to get the PathPrefix of a computer
193  /*!  
194    Gets the prefix path of the computer containing the %component.
195    \note <BR>If the required computer doesn't exist, Notfound exception is thrown
196    \param machinename Name of the machine 
197    \return Prefix path
198  */
199
200     string GetPathPrefix(in string machinename) raises(NotFound);
201
202 /*! 
203     Sets/gets the constraint affected to the component 
204     (to be resolved by LifeCycle for the computer choice)
205 */
206     readonly attribute string constraint ;
207
208 /*! 
209 Sets/gets the name of the component
210 */
211     readonly attribute string componentname;
212
213 /*!
214 Sets/gets the user name of the component
215 */
216     readonly attribute string componentusername;
217
218 /*! 
219 Defines whether the component is multistudy or not
220 */
221     readonly attribute boolean multistudy;
222
223 /*! 
224 Defines the type of the component
225 */
226     readonly attribute ComponentType component_type ;
227
228 /*! 
229 Sets/gets the icone of the component (for IAPP)
230 */
231     readonly attribute string component_icone;
232   } ;
233 /*! \brief %Module catalog interface
234
235 This interface is used for creation of the module catalog in %SALOME application.
236 */
237   interface ModuleCatalog
238   {
239     void ping();
240
241 /*! 
242  Gets a list of names of computers of the catalog 
243 */   
244     ListOfComputers GetComputerList();
245
246 /*! 
247 Gets the %PathPrefix of a computer
248 */
249     string GetPathPrefix(in string machinename) raises(NotFound);
250 /*! 
251  Gets a list of names of components of the catalog 
252 */   
253     ListOfComponents GetComponentList();
254 /*! 
255 Gets a list of pair GUI elements (component name, component icone) 
256 used for representation of the module in %IAPP component.
257 */
258
259     ListOfIAPP_Affich GetComponentIconeList();
260 /*! 
261 Gets a list of names of components of a particular type, which belong to this catalog.
262 */  
263     // GetComponentList : operation to get a list of the components name of
264     //                    a particular type of the catalog   
265     ListOfComponents GetTypedComponentList(in ComponentType _component_type);
266
267 /*! 
268 Gets one component of the catalog.
269 */
270     Acomponent GetComponent(in string componentname) raises(NotFound);
271   } ;
272 };