View Issue Details

IDProjectCategoryView StatusLast Update
0002951ardourfeaturespublic2020-04-19 20:14
Reporterlincoln Assigned Topaul  
PrioritynormalSeveritytweakReproducibilityalways
Status closedResolutionfixed 
Summary0002951: Patch to swap route list hide and name cols + show mutes on startup
DescriptionAttached please find a patch to swap the name and hide columns in the route list. This makes the view take less space if needed.

I also did a small tweak to have mute and solo columns showing the correct state on session start up.
TagsNo tags attached.

Activities

2009-12-06 20:45

 

route-list-name-hide-swap-startup-fix.patch (2,053 bytes)   
Index: gtk2_ardour/editor_routes.cc
===================================================================
--- gtk2_ardour/editor_routes.cc	(revision 6317)
+++ gtk2_ardour/editor_routes.cc	(working copy)
@@ -108,8 +108,8 @@
 	_display.append_column (*rec_state_column);
 	_display.append_column (*mute_state_column);
 	_display.append_column (*solo_state_column);
+	_display.append_column (_("Name"), _columns.text);
 	_display.append_column (_("Show"), _columns.visible);
-	_display.append_column (_("Name"), _columns.text);
 
 	_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
 	_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
@@ -125,17 +125,17 @@
 	_display.set_size_request (100, -1);
 	_display.add_object_drag (_columns.route.index(), "routes");
 
-	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (4));
+	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (3));
 	assert (name_cell);
 
-	TreeViewColumn* name_column = _display.get_column (4);
+	TreeViewColumn* name_column = _display.get_column (3);
 	assert (name_column);
 
 	name_column->add_attribute (name_cell->property_editable(), _columns.name_editable);
 	name_cell->property_editable() = true;
 	name_cell->signal_edited().connect (mem_fun (*this, &EditorRoutes::name_edit));
 
-	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (3));
+	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (4));
 
 	visible_cell->property_activatable() = true;
 	visible_cell->property_radio() = false;
@@ -344,7 +344,8 @@
 		row[_columns.tv] = *x;
 		row[_columns.route] = (*x)->route ();
 		row[_columns.is_track] = (boost::dynamic_pointer_cast<Track> ((*x)->route()) != 0);
-
+		row[_columns.mute_state] = (*x)->route()->muted();
+		row[_columns.solo_state] = (*x)->route()->soloed();
 		_ignore_reorder = true;
 
 		/* added a new fresh one at the end */

2010-01-16 14:58

 

route-list-name-hide-swap-startup-fix-2.patch (2,930 bytes)   
Index: gtk2_ardour/editor_routes.cc
===================================================================
--- gtk2_ardour/editor_routes.cc	(revision 6505)
+++ gtk2_ardour/editor_routes.cc	(working copy)
@@ -119,8 +119,10 @@
 	_display.append_column (*mute_state_column);
 	_display.append_column (*solo_state_column);
 	_display.append_column (*solo_isolate_state_column);
+	
+	_display.append_column (_("Name"), _columns.text);
 	_display.append_column (_("Show"), _columns.visible);
-	_display.append_column (_("Name"), _columns.text);
+	
 
 	_display.set_headers_visible (true);
 	_display.set_name ("TrackListDisplay");
@@ -130,17 +132,20 @@
 	_display.set_size_request (100, -1);
 	_display.add_object_drag (_columns.route.index(), "routes");
 
-	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (5));
+
+	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (4));
+
 	assert (name_cell);
 
-	TreeViewColumn* name_column = _display.get_column (5);
+	TreeViewColumn* name_column = _display.get_column (4);
+
 	assert (name_column);
 
 	name_column->add_attribute (name_cell->property_editable(), _columns.name_editable);
 	name_cell->property_editable() = true;
 	name_cell->signal_edited().connect (sigc::mem_fun (*this, &EditorRoutes::name_edit));
 
-	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (4));
+	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (5));
 
 	visible_cell->property_activatable() = true;
 	visible_cell->property_radio() = false;
@@ -378,6 +383,9 @@
 		row[_columns.tv] = *x;
 		row[_columns.route] = (*x)->route ();
 		row[_columns.is_track] = (boost::dynamic_pointer_cast<Track> ((*x)->route()) != 0);
+		row[_columns.mute_state] = (*x)->route()->muted();
+		row[_columns.solo_state] = (*x)->route()->soloed();
+		row[_columns.solo_isolate_state] = (*x)->route()->solo_isolated();
 
 		_ignore_reorder = true;
 
@@ -702,7 +710,35 @@
 		show_menu ();
 		return true;
 	}
+	
+	//Scroll editor canvas to selected track
+	if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+		
+		TreeModel::Path path;
+		TreeViewColumn *tvc;
+		int cell_x;
+		int cell_y;
+		
+		_display.get_path_at_pos ((int) ev->x, (int) ev->y, path, tvc, cell_x, cell_y);
 
+		// Get the model row.
+		Gtk::TreeModel::Row row = *_model->get_iter (path);
+		
+		TimeAxisView *tv = row[_columns.tv];
+		
+		int y_pos = tv->y_position();
+		
+		//Clamp the y pos so that we do not extend beyond the canvas full height.
+		if (_editor->full_canvas_height - y_pos < _editor->_canvas_height){
+		    y_pos = _editor->full_canvas_height - _editor->_canvas_height;
+		}
+		
+		//Only scroll to if the track is visible
+		if(y_pos != -1){
+		    _editor->reset_y_origin (y_pos);
+		}
+	}
+	
 	return false;
 }
 

lincoln

2010-01-16 14:59

reporter   ~0007318

Added newer patch to include solo isolate. Also add function to scroll-jump in editor on ctl+click selection of a track in the track list.

2010-01-18 20:39

 

route-list-name-hide-swap-startup-fix-3.patch (6,035 bytes)   
Index: gtk2_ardour/editor_routes.cc
===================================================================
--- gtk2_ardour/editor_routes.cc	(revision 6513)
+++ gtk2_ardour/editor_routes.cc	(working copy)
@@ -81,6 +81,10 @@
 
 	rec_state_column->add_attribute(rec_col_renderer->property_active(), _columns.rec_enabled);
 	rec_state_column->add_attribute(rec_col_renderer->property_visible(), _columns.is_track);
+	rec_state_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
+	rec_state_column->set_alignment(ALIGN_CENTER);
+	rec_state_column->set_expand(false);
+	rec_state_column->set_fixed_width(15);
 
 	// Mute enable toggle
 	CellRendererPixbufMulti* mute_col_renderer = manage (new CellRendererPixbufMulti());
@@ -92,6 +96,10 @@
 	TreeViewColumn* mute_state_column = manage (new TreeViewColumn("M", *mute_col_renderer));
 
 	mute_state_column->add_attribute(mute_col_renderer->property_state(), _columns.mute_state);
+	mute_state_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
+	mute_state_column->set_alignment(ALIGN_CENTER);
+	mute_state_column->set_expand(false);
+	mute_state_column->set_fixed_width(15);
 
 	// Solo enable toggle
 	CellRendererPixbufMulti* solo_col_renderer = manage (new CellRendererPixbufMulti());
@@ -103,6 +111,10 @@
 	TreeViewColumn* solo_state_column = manage (new TreeViewColumn("S", *solo_col_renderer));
 
 	solo_state_column->add_attribute(solo_col_renderer->property_state(), _columns.solo_state);
+	solo_state_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
+	solo_state_column->set_alignment(ALIGN_CENTER);
+	solo_state_column->set_expand(false);
+	solo_state_column->set_fixed_width(15);
 
 	// Solo isolate toggle
 	CellRendererPixbufMulti* solo_iso_renderer = manage (new CellRendererPixbufMulti());
@@ -114,14 +126,19 @@
 	TreeViewColumn* solo_isolate_state_column = manage (new TreeViewColumn("I", *solo_iso_renderer));
 
 	solo_isolate_state_column->add_attribute(solo_iso_renderer->property_state(), _columns.solo_isolate_state);
+	solo_isolate_state_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
+	solo_isolate_state_column->set_alignment(ALIGN_CENTER);
+	solo_isolate_state_column->set_expand(false);
+	solo_isolate_state_column->set_fixed_width(15);
 
 	_display.append_column (*rec_state_column);
 	_display.append_column (*mute_state_column);
 	_display.append_column (*solo_state_column);
 	_display.append_column (*solo_isolate_state_column);
+	
+	_display.append_column (_("Name"), _columns.text);
 	_display.append_column (_("Show"), _columns.visible);
-	_display.append_column (_("Name"), _columns.text);
-
+	
 	_display.set_headers_visible (true);
 	_display.set_name ("TrackListDisplay");
 	_display.get_selection()->set_mode (SELECTION_SINGLE);
@@ -130,24 +147,37 @@
 	_display.set_size_request (100, -1);
 	_display.add_object_drag (_columns.route.index(), "routes");
 
-	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (5));
+
+	CellRendererText* name_cell = dynamic_cast<CellRendererText*> (_display.get_column_cell_renderer (4));
+
 	assert (name_cell);
 
-	TreeViewColumn* name_column = _display.get_column (5);
+	TreeViewColumn* name_column = _display.get_column (4);
+
 	assert (name_column);
 
 	name_column->add_attribute (name_cell->property_editable(), _columns.name_editable);
+	name_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
+	name_column->set_expand(true);
+	name_column->set_min_width(50);
+
 	name_cell->property_editable() = true;
 	name_cell->signal_edited().connect (sigc::mem_fun (*this, &EditorRoutes::name_edit));
 
-	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (4));
+	// Set the visible column cell renderer to radio toggle
+	CellRendererToggle* visible_cell = dynamic_cast<CellRendererToggle*> (_display.get_column_cell_renderer (5));
 
 	visible_cell->property_activatable() = true;
 	visible_cell->property_radio() = false;
 	visible_cell->signal_toggled().connect (sigc::mem_fun (*this, &EditorRoutes::visible_changed));
-
+	
+	TreeViewColumn* visible_col = dynamic_cast<TreeViewColumn*> (_display.get_column (5));
+	visible_col->set_sizing(TREE_VIEW_COLUMN_AUTOSIZE);
+	visible_col->set_expand(false);
+	
 	_model->signal_row_deleted().connect (sigc::mem_fun (*this, &EditorRoutes::route_deleted));
 	_model->signal_rows_reordered().connect (sigc::mem_fun (*this, &EditorRoutes::reordered));
+	
 	_display.signal_button_press_event().connect (sigc::mem_fun (*this, &EditorRoutes::button_press), false);
 
 	Route::SyncOrderKeys.connect (*this, ui_bind (&EditorRoutes::sync_order_keys, this, _1), gui_context());
@@ -378,6 +408,9 @@
 		row[_columns.tv] = *x;
 		row[_columns.route] = (*x)->route ();
 		row[_columns.is_track] = (boost::dynamic_pointer_cast<Track> ((*x)->route()) != 0);
+		row[_columns.mute_state] = (*x)->route()->muted();
+		row[_columns.solo_state] = (*x)->route()->soloed();
+		row[_columns.solo_isolate_state] = (*x)->route()->solo_isolated();
 
 		_ignore_reorder = true;
 
@@ -702,7 +735,35 @@
 		show_menu ();
 		return true;
 	}
+	
+	//Scroll editor canvas to selected track
+	if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+		
+		TreeModel::Path path;
+		TreeViewColumn *tvc;
+		int cell_x;
+		int cell_y;
+		
+		_display.get_path_at_pos ((int) ev->x, (int) ev->y, path, tvc, cell_x, cell_y);
 
+		// Get the model row.
+		Gtk::TreeModel::Row row = *_model->get_iter (path);
+		
+		TimeAxisView *tv = row[_columns.tv];
+		
+		int y_pos = tv->y_position();
+		
+		//Clamp the y pos so that we do not extend beyond the canvas full height.
+		if (_editor->full_canvas_height - y_pos < _editor->_canvas_height){
+		    y_pos = _editor->full_canvas_height - _editor->_canvas_height;
+		}
+		
+		//Only scroll to if the track is visible
+		if(y_pos != -1){
+		    _editor->reset_y_origin (y_pos);
+		}
+	}
+	
 	return false;
 }
 
@@ -747,6 +808,7 @@
 		_no_redisplay = true;
 
 		for (i = rows.begin(); i != rows.end(); ++i) {
+
 			TimeAxisView *tv =  (*i)[_columns.tv];
 			RouteTimeAxisView *rtv;
 

lincoln

2010-01-18 20:41

reporter   ~0007325

3rd round for this patch. Set fixed column widths for rec, solo, mute, solo isolate indicators so that things look tidy. Show column is fixed width and name col expands automatically but has a minimum size of 50px.

paul

2010-01-22 17:24

administrator   ~0007332

committed in rev 6546.

system

2020-04-19 20:14

developer   ~0022012

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2009-12-06 20:45 lincoln New Issue
2009-12-06 20:45 lincoln File Added: route-list-name-hide-swap-startup-fix.patch
2010-01-16 14:58 lincoln File Added: route-list-name-hide-swap-startup-fix-2.patch
2010-01-16 14:59 lincoln Note Added: 0007318
2010-01-18 20:39 lincoln File Added: route-list-name-hide-swap-startup-fix-3.patch
2010-01-18 20:41 lincoln Note Added: 0007325
2010-01-22 17:24 paul cost => 0.00
2010-01-22 17:24 paul Note Added: 0007332
2010-01-22 17:24 paul Status new => resolved
2010-01-22 17:24 paul Resolution open => fixed
2010-01-22 17:24 paul Assigned To => paul
2020-04-19 20:14 system Note Added: 0022012
2020-04-19 20:14 system Status resolved => closed