mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-20 08:53:50 +00:00
Merge pull request #2678 from unelsson/deleteinstanceshotkey
Editor: Delete instances via hotkey
This commit is contained in:
commit
22b4629fc6
5 changed files with 26 additions and 0 deletions
|
@ -257,6 +257,7 @@
|
||||||
Feature #5146: Safe Dispose corpse
|
Feature #5146: Safe Dispose corpse
|
||||||
Feature #5147: Show spell magicka cost in spell buying window
|
Feature #5147: Show spell magicka cost in spell buying window
|
||||||
Feature #5170: Editor: Land shape editing, land selection
|
Feature #5170: Editor: Land shape editing, land selection
|
||||||
|
Feature #5172: Editor: Delete instances/references with keypress in scene window
|
||||||
Feature #5193: Weapon sheathing
|
Feature #5193: Weapon sheathing
|
||||||
Feature #5219: Impelement TestCells console command
|
Feature #5219: Impelement TestCells console command
|
||||||
Feature #5224: Handle NiKeyframeController for NiTriShape
|
Feature #5224: Handle NiKeyframeController for NiTriShape
|
||||||
|
|
|
@ -42,6 +42,7 @@ New Editor Features:
|
||||||
- "Faction Ranks" table for "Faction" records (#4209)
|
- "Faction Ranks" table for "Faction" records (#4209)
|
||||||
- Changes to height editing can be cancelled without changes to data (press esc to cancel) (#4840)
|
- Changes to height editing can be cancelled without changes to data (press esc to cancel) (#4840)
|
||||||
- Land heightmap/shape editing and vertex selection (#5170)
|
- Land heightmap/shape editing and vertex selection (#5170)
|
||||||
|
- Deleting instances with a keypress (#5172)
|
||||||
|
|
||||||
Bug Fixes:
|
Bug Fixes:
|
||||||
- The Mouse Wheel can now be used for key bindings (#2679)
|
- The Mouse Wheel can now be used for key bindings (#2679)
|
||||||
|
|
|
@ -355,6 +355,7 @@ void CSMPrefs::State::declare()
|
||||||
declareShortcut ("scene-select-secondary", "Secondary Select",
|
declareShortcut ("scene-select-secondary", "Secondary Select",
|
||||||
QKeySequence(Qt::ControlModifier | (int)Qt::MiddleButton));
|
QKeySequence(Qt::ControlModifier | (int)Qt::MiddleButton));
|
||||||
declareModifier ("scene-speed-modifier", "Speed Modifier", Qt::Key_Shift);
|
declareModifier ("scene-speed-modifier", "Speed Modifier", Qt::Key_Shift);
|
||||||
|
declareShortcut ("scene-delete", "Delete Instance", QKeySequence(Qt::Key_Delete));
|
||||||
declareShortcut ("scene-load-cam-cell", "Load Camera Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_5));
|
declareShortcut ("scene-load-cam-cell", "Load Camera Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_5));
|
||||||
declareShortcut ("scene-load-cam-eastcell", "Load East Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_6));
|
declareShortcut ("scene-load-cam-eastcell", "Load East Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_6));
|
||||||
declareShortcut ("scene-load-cam-northcell", "Load North Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_8));
|
declareShortcut ("scene-load-cam-northcell", "Load North Cell", QKeySequence(Qt::KeypadModifier | Qt::Key_8));
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "../../model/world/idtree.hpp"
|
#include "../../model/world/idtree.hpp"
|
||||||
#include "../../model/world/commands.hpp"
|
#include "../../model/world/commands.hpp"
|
||||||
#include "../../model/world/commandmacro.hpp"
|
#include "../../model/world/commandmacro.hpp"
|
||||||
|
#include "../../model/prefs/shortcut.hpp"
|
||||||
|
|
||||||
#include "../widget/scenetoolbar.hpp"
|
#include "../widget/scenetoolbar.hpp"
|
||||||
#include "../widget/scenetoolmode.hpp"
|
#include "../widget/scenetoolmode.hpp"
|
||||||
|
@ -96,6 +97,9 @@ CSVRender::InstanceMode::InstanceMode (WorldspaceWidget *worldspaceWidget, QWidg
|
||||||
{
|
{
|
||||||
connect(this, SIGNAL(requestFocus(const std::string&)),
|
connect(this, SIGNAL(requestFocus(const std::string&)),
|
||||||
worldspaceWidget, SIGNAL(requestFocus(const std::string&)));
|
worldspaceWidget, SIGNAL(requestFocus(const std::string&)));
|
||||||
|
|
||||||
|
CSMPrefs::Shortcut* deleteShortcut = new CSMPrefs::Shortcut("scene-delete", worldspaceWidget);
|
||||||
|
connect(deleteShortcut, SIGNAL(activated(bool)), this, SLOT(deleteSelectedInstances(bool)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVRender::InstanceMode::activate (CSVWidget::SceneToolbar *toolbar)
|
void CSVRender::InstanceMode::activate (CSVWidget::SceneToolbar *toolbar)
|
||||||
|
@ -659,3 +663,21 @@ void CSVRender::InstanceMode::subModeChanged (const std::string& id)
|
||||||
getWorldspaceWidget().abortDrag();
|
getWorldspaceWidget().abortDrag();
|
||||||
getWorldspaceWidget().setSubMode (getSubModeFromId (id), SceneUtil::Mask_EditorReference);
|
getWorldspaceWidget().setSubMode (getSubModeFromId (id), SceneUtil::Mask_EditorReference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::InstanceMode::deleteSelectedInstances(bool active)
|
||||||
|
{
|
||||||
|
std::vector<osg::ref_ptr<TagBase> > selection = getWorldspaceWidget().getSelection (SceneUtil::Mask_EditorReference);
|
||||||
|
if (selection.empty()) return;
|
||||||
|
|
||||||
|
CSMDoc::Document& document = getWorldspaceWidget().getDocument();
|
||||||
|
CSMWorld::IdTable& referencesTable = dynamic_cast<CSMWorld::IdTable&> (
|
||||||
|
*document.getData().getTableModel (CSMWorld::UniversalId::Type_References));
|
||||||
|
QUndoStack& undoStack = document.getUndoStack();
|
||||||
|
|
||||||
|
CSMWorld::CommandMacro macro (undoStack, "Delete Instances");
|
||||||
|
for(osg::ref_ptr<TagBase> tag: selection)
|
||||||
|
if (CSVRender::ObjectTag *objectTag = dynamic_cast<CSVRender::ObjectTag *> (tag.get()))
|
||||||
|
macro.push(new CSMWorld::DeleteCommand(referencesTable, objectTag->mObject->getReferenceId()));
|
||||||
|
|
||||||
|
getWorldspaceWidget().clearSelection (SceneUtil::Mask_EditorReference);
|
||||||
|
}
|
||||||
|
|
|
@ -92,6 +92,7 @@ namespace CSVRender
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void subModeChanged (const std::string& id);
|
void subModeChanged (const std::string& id);
|
||||||
|
void deleteSelectedInstances(bool active);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue