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;