summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-09 13:33:22 +0200
committerRobin Gareus <robin@gareus.org>2017-08-09 16:29:24 +0200
commitbbc8c1354e98abd1fa71e9e0346747c49df6c9c9 (patch)
tree8d80f6e79f2a299a1643cb2e63c63358bb21ec9f /libs
parente1a29c4e463266a990985f7e902a74f34b151b7f (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
Diffstat (limited to 'libs')
-rw-r--r--libs/gtkmm2ext/actions.cc25
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/actions.h16
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__ */