~openmw/openmw/openmw-packaging2

« back to all changes in this revision

Viewing changes to apps/opencs/view/render/pathgridselectionmode.cpp

  • Committer: Scott Howard
  • Date: 2016-09-15 20:56:29 UTC
  • Revision ID: showard@debian.org-20160915205629-3tvfxe47zrb41a91
Cron update. Git hash: 37278b5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "pathgridselectionmode.hpp"
 
2
 
 
3
#include <QMenu>
 
4
#include <QAction>
 
5
 
 
6
#include "../../model/world/idtable.hpp"
 
7
#include "../../model/world/commands.hpp"
 
8
#include "../../model/world/commandmacro.hpp"
 
9
 
 
10
#include "worldspacewidget.hpp"
 
11
#include "pathgrid.hpp"
 
12
 
 
13
namespace CSVRender
 
14
{
 
15
    PathgridSelectionMode::PathgridSelectionMode(CSVWidget::SceneToolbar* parent, WorldspaceWidget& worldspaceWidget)
 
16
        : SelectionMode(parent, worldspaceWidget, Mask_Pathgrid)
 
17
    {
 
18
        mRemoveSelectedNodes = new QAction("Remove selected nodes", this);
 
19
        mRemoveSelectedEdges = new QAction("Remove edges between selected nodes", this);
 
20
 
 
21
        connect(mRemoveSelectedNodes, SIGNAL(triggered()), this, SLOT(removeSelectedNodes()));
 
22
        connect(mRemoveSelectedEdges, SIGNAL(triggered()), this, SLOT(removeSelectedEdges()));
 
23
    }
 
24
 
 
25
    bool PathgridSelectionMode::createContextMenu(QMenu* menu)
 
26
    {
 
27
        if (menu)
 
28
        {
 
29
            SelectionMode::createContextMenu(menu);
 
30
 
 
31
            menu->addAction(mRemoveSelectedNodes);
 
32
            menu->addAction(mRemoveSelectedEdges);
 
33
        }
 
34
 
 
35
        return true;
 
36
    }
 
37
 
 
38
    void PathgridSelectionMode::removeSelectedNodes()
 
39
    {
 
40
        std::vector<osg::ref_ptr<TagBase> > selection = getWorldspaceWidget().getSelection (Mask_Pathgrid);
 
41
 
 
42
        for (std::vector<osg::ref_ptr<TagBase> >::iterator it = selection.begin(); it != selection.end(); ++it)
 
43
        {
 
44
            if (PathgridTag* tag = dynamic_cast<PathgridTag*>(it->get()))
 
45
            {
 
46
                QUndoStack& undoStack = getWorldspaceWidget().getDocument().getUndoStack();
 
47
                QString description = "Remove selected nodes";
 
48
 
 
49
                CSMWorld::CommandMacro macro(undoStack, description);
 
50
                tag->getPathgrid()->applyRemoveNodes(macro);
 
51
            }
 
52
        }
 
53
    }
 
54
 
 
55
    void PathgridSelectionMode::removeSelectedEdges()
 
56
    {
 
57
        std::vector<osg::ref_ptr<TagBase> > selection = getWorldspaceWidget().getSelection (Mask_Pathgrid);
 
58
 
 
59
        for (std::vector<osg::ref_ptr<TagBase> >::iterator it = selection.begin(); it != selection.end(); ++it)
 
60
        {
 
61
            if (PathgridTag* tag = dynamic_cast<PathgridTag*>(it->get()))
 
62
            {
 
63
                QUndoStack& undoStack = getWorldspaceWidget().getDocument().getUndoStack();
 
64
                QString description = "Remove edges between selected nodes";
 
65
 
 
66
                CSMWorld::CommandMacro macro(undoStack, description);
 
67
                tag->getPathgrid()->applyRemoveEdges(macro);
 
68
            }
 
69
        }
 
70
    }
 
71
}