X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Ftreeeditor.cpp;fp=src%2Ftreeeditor.cpp;h=155848e197090a278e0ff3eb2589e8ec40a1aa0e;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/treeeditor.cpp b/src/treeeditor.cpp new file mode 100644 index 0000000..155848e --- /dev/null +++ b/src/treeeditor.cpp @@ -0,0 +1,125 @@ +#include "treeeditor.h" + +#include +#include +#include + +#include "mainwindow.h" +#include "vymmodel.h" + +extern Main *mainWindow; +extern QString editorFocusStyle; + +extern QMenu *branchContextMenu; +extern QMenu *canvasContextMenu; +extern QMenu *floatimageContextMenu; + +/////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////// +TreeEditor::TreeEditor(VymModel *m) +{ + model = m; + if (model) + setModel(model); + init(); +} + +void TreeEditor::init() +{ + setSelectionMode(QAbstractItemView::ExtendedSelection); + header()->hide(); + + QAction *a; + // Shortcuts for navigating with cursor: + a = new QAction(tr("Select upper object", "Tree Editor"), this); + a->setShortcut(Qt::Key_Up); + a->setShortcutContext(Qt::WidgetShortcut); + addAction(a); + connect(a, SIGNAL(triggered()), this, SLOT(cursorUp())); + + a = new QAction(tr("Select lower object", "Tree Editor"), this); + a->setShortcut(Qt::Key_Down); + a->setShortcutContext(Qt::WidgetShortcut); + addAction(a); + connect(a, SIGNAL(triggered()), this, SLOT(cursorDown())); + + a = new QAction(this); + a->setShortcut(Qt::Key_PageUp); + a->setShortcutContext(Qt::WidgetShortcut); + addAction(a); + connect(a, SIGNAL(triggered()), mainWindow, SLOT(editMoveUp())); + + a = new QAction(this); + a->setShortcut(Qt::Key_PageDown); + a->setShortcutContext(Qt::WidgetShortcut); + addAction(a); + connect(a, SIGNAL(triggered()), mainWindow, SLOT(editMoveDown())); + + a = new QAction(this); + a->setShortcut(Qt::Key_Return); + a->setShortcutContext(Qt::WidgetShortcut); + addAction(a); + connect(a, SIGNAL(triggered()), this, SLOT(startEdit())); + + // Clone actions defined in MainWindow + foreach (QAction *qa, mainWindow->mapEditorActions) { + a = new QAction(this); + a->setShortcut(qa->shortcut()); + a->setShortcutContext(qa->shortcutContext()); + connect(a, SIGNAL(triggered()), qa, SLOT(trigger())); + addAction(a); + } + + setStyleSheet("QTreeView:focus {" + editorFocusStyle + "}"); +} + +TreeEditor::~TreeEditor() +{ + // qDebug()<<"Destructor TreeEditor for "<getMapName(); +} + +QModelIndex TreeEditor::getSelectedIndex() +{ + QModelIndexList list = selectionModel()->selectedIndexes(); + if (list.isEmpty()) + return QModelIndex(); + else + return list.first(); +} + +void TreeEditor::contextMenuEvent(QContextMenuEvent *e) { + if (model->getSelectedBranch()) + branchContextMenu->popup(e->globalPos()); + else if (model->getSelectedImage()) + floatimageContextMenu->popup(e->globalPos()); + else if (model->getSelectedXLink()) + model->editXLink(); + else + canvasContextMenu->exec(e->globalPos()); + + e->accept(); +} + +void TreeEditor::cursorUp() +{ + QModelIndex ix = getSelectedIndex(); + ix = indexAbove(ix); + if (ix.isValid()) + model->select(ix); +} + +void TreeEditor::cursorDown() +{ + QModelIndex ix = getSelectedIndex(); + ix = indexBelow(ix); + if (ix.isValid()) + model->select(ix); +} + +void TreeEditor::startEdit() +{ + + QModelIndex ix = getSelectedIndex(); + if (ix.isValid()) + edit(ix); +}