Chrysalis - CLO3D Extensions
Loading...
Searching...
No Matches
CommandRunner.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_COMMANDSCONTAINER_H
2#define CHRYSALIS_COMMANDSCONTAINER_H
3
4#include <QMenu>
5
6#include <CommandDialog.h>
7
9
10namespace CLO3D {
12 public:
13 explicit CommandRunner(QSettings* settings, QMenu* menu);
14
15 template<typename Command, typename Arguments, typename Widget>
16 requires std::is_base_of_v<BaseCommand, Command> &&
17 std::is_base_of_v<BaseCommandArguments, Arguments> &&
18 std::is_base_of_v<UI::BaseCommandArgumentsWidget, Widget>
19 void add() {
20 const auto& action = menu_->addAction(Arguments::NAME);
21 QObject::connect(action, &QAction::triggered, [this] {
22 const auto arguments = new Arguments(settings_);
23 const auto dialog = new UI::CommandDialog(Arguments::NAME, new Widget(arguments), new Command(arguments));
24 dialog->exec();
25 });
26 }
27 private:
28 QMenu* menu_;
29 QSettings* settings_;
30 };
31}
32
33#endif //CHRYSALIS_COMMANDSCONTAINER_H
void add()
Definition CommandRunner.h:19
CommandRunner(QSettings *settings, QMenu *menu)
Definition CommandRunner.cpp:5
Definition CommandDialog.h:17
Definition BaseCommand.h:8