diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2018-12-11 05:05:09 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2018-12-11 05:05:09 -0500 |
commit | e1b7a43139ae8be7c648d1fc49f3e6bb5d9d4c30 (patch) | |
tree | da79ee04935636b472fbb3617e74063be5cdc2ef /libs/gtkmm2ext | |
parent | 5981b7f1b8bc85444d66ab0ffac2dee412dd21ea (diff) |
add ActionManager::get_actions() to fetch all actions created in ActionGroups with a given "owner" value
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/actions.cc | 15 | ||||
-rw-r--r-- | libs/gtkmm2ext/bindings.cc | 9 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/actions.h | 1 |
3 files changed, 19 insertions, 6 deletions
diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index 00d85d35c6..25d2ca148c 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -474,6 +474,21 @@ ActionManager::register_toggle_action (RefPtr<ActionGroup> group, } void +ActionManager::get_actions (void* owner, std::vector<Glib::RefPtr<Gtk::Action> >& acts) +{ + for (ActionMap::const_iterator a = actions.begin(); a != actions.end(); ++a) { + if (owner) { + Glib::RefPtr<Gtk::ActionGroup> group = a->second->property_action_group (); + if (group->get_data (X_("owner")) == owner) { + acts.push_back (a->second); + } + } else { + acts.push_back (a->second); + } + } +} + +void ActionManager::get_all_actions (std::vector<std::string>& paths, std::vector<std::string>& labels, std::vector<std::string>& tooltips, diff --git a/libs/gtkmm2ext/bindings.cc b/libs/gtkmm2ext/bindings.cc index ce32cd725d..61c0c2dd0f 100644 --- a/libs/gtkmm2ext/bindings.cc +++ b/libs/gtkmm2ext/bindings.cc @@ -1014,14 +1014,12 @@ Bindings::get_all_actions (std::vector<std::string>& paths, rmap.insert (make_pair (k->second.action, k->first)); } -#if 0 - /* get a list of all actions XXX relevant for these bindings */ - ActionMap::Actions all_actions; - ActionManager::get_actions (all_actions); + std::vector<Glib::RefPtr<Action> > relevant_actions; + ActionManager::get_actions (this, relevant_actions); - for (ActionMap::Actions::const_iterator act = all_actions.begin(); act != all_actions.end(); ++act) { + for (vector<Glib::RefPtr<Action> >::const_iterator act = relevant_actions.begin(); act != relevant_actions.end(); ++act) { paths.push_back ((*act)->get_accel_path()); labels.push_back ((*act)->get_label()); @@ -1037,7 +1035,6 @@ Bindings::get_all_actions (std::vector<std::string>& paths, actions.push_back (*act); } -#endif } Bindings* diff --git a/libs/gtkmm2ext/gtkmm2ext/actions.h b/libs/gtkmm2ext/gtkmm2ext/actions.h index 620d6c82d0..6bb56adaee 100644 --- a/libs/gtkmm2ext/gtkmm2ext/actions.h +++ b/libs/gtkmm2ext/gtkmm2ext/actions.h @@ -94,6 +94,7 @@ namespace ActionManager { LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::RadioAction> get_radio_action (const std::string& name, bool or_die = true); LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::RadioAction> get_radio_action (char const * group_name, char const * action_name, bool or_die = true); + LIBGTKMM2EXT_API extern void get_actions (void* owner, std::vector<Glib::RefPtr<Gtk::Action> >&); LIBGTKMM2EXT_API extern void get_all_actions (std::vector<std::string>& paths, std::vector<std::string>& labels, |