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:
@@ -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
|
||||
|
||||
@@ -70,7 +70,8 @@ class AddRouteDialog : public ArdourDialog
|
||||
enum InsertAt {
|
||||
EditorSelection,
|
||||
MixerSelection,
|
||||
End
|
||||
First,
|
||||
Last
|
||||
};
|
||||
InsertAt insert_at();
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user