Salome HOME
import SalomePro v1.2c
[modules/yacs.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 */
33 module SALOME_ModuleCatalog
34 {
35   // Type Definitions
36 /*! 
37 This enumeration contains a set of definitions of the components integrated
38 into %SALOME application.
39 */
40   enum ComponentType {  GEOM,  /*!<Module %GEOM */
41                         MESH,  /*!<Module %MESH */
42                          Med,  /*!<Module %Med*/
43                       SOLVER,  /*!<Module of %SOLVER type */
44                         DATA,  /*!<Module %DATA */
45                         VISU,  /*!<Module %VISU */
46                       SUPERV,  /*!<Module %SUPERVISION */
47                        OTHER   /*!<Any other type of module */
48                      } ;
49 /*! 
50 This struct contains fields defining the parameters of the services.
51 */
52
53   struct ServicesParameter
54   {
55     string Parametertype; /*!<Type of the parameter.*/
56     string Parametername; /*!<Name of the parameter.*/
57   } ;
58
59   typedef sequence<ServicesParameter> ListOfServicesParameter;
60 /*! 
61 This struct contains fields completely defining each service.
62 */
63
64   struct Service
65   {
66     string                  ServiceName; /*!<Name of the service.*/
67     ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
68     ListOfServicesParameter ServiceoutParameter; /*!< List of input parameters of the services.*/
69     boolean                 Servicebydefault; /*!<True if the service is taken with its defult fields.*/
70   } ;
71 /*! 
72 List of services of the interface.
73 */
74   typedef sequence<Service> ListOfInterfaceService;
75 /*! 
76 List of services.
77 */
78   typedef sequence<string> ListOfServices ;
79 /*! 
80 This struct contains fields defining each interface.
81 */
82   struct DefinitionInterface
83   {
84     string                 interfacename ; /*!<Name of the interface.*/
85     ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
86   } ;
87 /*! 
88 List of interface definitions.
89 */
90   typedef sequence<DefinitionInterface> ListOfDefInterface ;
91 /*! 
92 List of interfaces.
93 */
94   typedef sequence<string> ListOfInterfaces ;
95 /*! 
96 List of names of components.
97 */
98   typedef sequence<string> ListOfComponents ;
99 /*! 
100 List of names of computers.
101 */
102   typedef sequence<string> ListOfComputers ;
103 /*! 
104 This struct contains GUI elements used for representation of the module in %IAPP component.
105 */
106   struct IAPP_Affich
107   {
108     string modulename; /*!<Name of the module.*/
109     string moduleicone; /*!<Icone representing the module.*/
110   };
111 /*!
112 List of pair GUI elements (component name, component icone)
113  used for representation of the module in %IAPP component.
114 */
115   typedef sequence<IAPP_Affich> ListOfIAPP_Affich ;
116
117 /*! 
118  This exception is raised when a %component, a %service or a % pathPrefix is not found.
119 */
120   exception NotFound
121   {
122     string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
123   } ;
124
125   interface Acomponent
126   {
127     // GetInterfaceList : operation to get a list of the interfaces name of
128     //                    a component
129   /*!
130    Gets a list of names of interfaces of the component
131     \return a list of interfaces of the component 
132   */
133     ListOfInterfaces GetInterfaceList() ;
134
135     // GetInterface : operation to get one interface of a component
136   
137   /*! 
138     Gets a definite interface of the component
139     \note <BR>If the specified interface doesn't exist, Notfound exception is thrown
140     \param interfacename  Name of the interface 
141     \return Required interface
142   */
143     DefinitionInterface GetInterface(in string interfacename) raises(NotFound);
144
145     // GetServiceList : operation to get a list of the services name of
146     //                  an interface of a component
147  /*! 
148    Gets a list of names of services of a definite interface belonging to the component.
149    \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
150    \param interfacename Name of the interface 
151    \return List of services of the required interface
152  */
153     ListOfServices GetServiceList(in string interfacename) raises(NotFound);
154
155     
156     // GetService : operation to get one service of an interface of a component
157   
158  /*! 
159    Gets a definite service of an interface of the component.
160    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
161    \param interfacename Name of the interface
162    \param servicename Name of the service
163    \return Required service
164  */
165
166     Service GetService(in string interfacename, 
167                        in string servicename) raises(NotFound);
168
169     // GetDefaultService : operation to get the default service
170     //                     of an interface of a component
171 /*! 
172    Gets the default service of an interface of the component.
173    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
174    \param interfacename Name of the interface
175    \return Required service
176  */
177
178     Service GetDefaultService(in string interfacename) raises(NotFound);
179
180     // GetPathPrefix : operation to get the PathPrefix of a computer
181  /*!  
182    Gets the prefix path of the computer containing the %component.
183    \note <BR>If the required computer doesn't exist, Notfound exception is thrown
184    \param machinename Name of the machine 
185    \return Prefix path
186  */
187
188     string GetPathPrefix(in string machinename) raises(NotFound);
189
190 /*! 
191     Sets/gets the constraint affected to the component 
192     (to be resolved by LifeCycle for the computer choice)
193 */
194     readonly attribute string constraint ;
195
196 /*! 
197 Sets/gets the name of the component
198 */
199     readonly attribute string componentname;
200
201 /*! 
202 Defines whether the component is multistudy or not
203 */
204     readonly attribute boolean multistudy;
205
206 /*! 
207 Defines the type of the component
208 */
209     readonly attribute ComponentType component_type ;
210
211 /*! 
212 Sets/gets the icone of the component (for IAPP)
213 */
214     readonly attribute string component_icone;
215   } ;
216 /*! \brief %Module catalog interface
217
218 This interface is used for creation of the module catalog in %SALOME application.
219 */
220   interface ModuleCatalog
221   {
222     void ping();
223
224 /*! 
225  Gets a list of names of computers of the catalog 
226 */   
227     ListOfComputers GetComputerList();
228
229 /*! 
230 Gets the %PathPrefix of a computer
231 */
232     string GetPathPrefix(in string machinename) raises(NotFound);
233 /*! 
234  Gets a list of names of components of the catalog 
235 */   
236     ListOfComponents GetComponentList();
237 /*! 
238 Gets a list of pair GUI elements (component name, component icone) 
239 used for representation of the module in %IAPP component.
240 */
241
242     ListOfIAPP_Affich GetComponentIconeList();
243 /*! 
244 Gets a list of names of components of a particular type, which belong to this catalog.
245 */  
246     // GetComponentList : operation to get a list of the components name of
247     //                    a particular type of the catalog   
248     ListOfComponents GetTypedComponentList(in ComponentType _component_type);
249
250 /*! 
251 Gets one component of the catalog.
252 */
253     Acomponent GetComponent(in string componentname) raises(NotFound);
254   } ;
255 };