diff options
author | Len Ovens <len@ovenwerks.net> | 2019-08-28 16:23:46 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2019-08-28 16:23:46 -0700 |
commit | 0840bc0c767ab68b4c564367a5febc41476357d9 (patch) | |
tree | 10bf1488564f9da659160e3857a4b63a73feebf3 /gtk2_ardour/foldback_strip.cc | |
parent | 3588712174530462a7cae5b0df64e8a1309ae533 (diff) |
Replaced foldback select button with previous and next buttons
Diffstat (limited to 'gtk2_ardour/foldback_strip.cc')
-rw-r--r-- | gtk2_ardour/foldback_strip.cc | 114 |
1 files changed, 86 insertions, 28 deletions
diff --git a/gtk2_ardour/foldback_strip.cc b/gtk2_ardour/foldback_strip.cc index 8b22d8d120..48259b4563 100644 --- a/gtk2_ardour/foldback_strip.cc +++ b/gtk2_ardour/foldback_strip.cc @@ -279,8 +279,17 @@ FoldbackStrip::init () name_button.set_name ("mixer strip button"); name_button.set_text_ellipsize (Pango::ELLIPSIZE_END); - _select_button.set_name ("mixer strip button"); - _select_button.set_text (_("Select Foldback Bus")); + _previous_button.set_name ("mixer strip button"); + _previous_button.set_text (_("Previous")); + _next_button.set_name ("mixer strip button"); + _next_button.set_text (_("Next")); + + prev_next_box.set_homogeneous (true); + prev_next_box.pack_start (_previous_button, true, true); + prev_next_box.pack_start (_next_button, true, true); + _previous_button.show(); + _next_button.show(); + _comment_button.set_name (X_("mixer strip button")); _comment_button.set_text_ellipsize (Pango::ELLIPSIZE_END); @@ -289,7 +298,7 @@ FoldbackStrip::init () global_vpacker.set_border_width (1); global_vpacker.set_spacing (4); - global_vpacker.pack_start (_select_button, Gtk::PACK_SHRINK); + global_vpacker.pack_start (prev_next_box, Gtk::PACK_SHRINK); global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK); global_vpacker.pack_start (_invert_button_box, Gtk::PACK_SHRINK); global_vpacker.pack_start (show_sends_box, Gtk::PACK_SHRINK); @@ -339,7 +348,8 @@ FoldbackStrip::init () output_button.signal_button_release_event().connect (sigc::mem_fun(*this, &FoldbackStrip::output_release), false); name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &FoldbackStrip::name_button_button_press), false); - _select_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::select_button_button_press), false); + _previous_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::previous_button_button_press), false); + _next_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::next_button_button_press), false); _width = Wide; @@ -441,6 +451,7 @@ FoldbackStrip::set_route (boost::shared_ptr<Route> rt) mute_button->show (); solo_button->show (); show_sends_box.show (); + prev_next_box.show (); spacer.show(); update_fb_level_control(); @@ -487,7 +498,8 @@ FoldbackStrip::set_route (boost::shared_ptr<Route> rt) send_display.show (); output_button.show(); name_button.show(); - _select_button.show(); + _previous_button.show(); + _next_button.show(); _comment_button.show(); map_frozen(); @@ -1165,35 +1177,88 @@ FoldbackStrip::build_route_select_menu () gboolean FoldbackStrip::name_button_button_press (GdkEventButton* ev) { - if (ev->button == 1 || ev->button == 3) { - list_route_operations (); + if (ev->button == 1) { + list_fb_routes (); - if (ev->button == 1) { - Gtkmm2ext::anchored_menu_popup(route_ops_menu, &name_button, "", + Gtkmm2ext::anchored_menu_popup(route_select_menu, &name_button, "", 1, ev->time); + return true; + } else if (ev->button == 3) { + list_route_operations (); + route_ops_menu->popup (3, ev->time); + return true; + } + + return false; + +} + +gboolean +FoldbackStrip::previous_button_button_press (GdkEventButton* ev) +{ + if (ev->button == 1 || ev->button == 3) { + bool past_current = false; + StripableList slist; + boost::shared_ptr<Route> previous = boost::shared_ptr<Route> (); + boost::shared_ptr<Route> last = boost::shared_ptr<Route> (); + _session->get_stripables (slist, PresentationInfo::FoldbackBus); + if (slist.size () > 1) { + for (StripableList::iterator s = slist.begin(); s != slist.end(); ++s) { + last = boost::dynamic_pointer_cast<Route> (*s); + if ((*s) == _route) { + past_current = true; + } + if (!past_current) { + previous = boost::dynamic_pointer_cast<Route> (*s); + } + } } else { - route_ops_menu->popup (3, ev->time); + // only one route do nothing + return true; + } + //use previous to set route + if (previous) { + set_route (previous); + } else { + set_route (last); } - return true; } return false; } + gboolean -FoldbackStrip::select_button_button_press (GdkEventButton* ev) +FoldbackStrip::next_button_button_press (GdkEventButton* ev) { if (ev->button == 1 || ev->button == 3) { - list_fb_routes (); - - if (ev->button == 1) { - Gtkmm2ext::anchored_menu_popup(route_select_menu, &_select_button, "", - 1, ev->time); + bool past_current = false; + StripableList slist; + boost::shared_ptr<Route> next = boost::shared_ptr<Route> (); + boost::shared_ptr<Route> first = boost::shared_ptr<Route> (); + _session->get_stripables (slist, PresentationInfo::FoldbackBus); + if (slist.size () > 1) { + first = boost::dynamic_pointer_cast<Route> (*(slist.begin())); + for (StripableList::iterator s = slist.begin(); s != slist.end(); ++s) { + if (past_current) { + next = boost::dynamic_pointer_cast<Route> (*s); + break; + } + if ((*s) == _route) { + past_current = true; + } + } } else { - route_select_menu->popup (3, ev->time); + // only one route do nothing + return true; + } + //use next to set route + if (next) { + set_route (next); + } else { + set_route (first); } - return true; } @@ -1218,18 +1283,11 @@ void FoldbackStrip::set_selected (bool yn) { - /*if (selected()) { - global_frame.set_shadow_type (Gtk::SHADOW_ETCHED_OUT); - global_frame.set_name ("MixerStripSelectedFrame"); - } else {*/ - global_frame.set_shadow_type (Gtk::SHADOW_IN); - global_frame.set_name ("MixerStripFrame"); - //} + global_frame.set_shadow_type (Gtk::SHADOW_IN); + global_frame.set_name ("MixerStripFrame"); global_frame.queue_draw (); -// if (!yn) -// processor_box.deselect_all_processors(); } void |