Add tab enums

This commit is contained in:
GriffinR 2024-07-03 13:41:00 -04:00
parent 6b0034e523
commit 0aa7ddf27d
4 changed files with 69 additions and 36 deletions

View file

@ -411,4 +411,23 @@ enum MapListUserRoles {
TypeRole2, // Used for various extra data needed. TypeRole2, // Used for various extra data needed.
}; };
// These are namespaced in a struct to avoid colliding with e.g. class Map.
struct MainTab {
enum {
Map,
Events,
Header,
Connections,
WildPokemon,
};
};
struct MapViewTab {
enum {
Metatiles,
Collision,
Prefabs,
};
};
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View file

@ -1852,7 +1852,7 @@ void Editor::toggleBorderVisibility(bool visible, bool enableScriptCallback)
void Editor::updateBorderVisibility() { void Editor::updateBorderVisibility() {
// On the connections tab, the border is always visible, and the connections can be edited. // On the connections tab, the border is always visible, and the connections can be edited.
bool editingConnections = (ui->mainTabBar->currentIndex() == 3); bool editingConnections = (ui->mainTabBar->currentIndex() == MainTab::Connections);
bool visible = (editingConnections || ui->checkBox_ToggleBorder->isChecked()); bool visible = (editingConnections || ui->checkBox_ToggleBorder->isChecked());
// Update border // Update border

View file

@ -208,16 +208,23 @@ void MainWindow::applyUserShortcuts() {
shortcut->setKeys(shortcutsConfig.userShortcuts(shortcut)); shortcut->setKeys(shortcutsConfig.userShortcuts(shortcut));
} }
static const QMap<int, QString> mainTabNames = {
{MainTab::Map, "Map"},
{MainTab::Events, "Events"},
{MainTab::Header, "Header"},
{MainTab::Connections, "Connections"},
{MainTab::WildPokemon, "Wild Pokemon"},
};
void MainWindow::initCustomUI() { void MainWindow::initCustomUI() {
// Set up the tab bar // Set up the tab bar
while (ui->mainTabBar->count()) ui->mainTabBar->removeTab(0); while (ui->mainTabBar->count()) ui->mainTabBar->removeTab(0);
ui->mainTabBar->addTab("Map");
ui->mainTabBar->setTabIcon(0, QIcon(QStringLiteral(":/icons/map.ico"))); for (int i = 0; i < mainTabNames.count(); i++)
ui->mainTabBar->addTab("Events"); ui->mainTabBar->addTab(mainTabNames.value(i));
ui->mainTabBar->addTab("Header");
ui->mainTabBar->addTab("Connections"); ui->mainTabBar->setTabIcon(MainTab::Map, QIcon(QStringLiteral(":/icons/map.ico")));
ui->mainTabBar->addTab("Wild Pokemon"); ui->mainTabBar->setTabIcon(MainTab::WildPokemon, QIcon(QStringLiteral(":/icons/tall_grass.ico")));
ui->mainTabBar->setTabIcon(4, QIcon(QStringLiteral(":/icons/tall_grass.ico")));
} }
void MainWindow::initExtraSignals() { void MainWindow::initExtraSignals() {
@ -416,8 +423,7 @@ void MainWindow::markMapEdited() {
void MainWindow::setProjectSpecificUI() void MainWindow::setProjectSpecificUI()
{ {
// Wild Encounters tab // Wild Encounters tab
// TODO: This index should come from an enum ui->mainTabBar->setTabEnabled(MainTab::WildPokemon, editor->project->wildEncountersLoaded);
ui->mainTabBar->setTabEnabled(4, editor->project->wildEncountersLoaded);
bool hasFlags = projectConfig.getMapAllowFlagsEnabled(); bool hasFlags = projectConfig.getMapAllowFlagsEnabled();
ui->checkBox_AllowRunning->setVisible(hasFlags); ui->checkBox_AllowRunning->setVisible(hasFlags);
@ -1569,7 +1575,7 @@ void MainWindow::copy() {
{ {
default: default:
break; break;
case 0: case MainTab::Map:
{ {
// copy the map image // copy the map image
QPixmap pixmap = editor->map ? editor->map->render(true) : QPixmap(); QPixmap pixmap = editor->map ? editor->map->render(true) : QPixmap();
@ -1577,7 +1583,7 @@ void MainWindow::copy() {
logInfo("Copied current map image to clipboard"); logInfo("Copied current map image to clipboard");
break; break;
} }
case 1: case MainTab::Events:
{ {
if (!editor || !editor->project) break; if (!editor || !editor->project) break;
@ -1617,7 +1623,7 @@ void MainWindow::copy() {
} }
} }
} }
else if (this->ui->mainTabBar->currentIndex() == 4) { else if (this->ui->mainTabBar->currentIndex() == MainTab::WildPokemon) {
QWidget *w = this->ui->stackedWidget_WildMons->currentWidget(); QWidget *w = this->ui->stackedWidget_WildMons->currentWidget();
if (w) { if (w) {
MonTabWidget *mtw = static_cast<MonTabWidget *>(w); MonTabWidget *mtw = static_cast<MonTabWidget *>(w);
@ -1648,7 +1654,7 @@ void MainWindow::paste() {
QClipboard *clipboard = QGuiApplication::clipboard(); QClipboard *clipboard = QGuiApplication::clipboard();
QString clipboardText(clipboard->text()); QString clipboardText(clipboard->text());
if (ui->mainTabBar->currentIndex() == 4) { if (ui->mainTabBar->currentIndex() == MainTab::WildPokemon) {
QWidget *w = this->ui->stackedWidget_WildMons->currentWidget(); QWidget *w = this->ui->stackedWidget_WildMons->currentWidget();
if (w) { if (w) {
w->setFocus(); w->setFocus();
@ -1676,7 +1682,7 @@ void MainWindow::paste() {
{ {
default: default:
break; break;
case 0: case MainTab::Map:
{ {
// can only paste currently selected metatiles on this tab // can only paste currently selected metatiles on this tab
if (pasteObject["object"].toString() != "metatile_selection") { if (pasteObject["object"].toString() != "metatile_selection") {
@ -1785,11 +1791,11 @@ void MainWindow::on_mapViewTab_tabBarClicked(int index)
if (index != oldIndex) if (index != oldIndex)
Scripting::cb_MapViewTabChanged(oldIndex, index); Scripting::cb_MapViewTabChanged(oldIndex, index);
if (index == 0) { if (index == MapViewTab::Metatiles) {
editor->setEditingMap(); editor->setEditingMap();
} else if (index == 1) { } else if (index == MapViewTab::Collision) {
editor->setEditingCollision(); editor->setEditingCollision();
} else if (index == 2) { } else if (index == MapViewTab::Prefabs) {
editor->setEditingMap(); editor->setEditingMap();
if (projectConfig.getPrefabFilepath().isEmpty() && !projectConfig.getPrefabImportPrompted()) { if (projectConfig.getPrefabFilepath().isEmpty() && !projectConfig.getPrefabImportPrompted()) {
// User hasn't set up prefabs and hasn't been prompted before. // User hasn't set up prefabs and hasn't been prompted before.
@ -1813,25 +1819,31 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index)
if (index != oldIndex) if (index != oldIndex)
Scripting::cb_MainTabChanged(oldIndex, index); Scripting::cb_MainTabChanged(oldIndex, index);
int tabIndexToStackIndex[5] = {0, 0, 1, 2, 3}; static const QMap<int, int> tabIndexToStackIndex = {
ui->mainStackedWidget->setCurrentIndex(tabIndexToStackIndex[index]); {MainTab::Map, 0},
{MainTab::Events, 0},
{MainTab::Header, 1},
{MainTab::Connections, 2},
{MainTab::WildPokemon, 3},
};
ui->mainStackedWidget->setCurrentIndex(tabIndexToStackIndex.value(index));
if (index == 0) { if (index == MainTab::Map) {
ui->stackedWidget_MapEvents->setCurrentIndex(0); ui->stackedWidget_MapEvents->setCurrentIndex(0);
on_mapViewTab_tabBarClicked(ui->mapViewTab->currentIndex()); on_mapViewTab_tabBarClicked(ui->mapViewTab->currentIndex());
clickToolButtonFromEditMode(editor->map_edit_mode); clickToolButtonFromEditMode(editor->map_edit_mode);
} else if (index == 1) { } else if (index == MainTab::Events) {
ui->stackedWidget_MapEvents->setCurrentIndex(1); ui->stackedWidget_MapEvents->setCurrentIndex(1);
editor->setEditingObjects(); editor->setEditingObjects();
clickToolButtonFromEditMode(editor->obj_edit_mode); clickToolButtonFromEditMode(editor->obj_edit_mode);
} else if (index == 3) { } else if (index == MainTab::Connections) {
editor->setEditingConnections(); editor->setEditingConnections();
} }
if (index != 4) { if (index != MainTab::WildPokemon) {
if (editor->project && editor->project->wildEncountersLoaded) if (editor->project && editor->project->wildEncountersLoaded)
editor->saveEncounterTabData(); editor->saveEncounterTabData();
} }
if (index != 1) { if (index != MainTab::Events) {
editor->map_ruler->setEnabled(false); editor->map_ruler->setEnabled(false);
} }
} }
@ -2218,7 +2230,7 @@ void MainWindow::on_horizontalSlider_CollisionTransparency_valueChanged(int valu
} }
void MainWindow::on_toolButton_deleteObject_clicked() { void MainWindow::on_toolButton_deleteObject_clicked() {
if (ui->mainTabBar->currentIndex() != 1) { if (ui->mainTabBar->currentIndex() != MainTab::Events) {
// do not delete an event when not on event tab // do not delete an event when not on event tab
return; return;
} }
@ -2268,15 +2280,14 @@ void MainWindow::on_toolButton_deleteObject_clicked() {
void MainWindow::on_toolButton_Paint_clicked() void MainWindow::on_toolButton_Paint_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "paint"; editor->map_edit_mode = "paint";
else else
editor->obj_edit_mode = "paint"; editor->obj_edit_mode = "paint";
editor->settings->mapCursor = QCursor(QPixmap(":/icons/pencil_cursor.ico"), 10, 10); editor->settings->mapCursor = QCursor(QPixmap(":/icons/pencil_cursor.ico"), 10, 10);
// do not stop single tile mode when editing collision if (ui->mapViewTab->currentIndex() != MapViewTab::Collision)
if (ui->mapViewTab->currentIndex() != 1)
editor->cursorMapTileRect->stopSingleTileMode(); editor->cursorMapTileRect->stopSingleTileMode();
ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); ui->graphicsView_Map->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
@ -2290,7 +2301,7 @@ void MainWindow::on_toolButton_Paint_clicked()
void MainWindow::on_toolButton_Select_clicked() void MainWindow::on_toolButton_Select_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "select"; editor->map_edit_mode = "select";
else else
editor->obj_edit_mode = "select"; editor->obj_edit_mode = "select";
@ -2309,7 +2320,7 @@ void MainWindow::on_toolButton_Select_clicked()
void MainWindow::on_toolButton_Fill_clicked() void MainWindow::on_toolButton_Fill_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "fill"; editor->map_edit_mode = "fill";
else else
editor->obj_edit_mode = "fill"; editor->obj_edit_mode = "fill";
@ -2328,7 +2339,7 @@ void MainWindow::on_toolButton_Fill_clicked()
void MainWindow::on_toolButton_Dropper_clicked() void MainWindow::on_toolButton_Dropper_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "pick"; editor->map_edit_mode = "pick";
else else
editor->obj_edit_mode = "pick"; editor->obj_edit_mode = "pick";
@ -2347,7 +2358,7 @@ void MainWindow::on_toolButton_Dropper_clicked()
void MainWindow::on_toolButton_Move_clicked() void MainWindow::on_toolButton_Move_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "move"; editor->map_edit_mode = "move";
else else
editor->obj_edit_mode = "move"; editor->obj_edit_mode = "move";
@ -2366,7 +2377,7 @@ void MainWindow::on_toolButton_Move_clicked()
void MainWindow::on_toolButton_Shift_clicked() void MainWindow::on_toolButton_Shift_clicked()
{ {
if (ui->mainTabBar->currentIndex() == 0) if (ui->mainTabBar->currentIndex() == MainTab::Map)
editor->map_edit_mode = "shift"; editor->map_edit_mode = "shift";
else else
editor->obj_edit_mode = "shift"; editor->obj_edit_mode = "shift";
@ -2385,7 +2396,7 @@ void MainWindow::on_toolButton_Shift_clicked()
void MainWindow::checkToolButtons() { void MainWindow::checkToolButtons() {
QString edit_mode; QString edit_mode;
if (ui->mainTabBar->currentIndex() == 0) { if (ui->mainTabBar->currentIndex() == MainTab::Map) {
edit_mode = editor->map_edit_mode; edit_mode = editor->map_edit_mode;
} else { } else {
edit_mode = editor->obj_edit_mode; edit_mode = editor->obj_edit_mode;

View file

@ -154,7 +154,10 @@ int ScriptUtility::getMapViewTab() {
} }
void ScriptUtility::setMapViewTab(int index) { void ScriptUtility::setMapViewTab(int index) {
if (this->getMainTab() != 0 || !window->ui->mapViewTab || index < 0 || index >= window->ui->mapViewTab->count()) if (this->getMainTab() != MainTab::Map || !window->ui->mapViewTab || index < 0 || index >= window->ui->mapViewTab->count())
return;
// Can't select tab if it's disabled
if (!window->ui->mapViewTab->isTabEnabled(index))
return; return;
window->on_mapViewTab_tabBarClicked(index); window->on_mapViewTab_tabBarClicked(index);
} }