Salome HOME
Boost has been removed from code
[modules/shaper.git] / src / ModuleBase / ModuleBase_ModelWidget.h
index bc520ffb35742870864471055bb738fa7db0c767..7e77804ac36a440d483d726af92e7b29b97d0fac 100644 (file)
@@ -2,8 +2,8 @@
 // Created:     25 Apr 2014
 // Author:      Natalia ERMOLAEVA
 
-#ifndef ModuleBase_ModelWidget_H
-#define ModuleBase_ModelWidget_H
+#ifndef MODULEBASE_MODELWIDGET_H
+#define MODULEBASE_MODELWIDGET_H
 
 #include <ModuleBase.h>
 
@@ -11,7 +11,7 @@
 
 #include <QObject>
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class Config_WidgetAPI;
 class ModuleBase_WidgetValue;
@@ -32,13 +32,25 @@ Q_OBJECT
   /// Constructor
   /// \theParent the parent object
   /// \theData the widget configuation. The attribute of the model widget is obtained from
-  ModuleBase_ModelWidget(QObject* theParent, const Config_WidgetAPI* theData,
+  ModuleBase_ModelWidget(QWidget* theParent, const Config_WidgetAPI* theData,
                          const std::string& theParentId);
   /// Destructor
   virtual ~ModuleBase_ModelWidget()
   {
   }
 
+  /// Returns the state whether the attribute of the feature is initialized
+  /// \param theObject a model feature to be checked
+  /// \return the boolean result
+  bool isInitialized(ObjectPtr theObject) const;
+
+  /// Returns true, if default value of the widget should be computed
+  /// on operation's execute, like radius for circle's constraint (can not be zero)
+  bool isComputedDefault() { return myIsComputedDefault; }
+
+  /// Defines if it is supposed that the widget should interact with the viewer.
+  virtual bool isViewerSelector() { return false; }
+
   /// Set the given wrapped value to the current widget
   /// This value should be processed in the widget according to the needs
   /// \param theValue the wrapped widget value
@@ -47,11 +59,6 @@ Q_OBJECT
     return false;
   }
 
-  /// Returns the state whether the attribute of the feature is initialized
-  /// \param theObject a model feature to be checked
-  /// \return the boolean result
-  bool isInitialized(ObjectPtr theObject) const;
-
   /// Saves the internal parameters to the given feature
   /// \param theObject a model feature to be changed
   virtual bool storeValue() const = 0;
@@ -63,10 +70,23 @@ Q_OBJECT
   /// \return the state whether the widget can accept the focus
   virtual bool focusTo();
 
+  /// Returns the internal parent wiget control, that can be shown anywhere
+  /// \returns the widget
+  virtual QWidget* getControl() const = 0;
+
   /// Returns list of widget controls
   /// \return a control list
   virtual QList<QWidget*> getControls() const = 0;
 
+
+  /// FocusIn events processing
+  virtual bool eventFilter(QObject* theObject, QEvent *theEvent);
+
+
+  void enableFocusProcessing();
+
+  void setHighlighted(bool isHighlighted);
+
   /// Returns the attribute name
   /// \returns the string value
   std::string attributeID() const
@@ -85,6 +105,7 @@ Q_OBJECT
   {
     return myFeature;
   }
+
   void setFeature(const FeaturePtr& theFeature)
   {
     myFeature = theFeature;
@@ -96,7 +117,10 @@ signals:
   /// The signal about key release on the control, that corresponds to the attribute
   /// \param theAttributeName a name of the attribute
   /// \param theEvent key release event
-  void keyReleased(const std::string& theAttributeName, QKeyEvent* theEvent);
+  void keyReleased(QKeyEvent* theEvent);
+  /// The signal about the widget is get focus
+  /// \param theWidget the model base widget
+  void focusInWidget(ModuleBase_ModelWidget* theWidget);
   /// The signal about the widget is lost focus
   /// \param theWidget the model base widget
   void focusOutWidget(ModuleBase_ModelWidget* theWidget);
@@ -111,9 +135,13 @@ signals:
 
   void updateObject(ObjectPtr theObj) const;
 
-  std::string myAttributeID;  /// the attribute name of the model feature
+ protected:
+  std::string myAttributeID; /// the attribute name of the model feature
   std::string myParentId;    /// name of parent
   FeaturePtr myFeature;
+
+  bool myIsComputedDefault; /// Value should be computed on execute,
+                            /// like radius for circle's constraint (can not be zero)
 };
 
 #endif