1
#include "pathgridselectionmode.hpp"
6
#include "../../model/world/idtable.hpp"
7
#include "../../model/world/commands.hpp"
8
#include "../../model/world/commandmacro.hpp"
10
#include "worldspacewidget.hpp"
11
#include "pathgrid.hpp"
15
PathgridSelectionMode::PathgridSelectionMode(CSVWidget::SceneToolbar* parent, WorldspaceWidget& worldspaceWidget)
16
: SelectionMode(parent, worldspaceWidget, Mask_Pathgrid)
18
mRemoveSelectedNodes = new QAction("Remove selected nodes", this);
19
mRemoveSelectedEdges = new QAction("Remove edges between selected nodes", this);
21
connect(mRemoveSelectedNodes, SIGNAL(triggered()), this, SLOT(removeSelectedNodes()));
22
connect(mRemoveSelectedEdges, SIGNAL(triggered()), this, SLOT(removeSelectedEdges()));
25
bool PathgridSelectionMode::createContextMenu(QMenu* menu)
29
SelectionMode::createContextMenu(menu);
31
menu->addAction(mRemoveSelectedNodes);
32
menu->addAction(mRemoveSelectedEdges);
38
void PathgridSelectionMode::removeSelectedNodes()
40
std::vector<osg::ref_ptr<TagBase> > selection = getWorldspaceWidget().getSelection (Mask_Pathgrid);
42
for (std::vector<osg::ref_ptr<TagBase> >::iterator it = selection.begin(); it != selection.end(); ++it)
44
if (PathgridTag* tag = dynamic_cast<PathgridTag*>(it->get()))
46
QUndoStack& undoStack = getWorldspaceWidget().getDocument().getUndoStack();
47
QString description = "Remove selected nodes";
49
CSMWorld::CommandMacro macro(undoStack, description);
50
tag->getPathgrid()->applyRemoveNodes(macro);
55
void PathgridSelectionMode::removeSelectedEdges()
57
std::vector<osg::ref_ptr<TagBase> > selection = getWorldspaceWidget().getSelection (Mask_Pathgrid);
59
for (std::vector<osg::ref_ptr<TagBase> >::iterator it = selection.begin(); it != selection.end(); ++it)
61
if (PathgridTag* tag = dynamic_cast<PathgridTag*>(it->get()))
63
QUndoStack& undoStack = getWorldspaceWidget().getDocument().getUndoStack();
64
QString description = "Remove edges between selected nodes";
66
CSMWorld::CommandMacro macro(undoStack, description);
67
tag->getPathgrid()->applyRemoveEdges(macro);