implement Remove command in context menu

This commit is contained in:
wmayer
2017-04-15 23:58:23 +02:00
parent 5689e4c13b
commit 3857e5200a
2 changed files with 35 additions and 0 deletions

View File

@@ -134,6 +134,12 @@ SurfaceFilling::SurfaceFilling(ViewProviderSurfaceFeature* vp, Surface::SurfaceF
selectionMode = None;
this->vp = vp;
setEditedObject(obj);
// Create context menu
QAction* action = new QAction(tr("Remove"), this);
ui->listWidget->addAction(action);
connect(action, SIGNAL(triggered()), this, SLOT(onDeleteEdge()));
ui->listWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
}
/*
@@ -373,6 +379,34 @@ void SurfaceFilling::onSelectionChanged(const Gui::SelectionChanges& msg)
}
}
void SurfaceFilling::onDeleteEdge()
{
int row = ui->listWidget->currentRow();
QListWidgetItem* item = ui->listWidget->item(row);
if (item) {
QList<QVariant> data;
data = item->data(Qt::UserRole).toList();
ui->listWidget->takeItem(row);
delete item;
App::Document* doc = App::GetApplication().getDocument(data[0].toByteArray());
App::DocumentObject* obj = doc ? doc->getObject(data[1].toByteArray()) : nullptr;
std::string sub = data[2].toByteArray().constData();
auto objects = editedObject->BoundaryList.getValues();
auto element = editedObject->BoundaryList.getSubValues();
auto it = objects.begin();
auto jt = element.begin();
for (; it != objects.end() && jt != element.end(); ++it, ++jt) {
if (*it == obj && *jt == sub) {
objects.erase(it);
element.erase(jt);
editedObject->BoundaryList.setValues(objects, element);
break;
}
}
}
}
// ----------------------------------------------------------------------------
TaskSurfaceFilling::TaskSurfaceFilling(ViewProviderSurfaceFeature* vp, Surface::SurfaceFeature* obj)

View File

@@ -103,6 +103,7 @@ private Q_SLOTS:
void on_fillType_curved_clicked();
void on_buttonEdgeAdd_clicked();
void on_buttonEdgeRemove_clicked();
void onDeleteEdge(void);
};
class TaskSurfaceFilling : public Gui::TaskView::TaskDialog