diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-03-25 08:21:08 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-03-25 08:21:08 -0400 |
commit | da36a8ee0908b89c46926f7c0a037c764831c51c (patch) | |
tree | b05b9b50f53cb45502df313c9403aac71f04ab63 /gtk2_ardour | |
parent | c16a577a8ddd0c5a262c4575548f2c86421b2d70 (diff) |
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.cc | 74 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 6 |
2 files changed, 58 insertions, 22 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 21b2077eae..adf51cdd3b 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -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); - - 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); + 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); + + _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) { diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index e93afebea3..a33bf39693 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -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; |