diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/keyeditor.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/monitor_section.cc | 36 | ||||
-rw-r--r-- | libs/gtkmm2ext/actions.cc | 34 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/actions.h | 10 | ||||
-rw-r--r-- | libs/gtkmm2ext/keyboard.cc | 3 |
6 files changed, 67 insertions, 31 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 9e7c726bb2..883071e725 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -422,10 +422,11 @@ ARDOUR_UI::post_engine () if (ARDOUR_COMMAND_LINE::show_key_actions) { vector<string> names; vector<string> paths; + vector<string> tooltips; vector<string> keys; vector<AccelKey> bindings; - ActionManager::get_all_actions (names, paths, keys, bindings); + ActionManager::get_all_actions (names, paths, tooltips, keys, bindings); vector<string>::iterator n; vector<string>::iterator k; diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index 83481d8172..88c4682c55 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -225,21 +225,23 @@ KeyEditor::populate () { vector<string> paths; vector<string> labels; + vector<string> tooltips; vector<string> keys; vector<AccelKey> bindings; typedef std::map<string,TreeIter> NodeMap; NodeMap nodes; NodeMap::iterator r; - ActionManager::get_all_actions (labels, paths, keys, bindings); + ActionManager::get_all_actions (labels, paths, tooltips, keys, bindings); vector<string>::iterator k; vector<string>::iterator p; + vector<string>::iterator t; vector<string>::iterator l; model->clear (); - for (l = labels.begin(), k = keys.begin(), p = paths.begin(); l != labels.end(); ++k, ++p, ++l) { + for (l = labels.begin(), k = keys.begin(), p = paths.begin(), t = tooltips.begin(); l != labels.end(); ++k, ++p, ++t, ++l) { TreeModel::Row row; vector<string> parts; @@ -274,7 +276,11 @@ KeyEditor::populate () /* add this action */ - row[columns.action] = (*l); + if (l->empty ()) { + row[columns.action] = *t; + } else { + row[columns.action] = *l; + } row[columns.path] = (*p); row[columns.bindable] = true; diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc index 170f4568b4..812d62330e 100644 --- a/gtk2_ardour/monitor_section.cc +++ b/gtk2_ardour/monitor_section.cc @@ -608,22 +608,22 @@ MonitorSection::register_actions () monitor_actions = ActionGroup::create (X_("Monitor")); ActionManager::add_action_group (monitor_actions); - ActionManager::register_toggle_action (monitor_actions, "monitor-mono", "", + ActionManager::register_toggle_action (monitor_actions, "monitor-mono", "", "Switch monitor to mono", sigc::mem_fun (*this, &MonitorSection::mono)); - ActionManager::register_toggle_action (monitor_actions, "monitor-cut-all", "", + ActionManager::register_toggle_action (monitor_actions, "monitor-cut-all", "", "Cut monitor", sigc::mem_fun (*this, &MonitorSection::cut_all)); - ActionManager::register_toggle_action (monitor_actions, "monitor-dim-all", "", + ActionManager::register_toggle_action (monitor_actions, "monitor-dim-all", "", "Dim monitor", sigc::mem_fun (*this, &MonitorSection::dim_all)); - act = ActionManager::register_toggle_action (monitor_actions, "toggle-exclusive-solo", "", + act = ActionManager::register_toggle_action (monitor_actions, "toggle-exclusive-solo", "", "Toggle exclusive solo mode", sigc::mem_fun (*this, &MonitorSection::toggle_exclusive_solo)); Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act); tact->set_active (Config->get_exclusive_solo()); - act = ActionManager::register_toggle_action (monitor_actions, "toggle-mute-overrides-solo", "", + act = ActionManager::register_toggle_action (monitor_actions, "toggle-mute-overrides-solo", "", "Toggle mute overrides solo mode", sigc::mem_fun (*this, &MonitorSection::toggle_mute_overrides_solo)); tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act); @@ -634,28 +634,24 @@ MonitorSection::register_actions () for (uint32_t chn = 1; chn <= 16; ++chn) { - /* for the time being, do not use the action description because it always - shows up in the buttons, which is undesirable. - */ - action_name = string_compose (X_("monitor-cut-%1"), chn); - action_descr = string_compose (_("Cut Monitor Chn %1"), chn); - ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", + action_descr = string_compose (_("Cut monitor channel %1"), chn); + ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", action_descr.c_str(), sigc::bind (sigc::mem_fun (*this, &MonitorSection::cut_channel), chn)); action_name = string_compose (X_("monitor-dim-%1"), chn); - action_descr = string_compose (_("Dim Monitor Chn %1"), chn+1); - ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", + action_descr = string_compose (_("Dim monitor channel %1"), chn+1); + ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", action_descr.c_str(), sigc::bind (sigc::mem_fun (*this, &MonitorSection::dim_channel), chn)); action_name = string_compose (X_("monitor-solo-%1"), chn); - action_descr = string_compose (_("Solo Monitor Chn %1"), chn); - ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", + action_descr = string_compose (_("Solo monitor channel %1"), chn+1); + ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", action_descr.c_str(), sigc::bind (sigc::mem_fun (*this, &MonitorSection::solo_channel), chn)); action_name = string_compose (X_("monitor-invert-%1"), chn); - action_descr = string_compose (_("Invert Monitor Chn %1"), chn); - ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", + action_descr = string_compose (_("Invert monitor channel %1"), chn+1); + ActionManager::register_toggle_action (monitor_actions, action_name.c_str(), "", action_descr.c_str(), sigc::bind (sigc::mem_fun (*this, &MonitorSection::invert_channel), chn)); } @@ -664,11 +660,11 @@ MonitorSection::register_actions () Glib::RefPtr<ActionGroup> solo_actions = ActionGroup::create (X_("Solo")); RadioAction::Group solo_group; - ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-in-place", "", + ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-in-place", "", "In-place solo", sigc::mem_fun (*this, &MonitorSection::solo_use_in_place)); - ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-afl", "", + ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-afl", "", "After Fade Listen (AFL) solo", sigc::mem_fun (*this, &MonitorSection::solo_use_afl)); - ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-pfl", "", + ActionManager::register_radio_action (solo_actions, solo_group, "solo-use-pfl", "", "Pre Fade Listen (PFL) solo", sigc::mem_fun (*this, &MonitorSection::solo_use_pfl)); ActionManager::add_action_group (solo_actions); diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index 43a2a24d2d..2bbb1520f1 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -83,6 +83,19 @@ ActionManager::register_radio_action (RefPtr<ActionGroup> group, RadioAction::Gr } RefPtr<Action> +ActionManager::register_radio_action ( + RefPtr<ActionGroup> group, RadioAction::Group& rgroup, string const & name, string const & label, string const & tooltip, slot<void> sl + ) +{ + RefPtr<Action> act; + + act = RadioAction::create (rgroup, name, label, tooltip); + group->add (act, sl); + + return act; +} + +RefPtr<Action> ActionManager::register_toggle_action (RefPtr<ActionGroup> group, const char * name, const char * label, slot<void> sl) { RefPtr<Action> act; @@ -93,6 +106,17 @@ ActionManager::register_toggle_action (RefPtr<ActionGroup> group, const char * n return act; } +RefPtr<Action> +ActionManager::register_toggle_action (RefPtr<ActionGroup> group, string const & name, string const & label, string const & tooltip, slot<void> sl) +{ + RefPtr<Action> act; + + act = ToggleAction::create (name, label, tooltip); + group->add (act, sl); + + return act; +} + bool ActionManager::lookup_entry (const ustring accel_path, Gtk::AccelKey& key) { @@ -117,7 +141,7 @@ struct SortActionsByLabel { }; void -ActionManager::get_all_actions (vector<string>& groups, vector<string>& names, vector<AccelKey>& bindings) +ActionManager::get_all_actions (vector<string>& groups, vector<string>& names, vector<string>& tooltips, vector<AccelKey>& bindings) { /* the C++ API for functions used here appears to be broken in gtkmm2.6, so we fall back to the C level. @@ -152,6 +176,7 @@ ActionManager::get_all_actions (vector<string>& groups, vector<string>& names, v groups.push_back (gtk_action_group_get_name(group)); names.push_back (accel_path.substr (accel_path.find_last_of ('/') + 1)); + tooltips.push_back ((*a)->get_tooltip ()); AccelKey key; lookup_entry (accel_path, key); @@ -161,7 +186,7 @@ ActionManager::get_all_actions (vector<string>& groups, vector<string>& names, v } void -ActionManager::get_all_actions (vector<string>& names, vector<string>& paths, vector<string>& keys, vector<AccelKey>& bindings) +ActionManager::get_all_actions (vector<string>& names, vector<string>& paths, vector<string>& tooltips, vector<string>& keys, vector<AccelKey>& bindings) { /* the C++ API for functions used here appears to be broken in gtkmm2.6, so we fall back to the C level. @@ -192,11 +217,12 @@ ActionManager::get_all_actions (vector<string>& names, vector<string>& paths, ve for (action_list::iterator a = the_acts.begin(); a != the_acts.end(); ++a) { - string accel_path = (*a)->get_accel_path (); - ustring label = (*a)->property_label(); + ustring const label = (*a)->property_label (); + string const accel_path = (*a)->get_accel_path (); names.push_back (label); paths.push_back (accel_path); + tooltips.push_back ((*a)->get_tooltip ()); AccelKey key; keys.push_back (get_key_representation (accel_path, key)); diff --git a/libs/gtkmm2ext/gtkmm2ext/actions.h b/libs/gtkmm2ext/gtkmm2ext/actions.h index da19015313..189bf328c4 100644 --- a/libs/gtkmm2ext/gtkmm2ext/actions.h +++ b/libs/gtkmm2ext/gtkmm2ext/actions.h @@ -58,23 +58,29 @@ namespace ActionManager { const char * name, const char * label, sigc::slot<void> sl, guint key, Gdk::ModifierType mods); extern Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group, Gtk::RadioAction::Group&, - const char * name, const char * label, sigc::slot<void> sl); + const char * name, const char * label, sigc::slot<void> sl); + extern Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group, Gtk::RadioAction::Group&, + std::string const &, std::string const &, std::string const &, sigc::slot<void> sl); extern Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group, const char * name, const char * label, sigc::slot<void> sl, guint key, Gdk::ModifierType mods); extern Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group, - const char * name, const char * label, sigc::slot<void> sl); + std::string const &, std::string const &, std::string const &, sigc::slot<void> sl); + extern Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group, + const char * name, const char * label, sigc::slot<void> sl); extern bool lookup_entry (const Glib::ustring accel_path, Gtk::AccelKey& key); extern void get_all_actions (std::vector<std::string>& names, std::vector<std::string>& paths, + std::vector<std::string>& tooltips, std::vector<std::string>& keys, std::vector<Gtk::AccelKey>& bindings); extern void get_all_actions (std::vector<std::string>& groups, std::vector<std::string>& paths, + std::vector<std::string>& tooltips, std::vector<Gtk::AccelKey>& bindings); extern void uncheck_toggleaction (std::string); diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc index 5e4a5f8b62..9a67aeaa76 100644 --- a/libs/gtkmm2ext/keyboard.cc +++ b/libs/gtkmm2ext/keyboard.cc @@ -535,9 +535,10 @@ Keyboard::load_keybindings (string path) vector<string> groups; vector<string> names; + vector<string> tooltips; vector<AccelKey> bindings; - ActionManager::get_all_actions (groups, names, bindings); + ActionManager::get_all_actions (groups, names, tooltips, bindings); vector<string>::iterator g; vector<AccelKey>::iterator b; |