From 0388fa4bf94b09b8d91afc3faae3856ebe027c34 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 10 Sep 2018 17:32:39 +0200 Subject: [PATCH] fix inconsistencies between default action of context menu and double-click --- src/Gui/ViewProviderPart.cpp | 12 ++++ src/Gui/ViewProviderPart.h | 2 + src/Gui/ViewProviderTextDocument.cpp | 14 ++++- src/Gui/ViewProviderTextDocument.h | 1 + src/Mod/Robot/Gui/ViewProviderTrajectory.cpp | 61 +++++++++++--------- src/Mod/Robot/Gui/ViewProviderTrajectory.h | 9 +-- 6 files changed, 68 insertions(+), 31 deletions(-) diff --git a/src/Gui/ViewProviderPart.cpp b/src/Gui/ViewProviderPart.cpp index 140aea6541..d59f10b494 100644 --- a/src/Gui/ViewProviderPart.cpp +++ b/src/Gui/ViewProviderPart.cpp @@ -25,13 +25,16 @@ #ifndef _PreComp_ # include +# include # include +# include #endif #include #include #include "ActiveObjectList.h" +#include "ActionFunction.h" #include "BitmapFactory.h" #include "Command.h" @@ -68,6 +71,15 @@ void ViewProviderPart::onChanged(const App::Property* prop) { ViewProviderDragger::onChanged(prop); } +void ViewProviderPart::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) +{ + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Toggle active part")); + func->trigger(act, boost::bind(&ViewProviderPart::doubleClicked, this)); + + ViewProviderDragger::setupContextMenu(menu, receiver, member); +} + bool ViewProviderPart::doubleClicked(void) { //make the part the active one diff --git a/src/Gui/ViewProviderPart.h b/src/Gui/ViewProviderPart.h index 6545929f3b..12a15ccee3 100644 --- a/src/Gui/ViewProviderPart.h +++ b/src/Gui/ViewProviderPart.h @@ -44,6 +44,8 @@ public: virtual ~ViewProviderPart(); virtual bool doubleClicked(void); + virtual void setupContextMenu(QMenu* menu, QObject* receiver, const char* member); + protected: /// get called by the container whenever a property has been changed virtual void onChanged(const App::Property* prop); diff --git a/src/Gui/ViewProviderTextDocument.cpp b/src/Gui/ViewProviderTextDocument.cpp index cb4e7fdfae..19133c6507 100644 --- a/src/Gui/ViewProviderTextDocument.cpp +++ b/src/Gui/ViewProviderTextDocument.cpp @@ -24,7 +24,9 @@ #include "PreCompiled.h" #ifndef _PreComp_ -#include +# include +# include +# include #endif #include @@ -32,6 +34,7 @@ #include #include #include +#include #include "ViewProviderTextDocument.h" @@ -45,6 +48,15 @@ ViewProviderTextDocument::ViewProviderTextDocument() sPixmap = "TextDocument"; } +void ViewProviderTextDocument::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) +{ + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Edit text")); + func->trigger(act, boost::bind(&ViewProviderTextDocument::doubleClicked, this)); + + ViewProviderDocumentObject::setupContextMenu(menu, receiver, member); +} + bool ViewProviderTextDocument::doubleClicked() { if (!activateView()) { diff --git a/src/Gui/ViewProviderTextDocument.h b/src/Gui/ViewProviderTextDocument.h index e8c9e89ab9..5073f4d379 100644 --- a/src/Gui/ViewProviderTextDocument.h +++ b/src/Gui/ViewProviderTextDocument.h @@ -38,6 +38,7 @@ public: ~ViewProviderTextDocument() {} bool doubleClicked(); + void setupContextMenu(QMenu* menu, QObject* receiver, const char* member); bool isShow() const { return true; } private: bool activateView() const; diff --git a/src/Mod/Robot/Gui/ViewProviderTrajectory.cpp b/src/Mod/Robot/Gui/ViewProviderTrajectory.cpp index bdd2b5ece8..59134a26df 100644 --- a/src/Mod/Robot/Gui/ViewProviderTrajectory.cpp +++ b/src/Mod/Robot/Gui/ViewProviderTrajectory.cpp @@ -23,7 +23,7 @@ #include "PreCompiled.h" -#ifndef _PreComp_ +#ifndef _PreComp_ # include # include # include @@ -42,18 +42,20 @@ # include # include # include +# include +# include #endif #include "ViewProviderTrajectory.h" #include #include -#include +#include #include #include #include -#include -#include +#include +#include #include using namespace Gui; using namespace RobotGui; @@ -62,9 +64,9 @@ using namespace Robot; PROPERTY_SOURCE(RobotGui::ViewProviderTrajectory, Gui::ViewProviderGeometryObject) ViewProviderTrajectory::ViewProviderTrajectory() -{ - - pcTrajectoryRoot = new Gui::SoFCSelection(); +{ + + pcTrajectoryRoot = new Gui::SoFCSelection(); pcTrajectoryRoot->highlightMode = Gui::SoFCSelection::OFF; pcTrajectoryRoot->selectionMode = Gui::SoFCSelection::SEL_OFF; //pcRobotRoot->style = Gui::SoFCSelection::BOX; @@ -84,7 +86,7 @@ ViewProviderTrajectory::ViewProviderTrajectory() } ViewProviderTrajectory::~ViewProviderTrajectory() -{ +{ pcTrajectoryRoot->unref(); pcCoords->unref(); pcDrawStyle->unref(); @@ -108,32 +110,32 @@ void ViewProviderTrajectory::attach(App::DocumentObject *pcObj) SoBaseColor * markcol = new SoBaseColor; markcol->rgb.setValue( 1.0f, 1.0f, 0.0f ); SoMarkerSet* marker = new SoMarkerSet; - marker->markerIndex=Gui::Inventor::MarkerBitmaps::getMarkerIndex("CROSS", App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetInt("MarkerSize", 5)); + marker->markerIndex=Gui::Inventor::MarkerBitmaps::getMarkerIndex("CROSS", App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetInt("MarkerSize", 5)); linesep->addChild(markcol); linesep->addChild(marker); pcTrajectoryRoot->addChild(linesep); - - addDisplayMaskMode(pcTrajectoryRoot, "Waypoints"); + + addDisplayMaskMode(pcTrajectoryRoot, "Waypoints"); pcTrajectoryRoot->objectName = pcObj->getNameInDocument(); pcTrajectoryRoot->documentName = pcObj->getDocument()->getName(); pcTrajectoryRoot->subElementName = "Main"; } - -void ViewProviderTrajectory::setDisplayMode(const char* ModeName) -{ - if ( strcmp("Waypoints",ModeName)==0 ) - setDisplayMaskMode("Waypoints"); - ViewProviderGeometryObject::setDisplayMode( ModeName ); -} - -std::vector ViewProviderTrajectory::getDisplayModes(void) const -{ - std::vector StrList; - StrList.push_back("Waypoints"); - return StrList; -} + +void ViewProviderTrajectory::setDisplayMode(const char* ModeName) +{ + if ( strcmp("Waypoints",ModeName)==0 ) + setDisplayMaskMode("Waypoints"); + ViewProviderGeometryObject::setDisplayMode( ModeName ); +} + +std::vector ViewProviderTrajectory::getDisplayModes(void) const +{ + std::vector StrList; + StrList.push_back("Waypoints"); + return StrList; +} void ViewProviderTrajectory::updateData(const App::Property* prop) { @@ -150,9 +152,16 @@ void ViewProviderTrajectory::updateData(const App::Property* prop) } pcLines->numVertices.set1Value(0, trak.getSize()); - }else if (prop == &pcTracObj->Base) { + } + else if (prop == &pcTracObj->Base) { Base::Placement loc = *(&pcTracObj->Base.getValue()); } } +void ViewProviderTrajectory::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) +{ + QAction* act = menu->addAction(QObject::tr("Modify"), receiver, member); + act->setData(QVariant((int)ViewProvider::Default)); +} + diff --git a/src/Mod/Robot/Gui/ViewProviderTrajectory.h b/src/Mod/Robot/Gui/ViewProviderTrajectory.h index 5fec13b336..fbc517e349 100644 --- a/src/Mod/Robot/Gui/ViewProviderTrajectory.h +++ b/src/Mod/Robot/Gui/ViewProviderTrajectory.h @@ -51,10 +51,11 @@ public: void attach(App::DocumentObject *pcObject); void setDisplayMode(const char* ModeName); std::vector getDisplayModes() const; - void updateData(const App::Property*); - -protected: - + void updateData(const App::Property*); + void setupContextMenu(QMenu* menu, QObject* receiver, const char* member); + +protected: + Gui::SoFCSelection * pcTrajectoryRoot; SoCoordinate3 * pcCoords; SoDrawStyle * pcDrawStyle;