From b25e95ef6083d1feb835b75468d1eed683817eec Mon Sep 17 00:00:00 2001 From: Valeriy Kamyshniy Date: Fri, 30 May 2014 04:43:38 -0500 Subject: [PATCH] [Summary] Adding ZOOM TOOL actions. [git-p4: depot-paths = "//Abdaw/dev_main/tracks/": change = 464697] --- gtk2_ardour/editor.cc | 13 +++++++++---- gtk2_ardour/editor.h | 6 ++++++ gtk2_ardour/editor_ops.cc | 28 ++++++++++++++++++++++++++++ gtk2_ardour/ui/editor_window.xml | 21 ++++++++++++++++----- gtk2_ardour/waves_window.h | 14 +++++++------- 5 files changed, 66 insertions(+), 16 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index cf676a0502..cc7af29838 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -250,6 +250,8 @@ Editor::Editor () , _tool_marker_button (get_waves_button ("tool_marker_button")) , _tool_zoom_button (get_waves_button ("tool_zoom_button")) , _tool_arrow_button (get_waves_button ("tool_arrow_button")) + , _temporal_zoom_adjustment (get_adjustment ("temporal_zoom_adjustment")) + , _vertical_zoom_adjustment (get_adjustment ("vertical_zoom_adjustment")) #ifdef TOP_MENUBAR /* * This is needed for OS X primarily @@ -2964,8 +2966,9 @@ Editor::setup_toolbar () _zoom_box.pack_start (zoom_out_full_button, false, false); _zoom_box.pack_start (zoom_focus_selector, false, false); } else { - mode_box->pack_start (zoom_out_button, false, false); - mode_box->pack_start (zoom_in_button, false, false); + _temporal_zoom_adjustment.signal_value_changed().connect (mem_fun (*this, &Editor::temporal_zoom_by_slider)); + _vertical_zoom_adjustment.signal_value_changed().connect (mem_fun (*this, &Editor::vertical_zoom_by_slider)); + ZoomChanged.connect (sigc::mem_fun (*this, &Editor::update_temporal_zoom_slider)); } /* Track zoom buttons */ @@ -3087,8 +3090,10 @@ Editor::setup_toolbar () hbox->show_all (); - toolbar_base.set_name ("ToolBarBase"); - toolbar_base.add (toolbar_hbox); + if (!ARDOUR::Profile->get_trx()) { + toolbar_base.set_name ("ToolBarBase"); + toolbar_base.add (toolbar_hbox); + } _toolbar_viewport.add (toolbar_base); /* stick to the required height but allow width to vary if there's not enough room */ diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 7fc9705bb9..6539ea0b26 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1216,6 +1216,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void temporal_zoom (framecnt_t samples_per_pixel); void temporal_zoom_by_frame (framepos_t start, framepos_t end); void temporal_zoom_to_frame (bool coarser, framepos_t frame); + void temporal_zoom_by_slider (); + void update_temporal_zoom_slider (); void insert_region_list_drag (boost::shared_ptr, int x, int y); void insert_region_list_selection (float times); @@ -1596,6 +1598,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD WavesButton& _tool_arrow_button; ArdourButton mouse_gain_button; WavesButton& _tool_zoom_button; + Gtk::Adjustment& _temporal_zoom_adjustment; + Gtk::Adjustment& _vertical_zoom_adjustment; + ArdourButton mouse_timefx_button; ArdourButton mouse_audition_button; @@ -2012,6 +2017,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void fit_tracks (TrackViewList &); void fit_selected_tracks (); void set_track_height (Height); + void vertical_zoom_by_slider(); void remove_tracks (); void toggle_tracks_active (); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index a72c95e48e..80d3c68e63 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -92,6 +92,7 @@ #include "utils.h" #include "i18n.h" +#include "dbg_msg.h" using namespace std; using namespace ARDOUR; @@ -1753,6 +1754,25 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame) reposition_and_zoom (new_leftmost, new_fpp); } +void +Editor::temporal_zoom_by_slider () +{ + temporal_zoom (_temporal_zoom_adjustment.get_value()); +} + +void +Editor::update_temporal_zoom_slider () +{ + double value = samples_per_pixel; + + if ( value < _temporal_zoom_adjustment.get_lower ()) { + value = _temporal_zoom_adjustment.get_lower (); + } else if ( value > _temporal_zoom_adjustment.get_upper ()) { + value = _temporal_zoom_adjustment.get_upper (); + } + + _temporal_zoom_adjustment.set_value(samples_per_pixel); +} bool Editor::choose_new_marker_name(string &name) { @@ -6456,6 +6476,14 @@ Editor::set_track_height (Height h) } } +void +Editor::vertical_zoom_by_slider() +{ + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + (*i)->set_height (_vertical_zoom_adjustment.get_value()*22); + } +} + void Editor::toggle_tracks_active () { diff --git a/gtk2_ardour/ui/editor_window.xml b/gtk2_ardour/ui/editor_window.xml index c5cbe05b57..94af770b43 100644 --- a/gtk2_ardour/ui/editor_window.xml +++ b/gtk2_ardour/ui/editor_window.xml @@ -123,19 +123,30 @@ activeicon="tool_zoom_active" prelighticon="tool_zoom_prelight"/> - - + + - #include "waves_ui.h" -class WavesWindow : public Gtk::Window { public: WavesWindow (Gtk::WindowType window_type); WavesWindow (Gtk::WindowType window_type, std::string layout_script); Gtk::VBox& get_vbox (char* id) { return _children.get_vbox (id); } - Gtk::HBox& get_hbox (char* id) { return _children.get_hbox (id); } - Gtk::Layout& get_layout (char* id) { return _children.get_layout (id); } - Gtk::Label& get_label (char* id) { return _children.get_label (id); } - Gtk::ComboBoxText& get_combo_box_text (char* id) { return _children.get_combo_box_text (id); } - WavesButton& get_waves_button (char* id) { return _children.get_waves_button (id); } - +class WavesWindow : public Gtk::Window { public: WavesWindow (Gtk::WindowType window_type); WavesWindow (Gtk::WindowType window_type, std::string layout_script); Gtk::VBox& get_vbox (const char* id) { return _children.get_vbox (id); } + Gtk::HBox& get_hbox (const char* id) { return _children.get_hbox (id); } + Gtk::Layout& get_layout (const char* id) { return _children.get_layout (id); } + Gtk::Label& get_label (const char* id) { return _children.get_label (id); } + Gtk::ComboBoxText& get_combo_box_text (const char* id) { return _children.get_combo_box_text (id); } + WavesButton& get_waves_button (const char* id) { return _children.get_waves_button (id); } + Gtk::Adjustment& get_adjustment (const char* id) { return _children.get_adjustment (id); } private: WavesUI::WidgetMap _children; }; #endif // __waves_window_h__