Salome HOME
Merge branch 'Dev_2.1.0' of salome:modules/shaper into Dev_2.1.0
[modules/shaper.git] / src / Config / Config_DataModelReader.h
index caba2b6b848cbc2b5a66101bdeda2a1d9595feb2..7af52946e9c3ea99168e7e9ef078fd52df3290fe 100644 (file)
@@ -27,11 +27,11 @@ class Config_DataModelReader : public Config_XMLReader
  public:
   /*!
    * Constructor
-   * \param theXmlFile - full path to the xml file which will be processed by the reader
    */
   CONFIG_EXPORT Config_DataModelReader();
   CONFIG_EXPORT virtual ~Config_DataModelReader();
 
+  // ROOT folders propertiues *****************
   /// Returns name of type of tree items in root
   CONFIG_EXPORT std::string rootType() const { return myRootTypes; }
 
@@ -50,17 +50,71 @@ class Config_DataModelReader : public Config_XMLReader
   /// \param theId id of the folder
   CONFIG_EXPORT std::string rootFolderIcon(int theId) const { return myRootFolderIcons[theId]; }
 
- protected:
+  /// Returns id of a folder containing the given type
+  /// \param theType type of objects in folder
+  CONFIG_EXPORT int rootFolderId(std::string theType) const;
+
+  /// Returns true if the folder can be shown without items
+  /// \param theId id of the folder
+  CONFIG_EXPORT bool rootShowEmpty(int theId) const { return myRootFolderShowEmpty[theId]; }
+
+
+
+  // SUB folders propertiues ********************
+  /// Returns name of type of tree items in sub document
+  CONFIG_EXPORT std::string subType() const { return mySubTypes; }
+
+  /// Returns number of folders under sub document 
+  CONFIG_EXPORT int subFoldersNumber() const { return mySubFolderNames.size(); }
+
+  /// Returns name of the folder by its Id
+  /// \param theId id of the folder
+  CONFIG_EXPORT std::string subFolderName(int theId) const { return mySubFolderNames[theId]; }
+
+  /// Returns data type in the folder by its Id
+  /// \param theId id of the folder
+  CONFIG_EXPORT std::string subFolderType(int theId) const { return mySubFolderTypes[theId]; }
+
+  /// Returns icon of a folder by its Id
+  /// \param theId id of the folder
+  CONFIG_EXPORT std::string subFolderIcon(int theId) const { return mySubFolderIcons[theId]; }
+
+  /// Returns true if the folder can be shown without items
+  /// \param theId id of the folder
+  CONFIG_EXPORT bool subShowEmpty(int theId) const { return mySubFolderShowEmpty[theId]; }
+
+  /// Returns id of a folder containing the given type
+  /// \param theType type of objects in folder
+  CONFIG_EXPORT int subFolderId(std::string theType) const;
+
+  /// Returns true if the sub-document data tree has to be attached to Part Result node
+  /// Otherwise it has to be connected to Part feature node
+  CONFIG_EXPORT bool isAttachToResult() const { return myIsResultLink; }
+
+protected:
   /// Overloaded method. Defines how to process each node
   virtual void processNode(xmlNodePtr theNode);
 
 private:
+  bool isRootReading;
+
+  /// Root document data
   std::vector<std::string> myRootFolderNames;
   std::vector<std::string> myRootFolderTypes;
   std::vector<std::string> myRootFolderIcons;
+  std::vector<bool> myRootFolderShowEmpty;
 
   std::string myRootTypes;
+
+  /// Sub document data
+  std::vector<std::string> mySubFolderNames;
+  std::vector<std::string> mySubFolderTypes;
+  std::vector<std::string> mySubFolderIcons;
+  std::vector<bool> mySubFolderShowEmpty;
+
+  bool myIsResultLink;
+  std::string mySubTypes;
 };
 
 
-#endif
\ No newline at end of file
+#endif