add syntactic sugar for fetching toggle and radio actions
[ardour.git] / libs / gtkmm2ext / bindings.cc
index b1abcb0507f0cafc55d1d8107bfb2a0c0938c4f5..cf98bbca4dd6b2080411497d00b6a32436951bef 100644 (file)
@@ -1174,6 +1174,7 @@ ActionMap::get_actions (ActionMap::Actions& acts)
        }
 }
 
+
 RefPtr<Action>
 ActionMap::find_action (const string& name)
 {
@@ -1187,12 +1188,34 @@ ActionMap::find_action (const string& name)
        return RefPtr<Action>();
 }
 
+RefPtr<ToggleAction>
+ActionMap::find_toggle_action (const string& name)
+{
+       RefPtr<Action> act = find_action (name);
+
+       if (!act) {
+               return RefPtr<ToggleAction>();
+       }
+
+       return Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+}
+
+RefPtr<RadioAction>
+ActionMap::find_radio_action (const string& name)
+{
+       RefPtr<Action> act = find_action (name);
+
+       if (!act) {
+               return RefPtr<RadioAction>();
+       }
+
+       return Glib::RefPtr<RadioAction>::cast_dynamic (act);
+}
+
 RefPtr<Action>
 ActionMap::find_action (char const * group_name, char const * action_name)
 {
-       string fullpath;
-
-       fullpath = group_name;
+       string fullpath (group_name);
        fullpath += '/';
        fullpath += action_name;
 
@@ -1206,6 +1229,31 @@ ActionMap::find_action (char const * group_name, char const * action_name)
        return RefPtr<Action>();
 }
 
+RefPtr<ToggleAction>
+ActionMap::find_toggle_action (char const * group_name, char const * action_name)
+{
+       RefPtr<Action> act = find_action (group_name, action_name);
+
+       if (!act) {
+               return RefPtr<ToggleAction>();
+       }
+
+       return Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+}
+
+RefPtr<RadioAction>
+ActionMap::find_radio_action (char const * group_name, char const * action_name)
+{
+       RefPtr<Action> act = find_action (group_name, action_name);
+
+       if (!act) {
+               return RefPtr<RadioAction>();
+       }
+
+       return Glib::RefPtr<RadioAction>::cast_dynamic (act);
+}
+
+
 RefPtr<ActionGroup>
 ActionMap::create_action_group (const string& name)
 {