]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Provide edit of dimension value on double click
authorvsv <vitaly.smetannikov@opencascade.com>
Mon, 8 Dec 2014 16:05:55 +0000 (19:05 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Mon, 8 Dec 2014 16:05:55 +0000 (19:05 +0300)
src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Module.h

index 0a15d04b6e674b3fc1f8c181d610d4f069ed83fe..cf0e748dba6bb608b1320b4861fbc87338b58e93 100644 (file)
@@ -304,8 +304,9 @@ bool ModuleBase_WidgetShapeSelector::setSelection(ModuleBase_ViewerPrs theValue)
   if (isValid(aObject, aShape)) {
     setObject(aObject, aShape);
     emit focusOutWidget(this);
+    return true;
   }
-  return true;
+  return false;
 }
 
 //********************************************************************
index 5641f05550d7dfc216fee4cb241130df933fa1ea..7ecd6033b6905972b5214d9abda3640c414cc35e 100644 (file)
@@ -11,6 +11,7 @@
 #include <ModuleBase_IViewer.h>
 #include <ModuleBase_IViewWindow.h>
 #include <ModuleBase_IPropertyPanel.h>
+#include <ModuleBase_WidgetEditor.h>
 
 #include <ModelAPI_Object.h>
 #include <ModelAPI_Events.h>
@@ -106,6 +107,9 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
   connect(aViewer, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*)),
           this, SLOT(onMouseMoved(ModuleBase_IViewWindow*, QMouseEvent*)));
 
+  connect(aViewer, SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)),
+          this, SLOT(onMouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)));
+
   XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(theWshop);
   XGUI_Workshop* aWorkshop = aConnector->workshop();
 
@@ -526,6 +530,29 @@ void PartSet_Module::onMouseMoved(ModuleBase_IViewWindow* theWnd, QMouseEvent* t
   }
 }
 
+void PartSet_Module::onMouseDoubleClick(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent)
+{
+  ModuleBase_Operation* aOperation = myWorkshop->currentOperation();
+  if (aOperation->isEditOperation()) {
+    std::string aId = aOperation->id().toStdString();
+    if ((aId == SketchPlugin_ConstraintLength::ID()) ||
+      (aId == SketchPlugin_ConstraintDistance::ID()) ||
+      (aId == SketchPlugin_ConstraintRadius::ID())) 
+    {
+      // Activate dimension value editing on double click
+      ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
+      QList<ModuleBase_ModelWidget*> aWidgets = aPanel->modelWidgets();
+      // Find corresponded widget to activate value editing
+      foreach (ModuleBase_ModelWidget* aWgt, aWidgets) {
+        if (aWgt->attributeID() == "ConstraintValue") {
+          aWgt->focusTo();
+          return;
+        }
+      }
+    }
+  }
+}
+
 void PartSet_Module::onKeyRelease(ModuleBase_IViewWindow* theWnd, QKeyEvent* theEvent)
 {
   XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(workshop());
@@ -635,3 +662,4 @@ QWidget* PartSet_Module::createWidgetByType(const std::string& theType, QWidget*
   }else
     return 0;
 }
+
index 42619830db193a82ed69f8d5d594378e6e89e354..bf61299979a4d43be788abf0fc8acff7a572ecfd 100644 (file)
@@ -69,19 +69,24 @@ protected slots:
   virtual void onSelectionChanged();
 
   /// SLOT, that is called by mouse press in the viewer.
-  /// The mouse released point is sent to the current operation to be processed.
+  /// \param theWnd - the window where the event happens
   /// \param theEvent the mouse event
   void onMousePressed(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
 
   /// SLOT, that is called by mouse release in the viewer.
-  /// The mouse released point is sent to the current operation to be processed.
+  /// \param theWnd - the window where the event happens
   /// \param theEvent the mouse event
-  virtual void onMouseReleased(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
+  void onMouseReleased(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
   
   /// SLOT, that is called by mouse move in the viewer.
-  /// The mouse moved point is sent to the current operation to be processed.
+  /// \param theWnd - the window where the event happens
+  /// \param theEvent the mouse event
+  void onMouseMoved(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
+
+  /// SLOT, that is called by mouse double click in the viewer.
+  /// \param theWnd - the window where the event happens
   /// \param theEvent the mouse event
-  virtual void onMouseMoved(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
+  void onMouseDoubleClick(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent);
 
   /// SLOT, that is called by key release in the viewer.
   /// The mouse moved point is sent to the current operation to be processed.