TechDraw: Enable drag and drop to and from clip groups.

Remove TechDraw_ClipGroupAdd and TechDraw_ClipGroupRemove from the UI.
This commit is contained in:
PaddleStroke
2024-03-20 20:37:09 +01:00
committed by WandererFan
parent 3443e61b47
commit bba0bf1f40
3 changed files with 45 additions and 22 deletions

View File

@@ -31,6 +31,9 @@
#endif
#include <App/DocumentObject.h>
#include <Mod/TechDraw/App/DrawPage.h>
#include <Mod/TechDraw/App/DrawProjGroupItem.h>
#include "ViewProviderViewClip.h"
using namespace TechDrawGui;
@@ -104,3 +107,40 @@ TechDraw::DrawViewClip* ViewProviderViewClip::getObject() const
{
return getViewObject();
}
void ViewProviderViewClip::dragObject(App::DocumentObject* docObj)
{
if (!docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) {
return;
}
auto dv = static_cast<TechDraw::DrawView*>(docObj);
getObject()->removeView(dv);
}
void ViewProviderViewClip::dropObject(App::DocumentObject* docObj)
{
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
//DPGI can not be dropped onto the Page as it belongs to DPG, not Page
return;
}
if (!docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) {
return;
}
auto dv = static_cast<TechDraw::DrawView*>(docObj);
TechDraw::DrawPage* pageClip = getObject()->findParentPage();
TechDraw::DrawPage* pageView = dv->findParentPage();
if (!pageClip || !pageView) {
return;
}
if (pageClip != pageView) {
pageView->removeView(dv);
pageClip->addView(dv);
}
getObject()->addView(dv);
}

View File

@@ -56,6 +56,8 @@ public:
bool canDelete(App::DocumentObject* obj) const override;
void dragObject(App::DocumentObject* docObj) override;
void dropObject(App::DocumentObject* docObj) override;
};
} // namespace TechDrawGui

View File

@@ -49,7 +49,6 @@ using namespace TechDrawGui;
qApp->translate("Workbench", "TechDraw Annotation");
qApp->translate("Workbench", "TechDraw Attributes");
qApp->translate("Workbench", "TechDraw Centerlines");
qApp->translate("Workbench", "TechDraw Clips");
qApp->translate("Workbench", "TechDraw Decoration");
qApp->translate("Workbench", "TechDraw Dimensions");
qApp->translate("Workbench", "TechDraw Extend Dimensions");
@@ -217,6 +216,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*views << "TechDraw_ComplexSection";
*views << "TechDraw_DetailView";
*views << "TechDraw_ProjectionGroup";
*views << "TechDraw_ClipGroup";
*views << "Separator";
*views << "TechDraw_Symbol";
*views << "TechDraw_Image";
@@ -235,13 +235,6 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*other << "TechDraw_ArchView";
*other << "TechDraw_SpreadsheetView";
// clip groups
Gui::MenuItem* clips = new Gui::MenuItem;
clips->setCommand("Clipped Views");
*clips << "TechDraw_ClipGroup";
*clips << "TechDraw_ClipGroupAdd";
*clips << "TechDraw_ClipGroupRemove";
// hatching
Gui::MenuItem* hatch = new Gui::MenuItem;
hatch->setCommand("Hatching");
@@ -263,8 +256,6 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*draw << "Separator";
*draw << other;
*draw << "Separator";
*draw << clips;
*draw << "Separator";
*draw << dimensions;
*draw << "Separator";
*draw << hatch;
@@ -307,15 +298,10 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
*views << "TechDraw_DraftView";
*views << "TechDraw_ArchView";
*views << "TechDraw_SpreadsheetView";
*views << "TechDraw_ClipGroup";
*views << "TechDraw_ShareView";
*views << "TechDraw_ProjectShape";
Gui::ToolBarItem* clips = new Gui::ToolBarItem(root);
clips->setCommand("TechDraw Clips");
*clips << "TechDraw_ClipGroup";
*clips << "TechDraw_ClipGroupAdd";
*clips << "TechDraw_ClipGroupRemove";
Gui::ToolBarItem* stacking = new Gui::ToolBarItem(root);
stacking->setCommand("TechDraw Stacking");
*stacking << "TechDraw_StackGroup";
@@ -420,15 +406,10 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const
*views << "TechDraw_DetailView";
*views << "TechDraw_DraftView";
*views << "TechDraw_SpreadsheetView";
*views << "TechDraw_ClipGroup";
*views << "TechDraw_ShareView";
*views << "TechDraw_ProjectShape";
Gui::ToolBarItem* clips = new Gui::ToolBarItem(root);
clips->setCommand("TechDraw Clips");
*clips << "TechDraw_ClipGroup";
*clips << "TechDraw_ClipGroupAdd";
*clips << "TechDraw_ClipGroupRemove";
Gui::ToolBarItem* stacking = new Gui::ToolBarItem(root);
stacking->setCommand("TechDraw Stacking");
*stacking << "TechDraw_StackGroup";