From fee9ffcd442f71996de58c03550eadc4bc945fff Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 10 Dec 2021 01:54:27 -0500 Subject: [PATCH] Add main tab to API --- include/mainwindow.h | 3 +++ include/scripting.h | 2 ++ src/mainwindow.cpp | 10 +++++++++- src/mainwindow_scriptapi.cpp | 12 ++++++++++++ src/scripting.cpp | 11 +++++++++++ 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/include/mainwindow.h b/include/mainwindow.h index ce447cdf..f3031079 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -167,6 +167,8 @@ public: Q_INVOKABLE int getNumMetatileLayers(); Q_INVOKABLE int getBaseGameVersion(); Q_INVOKABLE QList getCustomScripts(); + Q_INVOKABLE int getCurrentTab(); + Q_INVOKABLE void setCurrentTab(int index); private slots: @@ -389,6 +391,7 @@ private: QString getEventGroupFromTabWidget(QWidget *tab); void closeSupplementaryWindows(); void setWindowDisabled(bool); + void setMainTab(int); void initTilesetEditor(); bool initRegionMapEditor(); diff --git a/include/scripting.h b/include/scripting.h index 47f3ba72..d9cfb91a 100644 --- a/include/scripting.h +++ b/include/scripting.h @@ -15,6 +15,7 @@ enum CallbackType { OnMapOpened, OnMapResized, OnTilesetUpdated, + OnTabChanged, }; class Scripting @@ -38,6 +39,7 @@ public: static void cb_MapOpened(QString mapName); static void cb_MapResized(int oldWidth, int oldHeight, int newWidth, int newHeight); static void cb_TilesetUpdated(QString tilesetName); + static void cb_TabChanged(int oldTab, int newTab); static bool tryErrorJS(QJSValue js); private: diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d46e30f5..deac0914 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -676,7 +676,7 @@ void MainWindow::redrawMapScene() void MainWindow::refreshMapScene() { - on_mainTabBar_tabBarClicked(ui->mainTabBar->currentIndex()); + setMainTab(ui->mainTabBar->currentIndex()); ui->graphicsView_Map->setScene(editor->scene); ui->graphicsView_Map->setSceneRect(editor->scene->sceneRect()); @@ -1678,6 +1678,14 @@ void MainWindow::on_action_Exit_triggered() } void MainWindow::on_mainTabBar_tabBarClicked(int index) +{ + int oldIndex = ui->mainTabBar->currentIndex(); + if (index != oldIndex) + Scripting::cb_TabChanged(oldIndex, index); + setMainTab(index); +} + +void MainWindow::setMainTab(int index) { ui->mainTabBar->setCurrentIndex(index); diff --git a/src/mainwindow_scriptapi.cpp b/src/mainwindow_scriptapi.cpp index bccff8a2..0ab2309e 100644 --- a/src/mainwindow_scriptapi.cpp +++ b/src/mainwindow_scriptapi.cpp @@ -989,3 +989,15 @@ int MainWindow::getBaseGameVersion() { QList MainWindow::getCustomScripts() { return projectConfig.getCustomScripts(); } + +int MainWindow::getCurrentTab() { + if (!this->ui || !this->ui->mainTabBar) + return -1; + return this->ui->mainTabBar->currentIndex(); +} + +void MainWindow::setCurrentTab(int index) { + if (!this->ui || !this->ui->mainTabBar || index < 0 || index >= this->ui->mainTabBar->count()) + return + this->setMainTab(index); +} diff --git a/src/scripting.cpp b/src/scripting.cpp index 8e7c2351..028d6127 100644 --- a/src/scripting.cpp +++ b/src/scripting.cpp @@ -8,6 +8,7 @@ QMap callbackFunctions = { {OnMapOpened, "onMapOpened"}, {OnMapResized, "onMapResized"}, {OnTilesetUpdated, "onTilesetUpdated"}, + {OnTabChanged, "onTabChanged"}, }; Scripting *instance = nullptr; @@ -163,6 +164,16 @@ void Scripting::cb_TilesetUpdated(QString tilesetName) { instance->invokeCallback(OnTilesetUpdated, args); } +void Scripting::cb_TabChanged(int oldTab, int newTab) { + if (!instance) return; + + QJSValueList args { + oldTab, + newTab, + }; + instance->invokeCallback(OnTabChanged, args); +} + QJSValue Scripting::fromBlock(Block block) { QJSValue obj = instance->engine->newObject(); obj.setProperty("metatileId", block.metatileId);