Part: make view provider for helix and spiral inherit from primitive and use spline extension

This commit is contained in:
wmayer
2020-11-08 12:19:57 +01:00
parent e5c63bc3d0
commit b9e373b9b2
2 changed files with 15 additions and 74 deletions

View File

@@ -28,21 +28,18 @@
# include <QMenu>
#endif
#include <Gui/Application.h>
#include <Gui/Control.h>
#include <Mod/Part/App/PrimitiveFeature.h>
#include "DlgPrimitives.h"
#include "ViewProviderHelixParametric.h"
using namespace PartGui;
PROPERTY_SOURCE(PartGui::ViewProviderHelixParametric, PartGui::ViewProviderSpline)
PROPERTY_SOURCE(PartGui::ViewProviderHelixParametric, PartGui::ViewProviderPrimitive)
ViewProviderHelixParametric::ViewProviderHelixParametric()
{
sPixmap = "Part_Helix_Parametric";
extension.initExtension(this);
}
ViewProviderHelixParametric::~ViewProviderHelixParametric()
@@ -62,46 +59,19 @@ std::vector<std::string> ViewProviderHelixParametric::getDisplayModes(void) cons
void ViewProviderHelixParametric::setupContextMenu(QMenu* menu, QObject* receiver, const char* member)
{
QAction* act;
act = menu->addAction(QObject::tr("Edit helix"), receiver, member);
act->setData(QVariant((int)ViewProvider::Default));
ViewProviderSpline::setupContextMenu(menu, receiver, member);
}
bool ViewProviderHelixParametric::setEdit(int ModNum)
{
if (ModNum == ViewProvider::Default) {
if (Gui::Control().activeDialog())
return false;
PartGui::TaskPrimitivesEdit* dlg
= new PartGui::TaskPrimitivesEdit(dynamic_cast<Part::Primitive*>(getObject()));
Gui::Control().showDialog(dlg);
return true;
}
else {
ViewProviderSpline::setEdit(ModNum);
return true;
}
}
void ViewProviderHelixParametric::unsetEdit(int ModNum)
{
if (ModNum == ViewProvider::Default) {
Gui::Control().closeDialog();
}
else {
ViewProviderSpline::unsetEdit(ModNum);
}
ViewProviderPrimitive::setupContextMenu(menu, receiver, member);
extension.setupContextMenu(menu);
}
// ------------------------------------------------------------------
PROPERTY_SOURCE(PartGui::ViewProviderSpiralParametric, PartGui::ViewProviderSpline)
PROPERTY_SOURCE(PartGui::ViewProviderSpiralParametric, PartGui::ViewProviderPrimitive)
ViewProviderSpiralParametric::ViewProviderSpiralParametric()
{
sPixmap = "Part_Spiral_Parametric";
extension.initExtension(this);
}
ViewProviderSpiralParametric::~ViewProviderSpiralParametric()
@@ -121,34 +91,6 @@ std::vector<std::string> ViewProviderSpiralParametric::getDisplayModes(void) con
void ViewProviderSpiralParametric::setupContextMenu(QMenu* menu, QObject* receiver, const char* member)
{
QAction* act;
act = menu->addAction(QObject::tr("Edit spiral"), receiver, member);
act->setData(QVariant((int)ViewProvider::Default));
ViewProviderSpline::setupContextMenu(menu, receiver, member);
}
bool ViewProviderSpiralParametric::setEdit(int ModNum)
{
if (ModNum == ViewProvider::Default) {
if (Gui::Control().activeDialog())
return false;
PartGui::TaskPrimitivesEdit* dlg
= new PartGui::TaskPrimitivesEdit(dynamic_cast<Part::Primitive*>(getObject()));
Gui::Control().showDialog(dlg);
return true;
}
else {
ViewProviderSpline::setEdit(ModNum);
return true;
}
}
void ViewProviderSpiralParametric::unsetEdit(int ModNum)
{
if (ModNum == ViewProvider::Default) {
Gui::Control().closeDialog();
}
else {
ViewProviderSpline::unsetEdit(ModNum);
}
ViewProviderPrimitive::setupContextMenu(menu, receiver, member);
extension.setupContextMenu(menu);
}

View File

@@ -25,11 +25,12 @@
#define PARTGUI_VIEWPROVIDERHELIXPARAMETRIC_H
#include "ViewProviderSpline.h"
#include "ViewProvider.h"
namespace PartGui {
class PartGuiExport ViewProviderHelixParametric : public ViewProviderSpline
class PartGuiExport ViewProviderHelixParametric : public ViewProviderPrimitive
{
PROPERTY_HEADER(PartGui::ViewProviderHelixParametric);
@@ -41,12 +42,11 @@ public:
std::vector<std::string> getDisplayModes(void) const;
void setupContextMenu(QMenu*, QObject*, const char*);
protected:
bool setEdit(int ModNum);
void unsetEdit(int ModNum);
private:
ViewProviderSplineExtension extension;
};
class PartGuiExport ViewProviderSpiralParametric : public ViewProviderSpline
class PartGuiExport ViewProviderSpiralParametric : public ViewProviderPrimitive
{
PROPERTY_HEADER(PartGui::ViewProviderSpiralParametric);
@@ -58,9 +58,8 @@ public:
std::vector<std::string> getDisplayModes(void) const;
void setupContextMenu(QMenu*, QObject*, const char*);
protected:
bool setEdit(int ModNum);
void unsetEdit(int ModNum);
private:
ViewProviderSplineExtension extension;
};
} // namespace PartGui