From 6c5e3f5b2073133778ff64612a1cffea1bdb33da Mon Sep 17 00:00:00 2001 From: Ludwig Jaeck <ludwig.jaeck@outlook.de> Date: Wed, 4 Jan 2023 16:25:04 +0100 Subject: [PATCH] Added command line argument for project file --- App/AppOptions.cpp | 10 +++++++++- App/AppOptions.h | 3 +++ App/main.cpp | 3 ++- GUI/View/Main/MainWindow.cpp | 11 ++++++++--- GUI/View/Main/MainWindow.h | 1 + 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/App/AppOptions.cpp b/App/AppOptions.cpp index 04117d3176b..0f98faf4895 100644 --- a/App/AppOptions.cpp +++ b/App/AppOptions.cpp @@ -65,7 +65,8 @@ ApplicationOptions::ApplicationOptions(int argc, char** argv) m_options.add_options()(geometry, bpo::value<std::string>(), "Main window geometry, e.g. 1600x1000"); m_options.add_options()(nohighdpi, "Run without high-dpi support"); - + m_options.add_options()("project-file", bpo::value<std::string>(), "project file"); + m_positional_options.add("project-file", -1); parseCommandLine(argc, argv); processOptions(); @@ -152,3 +153,10 @@ bool ApplicationOptions::disableHighDPISupport() const { return find(nohighdpi); } + +QString ApplicationOptions::projectFile() const +{ + if (find("project-file")) + return QString::fromStdString(m_variables_map["project-file"].as<std::string>()); + return QString(); +} \ No newline at end of file diff --git a/App/AppOptions.h b/App/AppOptions.h index 43058284349..737ce332cca 100644 --- a/App/AppOptions.h +++ b/App/AppOptions.h @@ -22,6 +22,7 @@ #include <string> class QSize; +class QString; namespace bpo = boost::program_options; @@ -39,6 +40,8 @@ public: bool disableHighDPISupport() const; + QString projectFile() const; + //! Returns true if option with given name has been set bool find(std::string name) const; diff --git a/App/main.cpp b/App/main.cpp index 080332e37f6..c2ef498c7b4 100644 --- a/App/main.cpp +++ b/App/main.cpp @@ -64,7 +64,8 @@ int main(int argc, char* argv[]) GUI::Global::mainWindow = &win; if (options.find("geometry")) win.resize(options.mainWindowSize()); - + if (options.find("project-file")) + win.loadProject(options.projectFile()); win.show(); int result = QApplication::exec(); diff --git a/GUI/View/Main/MainWindow.cpp b/GUI/View/Main/MainWindow.cpp index 3e75c49f061..4dd79cfd949 100644 --- a/GUI/View/Main/MainWindow.cpp +++ b/GUI/View/Main/MainWindow.cpp @@ -102,9 +102,9 @@ MainWindow::MainWindow() m_viewSelectionButtons->button(ViewId::WELCOME)->setChecked(true); updateTitle(); - - if (appSettings->createNewProjectOnStartup()) - m_projectManager->newProject(); + if (appSettings) + if (appSettings->createNewProjectOnStartup()) + m_projectManager->newProject(); } MainWindow::~MainWindow() = default; @@ -402,3 +402,8 @@ QToolButton* MainWindow::createViewSelectionButton() const btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); return btn; } + +void MainWindow::loadProject(QString projectPath) +{ + m_projectManager->openProject(projectPath); +} diff --git a/GUI/View/Main/MainWindow.h b/GUI/View/Main/MainWindow.h index a82e6560feb..7adc8b13442 100644 --- a/GUI/View/Main/MainWindow.h +++ b/GUI/View/Main/MainWindow.h @@ -54,6 +54,7 @@ public: void setCurrentView(int viewId); void updateTitle(); + void loadProject(QString projectPath); public slots: void onFocusRequest(int index); -- GitLab