X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fgtkmm2ext%2Fbindings.h;h=1cbb6af904bff2011b179cb2fa0a696efc0cf5f5;hb=dd4c788d3e21b4f697f7eb6f2e64bc0d94ebf7fb;hp=d216e0475274719d2ae79d10b2787aee6364a8f3;hpb=37156d6761f73c7a662f4111cf71f22f50b7a836;p=ardour.git diff --git a/libs/gtkmm2ext/gtkmm2ext/bindings.h b/libs/gtkmm2ext/gtkmm2ext/bindings.h index d216e04752..1cbb6af904 100644 --- a/libs/gtkmm2ext/gtkmm2ext/bindings.h +++ b/libs/gtkmm2ext/gtkmm2ext/bindings.h @@ -106,6 +106,11 @@ class LIBGTKMM2EXT_API ActionMap { const char* name, const char* label, sigc::slot sl); Glib::RefPtr find_action (const std::string& name); + Glib::RefPtr find_action (char const * group_name, char const * action_name); + Glib::RefPtr find_toggle_action (const std::string& name); + Glib::RefPtr find_toggle_action (char const * group_name, char const * action_name); + Glib::RefPtr find_radio_action (const std::string& name); + Glib::RefPtr find_radio_action (char const * group_name, char const * action_name); void set_bindings (Bindings*); Bindings* bindings() const { return _bindings; } @@ -138,6 +143,24 @@ class LIBGTKMM2EXT_API ActionMap { }; +class LIBGTKMM2EXT_API ActionMapOwner { + protected: + Gtkmm2ext::ActionMap myactions; + public: + ActionMapOwner (std::string const & map_name) : myactions (map_name) {} + Glib::RefPtr find_action (const std::string& name) { return myactions.find_action (name); } + Glib::RefPtr find_action (char const * group_name, char const * action_name) { return myactions.find_action (group_name, action_name); } +}; + +class LIBGTKMM2EXT_API StaticActionMapOwner { + protected: + virtual Gtkmm2ext::ActionMap& my_actions() const = 0; + public: + virtual ~StaticActionMapOwner() {} + Glib::RefPtr find_action (const std::string& name) { return my_actions().find_action (name); } + Glib::RefPtr find_action (char const * group_name, char const * action_name) { return my_actions().find_action (group_name, action_name); } +}; + class LIBGTKMM2EXT_API Bindings { public: enum Operation { @@ -178,6 +201,7 @@ class LIBGTKMM2EXT_API Bindings { bool activate (MouseButton, Operation); bool is_bound (KeyboardKey const&, Operation) const; + std::string bound_name (KeyboardKey const&, Operation) const; bool is_registered (Operation op, std::string const& action_name) const; KeyboardKey get_binding_for_action (Glib::RefPtr, Operation& op); @@ -185,7 +209,7 @@ class LIBGTKMM2EXT_API Bindings { bool load (XMLNode const& node); void load_operation (XMLNode const& node); void save (XMLNode& root); - void save_as_html (std::ostream&) const; + void save_as_html (std::ostream&, bool) const; /* GTK has the following position a Gtk::Action: * @@ -212,6 +236,7 @@ class LIBGTKMM2EXT_API Bindings { std::vector >& actions); /* all bindings currently in existence, as grouped into Bindings */ + static void reset_bindings () { bindings.clear (); } static std::list bindings; static Bindings* get_bindings (std::string const& name, ActionMap&); static void associate_all ();