[TD]add extensions for drag and drop
This commit is contained in:
@@ -61,7 +61,7 @@
|
||||
#include "QGVPage.h"
|
||||
#include "ViewProviderTemplate.h"
|
||||
#include "ViewProviderPage.h"
|
||||
|
||||
#include "ViewProviderPageExtension.h"
|
||||
|
||||
using namespace TechDrawGui;
|
||||
using namespace TechDraw;
|
||||
@@ -82,12 +82,14 @@ ViewProviderPage::ViewProviderPage()
|
||||
m_graphicsView(nullptr),
|
||||
m_graphicsScene(nullptr)
|
||||
{
|
||||
initExtension(this);
|
||||
|
||||
sPixmap = "TechDraw_TreePage";
|
||||
static const char *group = "Grid";
|
||||
|
||||
ADD_PROPERTY_TYPE(ShowFrames ,(true), group, App::Prop_None, "Show or hide View frames and Labels on this Page");
|
||||
ADD_PROPERTY_TYPE(ShowGrid ,(PreferencesGui::showGrid()), group, App::Prop_None, "Show or hide a grid on this Page");
|
||||
ADD_PROPERTY_TYPE(GridSpacing, (PreferencesGui::gridSpacing()), group, (App::PropertyType)(App::Prop_None),
|
||||
ADD_PROPERTY_TYPE(GridSpacing, (PreferencesGui::gridSpacing()), group, (App::PropertyType::Prop_None),
|
||||
"Grid line spacing in mm");
|
||||
|
||||
ShowFrames.setStatus(App::Property::Hidden, true);
|
||||
@@ -462,57 +464,29 @@ bool ViewProviderPage::canDelete(App::DocumentObject *obj) const
|
||||
|
||||
bool ViewProviderPage::canDragObjects() const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDragObjects()\n");
|
||||
return ViewProviderDocumentObject::canDragObjects();
|
||||
return getVPPExtension()->extensionCanDragObjects();
|
||||
}
|
||||
|
||||
bool ViewProviderPage::canDragObject(App::DocumentObject* docObj) const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDragObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dragged from the Page as it belongs to DPG, not Page
|
||||
return false;
|
||||
}
|
||||
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return getVPPExtension()->extensionCanDragObject(docObj);
|
||||
}
|
||||
|
||||
bool ViewProviderPage::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner,
|
||||
const char *subname, const std::vector<std::string> &elements) const
|
||||
{
|
||||
return getVPPExtension()->extensionCanDropObjectEx(obj, owner, subname, elements);
|
||||
|
||||
}
|
||||
|
||||
bool ViewProviderPage::canDropObject(App::DocumentObject* docObj) const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDropObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dropped onto the Page as it belongs to DPG, not Page
|
||||
return false;
|
||||
}
|
||||
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return getVPPExtension()->extensionCanDropObject(docObj);
|
||||
}
|
||||
|
||||
void ViewProviderPage::dropObject(App::DocumentObject* docObj)
|
||||
{
|
||||
// Base::Console().Message("VPP:dropObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dropped onto the Page as it belongs to DPG, not Page
|
||||
ViewProviderDocumentObject::dropObject(docObj);
|
||||
return;
|
||||
}
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
auto dv = static_cast<TechDraw::DrawView*>(docObj);
|
||||
if (dv->findParentPage()) {
|
||||
dv->findParentPage()->removeView(dv);
|
||||
}
|
||||
getDrawPage()->addView(dv);
|
||||
//don't run ancestor's method as addView does everything we need
|
||||
return;
|
||||
}
|
||||
ViewProviderDocumentObject::dropObject(docObj);
|
||||
getVPPExtension()->extensionDropObject(docObj);
|
||||
}
|
||||
|
||||
//! Redo the whole visual page
|
||||
@@ -565,3 +539,15 @@ void ViewProviderPage::setGrid()
|
||||
widget->updateViewport();
|
||||
}
|
||||
}
|
||||
|
||||
ViewProviderPageExtension* ViewProviderPage::getVPPExtension() const
|
||||
{
|
||||
auto vpe = getExtensionByType<ViewProviderPageExtension>();
|
||||
auto vppe = static_cast<ViewProviderPageExtension*>(vpe);
|
||||
return vppe;
|
||||
}
|
||||
|
||||
const char* ViewProviderPage::whoAmI() const
|
||||
{
|
||||
return m_pageName.c_str();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user