13
0

Show ranges in more sensible order in export dialog.

Show ranges in order in which they appear on the timeline in export dialog,
but always show the session range first.
This commit is contained in:
Colin Fletcher 2013-06-16 18:50:23 +01:00
parent aced854ce7
commit 1d282f316f
2 changed files with 20 additions and 0 deletions

View File

@ -105,6 +105,9 @@ ExportTimespanSelector::ExportTimespanSelector (ARDOUR::Session * session, Profi
/* Range view */
range_list = Gtk::ListStore::create (range_cols);
// order by location start times
range_list->set_sort_column(range_cols.location, Gtk::SORT_ASCENDING);
range_list->set_sort_func(range_cols.location, sigc::mem_fun(*this, &ExportTimespanSelector::location_sorter));
range_view.set_model (range_list);
range_view.set_headers_visible (true);
}
@ -114,6 +117,22 @@ ExportTimespanSelector::~ExportTimespanSelector ()
}
int
ExportTimespanSelector::location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b)
{
Location *l1 = (*a)[range_cols.location];
Location *l2 = (*b)[range_cols.location];
const Location *ls = _session->locations()->session_range_location();
// always sort session range first
if (l1 == ls)
return -1;
if (l2 == ls)
return +1;
return l1->start() - l2->start();
}
void
ExportTimespanSelector::add_range_to_selection (ARDOUR::Location const * loc)
{

View File

@ -84,6 +84,7 @@ class ExportTimespanSelector : public Gtk::VBox, public ARDOUR::SessionHandlePtr
void update_range_name (std::string const & path, std::string const & new_text);
void set_selection_state_of_all_timespans (bool);
int location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b);
/*** GUI components ***/