New paste behaviour

This commit is contained in:
atlante45 2013-08-21 13:21:15 -07:00
parent bda6e03117
commit bae0f7fa1b
4 changed files with 12 additions and 16 deletions

View file

@ -492,6 +492,11 @@ void Application::keyPressEvent(QKeyEvent* event) {
bool isShifted = event->modifiers().testFlag(Qt::ShiftModifier); bool isShifted = event->modifiers().testFlag(Qt::ShiftModifier);
switch (event->key()) { switch (event->key()) {
case Qt::Key_Shift:
if (Menu::getInstance()->isOptionChecked(MenuOption::VoxelSelectMode)) {
_pasteMode = true;
}
break;
case Qt::Key_BracketLeft: case Qt::Key_BracketLeft:
case Qt::Key_BracketRight: case Qt::Key_BracketRight:
case Qt::Key_BraceLeft: case Qt::Key_BraceLeft:
@ -723,6 +728,9 @@ void Application::keyReleaseEvent(QKeyEvent* event) {
} }
switch (event->key()) { switch (event->key()) {
case Qt::Key_Shift:
_pasteMode = false;
break;
case Qt::Key_E: case Qt::Key_E:
_myAvatar.setDriveKeys(UP, 0); _myAvatar.setDriveKeys(UP, 0);
break; break;
@ -1197,22 +1205,17 @@ void Application::exportVoxels() {
} }
void Application::importVoxels() { void Application::importVoxels() {
_pasteMode = false;
if (_voxelImporter.exec()) { if (_voxelImporter.exec()) {
qDebug("[DEBUG] Import succedded.\n"); qDebug("[DEBUG] Import succedded.\n");
if (_voxelImporter.getimportIntoClipboard()) { if (_voxelImporter.getImportIntoClipboard()) {
_clipboard.killLocalVoxels(); _clipboard.killLocalVoxels();
_voxelImporter.getVoxelSystem()->copySubTreeIntoNewTree( _voxelImporter.getVoxelSystem()->copySubTreeIntoNewTree(
_voxelImporter.getVoxelSystem()->getVoxelAt(0, 0, 0, 1), _voxelImporter.getVoxelSystem()->getVoxelAt(0, 0, 0, 1),
&_clipboard, &_clipboard,
true); true);
} else { _voxelImporter.reset();
_pasteMode = true;
} }
} else { } else {
qDebug("[DEBUG] Import failed.\n"); qDebug("[DEBUG] Import failed.\n");
} }
@ -1235,12 +1238,6 @@ void Application::copyVoxels() {
// then copy onto it // then copy onto it
_voxels.copySubTreeIntoNewTree(selectedNode, &_clipboard, true); _voxels.copySubTreeIntoNewTree(selectedNode, &_clipboard, true);
} }
_pasteMode = false;
}
void Application::togglePasteMode() {
_pasteMode = !_pasteMode;
} }
void Application::pasteVoxels() { void Application::pasteVoxels() {

View file

@ -141,7 +141,6 @@ public slots:
void importVoxels(); void importVoxels();
void cutVoxels(); void cutVoxels();
void copyVoxels(); void copyVoxels();
void togglePasteMode();
void pasteVoxels(); void pasteVoxels();
void setRenderVoxels(bool renderVoxels); void setRenderVoxels(bool renderVoxels);

View file

@ -248,7 +248,7 @@ Menu::Menu() :
addActionToQMenuAndActionHash(voxelMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels())); addActionToQMenuAndActionHash(voxelMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels()));
addActionToQMenuAndActionHash(voxelMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels())); addActionToQMenuAndActionHash(voxelMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels()));
addActionToQMenuAndActionHash(voxelMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels())); addActionToQMenuAndActionHash(voxelMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels()));
addActionToQMenuAndActionHash(voxelMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(togglePasteMode())); addActionToQMenuAndActionHash(voxelMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels()));
QMenu* debugMenu = addMenu("Debug"); QMenu* debugMenu = addMenu("Debug");

View file

@ -26,7 +26,7 @@ public:
bool getImportWaiting() const { return _importWaiting; } bool getImportWaiting() const { return _importWaiting; }
VoxelSystem* getVoxelSystem() { return &_voxelSystem; } VoxelSystem* getVoxelSystem() { return &_voxelSystem; }
bool getimportIntoClipboard() const { return _importDialog.getImportIntoClipboard(); } bool getImportIntoClipboard() const { return _importDialog.getImportIntoClipboard(); }
public slots: public slots:
int exec(); int exec();