fix the visible_tracks_selector to show * when user tweaks a track height. various experimental tweaks to visible_tracks_selector and a new zoom_preset_selector for Mixbus.

This commit is contained in:
Ben Loftis 2014-07-11 14:50:51 -05:00
parent b19e1a7985
commit 492c933a69
3 changed files with 91 additions and 25 deletions

View file

@ -305,9 +305,21 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *)
x = (get_width() - _pixbuf->get_width())/2.0; x = (get_width() - _pixbuf->get_width())/2.0;
y = (get_height() - _pixbuf->get_height())/2.0; y = (get_height() - _pixbuf->get_height())/2.0;
//if this is a DropDown with an icon, then we need to
//move the icon left slightly to accomomodate the arrow
if (((_elements & Menu)==Menu)) {
cairo_save (cr);
cairo_translate (cr, -8,0 );
}
cairo_rectangle (cr, x, y, _pixbuf->get_width(), _pixbuf->get_height()); cairo_rectangle (cr, x, y, _pixbuf->get_width(), _pixbuf->get_height());
gdk_cairo_set_source_pixbuf (cr, _pixbuf->gobj(), x, y); gdk_cairo_set_source_pixbuf (cr, _pixbuf->gobj(), x, y);
cairo_fill (cr); cairo_fill (cr);
//..and then return to our previous drawing position
if (((_elements & Menu)==Menu)) {
cairo_restore (cr);
}
} }
/* text, if any */ /* text, if any */
@ -374,16 +386,18 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *)
cairo_save (cr); cairo_save (cr);
cairo_translate (cr, 0,0 ); //menu arrow
//white arrow
cairo_set_source_rgba (cr, 1, 1, 1, 0.4); cairo_set_source_rgba (cr, 1, 1, 1, 0.4);
cairo_move_to(cr, get_width() - ((_diameter/2.0) + 6.0), get_height()/2.0 +_diameter/4); cairo_move_to(cr, get_width() - ((_diameter/2.0) + 6.0), get_height()/2.0 +_diameter/4);
cairo_rel_line_to(cr, -_diameter/2, -_diameter/2); cairo_rel_line_to(cr, -_diameter/2, -_diameter/2);
cairo_rel_line_to(cr, _diameter, 0); cairo_rel_line_to(cr, _diameter, 0);
cairo_close_path(cr); cairo_close_path(cr);
cairo_fill(cr); cairo_set_source_rgba (cr, 1, 1, 1, 0.4);
cairo_fill_preserve(cr);
cairo_set_source_rgba (cr, 0, 0, 0, 0.8);
cairo_set_line_width(cr, 0.5);
cairo_stroke(cr);
cairo_restore (cr); cairo_restore (cr);
} }

View file

@ -2809,7 +2809,7 @@ Editor::setup_toolbar ()
mouse_mode_hbox->pack_start (mouse_select_button, false, false); mouse_mode_hbox->pack_start (mouse_select_button, false, false);
mouse_mode_hbox->pack_start (mouse_cut_button, false, false); mouse_mode_hbox->pack_start (mouse_cut_button, false, false);
mouse_mode_hbox->pack_start (mouse_zoom_button, false, false); mouse_mode_hbox->pack_start (mouse_zoom_button, false, false);
if (!ARDOUR::Profile->get_trx()) { if (!ARDOUR::Profile->get_trx()) {
mouse_mode_hbox->pack_start (mouse_gain_button, false, false); mouse_mode_hbox->pack_start (mouse_gain_button, false, false);
mouse_mode_hbox->pack_start (mouse_timefx_button, false, false); mouse_mode_hbox->pack_start (mouse_timefx_button, false, false);
@ -2857,6 +2857,10 @@ Editor::setup_toolbar ()
RefPtr<Action> act; RefPtr<Action> act;
zoom_preset_selector.set_name ("zoom button");
zoom_preset_selector.set_image(::get_icon ("time_exp"));
zoom_preset_selector.set_size_request (42, -1);
zoom_in_button.set_name ("zoom button"); zoom_in_button.set_name ("zoom button");
// zoom_in_button.add_elements ( ArdourButton::Inset ); // zoom_in_button.add_elements ( ArdourButton::Inset );
zoom_in_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) ); zoom_in_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
@ -2882,9 +2886,7 @@ Editor::setup_toolbar ()
// zoom_focus_selector.add_elements (ArdourButton::Inset); // zoom_focus_selector.add_elements (ArdourButton::Inset);
if (ARDOUR::Profile->get_mixbus()) { if (ARDOUR::Profile->get_mixbus()) {
_zoom_box.pack_start (zoom_out_button, false, false); _zoom_box.pack_start (zoom_preset_selector, false, false);
_zoom_box.pack_start (zoom_in_button, false, false);
_zoom_box.pack_start (zoom_out_full_button, false, false);
} else if (ARDOUR::Profile->get_trx()) { } else if (ARDOUR::Profile->get_trx()) {
mode_box->pack_start (zoom_out_button, false, false); mode_box->pack_start (zoom_out_button, false, false);
mode_box->pack_start (zoom_in_button, false, false); mode_box->pack_start (zoom_in_button, false, false);
@ -2898,7 +2900,12 @@ Editor::setup_toolbar ()
/* Track zoom buttons */ /* Track zoom buttons */
visible_tracks_selector.set_name ("zoom button"); visible_tracks_selector.set_name ("zoom button");
// visible_tracks_selector.add_elements ( ArdourButton::Inset ); // visible_tracks_selector.add_elements ( ArdourButton::Inset );
set_size_request_to_display_given_text (visible_tracks_selector, _("all"), 40, 2); if (Profile->get_mixbus()) {
visible_tracks_selector.set_image(::get_icon ("tav_exp"));
visible_tracks_selector.set_size_request (42, -1);
} else {
set_size_request_to_display_given_text (visible_tracks_selector, _("All"), 40, 2);
}
tav_expand_button.set_name ("zoom button"); tav_expand_button.set_name ("zoom button");
// tav_expand_button.add_elements ( ArdourButton::FlatFace ); // tav_expand_button.add_elements ( ArdourButton::FlatFace );
@ -2916,11 +2923,16 @@ Editor::setup_toolbar ()
act = ActionManager::get_action (X_("Editor"), X_("shrink-tracks")); act = ActionManager::get_action (X_("Editor"), X_("shrink-tracks"));
tav_shrink_button.set_related_action (act); tav_shrink_button.set_related_action (act);
if (!ARDOUR::Profile->get_trx()) { if (ARDOUR::Profile->get_mixbus()) {
_zoom_box.pack_start (visible_tracks_selector); _zoom_box.pack_start (visible_tracks_selector);
} else if (ARDOUR::Profile->get_trx()) {
_zoom_box.pack_start (tav_shrink_button);
_zoom_box.pack_start (tav_expand_button);
} else {
_zoom_box.pack_start (visible_tracks_selector);
_zoom_box.pack_start (tav_shrink_button);
_zoom_box.pack_start (tav_expand_button);
} }
_zoom_box.pack_start (tav_shrink_button);
_zoom_box.pack_start (tav_expand_button);
if (!ARDOUR::Profile->get_trx()) { if (!ARDOUR::Profile->get_trx()) {
_zoom_tearoff = manage (new TearOff (_zoom_box)); _zoom_tearoff = manage (new TearOff (_zoom_box));
@ -3123,6 +3135,7 @@ Editor::setup_tooltips ()
ARDOUR_UI::instance()->set_tip (nudge_backward_button, _("Nudge Region/Selection Earlier")); ARDOUR_UI::instance()->set_tip (nudge_backward_button, _("Nudge Region/Selection Earlier"));
ARDOUR_UI::instance()->set_tip (zoom_in_button, _("Zoom In")); ARDOUR_UI::instance()->set_tip (zoom_in_button, _("Zoom In"));
ARDOUR_UI::instance()->set_tip (zoom_out_button, _("Zoom Out")); ARDOUR_UI::instance()->set_tip (zoom_out_button, _("Zoom Out"));
ARDOUR_UI::instance()->set_tip (zoom_preset_selector, _("Zoom to Time Scale"));
ARDOUR_UI::instance()->set_tip (zoom_out_full_button, _("Zoom to Session")); ARDOUR_UI::instance()->set_tip (zoom_out_full_button, _("Zoom to Session"));
ARDOUR_UI::instance()->set_tip (zoom_focus_selector, _("Zoom focus")); ARDOUR_UI::instance()->set_tip (zoom_focus_selector, _("Zoom focus"));
ARDOUR_UI::instance()->set_tip (tav_expand_button, _("Expand Tracks")); ARDOUR_UI::instance()->set_tip (tav_expand_button, _("Expand Tracks"));
@ -3463,18 +3476,53 @@ Editor::build_track_count_menu ()
{ {
using namespace Menu_Helpers; using namespace Menu_Helpers;
visible_tracks_selector.AddMenuElem (MenuElem (X_("1"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 1))); if (!Profile->get_mixbus()) {
visible_tracks_selector.AddMenuElem (MenuElem (X_("2"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 2))); visible_tracks_selector.AddMenuElem (MenuElem (X_("1"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 1)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("3"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 3))); visible_tracks_selector.AddMenuElem (MenuElem (X_("2"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 2)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("4"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 4))); visible_tracks_selector.AddMenuElem (MenuElem (X_("3"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 3)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("8"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 8))); visible_tracks_selector.AddMenuElem (MenuElem (X_("4"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 4)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("12"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 12))); visible_tracks_selector.AddMenuElem (MenuElem (X_("8"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 8)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("16"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 16))); visible_tracks_selector.AddMenuElem (MenuElem (X_("12"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 12)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("20"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 20))); visible_tracks_selector.AddMenuElem (MenuElem (X_("16"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 16)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("24"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 24))); visible_tracks_selector.AddMenuElem (MenuElem (X_("20"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 20)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("32"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 32))); visible_tracks_selector.AddMenuElem (MenuElem (X_("24"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 24)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("64"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 64))); visible_tracks_selector.AddMenuElem (MenuElem (X_("32"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 32)));
visible_tracks_selector.AddMenuElem (MenuElem (_("all"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 0))); visible_tracks_selector.AddMenuElem (MenuElem (X_("64"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 64)));
visible_tracks_selector.AddMenuElem (MenuElem (_("All"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 0)));
} else {
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit current tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 0)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 48 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 48)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 32 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 32)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 24 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 24)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 16 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 16)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 8 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 8)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 4 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 4)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 2 tracks"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 2)));
visible_tracks_selector.AddMenuElem (MenuElem (_("Fit 1 track"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 1)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to Session"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), -1)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 24 hours"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 24 * 60 * 60 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 8 hours"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 8 * 60 * 60 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 1 hour"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 60 * 60 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 10 min"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 10 * 60 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 1 min"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 60 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 10 sec"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 10 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 1 sec"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 1 * 1000)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 100 ms"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 100)));
zoom_preset_selector.AddMenuElem (MenuElem (_("Zoom to 10 ms"), sigc::bind (sigc::mem_fun(*this, &Editor::set_zoom_preset), 10)));
}
}
void
Editor::set_zoom_preset (int64_t ms)
{
if ( ms <= 0 ) {
temporal_zoom_session();
return;
}
ARDOUR::framecnt_t const sample_rate = ARDOUR::AudioEngine::instance()->sample_rate();
temporal_zoom( (sample_rate * ms / 1000) / _visible_canvas_width );
} }
void void
@ -3524,6 +3572,7 @@ void
Editor::override_visible_track_count () Editor::override_visible_track_count ()
{ {
_visible_track_count = -_visible_track_count; _visible_track_count = -_visible_track_count;
visible_tracks_selector.set_text ( _("*") );
} }
bool bool

View file

@ -1590,10 +1590,13 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ArdourButton tav_expand_button; ArdourButton tav_expand_button;
ArdourButton tav_shrink_button; ArdourButton tav_shrink_button;
ArdourDropdown visible_tracks_selector; ArdourDropdown visible_tracks_selector;
ArdourDropdown zoom_preset_selector;
int32_t _visible_track_count; int32_t _visible_track_count;
void build_track_count_menu (); void build_track_count_menu ();
void set_visible_track_count (int32_t); void set_visible_track_count (int32_t);
void set_zoom_preset(int64_t);
Gtk::VBox toolbar_clock_vbox; Gtk::VBox toolbar_clock_vbox;
Gtk::VBox toolbar_selection_clock_vbox; Gtk::VBox toolbar_selection_clock_vbox;