From d53bb22d2bb55d5488e765017db01630c97a670e Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 29 Feb 2012 01:24:04 +0000 Subject: [PATCH] Split the "am/manager" command into several subcommands so that it can be hotkeyed usefully Originally committed to SVN as r6525. --- aegisub/src/command/automation.cpp | 50 +++++++++++++++++++++-- aegisub/src/command/icon.cpp | 1 + aegisub/src/libresrc/default_toolbar.json | 2 +- aegisub/src/menu.cpp | 2 +- 4 files changed, 50 insertions(+), 5 deletions(-) diff --git a/aegisub/src/command/automation.cpp b/aegisub/src/command/automation.cpp index e7376f7cf..97164dbcb 100644 --- a/aegisub/src/command/automation.cpp +++ b/aegisub/src/command/automation.cpp @@ -55,9 +55,32 @@ namespace { /// @defgroup cmd-am Automation commands /// @{ +struct reload_all : public Command { + CMD_NAME("am/reload") + STR_MENU("&Reload Automation scripts") + STR_DISP("Reload Automation scripts") + STR_HELP("Reload all Automation scripts and rescan the autoload folder") -/// Open automation manager. -struct am_manager : public Command { + void operator()(agi::Context *c) { + wxGetApp().global_scripts->Reload(); + c->local_scripts->Reload(); + wxGetApp().frame->StatusTimeout(_("Reloaded all Automation scripts")); + } +}; + +struct reload_autoload : public Command { + CMD_NAME("am/reload/autoload") + STR_MENU("R&eload autoload Automation scripts") + STR_DISP("Reload autoload Automation scripts") + STR_HELP("Rescan the Automation autoload folder") + + void operator()(agi::Context *c) { + wxGetApp().global_scripts->Reload(); + wxGetApp().frame->StatusTimeout(_("Reloaded autoload Automation scripts")); + } +}; + +struct open_manager : public Command { CMD_NAME("am/manager") STR_MENU("&Automation...") STR_DISP("Automation") @@ -82,11 +105,32 @@ struct am_manager : public Command { } }; +struct meta : public Command { + CMD_NAME("am/meta") + STR_MENU("&Automation...") + STR_DISP("Automation") + STR_HELP("Open automation manager") + + void operator()(agi::Context *c) { + if (wxGetMouseState().CmdDown()) { + if (wxGetMouseState().ShiftDown()) + cmd::call("am/reload", c); + else + cmd::call("am/reload/autoload", c); + } + else + cmd::call("am/manager", c); + } +}; + /// @} } namespace cmd { void init_automation() { - reg(new am_manager); + reg(new meta); + reg(new open_manager); + reg(new reload_all); + reg(new reload_autoload); } } diff --git a/aegisub/src/command/icon.cpp b/aegisub/src/command/icon.cpp index 30d969a54..bf6aa71a0 100644 --- a/aegisub/src/command/icon.cpp +++ b/aegisub/src/command/icon.cpp @@ -79,6 +79,7 @@ void icon_init() { LOG_D("icon/init") << "Generating 24x24, 16x16 icons"; INSERT_ICON("am/manager", automation_toolbutton) +INSERT_ICON("am/meta", automation_toolbutton) INSERT_ICON("app/about", about_menu) INSERT_ICON("app/exit", exit_button) INSERT_ICON("app/language", languages_menu) diff --git a/aegisub/src/libresrc/default_toolbar.json b/aegisub/src/libresrc/default_toolbar.json index fb67293ed..d010c3c76 100644 --- a/aegisub/src/libresrc/default_toolbar.json +++ b/aegisub/src/libresrc/default_toolbar.json @@ -47,7 +47,7 @@ "subtitle/attachment", "tool/font_collector", "", - "am/manager", + "am/meta", "", "tool/assdraw", "", diff --git a/aegisub/src/menu.cpp b/aegisub/src/menu.cpp index 8c082a445..86134dba2 100644 --- a/aegisub/src/menu.cpp +++ b/aegisub/src/menu.cpp @@ -413,7 +413,7 @@ public: , global_slot(wxGetApp().global_scripts->AddScriptChangeListener(&AutomationMenu::Regenerate, this)) , local_slot(c->local_scripts->AddScriptChangeListener(&AutomationMenu::Regenerate, this)) { - cm->AddCommand(cmd::get("am/manager"), this, ""); + cm->AddCommand(cmd::get("am/meta"), this, ""); AppendSeparator(); Regenerate(); }