From f80fb029e22a5bde240b523370b831fbe3e620d8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 18 Dec 2016 00:06:39 +0100 Subject: Prepare configurable mini-timeline time-span --- gtk2_ardour/mini_timeline.cc | 18 ++++++++++++++++-- gtk2_ardour/mini_timeline.h | 2 ++ gtk2_ardour/route_ui.h | 2 +- libs/ardour/ardour/session_configuration_vars.h | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/mini_timeline.cc b/gtk2_ardour/mini_timeline.cc index a3e3b8d324..102b5ff10f 100644 --- a/gtk2_ardour/mini_timeline.cc +++ b/gtk2_ardour/mini_timeline.cc @@ -67,6 +67,7 @@ void MiniTimeline::session_going_away () { super_rapid_connection.disconnect (); + session_connection.disconnect (); SessionHandlePtr::session_going_away (); _jumplist.clear (); } @@ -83,6 +84,11 @@ MiniTimeline::set_session (Session* s) super_rapid_connection = Timers::super_rapid_connect ( sigc::mem_fun (*this, &MiniTimeline::super_rapid_update) ); + _session->config.ParameterChanged.connect (session_connection, + invalidator (*this), + boost::bind (&MiniTimeline::parameter_changed, this, _1), gui_context() + ); + _jumplist.clear (); } @@ -111,6 +117,14 @@ MiniTimeline::set_colors () // TODO UIConfiguration::instance().color & font } +void +MiniTimeline::parameter_changed (std::string const& p) +{ + if (p == "minitimeline-span") { + update_minitimeline (); + } +} + void MiniTimeline::on_size_request (Gtk::Requisition* req) { @@ -321,7 +335,7 @@ MiniTimeline::render (cairo_t* cr, cairo_rectangle_t*) /* time */ - const framepos_t time_span = 60; /* left+right: 2 minutes */ + const framepos_t time_span = _session->config.get_minitimeline_span () / 2; const framepos_t time_span_samples = time_span * _session->nominal_frame_rate (); const framepos_t time_granularity = _session->nominal_frame_rate () * ceil (2. * time_span / n_labels); const framepos_t p = _last_update_frame; @@ -446,7 +460,7 @@ MiniTimeline::on_button_release_event (GdkEventButton *ev) } } else if (ev->button == 1) { // copy from ::render() // TODO consolidate - const framepos_t time_span = 60; /* left+right: 2 minutes */ + const framepos_t time_span = _session->config.get_minitimeline_span () / 2; const framepos_t time_span_samples = time_span * _session->nominal_frame_rate (); const framepos_t p = _last_update_frame; const double px_per_sample = get_width () / (2. * time_span_samples); diff --git a/gtk2_ardour/mini_timeline.h b/gtk2_ardour/mini_timeline.h index 23071c4ce2..63f34f714e 100644 --- a/gtk2_ardour/mini_timeline.h +++ b/gtk2_ardour/mini_timeline.h @@ -53,6 +53,7 @@ private: void on_style_changed (const Glib::RefPtr&); void on_name_changed (); void set_colors (); + void parameter_changed (std::string const &); void calculate_time_width (); void update_minitimeline (); @@ -68,6 +69,7 @@ private: Glib::RefPtr _layout; sigc::connection super_rapid_connection; PBD::ScopedConnectionList marker_connection; + PBD::ScopedConnection session_connection; framepos_t _last_update_frame; AudioClock::Mode _clock_mode; diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 778eb3fd89..75dab9fb23 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -300,7 +300,7 @@ class RouteUI : public virtual ARDOUR::SessionHandlePtr, public virtual PBD::Sco bool mark_hidden (bool yn); private: - void parameter_changed (std::string const &); + void parameter_changed (std::string const&); void relabel_solo_button (); void track_mode_changed (); diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h index 6e7ab3a279..25c2b61186 100644 --- a/libs/ardour/ardour/session_configuration_vars.h +++ b/libs/ardour/ardour/session_configuration_vars.h @@ -39,6 +39,7 @@ CONFIG_VARIABLE (bool, punch_out, "punch-out", false) CONFIG_VARIABLE (bool, layered_record_mode, "layered-record-mode", false) CONFIG_VARIABLE (uint32_t, subframes_per_frame, "subframes-per-frame", 100) CONFIG_VARIABLE (Timecode::TimecodeFormat, timecode_format, "timecode-format", Timecode::timecode_30) +CONFIG_VARIABLE (framecnt_t, minitimeline_span, "minitimeline-span", 120) // seconds CONFIG_VARIABLE_SPECIAL(std::string, raid_path, "raid-path", "", PBD::path_expand) CONFIG_VARIABLE_SPECIAL(std::string, audio_search_path, "audio-search-path", "", PBD::search_path_expand) CONFIG_VARIABLE_SPECIAL(std::string, midi_search_path, "midi-search-path", "", PBD::search_path_expand) -- cgit v1.2.3