Prepare configurable mini-timeline time-span
authorRobin Gareus <robin@gareus.org>
Sat, 17 Dec 2016 23:06:39 +0000 (00:06 +0100)
committerRobin Gareus <robin@gareus.org>
Sat, 17 Dec 2016 23:06:39 +0000 (00:06 +0100)
gtk2_ardour/mini_timeline.cc
gtk2_ardour/mini_timeline.h
gtk2_ardour/route_ui.h
libs/ardour/ardour/session_configuration_vars.h

index a3e3b8d324a20bc9350ef1d13769dcb731195b9e..102b5ff10f7cee6ec88857708dee483e3c3ffe02 100644 (file)
@@ -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);
index 23071c4ce24643398f182ebae694986f662f0eeb..63f34f714e50be8c247aaafc8f276d7e5f4972ae 100644 (file)
@@ -53,6 +53,7 @@ private:
        void on_style_changed (const Glib::RefPtr<Gtk::Style>&);
        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<Pango::Layout> _layout;
        sigc::connection super_rapid_connection;
        PBD::ScopedConnectionList marker_connection;
+       PBD::ScopedConnection session_connection;
 
        framepos_t _last_update_frame;
        AudioClock::Mode _clock_mode;
index 778eb3fd892142d3d896aa54b4b62b0291d99a05..75dab9fb233e4df0b2c0322d01bd17bf1183e3c7 100644 (file)
@@ -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 ();
 
index 6e7ab3a27956f54e486d226cdc5865fbc9d383f8..25c2b61186fcb284272b303051ae867bc822853a 100644 (file)
@@ -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)