diff options
author | nick_m <mainsbridge@gmail.com> | 2015-03-16 04:01:30 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2015-03-16 04:01:30 +1100 |
commit | 135e865302b5cd20a6cb0a0a4aaa682f839ffe67 (patch) | |
tree | 608cbb71aec4de5f6d2acc11f3fbec1a036de6c5 | |
parent | a5db1d588e6bc61c26bd7d24530feeeb0283e95f (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.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/add_route_dialog.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 31 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 4 | ||||
-rw-r--r-- | libs/ardour/session.cc | 6 |
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); |