Use an action's tooltip in the key editor if its label is empty; add some tooltips...
authorCarl Hetherington <carl@carlh.net>
Sun, 20 Feb 2011 17:29:52 +0000 (17:29 +0000)
committerCarl Hetherington <carl@carlh.net>
Sun, 20 Feb 2011 17:29:52 +0000 (17:29 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@8909 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui.cc
gtk2_ardour/keyeditor.cc
gtk2_ardour/monitor_section.cc
libs/gtkmm2ext/actions.cc
libs/gtkmm2ext/gtkmm2ext/actions.h
libs/gtkmm2ext/keyboard.cc

index 9e7c726bb27ac2fcb2ca37979b39952e09f42c30..883071e725b3f5eb04c60dcb15bf3df44f26ece1 100644 (file)
@@ -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;
index 83481d8172da37b626c7f6502213ae7fe5787638..88c4682c558c46664f414193bf9bc282b7d76ec8 100644 (file)
@@ -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;
 
index 170f4568b4e3e465d6c19c45e142b6579a7b1b71..812d62330e769c7b2b07aed1bc2f4608b99334ab 100644 (file)
@@ -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);
index 43a2a24d2d900909ac1a834a869363cc9bf5c2d1..2bbb1520f1321f3cf38169aa584dc6f59b14d034 100644 (file)
@@ -82,6 +82,19 @@ ActionManager::register_radio_action (RefPtr<ActionGroup> group, RadioAction::Gr
        return act;
 }
 
+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)
 {
@@ -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));
index da19015313d6ee46b4e0727e7d8e6f7403e8ca6e..189bf328c45e33507ab3cca34f0c77bef6170668 100644 (file)
@@ -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);
index 5e4a5f8b625021b72084831bf54702ca1ae41956..9a67aeaa765848fc5aa9a9f7127c804076052f8c 100644 (file)
@@ -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;