View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002951 | ardour | features | public | 2009-12-06 20:45 | 2020-04-19 20:14 |
| Reporter | lincoln | Assigned To | paul | ||
| Priority | normal | Severity | tweak | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Summary | 0002951: Patch to swap route list hide and name cols + show mutes on startup | ||||
| Description | Attached 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. | ||||
| Tags | No tags attached. | ||||
|
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;
}
|
|
|
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;
|
|
|
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. |
|
|
committed in rev 6546. |
|
|
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. |
| 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 |