mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 16:46:35 +01:00
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:
parent
b19e1a7985
commit
492c933a69
3 changed files with 91 additions and 25 deletions
|
|
@ -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,15 +386,17 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1590,11 +1590,14 @@ 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;
|
||||||
Gtk::Table toolbar_selection_clock_table;
|
Gtk::Table toolbar_selection_clock_table;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue