From 3291f0d98c8cfd9e16229c5b42218665d4f728bd Mon Sep 17 00:00:00 2001 From: EIntemporel Date: Wed, 26 Oct 2022 20:39:24 +0200 Subject: [PATCH] Console command Add command for console ! --- src/noggit/application/ApplicationEntry.cpp | 25 ++++++++++++++++++- src/noggit/application/NoggitApplication.cpp | 11 +++++++- src/noggit/application/NoggitApplication.hpp | 7 +++++- .../NoggitProjectSelectionWindow.cpp | 23 ++++++++++++----- 4 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/noggit/application/ApplicationEntry.cpp b/src/noggit/application/ApplicationEntry.cpp index 7af53d07..00a51694 100755 --- a/src/noggit/application/ApplicationEntry.cpp +++ b/src/noggit/application/ApplicationEntry.cpp @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include #include #include @@ -17,6 +19,20 @@ #include #include +QCommandLineParser* ProcessCommandLine() +{ + QCommandLineParser* parser = new QCommandLineParser(); + parser->setApplicationDescription("Help"); + parser->addHelpOption(); + parser->addVersionOption(); + parser->addOptions({ + {"disable-update", QApplication::translate("main", "Disable the check for update.")}, + {"force-changelog", QApplication::translate("main", "Force displaying the changelog popup.")} + }); + + return parser; +} + int main(int argc, char *argv[]) { Noggit::RegisterErrorHandlers(); @@ -28,8 +44,15 @@ int main(int argc, char *argv[]) q_application.setApplicationName ("Noggit"); q_application.setOrganizationName ("Noggit"); + auto parser = ProcessCommandLine(); + parser->process(q_application); + + std::vector Command; + Command.push_back(parser->isSet("disable-update")); + Command.push_back(parser->isSet("force-changelog")); + auto noggit = Noggit::Application::NoggitApplication::instance(); - noggit->initalize(argc, argv); + noggit->initalize(argc, argv, Command); auto project_selection = new Noggit::Ui::Windows::NoggitProjectSelectionWindow(noggit); project_selection->show(); diff --git a/src/noggit/application/NoggitApplication.cpp b/src/noggit/application/NoggitApplication.cpp index 431647a9..56cebb13 100755 --- a/src/noggit/application/NoggitApplication.cpp +++ b/src/noggit/application/NoggitApplication.cpp @@ -3,9 +3,10 @@ namespace Noggit::Application { - void NoggitApplication::initalize(int argc, char* argv[]) + void NoggitApplication::initalize(int argc, char* argv[], std::vector Parser) { InitLogging(); + Command = Parser; //Locate application relative path Log << "Noggit Studio - " << STRPRODUCTVER << std::endl; @@ -132,4 +133,12 @@ namespace Noggit::Application } LogError << "std::terminate: " << reason << std::endl; } + + bool NoggitApplication::GetCommand(int index) + { + if (index >= 0 && index < Command.size()) + return Command[index]; + + return false; + } } diff --git a/src/noggit/application/NoggitApplication.hpp b/src/noggit/application/NoggitApplication.hpp index 83a0ab6e..4ae1555b 100755 --- a/src/noggit/application/NoggitApplication.hpp +++ b/src/noggit/application/NoggitApplication.hpp @@ -48,9 +48,14 @@ namespace Noggit::Application { BlizzardArchive::ClientData* clientData() { return _client_data.get(); } void setClientData(std::shared_ptr data) { _client_data = data; } - void initalize(int argc, char* argv[]); + void initalize(int argc, char* argv[], std::vector Parser); std::shared_ptr getConfiguration(); static void terminationHandler(); + bool GetCommand(int index); + + protected: + std::vector Command; + private: NoggitApplication() = default; diff --git a/src/noggit/ui/windows/projectSelection/NoggitProjectSelectionWindow.cpp b/src/noggit/ui/windows/projectSelection/NoggitProjectSelectionWindow.cpp index a4b0f53d..190ebd1c 100755 --- a/src/noggit/ui/windows/projectSelection/NoggitProjectSelectionWindow.cpp +++ b/src/noggit/ui/windows/projectSelection/NoggitProjectSelectionWindow.cpp @@ -129,13 +129,24 @@ NoggitProjectSelectionWindow::NoggitProjectSelectionWindow(Noggit::Application:: } ); - _updater = new Noggit::Ui::CUpdater(this); + // disable-update + if (!_noggit_application->GetCommand(0)) + { + _updater = new Noggit::Ui::CUpdater(this); - QObject::connect(_updater, &CUpdater::OpenUpdater, [=]() - { - _updater->setModal(true); - _updater->show(); - }); + QObject::connect(_updater, &CUpdater::OpenUpdater, [=]() + { + _updater->setModal(true); + _updater->show(); + }); + } + + // force-changelog + if (_noggit_application->GetCommand(1)) + { + + } + } void NoggitProjectSelectionWindow::handleContextMenuProjectListItemDelete(std::string const& project_path)