X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Factions.cc;h=da2a75fc939c720ee55dcc063d34962d70a84adf;hb=14c390ed027b3ba1c48084502677d1a1287bfc05;hp=f208c6c8d3516486e431db7d831cb1024e90d266;hpb=a3c378cf62939c85bcfa3b4c55b68c9163c5e21e;p=ardour.git diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index f208c6c8d3..da2a75fc93 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -37,7 +37,7 @@ #include "gtkmm2ext/actions.h" #include "actions.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace Gtk; @@ -45,24 +45,28 @@ using namespace Glib; using namespace PBD; using namespace ARDOUR; -vector > ActionManager::session_sensitive_actions; -vector > ActionManager::write_sensitive_actions; -vector > ActionManager::region_list_selection_sensitive_actions; -vector > ActionManager::plugin_selection_sensitive_actions; -vector > ActionManager::track_selection_sensitive_actions; -vector > ActionManager::point_selection_sensitive_actions; -vector > ActionManager::time_selection_sensitive_actions; -vector > ActionManager::line_selection_sensitive_actions; -vector > ActionManager::playlist_selection_sensitive_actions; -vector > ActionManager::mouse_edit_point_requires_canvas_actions; - -vector > ActionManager::range_sensitive_actions; -vector > ActionManager::engine_sensitive_actions; -vector > ActionManager::engine_opposite_sensitive_actions; -vector > ActionManager::transport_sensitive_actions; -vector > ActionManager::edit_point_in_region_sensitive_actions; - -static Glib::RefPtr ui_manager; +typedef std::vector > RelatedActions; + +RelatedActions ActionManager::session_sensitive_actions; +RelatedActions ActionManager::write_sensitive_actions; +RelatedActions ActionManager::region_list_selection_sensitive_actions; +RelatedActions ActionManager::plugin_selection_sensitive_actions; +RelatedActions ActionManager::track_selection_sensitive_actions; +RelatedActions ActionManager::stripable_selection_sensitive_actions; +RelatedActions ActionManager::route_selection_sensitive_actions; +RelatedActions ActionManager::bus_selection_sensitive_actions; +RelatedActions ActionManager::vca_selection_sensitive_actions; +RelatedActions ActionManager::point_selection_sensitive_actions; +RelatedActions ActionManager::time_selection_sensitive_actions; +RelatedActions ActionManager::line_selection_sensitive_actions; +RelatedActions ActionManager::playlist_selection_sensitive_actions; +RelatedActions ActionManager::mouse_edit_point_requires_canvas_actions; +RelatedActions ActionManager::range_sensitive_actions; +RelatedActions ActionManager::engine_sensitive_actions; +RelatedActions ActionManager::engine_opposite_sensitive_actions; +RelatedActions ActionManager::transport_sensitive_actions; +RelatedActions ActionManager::edit_point_in_region_sensitive_actions; +RelatedActions ActionManager::rec_sensitive_actions; void ActionManager::init () @@ -122,6 +126,31 @@ ActionManager::toggle_config_state (const char* group, const char* action, bool } } +/** Examine the state of a Configuration setting and a toggle action, and toggle the Configuration + * setting if its state doesn't match the toggle action. + * @param group Action group. + * @param action Action name. + * @param Method to set the state of the Configuration setting. + * @param Method to get the state of the Configuration setting. + */ +void +ActionManager::toggle_config_state (const char* group, const char* action, bool (UIConfiguration::*set)(bool), bool (UIConfiguration::*get)(void) const) +{ + Glib::RefPtr act = ActionManager::get_action (group, action); + + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + + if (tact) { + bool x = (UIConfiguration::instance().*get)(); + + if (x != tact->get_active()) { + (UIConfiguration::instance().*set) (!x); + } + } + } +} + void ActionManager::toggle_config_state_foo (const char* group, const char* action, sigc::slot set, sigc::slot get) { @@ -164,6 +193,29 @@ ActionManager::map_some_state (const char* group, const char* action, bool (RCCo } } +/** Set the state of a ToggleAction using a particular Configuration get() method + * @param group Action group. + * @param action Action name. + * @param get Method to obtain the state that the ToggleAction should have. + */ +void +ActionManager::map_some_state (const char* group, const char* action, bool (UIConfiguration::*get)() const) +{ + Glib::RefPtr act = ActionManager::get_action (group, action); + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + + if (tact) { + + bool x = (UIConfiguration::instance().*get)(); + + if (tact->get_active() != x) { + tact->set_active (x); + } + } + } +} + void ActionManager::map_some_state (const char* group, const char* action, sigc::slot get) {