0029748: Samples - Inspector tool - use recently opened files in TInspectorEXE
[occt.git] / tools / TInspectorAPI / TInspectorAPI_PluginParameters.hxx
1 // Created on: 2017-06-16
2 // Created by: Natalia ERMOLAEVA
3 // Copyright (c) 2017 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement. 
15
16 #ifndef TInspectorAPI_PluginParameters_H
17 #define TInspectorAPI_PluginParameters_H
18
19 #include <NCollection_DataMap.hxx>
20 #include <NCollection_List.hxx>
21 #include <Standard_Version.hxx>
22 #include <Standard_Transient.hxx>
23 #include <TCollection_AsciiString.hxx>
24 #include <TopoDS_Shape.hxx>
25
26 #include <inspector/TInspectorAPI_PreferencesDataMap.hxx>
27
28 class TInspectorAPI_PluginParameters;
29 DEFINE_STANDARD_HANDLE (TInspectorAPI_PluginParameters, Standard_Transient)
30
31 //! The container of parameters for all possible plugins. It stores list of parameters for each plugin, even
32 //! it was not be loaded yet. There is a map of plugin name into plugin parameters.
33 //! The parameters may be:
34 //! - child of Standard_Transient
35 //! - file name to be opened by the plugin
36 class TInspectorAPI_PluginParameters : public Standard_Transient
37 {
38 public:
39
40   //! Constructs the container.
41   Standard_EXPORT TInspectorAPI_PluginParameters() {}
42
43   //! Destructor
44   Standard_EXPORT virtual ~TInspectorAPI_PluginParameters() Standard_OVERRIDE {}
45
46   //! Stores the parameters for plugin
47   //! \param thePluginName a plugin name
48   //! \param theParameters a list of parameters
49   //! \param theToActivatePlugin a state whether the plugin should be immediately activated, to be used in a heir
50   Standard_EXPORT virtual void SetParameters (const TCollection_AsciiString& thePluginName,
51                                               const NCollection_List<Handle(Standard_Transient)>& theParameters,
52                                               const Standard_Boolean& theToActivatePlugin = Standard_False);
53
54   //! Adds a file name for the plugin
55   //! \param thePluginName a plugin name
56   //! \param theFileName a name
57   Standard_EXPORT void AddFileName (const TCollection_AsciiString& thePluginName,
58                                     const TCollection_AsciiString& theFileName);
59
60   //! Sets file names for the plugin
61   //! \param thePluginName a plugin name
62   //! \param theFileNames container of names
63   Standard_EXPORT void SetFileNames (const TCollection_AsciiString& thePluginName,
64                                      const NCollection_List<TCollection_AsciiString>& theFileNames);
65
66   //! Sets a name of item to be selected in the plugin
67   //! \param thePluginName a plugin name
68   //! \param theItemNames a container of names to be selected
69   Standard_EXPORT void SetSelectedNames (const TCollection_AsciiString& thePluginName,
70                                          const NCollection_List<TCollection_AsciiString>& theItemNames);
71
72   //! Sets objects to be selected in the plugin
73   //! \param thePluginName a plugin name
74   //! \param theObjects an objects
75   Standard_EXPORT void SetSelected (const TCollection_AsciiString& thePluginName,
76                                     const NCollection_List<Handle(Standard_Transient)>& theObjects);
77
78   //! Returns true if there are parameters set for the given plugin
79   //! \param thePluginName a plugin name
80   //! \return boolean result
81   Standard_EXPORT bool FindParameters (const TCollection_AsciiString& thePluginName);
82
83   //! Returns parameters set for the given plugin
84   //! \param thePluginName a plugin name
85   //! \return container of objects
86   Standard_EXPORT const NCollection_List<Handle(Standard_Transient)>& Parameters (const TCollection_AsciiString& thePluginName);
87
88   //! Returns true if there are file names set for the given plugin
89   //! \param thePluginName a plugin name
90   //! \return boolean result
91   Standard_EXPORT bool FindFileNames (const TCollection_AsciiString& thePluginName);
92
93   //! Returns file names set for the given plugin
94   //! \param thePluginName a plugin name
95   //! \return container of names
96   Standard_EXPORT const NCollection_List<TCollection_AsciiString>& FileNames (const TCollection_AsciiString& thePluginName);
97
98   //! Returns true if there are file names set for the given plugin
99   //! \param thePluginName a plugin name
100   //! \return boolean result
101   Standard_EXPORT bool FindSelectedNames (const TCollection_AsciiString& thePluginName);
102
103   //! Returns name to be selected in the plugin
104   //! \param thePluginName a plugin name
105   //! \return container of names
106   Standard_EXPORT const NCollection_List<TCollection_AsciiString>& GetSelectedNames (
107                                                       const TCollection_AsciiString& thePluginName);
108
109   //! Returns objects set for the given plugin
110   //! \param thePluginName a plugin name
111   //! \return container of objects
112   Standard_EXPORT Standard_Boolean GetSelectedObjects (const TCollection_AsciiString& thePluginName,
113                                                        NCollection_List<Handle(Standard_Transient)>& theObjects);
114
115   //! Sets path to a directory for temporary plugin files
116   //! \param thePath a path
117   virtual void SetTemporaryDirectory (const TCollection_AsciiString& thePath) { myTemporaryDirectory = thePath; }
118
119   //! Returns path to a directory for temporary plugin files
120   //! \return path
121   TCollection_AsciiString GetTemporaryDirectory() const { return myTemporaryDirectory; }
122
123   //! Returns plugin preferences
124   //! \param thePluginName a plugin name
125   Standard_EXPORT virtual void GetPreferences (const TCollection_AsciiString& thePluginName,
126                                                TInspectorAPI_PreferencesDataMap& theItem) = 0;
127
128   //! Stores plugin preferences
129   //! \param thePluginName a plugin name
130   //! \theItem container of plugin preferences values in form: <name, value>
131   Standard_EXPORT virtual void SetPreferences (const TCollection_AsciiString& thePluginName,
132                                                const TInspectorAPI_PreferencesDataMap& theItem) = 0;
133
134   //! Store plugin preferences into a preferences file
135   Standard_EXPORT virtual void StorePreferences() = 0;
136
137   //! Converts a Shape parameters excepting TShape into a string value
138   //! \param theShape processed shape 
139   //! \return string instance
140   Standard_EXPORT static TCollection_AsciiString ParametersToString (const TopoDS_Shape& theShape);
141
142   //! Converts a Shape parameters exceptin TShape into a string value
143   //! \param theValue parameters string value (without TShape information)
144   //! \param theShape processed shape 
145   Standard_EXPORT static void ParametersToShape (const TCollection_AsciiString& theValue, TopoDS_Shape& theShape);
146
147
148 #if OCC_VERSION_HEX <= 0x060901
149   DEFINE_STANDARD_RTTI (TInspectorAPI_PluginParameters)
150 #else
151   DEFINE_STANDARD_RTTIEXT (TInspectorAPI_PluginParameters, Standard_Transient)
152 #endif
153 private:
154   //! container of parameters
155   NCollection_DataMap<TCollection_AsciiString, NCollection_List<Handle(Standard_Transient)> > myParameters;
156   //! container of names
157   NCollection_DataMap<TCollection_AsciiString, NCollection_List<TCollection_AsciiString> > myFileNames;
158   //! container of select item names
159   NCollection_DataMap<TCollection_AsciiString, NCollection_List<TCollection_AsciiString> > mySelectedItemNames;
160   //! container of select objects
161   NCollection_DataMap<TCollection_AsciiString, NCollection_List<Handle(Standard_Transient)> > mySelectedObjects;
162   //! temporary directory for saving plugin preferences
163   TCollection_AsciiString myTemporaryDirectory;
164 };
165
166 #endif