Source List: Add channel-count as a separate column

This commit is contained in:
Ben Loftis 2020-07-13 16:07:59 -05:00
parent 80a7d32e07
commit d98d3f25d8
2 changed files with 29 additions and 21 deletions

View File

@ -96,7 +96,7 @@ EditorSources::EditorSources (Editor* e)
_model->set_sort_column (0, SORT_ASCENDING);
/* column widths */
int bbt_width, date_width, height;
int bbt_width, date_width, chan_width, height;
Glib::RefPtr<Pango::Layout> layout = _display.create_pango_layout (X_("000|000|000"));
Gtkmm2ext::get_pixel_size (layout, bbt_width, height);
@ -104,31 +104,41 @@ EditorSources::EditorSources (Editor* e)
Glib::RefPtr<Pango::Layout> layout2 = _display.create_pango_layout (X_("2018-10-14 12:12:30"));
Gtkmm2ext::get_pixel_size (layout2, date_width, height);
Glib::RefPtr<Pango::Layout> layout3 = _display.create_pango_layout (X_("Chans "));
Gtkmm2ext::get_pixel_size (layout3, chan_width, height);
TreeViewColumn* col_name = manage (new TreeViewColumn ("", _columns.name));
col_name->set_fixed_width (bbt_width*2);
col_name->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_name->set_sort_column(0);
TreeViewColumn* col_chans = manage (new TreeViewColumn ("", _columns.channels));
col_chans->set_fixed_width (chan_width);
col_chans->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_chans->set_sort_column(1);
TreeViewColumn* col_tags = manage (new TreeViewColumn ("", _columns.tags));
col_tags->set_fixed_width (bbt_width*2);
col_tags->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_tags->set_sort_column(2);
TreeViewColumn* col_take_id = manage (new TreeViewColumn ("", _columns.take_id));
col_take_id->set_fixed_width (date_width);
col_take_id->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_take_id->set_sort_column(1);
col_take_id->set_sort_column(3);
TreeViewColumn* col_nat_pos = manage (new TreeViewColumn ("", _columns.natural_pos));
col_nat_pos->set_fixed_width (bbt_width);
col_nat_pos->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_nat_pos->set_sort_column(6);
col_nat_pos->set_sort_column(8);
TreeViewColumn* col_path = manage (new TreeViewColumn ("", _columns.path));
col_path->set_fixed_width (bbt_width);
col_path->set_sizing (TREE_VIEW_COLUMN_FIXED);
col_path->set_sort_column(3);
col_path->set_sort_column(5);
_display.append_column (*col_name);
_display.append_column (*col_chans);
_display.append_column (*col_tags);
_display.append_column (*col_take_id);
_display.append_column (*col_nat_pos);
@ -138,11 +148,12 @@ EditorSources::EditorSources (Editor* e)
Gtk::Label* l;
ColumnInfo ci[] = {
{ 0, _("Source"), _("Source name, with number of channels in []'s") },
{ 1, _("Tags"), _("Tags") },
{ 2, _("Take ID"), _("Take ID") },
{ 3, _("Orig Pos"), _("Original Position of the file on timeline, when it was recorded") },
{ 4, _("Path"), _("Path (folder) of the file location") },
{ 0, _("Name"), _("Region name") },
{ 1, _("Chans"), _("Channels") },
{ 2, _("Tags"), _("Tags") },
{ 3, _("Take ID"), _("Take ID") },
{ 4, _("Orig Pos"), _("Original Position of the file on timeline, when it was recorded") },
{ 5, _("Path"), _("Path (folder) of the file location") },
{ -1, 0, 0 }
};
@ -170,22 +181,22 @@ EditorSources::EditorSources (Editor* e)
tv_col->add_attribute(renderer->property_foreground_gdk(), _columns.color_);
/* Tags cell: make editable */
CellRendererText* region_tags_cell = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (1));
CellRendererText* region_tags_cell = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (2));
region_tags_cell->property_editable() = true;
region_tags_cell->signal_edited().connect (sigc::mem_fun (*this, &EditorSources::tag_edit));
region_tags_cell->signal_editing_started().connect (sigc::mem_fun (*this, &EditorSources::tag_editing_started));
/* right-align the Natural Pos column */
TreeViewColumn* nat_col = _display.get_column(3);
TreeViewColumn* nat_col = _display.get_column(4);
nat_col->set_alignment (ALIGN_RIGHT);
renderer = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (3));
renderer = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (4));
if (renderer) {
renderer->property_xalign() = ( 1.0 );
}
/* the PATH field should expand when the pane is opened wider */
tv_col = _display.get_column(4);
renderer = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (4));
renderer = dynamic_cast<CellRendererText*>(_display.get_column_cell_renderer (5));
tv_col->add_attribute(renderer->property_text(), _columns.path);
tv_col->set_expand (true);
@ -357,14 +368,9 @@ EditorSources::populate_row (TreeModel::Row row, boost::shared_ptr<ARDOUR::Regio
row[_columns.color_] = c;
/* NAME */
std::string str = region->name();
/* if a multichannel region, show the number of channels
* ToDo: make a sortable column for this?
*/
if ( region->n_channels() > 1 ) {
str += string_compose("[%1]", region->n_channels());
}
row[_columns.name] = str;
row[_columns.name] = region->name();
row[_columns.channels] = region->n_channels();
/* TAGS */
row[_columns.tags] = region->tags();

View File

@ -61,6 +61,7 @@ private:
struct Columns : public Gtk::TreeModel::ColumnRecord {
Columns () {
add (name);
add (channels);
add (tags);
add (take_id);
add (natural_pos);
@ -71,6 +72,7 @@ private:
}
Gtk::TreeModelColumn<std::string> name;
Gtk::TreeModelColumn<int> channels;
Gtk::TreeModelColumn<std::string> tags;
Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Region> > region;
Gtk::TreeModelColumn<Gdk::Color> color_;