X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Factions.cc;h=d38287858248d8c707c1626bce5f082cbad9d063;hb=76c25a4a4459b8e550c3c687458d04db0beaee77;hp=ee688c366006d72e710e15e5769d053523761311;hpb=7ff370e79895d7eb293e7214689b791bd98415fb;p=ardour.git diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index ee688c3660..d382878582 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -19,7 +19,7 @@ */ #include -#include +#include #include #include @@ -40,6 +40,7 @@ using namespace Gtk; using namespace Glib; using namespace sigc; using namespace PBD; +using namespace ARDOUR; vector > ActionManager::session_sensitive_actions; vector > ActionManager::region_list_selection_sensitive_actions; @@ -73,26 +74,17 @@ ActionManager::init () ui_manager->add_ui_from_file (ui_file); loaded = true; } catch (Glib::MarkupError& err) { - error << "badly formatted UI definition file" << endmsg; + error << _("badly formatted UI definition file") << endmsg; } catch (...) { - error << "Ardour menu definition file not found" << endmsg; + error << _("Ardour menu definition file not found") << endmsg; } if (!loaded) { - error << "ardour will not work without a valid ardour.menus file" << endmsg; + error << _("ardour will not work without a valid ardour.menus file") << endmsg; exit(1); } } -RefPtr -ActionManager::register_action (RefPtr group, const char * name, const char * label, slot sl, guint key, Gdk::ModifierType mods) -{ - RefPtr act = register_action (group, name, label, sl); - AccelMap::add_entry (act->get_accel_path(), key, mods); - - return act; -} - RefPtr ActionManager::register_action (RefPtr group, const char * name, const char * label, slot sl) { @@ -116,15 +108,6 @@ ActionManager::register_action (RefPtr group, const char * name, co } -RefPtr -ActionManager::register_radio_action (RefPtr group, RadioAction::Group& rgroup, const char * name, const char * label, slot sl, guint key, Gdk::ModifierType mods) -{ - RefPtr act = register_radio_action (group, rgroup, name, label, sl); - AccelMap::add_entry (act->get_accel_path(), key, mods); - - return act; -} - RefPtr ActionManager::register_radio_action (RefPtr group, RadioAction::Group& rgroup, const char * name, const char * label, slot sl) { @@ -136,15 +119,6 @@ ActionManager::register_radio_action (RefPtr group, RadioAction::Gr return act; } -RefPtr -ActionManager::register_toggle_action (RefPtr group, const char * name, const char * label, slot sl, guint key, Gdk::ModifierType mods) -{ - RefPtr act = register_toggle_action (group,name, label, sl); - AccelMap::add_entry (act->get_accel_path(), key, mods); - - return act; -} - RefPtr ActionManager::register_toggle_action (RefPtr group, const char * name, const char * label, slot sl) { @@ -277,9 +251,59 @@ ActionManager::uncheck_toggleaction (const char * name) RefPtr tact = RefPtr::cast_dynamic(act); tact->set_active (false); } else { - error << "Unknown action name: " << name << endmsg; + error << string_compose (_("Unknown action name: %1"), name) << endmsg; } delete [] group_name; } +void +ActionManager::toggle_config_state (const char* group, const char* action, bool (Configuration::*set)(bool), bool (Configuration::*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 = (Config->*get)(); + + if (x != tact->get_active()) { + (Config->*set) (!x); + } + } + } +} + +void +ActionManager::toggle_config_state (const char* group, const char* action, sigc::slot theSlot) +{ + Glib::RefPtr act = ActionManager::get_action (group, action); + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + if (tact->get_active()) { + theSlot (); + } + } +} + +void +ActionManager::map_some_state (const char* group, const char* action, bool (Configuration::*get)() const) +{ + Glib::RefPtr act = ActionManager::get_action (group, action); + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + + if (tact) { + + bool x = (Config->*get)(); + + if (tact->get_active() != x) { + tact->set_active (x); + } + } else { + cerr << group << ':' << action << " is not a toggle\n"; + } + } else { + cerr << group << ':' << action << " not an action\n"; + } +}