first part of switch from shrink/expand tracks to pyramix-style "pick number of visible tracks". function to follow shortly, this is the control widget part

This commit is contained in:
Paul Davis 2014-03-25 08:21:08 -04:00
parent c16a577a8d
commit da36a8ee09
2 changed files with 57 additions and 21 deletions

View File

@ -314,6 +314,7 @@ Editor::Editor ()
build_edit_mode_menu();
build_zoom_focus_menu();
build_track_count_menu();
build_snap_mode_menu();
build_snap_type_menu();
build_edit_point_menu();
@ -381,6 +382,7 @@ Editor::Editor ()
_edit_point = EditAtMouse;
_internal_editing = false;
current_canvas_cursor = 0;
_visible_track_count = 16;
samples_per_pixel = 2048; /* too early to use reset_zoom () */
@ -644,6 +646,7 @@ Editor::Editor ()
setup_toolbar ();
set_zoom_focus (zoom_focus);
set_visible_track_count (_visible_track_count);
_snap_type = SnapToBeat;
set_snap_to (_snap_type);
_snap_mode = SnapOff;
@ -2948,24 +2951,11 @@ Editor::setup_toolbar ()
_zoom_box.pack_start (zoom_focus_selector, false, false);
/* Track zoom buttons */
tav_expand_button.set_name ("zoom button");
// tav_expand_button.add_elements ( ArdourButton::FlatFace );
tav_expand_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
tav_expand_button.set_size_request (-1, 20);
tav_expand_button.set_image(::get_icon ("tav_exp"));
act = ActionManager::get_action (X_("Editor"), X_("expand-tracks"));
tav_expand_button.set_related_action (act);
visible_tracks_selector.set_name ("zoom button");
// visible_tracks_selector.add_elements ( ArdourButton::FlatFace );
set_size_request_to_display_given_text (visible_tracks_selector, _("all"), 40, 2);
tav_shrink_button.set_name ("zoom button");
// tav_shrink_button.add_elements ( ArdourButton::FlatFace );
tav_shrink_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
tav_shrink_button.set_size_request (-1, 20);
tav_shrink_button.set_image(::get_icon ("tav_shrink"));
act = ActionManager::get_action (X_("Editor"), X_("shrink-tracks"));
tav_shrink_button.set_related_action (act);
_zoom_box.pack_start (tav_shrink_button);
_zoom_box.pack_start (tav_expand_button);
_zoom_box.pack_start (visible_tracks_selector);
_zoom_tearoff = manage (new TearOff (_zoom_box));
@ -3151,8 +3141,7 @@ Editor::setup_tooltips ()
ARDOUR_UI::instance()->set_tip (zoom_out_button, _("Zoom Out"));
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"));
ARDOUR_UI::instance()->set_tip (tav_shrink_button, _("Shrink Tracks"));
ARDOUR_UI::instance()->set_tip (visible_tracks_selector, _("Number of visible tracks"));
ARDOUR_UI::instance()->set_tip (snap_type_selector, _("Snap/Grid Units"));
ARDOUR_UI::instance()->set_tip (snap_mode_selector, _("Snap/Grid Mode"));
ARDOUR_UI::instance()->set_tip (edit_point_selector, _("Edit point"));
@ -3477,6 +3466,51 @@ Editor::zoom_focus_selection_done ( ZoomFocus f )
}
}
void
Editor::build_track_count_menu ()
{
using namespace Menu_Helpers;
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)));
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_("8"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 8)));
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_("16"), sigc::bind (sigc::mem_fun(*this, &Editor::set_visible_track_count), 16)));
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_("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), -1)));
}
void
Editor::set_visible_track_count (int32_t n)
{
if (n == _visible_track_count && !visible_tracks_selector.get_text().empty()) {
return;
}
_visible_track_count = n;
string str;
if (_visible_track_count > 0) {
std::ostringstream s;
s << _visible_track_count;
str = s.str();
} else {
str = _("all");
}
if (str != visible_tracks_selector.get_text()) {
visible_tracks_selector.set_text (str);
}
}
bool
Editor::edit_controls_button_release (GdkEventButton* ev)
{

View File

@ -1562,8 +1562,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ArdourButton zoom_out_button;
ArdourButton zoom_out_full_button;
ArdourButton tav_expand_button;
ArdourButton tav_shrink_button;
ArdourMenu visible_tracks_selector;
int32_t _visible_track_count;
void build_track_count_menu ();
void set_visible_track_count (int32_t);
Gtk::VBox toolbar_clock_vbox;
Gtk::VBox toolbar_selection_clock_vbox;