part deletion handling

-remove everxthing that belongs to a part on deletion
-disallow to delete the origin by the user and only remove it when Part is being deleted
This commit is contained in:
Stefan Tröger
2015-07-08 07:06:49 +02:00
parent ecfe545b3b
commit 07b7d9ff08
13 changed files with 455 additions and 11 deletions

View File

@@ -1050,6 +1050,19 @@ void StdCmdDelete::activated(int iMsg)
// check if the edited view provider is selected
for (std::vector<Gui::SelectionObject>::iterator ft = sel.begin(); ft != sel.end(); ++ft) {
Gui::ViewProvider* vp = pGuiDoc->getViewProvider(ft->getObject());
if (ft->getObject()->testStatus(App::ObjectStatus::Undeletable)) {
QString bodyMessage;
QTextStream bodyMessageStream(&bodyMessage);
bodyMessageStream << qApp->translate("Std_Delete",
"The object is marked as undeletable.");
QMessageBox::warning(Gui::getMainWindow(),
qApp->translate("Std_Delete", "Object status"), bodyMessage);
return;
}
if (vp == vpedit) {
if (!ft->getSubNames().empty()) {
// handle the view provider
@@ -1072,6 +1085,19 @@ void StdCmdDelete::activated(int iMsg)
for (std::vector<Gui::SelectionObject>::iterator ft = sel.begin(); ft != sel.end(); ++ft) {
App::DocumentObject* obj = ft->getObject();
std::vector<App::DocumentObject*> links = obj->getInList();
if (obj->testStatus(App::ObjectStatus::Undeletable)) {
QString bodyMessage;
QTextStream bodyMessageStream(&bodyMessage);
bodyMessageStream << qApp->translate("Std_Delete",
"The object is marked as undeletable.");
QMessageBox::warning(Gui::getMainWindow(),
qApp->translate("Std_Delete", "Object status"), bodyMessage);
return;
}
if (!links.empty()) {
// check if the referenced objects are groups or are selected too
for (std::vector<App::DocumentObject*>::iterator lt = links.begin(); lt != links.end(); ++lt) {