add syntactic sugar for fetching toggle and radio actions
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 7 Dec 2018 03:12:27 +0000 (22:12 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 7 Dec 2018 03:12:34 +0000 (22:12 -0500)
libs/gtkmm2ext/bindings.cc
libs/gtkmm2ext/gtkmm2ext/bindings.h

index 1c84a5a5cad98abc316c6f9d38005f97eadcf129..cf98bbca4dd6b2080411497d00b6a32436951bef 100644 (file)
@@ -1188,6 +1188,30 @@ 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)
 {
@@ -1205,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)
 {
index 93e8f4c1f56f3ae457d16c7647a828747bed9fa1..1cbb6af904bff2011b179cb2fa0a696efc0cf5f5 100644 (file)
@@ -107,6 +107,10 @@ class LIBGTKMM2EXT_API ActionMap {
 
        Glib::RefPtr<Gtk::Action> find_action (const std::string& name);
        Glib::RefPtr<Gtk::Action> find_action (char const * group_name, char const * action_name);
+       Glib::RefPtr<Gtk::ToggleAction> find_toggle_action (const std::string& name);
+       Glib::RefPtr<Gtk::ToggleAction> find_toggle_action (char const * group_name, char const * action_name);
+       Glib::RefPtr<Gtk::RadioAction> find_radio_action (const std::string& name);
+       Glib::RefPtr<Gtk::RadioAction> find_radio_action (char const * group_name, char const * action_name);
 
        void set_bindings (Bindings*);
        Bindings* bindings() const { return _bindings; }