]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
refs #46 - define line segment using dialog fileds
authornds <natalia.donis@opencascade.com>
Mon, 2 Jun 2014 06:19:43 +0000 (10:19 +0400)
committernds <natalia.donis@opencascade.com>
Mon, 2 Jun 2014 06:19:43 +0000 (10:19 +0400)
Set cursor to the first widget in the property panel.
For line creation signal is emitted during start, but, the property panel is built after the operation is stopped and this information do not go to the first point control.

src/ModuleBase/ModuleBase_ModelWidget.h
src/ModuleBase/ModuleBase_WidgetPoint2D.cpp
src/ModuleBase/ModuleBase_WidgetPoint2D.h
src/XGUI/XGUI_PropertyPanel.cpp

index 57b75346aec15b629d8ff5d2401e43652285fdc3..afdc1f2cafccbf317b6faa7d3e3fe28696d3da64 100644 (file)
@@ -38,9 +38,12 @@ public:
 
   virtual bool restoreValue(boost::shared_ptr<ModelAPI_Feature> theFeature) = 0;
 
-  /// Set focus to the current widget if it corresponds to the given attribute
+  /// Returns whether the widget can accept focus, or if it corresponds to the given attribute
   /// \param theAttribute name
-  virtual bool focusTo(const std::string& theAttributeName) = 0;
+  virtual bool canFocusTo(const std::string& theAttributeName) = 0;
+
+  /// Set focus to the current widget if it corresponds to the given attribute
+  virtual void focusTo() = 0;
 
   /// Returns list of widget controls
   /// \return a control list
index 0f397b1017bf3f2eb55cb24a2383c947962d8c78..cbc61430a743a286c9278a46b33573c28364ed7c 100644 (file)
@@ -95,16 +95,15 @@ bool ModuleBase_WidgetPoint2D::restoreValue(boost::shared_ptr<ModelAPI_Feature>
   return true;
 }
 
-bool ModuleBase_WidgetPoint2D::focusTo(const std::string& theAttributeName)
+bool ModuleBase_WidgetPoint2D::canFocusTo(const std::string& theAttributeName)
 {
-  if (theAttributeName != myFeatureAttributeID)
-    return false;
+  return theAttributeName == myFeatureAttributeID;
+}
 
-  if (!myXSpin->hasFocus() && !myYSpin->hasFocus()) {
+void ModuleBase_WidgetPoint2D::focusTo()
+{
+  if (!myXSpin->hasFocus() && !myYSpin->hasFocus())
     myXSpin->setFocus();
-  }
-
-  return true;
 }
 
 QWidget* ModuleBase_WidgetPoint2D::getControl() const
index 016b17217c0e0901640cc1293cc6c5c6440858c9..1a09516b00c30e50635cca03db926459f5233120 100644 (file)
@@ -38,9 +38,12 @@ public:
 
   virtual bool restoreValue(boost::shared_ptr<ModelAPI_Feature> theFeature);
 
-  /// Set focus to the current widget if it corresponds to the given attribute
+  /// Returns whether the widget can accept focus, or if it corresponds to the given attribute
   /// \param theAttribute name
-  virtual bool focusTo(const std::string& theAttributeName);
+  virtual bool canFocusTo(const std::string& theAttributeName);
+
+  /// Set focus to the current widget if it corresponds to the given attribute
+  virtual void focusTo();
 
   /// Returns the internal parent wiget control, that can be shown anywhere
   /// \returns the widget
index f9328b5e16a276f6dadf83b2fb377251d3cc07b2..f511a5750a38d3b40f86638087076ae0b16b645d 100644 (file)
@@ -73,7 +73,6 @@ void XGUI_PropertyPanel::setModelWidgets(const QList<ModuleBase_ModelWidget*>& t
   myWidgets = theWidgets;
 
   if (!theWidgets.empty()) {
-
     QList<ModuleBase_ModelWidget*>::const_iterator anIt = theWidgets.begin(), aLast = theWidgets.end();
     for (; anIt != aLast; anIt++) {
       connect(*anIt, SIGNAL(keyReleased(const std::string&, QKeyEvent*)),
@@ -92,6 +91,9 @@ void XGUI_PropertyPanel::setModelWidgets(const QList<ModuleBase_ModelWidget*>& t
         setTabOrder(anOkBtn, aCancelBtn);
       }
     }
+    ModuleBase_ModelWidget* aWidget = theWidgets.first();
+    if (aWidget)
+      aWidget->focusTo();
   }
 }
 
@@ -138,8 +140,10 @@ void XGUI_PropertyPanel::onFocusActivated(const std::string& theAttributeName)
   }
   else {
     foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) {
-      if (eachWidget->focusTo(theAttributeName))
+      if (eachWidget->canFocusTo(theAttributeName)) {
+        eachWidget->focusTo();
         break;
+      }
     }
   }
 }