Add route dialog order hint changes.

Add an option to insert new routes at the top of the list ("First").
Reorder/rename the entries in the dialog.
Session's _order_hint is now the signed int it always wanted to be.
This commit is contained in:
nick_m
2015-03-16 04:01:30 +11:00
parent a5db1d588e
commit 135e865302
5 changed files with 36 additions and 28 deletions

View File

@@ -80,11 +80,12 @@ AddRouteDialog::AddRouteDialog ()
track_bus_combo.append_text (_("Busses"));
track_bus_combo.set_active (0);
insert_at_combo.append_text (_("Editor Selection"));
insert_at_combo.append_text (_("Mixer Selection"));
insert_at_combo.append_text (_("End"));
insert_at_combo.append_text (_("First"));
insert_at_combo.append_text (_("After Editor Selection"));
insert_at_combo.append_text (_("After Mixer Selection"));
insert_at_combo.append_text (_("Last"));
insert_at_combo.set_active (0);
insert_at_combo.set_active (1);
VBox* vbox = manage (new VBox);
Gtk::Label* l;
@@ -158,7 +159,7 @@ AddRouteDialog::AddRouteDialog ()
++n;
/* New route will be inserted at.. */
l = manage (new Label (_("Insert at:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false));
l = manage (new Label (_("Insert:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false));
table2->attach (*l, 1, 2, n, n + 1, Gtk::FILL, Gtk::EXPAND, 0, 0);
table2->attach (insert_at_combo, 2, 3, n, n + 1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
++n;
@@ -555,13 +556,14 @@ AddRouteDialog::insert_at ()
{
std::string str = insert_at_combo.get_active_text();
if (str == _("Editor Selection")) {
if (str == _("First")) {
return First;
} else if (str == _("After Editor Selection")) {
return EditorSelection;
} else if (str == _("Mixer Selection")){
} else if (str == _("After Mixer Selection")){
return MixerSelection;
}
return End;
return Last;
}
bool

View File

@@ -70,7 +70,8 @@ class AddRouteDialog : public ArdourDialog
enum InsertAt {
EditorSelection,
MixerSelection,
End
First,
Last
};
InsertAt insert_at();

View File

@@ -3458,6 +3458,8 @@ ARDOUR_UI::setup_order_hint (AddRouteDialog::InsertAt place)
if (!mixer->selection().routes.empty()) {
order_hint++;
} else {
return;
}
} else if (place == AddRouteDialog::EditorSelection){
@@ -3470,29 +3472,32 @@ ARDOUR_UI::setup_order_hint (AddRouteDialog::InsertAt place)
if (!editor->get_selection().tracks.empty()) {
order_hint++;
} else {
return;
}
} else if (place == AddRouteDialog::First) {
order_hint = 0;
} else {
/** AddRouteDialog::End
* an order hint of '0' means place new routes at the end.
* do nothing
/** AddRouteDialog::Last
* not setting an order hint will place new routes last.
*/
return;
}
_session->set_order_hint (order_hint);
/* create a gap in the existing route order keys to accomodate new routes.*/
if (order_hint != 0) {
boost::shared_ptr <RouteList> rd = _session->get_routes();
for (RouteList::iterator ri = rd->begin(); ri != rd->end(); ++ri) {
boost::shared_ptr<Route> rt (*ri);
boost::shared_ptr <RouteList> rd = _session->get_routes();
for (RouteList::iterator ri = rd->begin(); ri != rd->end(); ++ri) {
boost::shared_ptr<Route> rt (*ri);
if (rt->is_monitor()) {
continue;
}
if (rt->is_monitor()) {
continue;
}
if (rt->order_key () >= order_hint) {
rt->set_order_key (rt->order_key () + add_route_dialog->count());
}
if (rt->order_key () >= order_hint) {
rt->set_order_key (rt->order_key () + add_route_dialog->count());
}
}
}

View File

@@ -243,7 +243,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
bool operator() (boost::shared_ptr<Route>, boost::shared_ptr<Route> b);
};
void set_order_hint (uint32_t order_hint) {_order_hint = order_hint;};
void set_order_hint (int32_t order_hint) {_order_hint = order_hint;};
void notify_remote_id_change ();
void sync_order_keys ();
@@ -1677,7 +1677,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
GraphEdges _current_route_graph;
uint32_t next_control_id () const;
uint32_t _order_hint;
int32_t _order_hint;
bool ignore_route_processor_changes;
MidiClockTicker* midi_clock;

View File

@@ -266,7 +266,7 @@ Session::Session (AudioEngine &eng,
, _step_editors (0)
, _suspend_timecode_transmission (0)
, _speakers (new Speakers)
, _order_hint (0)
, _order_hint (-1)
, ignore_route_processor_changes (false)
, _scene_changer (0)
, _midi_ports (0)
@@ -2554,9 +2554,9 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool
ChanCount existing_outputs;
uint32_t order = next_control_id();
if (_order_hint != 0) {
if (_order_hint > -1) {
order = _order_hint;
_order_hint = 0;
_order_hint = -1;
}
count_existing_track_channels (existing_inputs, existing_outputs);