From 4ee22fa06a85278a9270ad477142c0d772659bb3 Mon Sep 17 00:00:00 2001 From: garakmon Date: Sun, 17 May 2020 21:25:28 -0400 Subject: [PATCH] decouple map and event edit modes --- include/editor.h | 3 ++- src/editor.cpp | 8 +++--- src/mainwindow.cpp | 59 +++++++++++++++++++++++++++++++----------- src/ui/newmappopup.cpp | 2 -- 4 files changed, 50 insertions(+), 22 deletions(-) diff --git a/include/editor.h b/include/editor.h index 2b24f883..583678ce 100644 --- a/include/editor.h +++ b/include/editor.h @@ -130,7 +130,8 @@ public: QList *events = nullptr; QList *selected_events = nullptr; - QString map_edit_mode; + QString map_edit_mode = "paint"; + QString obj_edit_mode = "select"; int scale_exp = 0; double scale_base = sqrt(2); // adjust scale factor with this diff --git a/src/editor.cpp b/src/editor.cpp index 0ad2fd6c..0fc4e49c 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -1058,10 +1058,10 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item item->shift(event); } } else if (item->paintingMode == MapPixmapItem::PaintMode::EventObjects) { - if (map_edit_mode == "paint" && event->type() == QEvent::GraphicsSceneMousePress) { + if (obj_edit_mode == "paint" && event->type() == QEvent::GraphicsSceneMousePress) { // Right-clicking while in paint mode will change mode to select. if (event->buttons() & Qt::RightButton) { - this->map_edit_mode = "select"; + this->obj_edit_mode = "select"; this->settings->mapCursor = QCursor(); this->cursorMapTileRect->setSingleTileMode(); this->ui->toolButton_Paint->setChecked(false); @@ -1079,9 +1079,9 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item } } } - } else if (map_edit_mode == "select") { + } else if (obj_edit_mode == "select") { // do nothing here, at least for now - } else if (map_edit_mode == "shift" && item->map) { + } else if (obj_edit_mode == "shift" && item->map) { static QPoint selection_origin; if (event->type() == QEvent::GraphicsSceneMouseRelease) { diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e0104933..94d3218b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1238,12 +1238,11 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index) if (index == 0) { ui->stackedWidget_MapEvents->setCurrentIndex(0); on_tabWidget_2_currentChanged(ui->tabWidget_2->currentIndex()); + clickToolButtonFromEditMode(editor->map_edit_mode); } else if (index == 1) { ui->stackedWidget_MapEvents->setCurrentIndex(1); editor->setEditingObjects(); - QStringList validOptions = {"select", "move", "paint", "shift"}; - QString newEditMode = validOptions.contains(editor->map_edit_mode) ? editor->map_edit_mode : "select"; - clickToolButtonFromEditMode(newEditMode); + clickToolButtonFromEditMode(editor->obj_edit_mode); } else if (index == 3) { editor->setEditingConnections(); } @@ -2054,7 +2053,11 @@ void MainWindow::on_toolButton_Open_Scripts_clicked() void MainWindow::on_toolButton_Paint_clicked() { - editor->map_edit_mode = "paint"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "paint"; + else + editor->obj_edit_mode = "paint"; + editor->settings->mapCursor = QCursor(QPixmap(":/icons/pencil_cursor.ico"), 10, 10); // do not stop single tile mode when editing collision @@ -2070,7 +2073,11 @@ void MainWindow::on_toolButton_Paint_clicked() void MainWindow::on_toolButton_Select_clicked() { - editor->map_edit_mode = "select"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "select"; + else + editor->obj_edit_mode = "select"; + editor->settings->mapCursor = QCursor(); editor->cursorMapTileRect->setSingleTileMode(); @@ -2083,7 +2090,11 @@ void MainWindow::on_toolButton_Select_clicked() void MainWindow::on_toolButton_Fill_clicked() { - editor->map_edit_mode = "fill"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "fill"; + else + editor->obj_edit_mode = "fill"; + editor->settings->mapCursor = QCursor(QPixmap(":/icons/fill_color_cursor.ico"), 10, 10); editor->cursorMapTileRect->setSingleTileMode(); @@ -2096,7 +2107,11 @@ void MainWindow::on_toolButton_Fill_clicked() void MainWindow::on_toolButton_Dropper_clicked() { - editor->map_edit_mode = "pick"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "pick"; + else + editor->obj_edit_mode = "pick"; + editor->settings->mapCursor = QCursor(QPixmap(":/icons/pipette_cursor.ico"), 10, 10); editor->cursorMapTileRect->setSingleTileMode(); @@ -2109,7 +2124,11 @@ void MainWindow::on_toolButton_Dropper_clicked() void MainWindow::on_toolButton_Move_clicked() { - editor->map_edit_mode = "move"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "move"; + else + editor->obj_edit_mode = "move"; + editor->settings->mapCursor = QCursor(QPixmap(":/icons/move.ico"), 7, 7); editor->cursorMapTileRect->setSingleTileMode(); @@ -2122,7 +2141,11 @@ void MainWindow::on_toolButton_Move_clicked() void MainWindow::on_toolButton_Shift_clicked() { - editor->map_edit_mode = "shift"; + if (ui->mainTabBar->currentIndex() == 0) + editor->map_edit_mode = "shift"; + else + editor->obj_edit_mode = "shift"; + editor->settings->mapCursor = QCursor(QPixmap(":/icons/shift_cursor.ico"), 10, 10); editor->cursorMapTileRect->setSingleTileMode(); @@ -2134,12 +2157,18 @@ void MainWindow::on_toolButton_Shift_clicked() } void MainWindow::checkToolButtons() { - ui->toolButton_Paint->setChecked(editor->map_edit_mode == "paint"); - ui->toolButton_Select->setChecked(editor->map_edit_mode == "select"); - ui->toolButton_Fill->setChecked(editor->map_edit_mode == "fill"); - ui->toolButton_Dropper->setChecked(editor->map_edit_mode == "pick"); - ui->toolButton_Move->setChecked(editor->map_edit_mode == "move"); - ui->toolButton_Shift->setChecked(editor->map_edit_mode == "shift"); + QString edit_mode; + if (ui->mainTabBar->currentIndex() == 0) + edit_mode = editor->map_edit_mode; + else + edit_mode = editor->obj_edit_mode; + + ui->toolButton_Paint->setChecked(edit_mode == "paint"); + ui->toolButton_Select->setChecked(edit_mode == "select"); + ui->toolButton_Fill->setChecked(edit_mode == "fill"); + ui->toolButton_Dropper->setChecked(edit_mode == "pick"); + ui->toolButton_Move->setChecked(edit_mode == "move"); + ui->toolButton_Shift->setChecked(edit_mode == "shift"); } void MainWindow::clickToolButtonFromEditMode(QString editMode) { diff --git a/src/ui/newmappopup.cpp b/src/ui/newmappopup.cpp index ef840445..21e1639f 100644 --- a/src/ui/newmappopup.cpp +++ b/src/ui/newmappopup.cpp @@ -71,8 +71,6 @@ void NewMapPopup::connectSignals() { ui->spinBox_NewMap_Height->setMinimum(1); ui->spinBox_NewMap_Width->setMaximum(project->getMaxMapWidth()); ui->spinBox_NewMap_Height->setMaximum(project->getMaxMapHeight()); - - ui->toolButton_NewMap_DimensionWarning->setIcon(); //ui->icon_NewMap_WarningIcon->setPixmap(); connect(ui->spinBox_NewMap_Width, QOverload::of(&QSpinBox::valueChanged), [=](int){checkNewMapDimensions();});