summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2015-03-16 04:01:30 +1100
committernick_m <mainsbridge@gmail.com>2015-03-16 04:01:30 +1100
commit135e865302b5cd20a6cb0a0a4aaa682f839ffe67 (patch)
tree608cbb71aec4de5f6d2acc11f3fbec1a036de6c5
parenta5db1d588e6bc61c26bd7d24530feeeb0283e95f (diff)
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.
-rw-r--r--gtk2_ardour/add_route_dialog.cc20
-rw-r--r--gtk2_ardour/add_route_dialog.h3
-rw-r--r--gtk2_ardour/ardour_ui.cc31
-rw-r--r--libs/ardour/ardour/session.h4
-rw-r--r--libs/ardour/session.cc6
5 files changed, 36 insertions, 28 deletions
diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc
index 24e9ca81df..990a84ba88 100644
--- a/gtk2_ardour/add_route_dialog.cc
+++ b/gtk2_ardour/add_route_dialog.cc
@@ -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
diff --git a/gtk2_ardour/add_route_dialog.h b/gtk2_ardour/add_route_dialog.h
index 9f11528e58..c4a3f1754e 100644
--- a/gtk2_ardour/add_route_dialog.h
+++ b/gtk2_ardour/add_route_dialog.h
@@ -70,7 +70,8 @@ class AddRouteDialog : public ArdourDialog
enum InsertAt {
EditorSelection,
MixerSelection,
- End
+ First,
+ Last
};
InsertAt insert_at();
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index f94a68d759..fee23d9d13 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -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());
}
}
}
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index b50d502e16..ad5f236a84 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -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;
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index b30be6800a..9e3e168242 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -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);