diff --git a/aegisub/src/command/command.h b/aegisub/src/command/command.h index a803cdb77..ac6bea61c 100644 --- a/aegisub/src/command/command.h +++ b/aegisub/src/command/command.h @@ -28,11 +28,6 @@ namespace agi { struct Context; } -DEFINE_BASE_EXCEPTION_NOINNER(CommandError, agi::Exception) -DEFINE_SIMPLE_EXCEPTION_NOINNER(CommandNotFound, CommandError, "command/notfound") -DEFINE_SIMPLE_EXCEPTION_NOINNER(CommandIconNone, CommandError, "command/icon") -DEFINE_SIMPLE_EXCEPTION_NOINNER(CommandIconInvalid, CommandError, "command/icon/invalid") - #define CMD_NAME(a) const char* name() const { return a; } #define STR_MENU(a) wxString StrMenu(const agi::Context *) const { return _(a); } #define STR_DISP(a) wxString StrDisplay(const agi::Context *) const { return _(a); } @@ -72,6 +67,9 @@ struct cname : public Command { \ /// Commands namespace cmd { +DEFINE_BASE_EXCEPTION_NOINNER(CommandError, agi::Exception) +DEFINE_SIMPLE_EXCEPTION_NOINNER(CommandNotFound, CommandError, "command/notfound") + enum CommandFlags { /// Default command type COMMAND_NORMAL = 0, diff --git a/aegisub/src/hotkey.cpp b/aegisub/src/hotkey.cpp index 8eb36310b..bb60674e1 100644 --- a/aegisub/src/hotkey.cpp +++ b/aegisub/src/hotkey.cpp @@ -24,6 +24,7 @@ #include "libresrc/libresrc.h" #include "command/command.h" +#include "compat.h" #include "options.h" #include @@ -163,11 +164,18 @@ bool check(std::string const& context, agi::Context *c, int key_code, int modifi } bool check(std::string const& context, agi::Context *c, wxKeyEvent &evt) { - if (!hotkey::check(context, c, evt.GetKeyCode(), evt.GetModifiers())) { - evt.Skip(); - return false; + try { + if (!hotkey::check(context, c, evt.GetKeyCode(), evt.GetModifiers())) { + evt.Skip(); + return false; + } + return true; + } + catch (cmd::CommandNotFound const& e) { + wxMessageBox(to_wx(e.GetChainedMessage()), _("Invalid command name for hotkey"), + wxOK | wxICON_ERROR | wxCENTER | wxSTAY_ON_TOP); + return true; } - return true; } std::vector get_hotkey_strs(std::string const& context, std::string const& command) { diff --git a/aegisub/src/hotkey_data_view_model.cpp b/aegisub/src/hotkey_data_view_model.cpp index 6196ef903..b090f85df 100644 --- a/aegisub/src/hotkey_data_view_model.cpp +++ b/aegisub/src/hotkey_data_view_model.cpp @@ -97,7 +97,7 @@ public: if (icon_bmp.IsOk()) icon.CopyFromBitmap(icon_bmp); } - catch (agi::Exception const& e) { + catch (agi::Exception const&) { // Just use no icon; error is reported in the description column } variant << wxDataViewIconText(to_wx(combo.CmdName()), icon); diff --git a/aegisub/src/toolbar.cpp b/aegisub/src/toolbar.cpp index 0947fda38..d1570b6bd 100644 --- a/aegisub/src/toolbar.cpp +++ b/aegisub/src/toolbar.cpp @@ -129,7 +129,7 @@ namespace { try { command = cmd::get(command_name); } - catch (CommandNotFound const&) { + catch (cmd::CommandNotFound const&) { LOG_W("toolbar/command/not_found") << "Command '" << command_name << "' not found; skipping"; continue; }