Categorize the mixer actions.
[ardour.git] / gtk2_ardour / route_time_axis.cc
index 24ed6bd556e2fda111f88d69605477271c7389bd..992a19df0e0c75dd3c94aa2bfeb0f3a58e237e4e 100644 (file)
@@ -526,13 +526,13 @@ RouteTimeAxisView::build_automation_action_menu (bool for_selection)
        automation_action_menu->set_name ("ArdourContextMenu");
 
        items.push_back (MenuElem (_("Show All Automation"),
-                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::show_all_automation), for_selection)));
+                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::show_all_automation), for_selection)));
 
        items.push_back (MenuElem (_("Show Existing Automation"),
-                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::show_existing_automation), for_selection)));
+                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::show_existing_automation), for_selection)));
 
        items.push_back (MenuElem (_("Hide All Automation"),
-                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::hide_all_automation), for_selection)));
+                                  sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::hide_all_automation), for_selection)));
 
        /* Attach the plugin submenu. It may have previously been used elsewhere,
           so it was detached above
@@ -577,7 +577,7 @@ RouteTimeAxisView::build_automation_action_menu (bool for_selection)
                items.push_back (CheckMenuElem (_("Pan"), sigc::mem_fun (*this, &RouteTimeAxisView::update_pan_track_visibility)));
                pan_automation_item = dynamic_cast<Gtk::CheckMenuItem*> (&items.back ());
                pan_automation_item->set_active ((!for_selection || _editor.get_selection().tracks.size() == 1) &&
-                                                (!pan_tracks.empty() && string_is_affirmative (pan_tracks.front()->gui_property ("visible"))));
+                                                (!pan_tracks.empty() && string_is_affirmative (pan_tracks.front()->gui_property ("visible"))));
 
                set<Evoral::Parameter> const & params = _route->pannable()->what_can_be_automated ();
                for (set<Evoral::Parameter>::const_iterator p = params.begin(); p != params.end(); ++p) {
@@ -632,21 +632,27 @@ RouteTimeAxisView::build_display_menu ()
 
                int overlaid = 0;
                int stacked = 0;
+               int unchangeable = 0;
                TrackSelection const & s = _editor.get_selection().tracks;
+
                for (TrackSelection::const_iterator i = s.begin(); i != s.end(); ++i) {
                        StreamView* v = (*i)->view ();
                        if (!v) {
                                continue;
                        }
 
-                       switch (v->layer_display ()) {
-                       case Overlaid:
-                               ++overlaid;
-                               break;
-                       case Stacked:
-                       case Expanded:
-                               ++stacked;
-                               break;
+                       if (v->can_change_layer_display()) {
+                               switch (v->layer_display ()) {
+                               case Overlaid:
+                                       ++overlaid;
+                                       break;
+                               case Stacked:
+                               case Expanded:
+                                       ++stacked;
+                                       break;
+                               }
+                       } else {
+                               unchangeable++;
                        }
                }
 
@@ -664,12 +670,20 @@ RouteTimeAxisView::build_display_menu ()
                i->set_inconsistent (overlaid != 0 && stacked != 0);
                i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::set_layer_display), Overlaid, true));
 
+               if (unchangeable) {
+                       i->set_sensitive (false);
+               }
+
                layers_items.push_back (RadioMenuElem (layers_group, _("Stacked")));
                i = dynamic_cast<RadioMenuItem*> (&layers_items.back ());
                i->set_active (overlaid == 0 && stacked != 0);
                i->set_inconsistent (overlaid != 0 && stacked != 0);
                i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::set_layer_display), Stacked, true));
 
+               if (unchangeable) {
+                       i->set_sensitive (false);
+               }
+
                _ignore_set_layer_display = false;
 
                items.push_back (MenuElem (_("Layers"), *layers_menu));
@@ -772,6 +786,7 @@ RouteTimeAxisView::build_display_menu ()
                        /* show nothing */
                }
 
+#ifdef XXX_OLD_DESTRUCTIVE_API_XXX
                Menu* mode_menu = manage (new Menu);
                MenuList& mode_items = mode_menu->items ();
                mode_menu->set_name ("ArdourContextMenu");
@@ -820,6 +835,7 @@ RouteTimeAxisView::build_display_menu ()
                i->set_inconsistent (non_layered != 0 && (normal != 0 || tape != 0));
 
                items.push_back (MenuElem (_("Record Mode"), *mode_menu));
+#endif
 
                items.push_back (SeparatorElem());
 
@@ -888,6 +904,7 @@ RouteTimeAxisView::build_display_menu ()
        items.push_back (MenuElem (_("Remove"), sigc::mem_fun(_editor, &PublicEditor::remove_tracks)));
 }
 
+#ifdef XXX_OLD_DESTRUCTIVE_API_XXX
 void
 RouteTimeAxisView::set_track_mode (TrackMode mode, bool apply_to_selection)
 {
@@ -911,6 +928,7 @@ RouteTimeAxisView::set_track_mode (TrackMode mode, bool apply_to_selection)
                track()->set_mode (mode);
        }
 }
+#endif
 
 void
 RouteTimeAxisView::show_timestretch (framepos_t start, framepos_t end, int layers, int layer)
@@ -1243,9 +1261,9 @@ RouteTimeAxisView::use_new_playlist (bool prompt, vector<boost::shared_ptr<Playl
 
        if (name.length()) {
                if (copy) {
-                       tr->use_new_playlist ();
-               } else {
                        tr->use_copy_playlist ();
+               } else {
+                       tr->use_new_playlist ();
                }
                tr->playlist()->set_name (name);
        }
@@ -1416,7 +1434,7 @@ RouteTimeAxisView::name_entry_changed (string const& str)
        }
 
        string x = str;
-       
+
        strip_whitespace_edges (x);
 
        if (x.empty()) {
@@ -2924,4 +2942,3 @@ RouteTimeAxisView::set_marked_for_display (bool yn)
 {
        return RouteUI::mark_hidden (!yn);
 }
-