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;
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());
gdk_cairo_set_source_pixbuf (cr, _pixbuf->gobj(), x, y);
cairo_fill (cr);
//..and then return to our previous drawing position
if (((_elements & Menu)==Menu)) {
cairo_restore (cr);
}
}
/* text, if any */
@ -374,15 +386,17 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *)
cairo_save (cr);
cairo_translate (cr, 0,0 );
//white arrow
//menu arrow
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_rel_line_to(cr, -_diameter/2, -_diameter/2);
cairo_rel_line_to(cr, _diameter, 0);
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);
}

View file

@ -2857,6 +2857,10 @@ Editor::setup_toolbar ()
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.add_elements ( ArdourButton::Inset );
zoom_in_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
@ -2882,9 +2886,7 @@ Editor::setup_toolbar ()
// zoom_focus_selector.add_elements (ArdourButton::Inset);
if (ARDOUR::Profile->get_mixbus()) {
_zoom_box.pack_start (zoom_out_button, false, false);
_zoom_box.pack_start (zoom_in_button, false, false);
_zoom_box.pack_start (zoom_out_full_button, false, false);
_zoom_box.pack_start (zoom_preset_selector, false, false);
} else if (ARDOUR::Profile->get_trx()) {
mode_box->pack_start (zoom_out_button, false, false);
mode_box->pack_start (zoom_in_button, false, false);
@ -2898,7 +2900,12 @@ Editor::setup_toolbar ()
/* Track zoom buttons */
visible_tracks_selector.set_name ("zoom button");
// 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.add_elements ( ArdourButton::FlatFace );
@ -2916,11 +2923,16 @@ Editor::setup_toolbar ()
act = ActionManager::get_action (X_("Editor"), X_("shrink-tracks"));
tav_shrink_button.set_related_action (act);
if (!ARDOUR::Profile->get_trx()) {
if (ARDOUR::Profile->get_mixbus()) {
_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);
}
if (!ARDOUR::Profile->get_trx()) {
_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 (zoom_in_button, _("Zoom In"));
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_focus_selector, _("Zoom focus"));
ARDOUR_UI::instance()->set_tip (tav_expand_button, _("Expand Tracks"));
@ -3463,6 +3476,7 @@ Editor::build_track_count_menu ()
{
using namespace Menu_Helpers;
if (!Profile->get_mixbus()) {
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_("2"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 2)));
visible_tracks_selector.AddMenuElem (MenuElem (X_("3"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 3)));
@ -3474,7 +3488,41 @@ Editor::build_track_count_menu ()
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_("32"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 32)));
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)));
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
@ -3524,6 +3572,7 @@ void
Editor::override_visible_track_count ()
{
_visible_track_count = -_visible_track_count;
visible_tracks_selector.set_text ( _("*") );
}
bool

View file

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