diff --git a/src/Mod/Part/Gui/AppPartGui.cpp b/src/Mod/Part/Gui/AppPartGui.cpp index cfec84c3ad..e6c62db27b 100644 --- a/src/Mod/Part/Gui/AppPartGui.cpp +++ b/src/Mod/Part/Gui/AppPartGui.cpp @@ -38,6 +38,7 @@ #include "ViewProvider.h" #include "ViewProviderExt.h" #include "ViewProviderPython.h" +#include "ViewProviderPrimitive.h" #include "ViewProviderBox.h" #include "ViewProviderCurveNet.h" #include "ViewProviderImport.h" diff --git a/src/Mod/Part/Gui/CMakeLists.txt b/src/Mod/Part/Gui/CMakeLists.txt index cdebc8a913..29dba58cfe 100644 --- a/src/Mod/Part/Gui/CMakeLists.txt +++ b/src/Mod/Part/Gui/CMakeLists.txt @@ -233,6 +233,8 @@ SET(PartGui_SRCS ViewProviderBoolean.h ViewProviderRuledSurface.cpp ViewProviderRuledSurface.h + ViewProviderPrimitive.cpp + ViewProviderPrimitive.h Workbench.cpp Workbench.h TaskFaceColors.cpp diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp index 1c70fedc6b..7bcf7f773d 100644 --- a/src/Mod/Part/Gui/ViewProvider.cpp +++ b/src/Mod/Part/Gui/ViewProvider.cpp @@ -31,17 +31,11 @@ #include #include #include -#include -#include #include -#include -#include #include -#include #include "ViewProvider.h" -#include "DlgPrimitives.h" using namespace PartGui; @@ -101,66 +95,6 @@ void ViewProviderPart::applyTransparency(const float& transparency, // ---------------------------------------------------------------------------- -PROPERTY_SOURCE(PartGui::ViewProviderPrimitive, PartGui::ViewProviderPart) - -ViewProviderPrimitive::ViewProviderPrimitive() -{ -} - -ViewProviderPrimitive::~ViewProviderPrimitive() -{ - -} - -void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) -{ - Gui::ActionFunction* func = new Gui::ActionFunction(menu); - QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); - act->setData(QVariant((int)ViewProvider::Default)); - func->trigger(act, boost::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); - - ViewProviderPart::setupContextMenu(menu, receiver, member); -} - -void ViewProviderPrimitive::startDefaultEditMode() -{ - QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); - Gui::Command::openCommand(text.toUtf8()); - - Gui::Document* document = this->getDocument(); - if (document) { - document->setEdit(this, ViewProvider::Default); - } -} - -bool ViewProviderPrimitive::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - if (Gui::Control().activeDialog()) - return false; - PartGui::TaskPrimitivesEdit* dlg - = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); - Gui::Control().showDialog(dlg); - return true; - } - else { - ViewProviderPart::setEdit(ModNum); - return true; - } -} - -void ViewProviderPrimitive::unsetEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - Gui::Control().closeDialog(); - } - else { - ViewProviderPart::unsetEdit(ModNum); - } -} - -// ---------------------------------------------------------------------------- - void ViewProviderShapeBuilder::buildNodes(const App::Property* , std::vector& ) const { } diff --git a/src/Mod/Part/Gui/ViewProvider.h b/src/Mod/Part/Gui/ViewProvider.h index 390d629012..7246e32ce7 100644 --- a/src/Mod/Part/Gui/ViewProvider.h +++ b/src/Mod/Part/Gui/ViewProvider.h @@ -61,26 +61,6 @@ protected: std::vector& colors); }; -class PartGuiExport ViewProviderPrimitive : public ViewProviderPart -{ - PROPERTY_HEADER(PartGui::ViewProviderPrimitive); - -public: - /// constructor - ViewProviderPrimitive(); - /// destructor - virtual ~ViewProviderPrimitive(); - - void setupContextMenu(QMenu*, QObject*, const char*); - -protected: - bool setEdit(int ModNum); - void unsetEdit(int ModNum); - -private: - void startDefaultEditMode(); -}; - } // namespace PartGui diff --git a/src/Mod/Part/Gui/ViewProviderBox.h b/src/Mod/Part/Gui/ViewProviderBox.h index 8d3679d7e0..6ea74f83cb 100644 --- a/src/Mod/Part/Gui/ViewProviderBox.h +++ b/src/Mod/Part/Gui/ViewProviderBox.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERBOX_H #define PARTGUI_VIEWPROVIDERBOX_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderCircleParametric.h b/src/Mod/Part/Gui/ViewProviderCircleParametric.h index 5d63b3ecc6..da4eb5388b 100644 --- a/src/Mod/Part/Gui/ViewProviderCircleParametric.h +++ b/src/Mod/Part/Gui/ViewProviderCircleParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCIRCLEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCIRCLEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderConeParametric.h b/src/Mod/Part/Gui/ViewProviderConeParametric.h index 1df27bd312..230d7b258d 100644 --- a/src/Mod/Part/Gui/ViewProviderConeParametric.h +++ b/src/Mod/Part/Gui/ViewProviderConeParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCONEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCONEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderCylinderParametric.h b/src/Mod/Part/Gui/ViewProviderCylinderParametric.h index 00a1d7cf64..39af793a07 100644 --- a/src/Mod/Part/Gui/ViewProviderCylinderParametric.h +++ b/src/Mod/Part/Gui/ViewProviderCylinderParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCYLINDERPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCYLINDERPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderEllipseParametric.h b/src/Mod/Part/Gui/ViewProviderEllipseParametric.h index a217bb79c4..8be4d7a183 100644 --- a/src/Mod/Part/Gui/ViewProviderEllipseParametric.h +++ b/src/Mod/Part/Gui/ViewProviderEllipseParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERELLIPSEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERELLIPSEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderHelixParametric.h b/src/Mod/Part/Gui/ViewProviderHelixParametric.h index bc6050cb07..a7b26b069a 100644 --- a/src/Mod/Part/Gui/ViewProviderHelixParametric.h +++ b/src/Mod/Part/Gui/ViewProviderHelixParametric.h @@ -25,7 +25,7 @@ #define PARTGUI_VIEWPROVIDERHELIXPARAMETRIC_H #include "ViewProviderSpline.h" -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderLineParametric.h b/src/Mod/Part/Gui/ViewProviderLineParametric.h index c7ff10224e..aa4ea4d244 100644 --- a/src/Mod/Part/Gui/ViewProviderLineParametric.h +++ b/src/Mod/Part/Gui/ViewProviderLineParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERLINEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERLINEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderPlaneParametric.h b/src/Mod/Part/Gui/ViewProviderPlaneParametric.h index 515779d826..20423224f0 100644 --- a/src/Mod/Part/Gui/ViewProviderPlaneParametric.h +++ b/src/Mod/Part/Gui/ViewProviderPlaneParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPLANEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERPLANEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderPointParametric.h b/src/Mod/Part/Gui/ViewProviderPointParametric.h index 7f42462608..443a08cfee 100644 --- a/src/Mod/Part/Gui/ViewProviderPointParametric.h +++ b/src/Mod/Part/Gui/ViewProviderPointParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPOINTPARAMETRIC_H #define PARTGUI_VIEWPROVIDERPOINTPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp new file mode 100644 index 0000000000..8da229f1b6 --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +# include +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ViewProviderPrimitive.h" +#include "DlgPrimitives.h" + + +using namespace PartGui; + + +PROPERTY_SOURCE(PartGui::ViewProviderPrimitive, PartGui::ViewProviderPart) + +ViewProviderPrimitive::ViewProviderPrimitive() +{ + extension.initExtension(this); +} + +ViewProviderPrimitive::~ViewProviderPrimitive() +{ + +} + +void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) +{ + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); + act->setData(QVariant((int)ViewProvider::Default)); + func->trigger(act, boost::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); + + ViewProviderPart::setupContextMenu(menu, receiver, member); +} + +void ViewProviderPrimitive::startDefaultEditMode() +{ + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); + + Gui::Document* document = this->getDocument(); + if (document) { + document->setEdit(this, ViewProvider::Default); + } +} + +bool ViewProviderPrimitive::setEdit(int ModNum) +{ + if (ModNum == ViewProvider::Default) { + if (Gui::Control().activeDialog()) + return false; + PartGui::TaskPrimitivesEdit* dlg + = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); + Gui::Control().showDialog(dlg); + return true; + } + else { + ViewProviderPart::setEdit(ModNum); + return true; + } +} + +void ViewProviderPrimitive::unsetEdit(int ModNum) +{ + if (ModNum == ViewProvider::Default) { + Gui::Control().closeDialog(); + } + else { + ViewProviderPart::unsetEdit(ModNum); + } +} diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.h b/src/Mod/Part/Gui/ViewProviderPrimitive.h new file mode 100644 index 0000000000..4247b3b8f9 --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef PARTGUI_VIEWPROVIDERPRIMITIVE_H +#define PARTGUI_VIEWPROVIDERPRIMITIVE_H + +#include + + +namespace PartGui { + +class PartGuiExport ViewProviderPrimitive : public ViewProviderPart +{ + PROPERTY_HEADER(PartGui::ViewProviderPrimitive); + +public: + /// constructor + ViewProviderPrimitive(); + /// destructor + virtual ~ViewProviderPrimitive(); + + void setupContextMenu(QMenu*, QObject*, const char*); + +protected: + bool setEdit(int ModNum); + void unsetEdit(int ModNum); + +private: + void startDefaultEditMode(); +}; + +} // namespace PartGui + + +#endif // PARTGUI_VIEWPROVIDERPRIMITIVE_H + diff --git a/src/Mod/Part/Gui/ViewProviderPrism.h b/src/Mod/Part/Gui/ViewProviderPrism.h index ee61da7825..8c2c233cf1 100644 --- a/src/Mod/Part/Gui/ViewProviderPrism.h +++ b/src/Mod/Part/Gui/ViewProviderPrism.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPRISM_H #define PARTGUI_VIEWPROVIDERPRISM_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderRegularPolygon.h b/src/Mod/Part/Gui/ViewProviderRegularPolygon.h index 00610c0d34..63f7dddbb5 100644 --- a/src/Mod/Part/Gui/ViewProviderRegularPolygon.h +++ b/src/Mod/Part/Gui/ViewProviderRegularPolygon.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERREGULARPOLYGON_H #define PARTGUI_VIEWPROVIDERREGULARPOLYGON_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderSphereParametric.h b/src/Mod/Part/Gui/ViewProviderSphereParametric.h index c94394c00a..d677739b48 100644 --- a/src/Mod/Part/Gui/ViewProviderSphereParametric.h +++ b/src/Mod/Part/Gui/ViewProviderSphereParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERSPHEREPARAMETRIC_H #define PARTGUI_VIEWPROVIDERSPHEREPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderTorusParametric.h b/src/Mod/Part/Gui/ViewProviderTorusParametric.h index 79cb84d05d..a36f8a5f55 100644 --- a/src/Mod/Part/Gui/ViewProviderTorusParametric.h +++ b/src/Mod/Part/Gui/ViewProviderTorusParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERTORUSPARAMETRIC_H #define PARTGUI_VIEWPROVIDERTORUSPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape;