mirror of
https://github.com/huderlem/porymap.git
synced 2026-03-21 17:45:44 -05:00
Fix some tool button issues
This commit is contained in:
parent
521410e1f6
commit
dd8486ba34
|
|
@ -162,8 +162,10 @@ public:
|
|||
QPointer<MapConnection> connection_to_select = nullptr;
|
||||
|
||||
enum class EditAction { None, Paint, Select, Fill, Shift, Pick, Move };
|
||||
EditAction mapEditAction = EditAction::Paint;
|
||||
EditAction eventEditAction = EditAction::Select;
|
||||
void setEditAction(EditAction editAction);
|
||||
EditAction getEditAction() const;
|
||||
EditAction getMapEditAction() const { return this->mapEditAction; }
|
||||
EditAction getEventEditAction() const { return this->eventEditAction; }
|
||||
|
||||
enum class EditMode { None, Disabled, Metatiles, Collision, Header, Events, Connections, Encounters };
|
||||
void setEditMode(EditMode editMode);
|
||||
|
|
@ -220,6 +222,9 @@ private:
|
|||
|
||||
EditMode editMode = EditMode::None;
|
||||
|
||||
EditAction mapEditAction = EditAction::Paint;
|
||||
EditAction eventEditAction = EditAction::Select;
|
||||
|
||||
bool save(bool currentOnly);
|
||||
void clearMap();
|
||||
void clearMetatileSelector();
|
||||
|
|
@ -280,6 +285,7 @@ signals:
|
|||
void mapRulerStatusChanged(const QString &);
|
||||
void tilesetUpdated(QString);
|
||||
void gridToggled(bool);
|
||||
void editActionSet(EditAction newEditAction);
|
||||
};
|
||||
|
||||
#endif // EDITOR_H
|
||||
|
|
|
|||
|
|
@ -407,8 +407,7 @@ private:
|
|||
void openNextMap();
|
||||
|
||||
void displayMapProperties();
|
||||
void checkToolButtons();
|
||||
void clickToolButtonFromEditAction(Editor::EditAction editAction);
|
||||
void setEditActionUi(Editor::EditAction editAction);
|
||||
|
||||
void updateWindowTitle();
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ public:
|
|||
private:
|
||||
void paintSmartPath(int x, int y, bool fromScriptCall = false);
|
||||
static QList<int> smartPathTable;
|
||||
QPoint lastMetatileSelectionPos = QPoint(-1,-1);
|
||||
|
||||
unsigned actionId_ = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,6 @@ void Editor::setEditMode(EditMode editMode) {
|
|||
editStack = &this->layout->editHistory;
|
||||
}
|
||||
|
||||
this->cursorMapTileRect->setSingleTileMode(editMode == EditMode::Collision);
|
||||
this->cursorMapTileRect->setActive(editingLayout);
|
||||
this->playerViewRect->setActive(editingLayout);
|
||||
this->editGroup.setActiveStack(editStack);
|
||||
|
|
@ -185,6 +184,39 @@ void Editor::setEditMode(EditMode editMode) {
|
|||
if (this->editMode == EditMode::Events){
|
||||
updateWarpEventWarnings();
|
||||
}
|
||||
|
||||
if (current_view) {
|
||||
// Updating the edit action is only relevant for edit modes with a graphics view.
|
||||
setEditAction(getEditAction());
|
||||
}
|
||||
}
|
||||
|
||||
Editor::EditAction Editor::getEditAction() const {
|
||||
return this->editMode == EditMode::Events ? getEventEditAction() : getMapEditAction();
|
||||
}
|
||||
|
||||
void Editor::setEditAction(EditAction editAction) {
|
||||
if (this->editMode == EditMode::Events) {
|
||||
this->eventEditAction = editAction;
|
||||
this->map_ruler->setEnabled(editAction == EditAction::Select);
|
||||
} else {
|
||||
this->mapEditAction = editAction;
|
||||
this->map_ruler->setEnabled(false);
|
||||
}
|
||||
|
||||
this->cursorMapTileRect->setSingleTileMode(!(editAction == EditAction::Paint && this->editMode == EditMode::Metatiles));
|
||||
|
||||
// Update cursor
|
||||
static const QMap<EditAction, QCursor> cursors = {
|
||||
{EditAction::Paint, QCursor(QPixmap(":/icons/pencil_cursor.ico"), 10, 10)},
|
||||
{EditAction::Select, QCursor()},
|
||||
{EditAction::Fill, QCursor(QPixmap(":/icons/fill_color_cursor.ico"), 10, 10)},
|
||||
{EditAction::Pick, QCursor(QPixmap(":/icons/pipette_cursor.ico"), 10, 10)},
|
||||
{EditAction::Move, QCursor(QPixmap(":/icons/move.ico"), 7, 7)},
|
||||
{EditAction::Shift, QCursor(QPixmap(":/icons/shift_cursor.ico"), 10, 10)},
|
||||
};
|
||||
this->settings->mapCursor = cursors.value(editAction);
|
||||
emit editActionSet(editAction);
|
||||
}
|
||||
|
||||
void Editor::clearWildMonTables() {
|
||||
|
|
@ -1377,7 +1409,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, LayoutPixmapItem *i
|
|||
} else if (mapEditAction == EditAction::Pick) {
|
||||
if (event->buttons() & Qt::RightButton) {
|
||||
item->updateMetatileSelection(event);
|
||||
} else {
|
||||
} else if (event->type() != QEvent::GraphicsSceneMouseRelease) {
|
||||
item->pick(event);
|
||||
}
|
||||
} else if (mapEditAction == EditAction::Shift) {
|
||||
|
|
@ -1392,10 +1424,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, LayoutPixmapItem *i
|
|||
if (eventEditAction == EditAction::Paint && event->type() == QEvent::GraphicsSceneMousePress) {
|
||||
// Right-clicking while in paint mode will change mode to select.
|
||||
if (event->buttons() & Qt::RightButton) {
|
||||
this->eventEditAction = EditAction::Select;
|
||||
this->settings->mapCursor = QCursor();
|
||||
this->ui->toolButton_Paint->setChecked(false);
|
||||
this->ui->toolButton_Select->setChecked(true);
|
||||
setEditAction(EditAction::Select);
|
||||
} else {
|
||||
// Left-clicking while in paint mode will add a new event of the
|
||||
// type of the first currently selected events.
|
||||
|
|
|
|||
|
|
@ -363,6 +363,7 @@ void MainWindow::initEditor() {
|
|||
connect(this->editor, &Editor::wildMonTableEdited, [this] { markMapEdited(this->editor->map); });
|
||||
connect(this->editor, &Editor::mapRulerStatusChanged, this, &MainWindow::onMapRulerStatusChanged);
|
||||
connect(this->editor, &Editor::tilesetUpdated, this, &Scripting::cb_TilesetUpdated);
|
||||
connect(this->editor, &Editor::editActionSet, this, &MainWindow::setEditActionUi);
|
||||
connect(ui->newEventToolButton, &NewEventToolButton::newEventAdded, this->editor, &Editor::addNewEvent);
|
||||
connect(ui->toolButton_deleteEvent, &QAbstractButton::clicked, this->editor, &Editor::deleteSelectedEvents);
|
||||
connect(ui->graphicsView_Connections, &ConnectionsView::pressedDelete, this->editor, &Editor::removeSelectedConnection);
|
||||
|
|
@ -2167,10 +2168,8 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index)
|
|||
if (index == MainTab::Map) {
|
||||
ui->stackedWidget_MapEvents->setCurrentIndex(0);
|
||||
on_mapViewTab_tabBarClicked(ui->mapViewTab->currentIndex());
|
||||
clickToolButtonFromEditAction(editor->mapEditAction);
|
||||
} else if (index == MainTab::Events) {
|
||||
ui->stackedWidget_MapEvents->setCurrentIndex(1);
|
||||
clickToolButtonFromEditAction(editor->eventEditAction);
|
||||
} else if (index == MainTab::Connections) {
|
||||
ui->graphicsView_Connections->setFocus(); // Avoid opening tab with focus on something editable
|
||||
}
|
||||
|
|
@ -2180,9 +2179,6 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index)
|
|||
if (editor->project && editor->project->wildEncountersLoaded)
|
||||
editor->saveEncounterTabData();
|
||||
}
|
||||
if (index != MainTab::Events) {
|
||||
editor->map_ruler->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionZoom_In_triggered() {
|
||||
|
|
@ -2278,36 +2274,6 @@ void MainWindow::connectSubEditorsToShortcutsEditor() {
|
|||
customScriptsEditor, &CustomScriptsEditor::applyUserShortcuts);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPencil_triggered()
|
||||
{
|
||||
on_toolButton_Paint_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPointer_triggered()
|
||||
{
|
||||
on_toolButton_Select_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFlood_Fill_triggered()
|
||||
{
|
||||
on_toolButton_Fill_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEyedropper_triggered()
|
||||
{
|
||||
on_toolButton_Dropper_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionMove_triggered()
|
||||
{
|
||||
on_toolButton_Move_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionMap_Shift_triggered()
|
||||
{
|
||||
on_toolButton_Shift_clicked();
|
||||
}
|
||||
|
||||
void MainWindow::resetMapViewScale() {
|
||||
editor->scaleMapView(0);
|
||||
}
|
||||
|
|
@ -2572,133 +2538,33 @@ void MainWindow::on_horizontalSlider_CollisionTransparency_valueChanged(int valu
|
|||
this->editor->collision_item->draw(true);
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Paint_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Paint;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Paint;
|
||||
void MainWindow::on_actionPencil_triggered() { on_toolButton_Paint_clicked(); }
|
||||
void MainWindow::on_actionPointer_triggered() { on_toolButton_Select_clicked(); }
|
||||
void MainWindow::on_actionFlood_Fill_triggered() { on_toolButton_Fill_clicked(); }
|
||||
void MainWindow::on_actionEyedropper_triggered() { on_toolButton_Dropper_clicked(); }
|
||||
void MainWindow::on_actionMove_triggered() { on_toolButton_Move_clicked(); }
|
||||
void MainWindow::on_actionMap_Shift_triggered() { on_toolButton_Shift_clicked(); }
|
||||
|
||||
editor->settings->mapCursor = QCursor(QPixmap(":/icons/pencil_cursor.ico"), 10, 10);
|
||||
void MainWindow::on_toolButton_Paint_clicked() { editor->setEditAction(Editor::EditAction::Paint); }
|
||||
void MainWindow::on_toolButton_Select_clicked() { editor->setEditAction(Editor::EditAction::Select); }
|
||||
void MainWindow::on_toolButton_Fill_clicked() { editor->setEditAction(Editor::EditAction::Fill); }
|
||||
void MainWindow::on_toolButton_Dropper_clicked() { editor->setEditAction(Editor::EditAction::Pick); }
|
||||
void MainWindow::on_toolButton_Move_clicked() { editor->setEditAction(Editor::EditAction::Move); }
|
||||
void MainWindow::on_toolButton_Shift_clicked() { editor->setEditAction(Editor::EditAction::Shift); }
|
||||
|
||||
if (ui->mapViewTab->currentIndex() != MapViewTab::Collision)
|
||||
editor->cursorMapTileRect->setSingleTileMode(false);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Select_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Select;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Select;
|
||||
|
||||
editor->settings->mapCursor = QCursor();
|
||||
editor->cursorMapTileRect->setSingleTileMode(true);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Fill_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Fill;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Fill;
|
||||
|
||||
editor->settings->mapCursor = QCursor(QPixmap(":/icons/fill_color_cursor.ico"), 10, 10);
|
||||
editor->cursorMapTileRect->setSingleTileMode(true);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Dropper_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Pick;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Pick;
|
||||
|
||||
editor->settings->mapCursor = QCursor(QPixmap(":/icons/pipette_cursor.ico"), 10, 10);
|
||||
editor->cursorMapTileRect->setSingleTileMode(true);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Move_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Move;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Move;
|
||||
|
||||
editor->settings->mapCursor = QCursor(QPixmap(":/icons/move.ico"), 7, 7);
|
||||
editor->cursorMapTileRect->setSingleTileMode(true);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
QScroller::grabGesture(ui->graphicsView_Map, QScroller::LeftMouseButtonGesture);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::FullViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::on_toolButton_Shift_clicked()
|
||||
{
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map)
|
||||
editor->mapEditAction = Editor::EditAction::Shift;
|
||||
else
|
||||
editor->eventEditAction = Editor::EditAction::Shift;
|
||||
|
||||
editor->settings->mapCursor = QCursor(QPixmap(":/icons/shift_cursor.ico"), 10, 10);
|
||||
editor->cursorMapTileRect->setSingleTileMode(true);
|
||||
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
checkToolButtons();
|
||||
}
|
||||
|
||||
void MainWindow::checkToolButtons() {
|
||||
Editor::EditAction editAction;
|
||||
if (ui->mainTabBar->currentIndex() == MainTab::Map) {
|
||||
editAction = editor->mapEditAction;
|
||||
void MainWindow::setEditActionUi(Editor::EditAction editAction) {
|
||||
if (editAction == Editor::EditAction::Move) {
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
QScroller::grabGesture(ui->graphicsView_Map, QScroller::LeftMouseButtonGesture);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::FullViewportUpdate);
|
||||
} else {
|
||||
editAction = editor->eventEditAction;
|
||||
if (editAction == Editor::EditAction::Select && editor->map_ruler)
|
||||
editor->map_ruler->setEnabled(true);
|
||||
else if (editor->map_ruler)
|
||||
editor->map_ruler->setEnabled(false);
|
||||
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
ui->graphicsView_Map->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||
QScroller::ungrabGesture(ui->graphicsView_Map);
|
||||
ui->graphicsView_Map->setViewportUpdateMode(QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate);
|
||||
}
|
||||
ui->graphicsView_Map->setFocus();
|
||||
|
||||
ui->toolButton_Paint->setChecked(editAction == Editor::EditAction::Paint);
|
||||
ui->toolButton_Select->setChecked(editAction == Editor::EditAction::Select);
|
||||
|
|
@ -2708,22 +2574,6 @@ void MainWindow::checkToolButtons() {
|
|||
ui->toolButton_Shift->setChecked(editAction == Editor::EditAction::Shift);
|
||||
}
|
||||
|
||||
void MainWindow::clickToolButtonFromEditAction(Editor::EditAction editAction) {
|
||||
if (editAction == Editor::EditAction::Paint) {
|
||||
on_toolButton_Paint_clicked();
|
||||
} else if (editAction == Editor::EditAction::Select) {
|
||||
on_toolButton_Select_clicked();
|
||||
} else if (editAction == Editor::EditAction::Fill) {
|
||||
on_toolButton_Fill_clicked();
|
||||
} else if (editAction == Editor::EditAction::Pick) {
|
||||
on_toolButton_Dropper_clicked();
|
||||
} else if (editAction == Editor::EditAction::Move) {
|
||||
on_toolButton_Move_clicked();
|
||||
} else if (editAction == Editor::EditAction::Shift) {
|
||||
on_toolButton_Shift_clicked();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onOpenConnectedMap(MapConnection *connection) {
|
||||
if (!connection)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -321,6 +321,7 @@ void LayoutPixmapItem::updateMetatileSelection(QGraphicsSceneMouseEvent *event)
|
|||
|
||||
// Update/apply copied metatiles.
|
||||
if (event->type() == QEvent::GraphicsSceneMousePress) {
|
||||
this->lastMetatileSelectionPos = pos;
|
||||
selection_origin = QPoint(pos.x(), pos.y());
|
||||
selection.clear();
|
||||
selection.append(QPoint(pos.x(), pos.y()));
|
||||
|
|
@ -329,6 +330,9 @@ void LayoutPixmapItem::updateMetatileSelection(QGraphicsSceneMouseEvent *event)
|
|||
this->metatileSelector->selectFromMap(block.metatileId(), block.collision(), block.elevation());
|
||||
}
|
||||
} else if (event->type() == QEvent::GraphicsSceneMouseMove) {
|
||||
if (pos == this->lastMetatileSelectionPos)
|
||||
return;
|
||||
this->lastMetatileSelectionPos = pos;
|
||||
int x1 = selection_origin.x();
|
||||
int y1 = selection_origin.y();
|
||||
int x2 = pos.x();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user