Salome HOME
Merge branch 'BR_PYTHON_PLUGIN' of newgeom:newgeom.git into Dev_0.6.1
[modules/shaper.git] / src / Config / Config_WidgetAPI.h
index 0bcb4a454405e0b91769a97e66b452a82e0c26ea..ed58bb4f50b6ff05a0d8df052359280d4e979634 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 /*
  * Config_WidgetAPI.h
  *
@@ -8,7 +10,7 @@
 #ifndef CONFIG_WIDGETAPI_H_
 #define CONFIG_WIDGETAPI_H_
 
-#include <Config.h>
+#include <Config_def.h>
 
 #include <cstdarg>
 #include <string>
@@ -25,25 +27,44 @@ typedef xmlDoc *xmlDocPtr;
 struct _xmlDoc;
 //<<
 
-
 class CONFIG_EXPORT Config_WidgetAPI
 {
-public:
-  Config_WidgetAPI(std::string theRawXml);
+ public:
   virtual ~Config_WidgetAPI();
 
-  void reset();
-  bool nextWidget();
-  std::string widgetType();
-  std::string getProperty(const char* thePropName);
+  std::string widgetType() const;
+  bool isContainerWidget() const;
+  bool isPagedWidget() const;
+
+  std::string widgetId() const;
+  std::string widgetIcon() const;
+  std::string widgetLabel() const;
+  std::string widgetTooltip() const;
 
-protected:
-  bool isNode(xmlNodePtr theNode, const char* name, ...);
+  std::string getProperty(const char* thePropName) const;
+
+  /// Checks if the XML representation of widget has given attribute,
+  /// if yes - returns it's bool value, if no, or if the value can not
+  /// be converted to bool - returns theDefault.
+  /// \param theAttributeName attribute to check
+  /// \param theDefault default value on bad data
+  /// \return the boolean result
+  bool getBooleanAttribute(const char* theAttributeName, bool theDefault) const;
+
+  bool isComputedDefault() const;
+
+ protected:
+  /// These fields are accessible for ModuleBase_WidgetFactory only
+  Config_WidgetAPI(std::string theRawXml);
+  bool toNextWidget();
+  bool toChildWidget();
+  bool toParentWidget();
 
-private:
+ private:
   xmlDocPtr myDoc;
   xmlNodePtr myCurrentNode;
 
+  friend class ModuleBase_WidgetFactory;
 };
 
 #endif /* CONFIG_WIDGETAPI_H_ */