diff options
author | Robin Gareus <robin@gareus.org> | 2017-08-09 13:33:22 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-08-09 16:29:24 +0200 |
commit | bbc8c1354e98abd1fa71e9e0346747c49df6c9c9 (patch) | |
tree | 8d80f6e79f2a299a1643cb2e63c63358bb21ec9f | |
parent | e1a29c4e463266a990985f7e902a74f34b151b7f (diff) |
Separate set_toggleaction_state () API
Prepare for a method consistent with access_action():
* separate group + action names
* no action string parsing overhead.
* no fatal, abort () call for invalid actions
-rw-r--r-- | libs/gtkmm2ext/actions.cc | 25 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/actions.h | 16 |
2 files changed, 25 insertions, 16 deletions
diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index 840c9dc4a2..76c6ba043b 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -220,19 +220,19 @@ ActionManager::set_sensitive (vector<RefPtr<Action> >& actions, bool state) } void -ActionManager::check_toggleaction (string n) +ActionManager::check_toggleaction (const string& n) { set_toggleaction_state (n, true); } void -ActionManager::uncheck_toggleaction (string n) +ActionManager::uncheck_toggleaction (const string& n) { set_toggleaction_state (n, false); } void -ActionManager::set_toggleaction_state (string n, bool s) +ActionManager::set_toggleaction_state (const string& n, bool s) { char const * name = n.c_str (); @@ -252,16 +252,25 @@ ActionManager::set_toggleaction_state (string n, bool s) group_name[len] = '\0'; const char* action_name = last_slash + 1; + if (!set_toggleaction_state (group_name, action_name, s)) { + error << string_compose (_("Unknown action name: %1/%2"), group_name, action_name) << endmsg; + } + delete [] group_name; +} + +bool +ActionManager::set_toggleaction_state (const char* group_name, const char* action_name, bool s) +{ RefPtr<Action> act = get_action (group_name, action_name); if (act) { RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act); - tact->set_active (s); - } else { - error << string_compose (_("Unknown action name: %1"), name) << endmsg; + if (tact) { + tact->set_active (s); + return true; + } } - - delete [] group_name; + return false; } void diff --git a/libs/gtkmm2ext/gtkmm2ext/actions.h b/libs/gtkmm2ext/gtkmm2ext/actions.h index 88b9628273..2d1c979ed1 100644 --- a/libs/gtkmm2ext/gtkmm2ext/actions.h +++ b/libs/gtkmm2ext/gtkmm2ext/actions.h @@ -49,14 +49,14 @@ namespace ActionManager { LIBGTKMM2EXT_API extern void do_action (const char* group, const char* name); LIBGTKMM2EXT_API extern void set_toggle_action (const char* group, const char* name, bool); - LIBGTKMM2EXT_API extern void check_toggleaction (std::string); - LIBGTKMM2EXT_API extern void uncheck_toggleaction (std::string); - LIBGTKMM2EXT_API extern void set_toggleaction_state (std::string, bool); - - - LIBGTKMM2EXT_API extern void save_action_states (); - LIBGTKMM2EXT_API extern void enable_active_actions (); - LIBGTKMM2EXT_API extern void disable_active_actions (); + LIBGTKMM2EXT_API extern void check_toggleaction (const std::string&); + LIBGTKMM2EXT_API extern void uncheck_toggleaction (const std::string&); + LIBGTKMM2EXT_API extern void set_toggleaction_state (const std::string&, bool); + LIBGTKMM2EXT_API extern bool set_toggleaction_state (const char*, const char*, bool); + + LIBGTKMM2EXT_API extern void save_action_states (); + LIBGTKMM2EXT_API extern void enable_active_actions (); + LIBGTKMM2EXT_API extern void disable_active_actions (); }; #endif /* __libgtkmm2ext_actions_h__ */ |