Salome HOME
Issue #143 Focus on "selector" widget allows to select another feature to apply the...
[modules/shaper.git] / src / ModuleBase / ModuleBase_ModelWidget.h
index 2d626c58b371e7531368b5be8e7449030b2cce35..968f5960ce72bb7fc891563b8839712009d4dc83 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>
 
@@ -52,6 +52,11 @@ Q_OBJECT
   /// \return the boolean result
   bool isInitialized(ObjectPtr theObject) const;
 
+  bool isComputedDefault()
+  {
+    return myIsComputedDefault;
+  }
+
   /// Saves the internal parameters to the given feature
   /// \param theObject a model feature to be changed
   virtual bool storeValue() const = 0;
@@ -67,12 +72,8 @@ Q_OBJECT
   /// \return a control list
   virtual QList<QWidget*> getControls() const = 0;
 
-  /// Returns whether the control has a default value
-  /// \return a boolean value
-  bool hasDefaultValue() const
-  {
-    return myHasDefaultValue;
-  }
+  /// FocusIn events processing
+  virtual bool eventFilter(QObject* theObject, QEvent *theEvent);
 
   /// Returns the attribute name
   /// \returns the string value
@@ -97,13 +98,19 @@ Q_OBJECT
     myFeature = theFeature;
   }
 
+  /// Defines if it is supposed that the widget should interact with the viewer.
+  virtual bool isViewerSelector() { return false; }
+
 signals:
   /// The signal about widget values changed
   void valuesChanged();
   /// 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);
@@ -118,11 +125,18 @@ signals:
 
   void updateObject(ObjectPtr theObj) const;
 
-  bool myHasDefaultValue;  /// the boolean state whether the control has a default value
+  /// Let the widget process FocusIn events
+  void processFocus(QWidget* theWidget);
 
   std::string myAttributeID;  /// the attribute name of the model feature
   std::string myParentId;    /// name of parent
   FeaturePtr myFeature;
+
+  bool myIsComputedDefault;
+
+ private:
+   /// Contains a list of widgets that may accept focus
+   QList<QWidget*> myFocusInWidgets;
 };
 
 #endif