diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2021-01-11 01:25:47 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2021-01-18 08:20:08 -0500 |
| commit | 09eb507ddad0d164a39d72c5c121d332966ef462 (patch) | |
| tree | 4cdc6c84b1322e2e702d303dd92a8e58d09bade2 /src/commandline.h | |
| parent | 7e8018481284ff9ac1915425e9ed94d532ab33db (diff) | |
moved externalMessage() to MOApplication
commands can forward to the primary instance
added reload-plugin command
MessageDialog now tries to find the main window when the reference is null, which actually used to happen often because activeWindow() is typically used, but that's null when the main window doesn't have focus (like when downloading from nexus, for example)
Diffstat (limited to 'src/commandline.h')
| -rw-r--r-- | src/commandline.h | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/commandline.h b/src/commandline.h index d0d62a72..6f96d724 100644 --- a/src/commandline.h +++ b/src/commandline.h @@ -5,6 +5,7 @@ #include <memory> class OrganizerCore; +class MOMultiProcess; namespace cl { @@ -59,8 +60,10 @@ public: // // - virtual std::optional<int> runPreOrganizer(); - virtual std::optional<int> runPostOrganizer(OrganizerCore& organizer); + virtual std::optional<int> runEarly(); + virtual bool canForwardToPrimary() const; + virtual std::optional<int> runPostMultiProcess(MOMultiProcess& mp); + virtual std::optional<int> runPostOrganizer(OrganizerCore& core); protected: // meta information about this command, returned by derived classes @@ -118,7 +121,7 @@ class CrashDumpCommand : public Command protected: po::options_description getVisibleOptions() const override; Meta meta() const override; - std::optional<int> runPreOrganizer() override; + std::optional<int> runEarly() override; }; @@ -141,7 +144,7 @@ public: protected: Meta meta() const override; - std::optional<int> runPreOrganizer() override; + std::optional<int> runEarly() override; int SpawnWaitProcess(LPCWSTR workingDirectory, LPCWSTR commandLine); @@ -160,7 +163,21 @@ protected: po::options_description getInternalOptions() const override; po::positional_options_description getPositional() const override; Meta meta() const override; - std::optional<int> runPostOrganizer(OrganizerCore& organizer) override; + std::optional<int> runPostOrganizer(OrganizerCore& core) override; +}; + + +// reloads the given plugin +// +class ReloadPluginCommand : public Command +{ +protected: + std::string getUsageLine() const override; + po::options_description getInternalOptions() const override; + po::positional_options_description getPositional() const override; + Meta meta() const override; + bool canForwardToPrimary() const override; + std::optional<int> runPostOrganizer(OrganizerCore& core) override; }; @@ -215,7 +232,9 @@ public: // returns an empty optional if execution should continue, or a return code // if MO must quit // - std::optional<int> run(OrganizerCore& organizer) const; + bool forwardToPrimary(MOMultiProcess& multiProcess); + std::optional<int> runPostMultiProcess(MOMultiProcess& mp); + std::optional<int> runPostOrganizer(OrganizerCore& core); // clears parsed options, used when MO is "restarted" so the options aren't @@ -269,6 +288,12 @@ private: void createOptions(); std::string more() const; + + template <class... Ts> + void add() + { + (m_commands.push_back(std::make_unique<Ts>()), ...); + } }; } // namespace |
