Properly revert FormatSpec changes on "cancel"
[ardour.git] / gtk2_ardour / audio_clock.h
index e48dec0dc583eeca999a43bfceb04aa4b5458ee2..5d8e58be6bca0ab749a475e4bc5cb3918095ed14 100644 (file)
@@ -47,6 +47,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
                Timecode,
                BBT,
                MinSec,
+               Seconds,
                Samples
        };
 
@@ -66,7 +67,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
 
        void focus ();
 
-       void set (samplepos_t, bool force = false, ARDOUR::samplecnt_t offset = 0);
+       virtual void set (samplepos_t, bool force = false, ARDOUR::samplecnt_t offset = 0);
        void set_from_playhead ();
        void locate ();
        void set_mode (Mode, bool noemit = false);
@@ -104,7 +105,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
 
        protected:
        void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*);
-       bool get_is_duration () const { return is_duration; } ;
+       bool get_is_duration () const { return is_duration; }
+       ARDOUR::samplecnt_t offset () const { return _offset; }
 
        virtual void build_ops_menu ();
        Gtk::Menu  *ops_menu;
@@ -132,6 +134,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
 
        samplepos_t       _limit_pos;
 
+       ARDOUR::samplecnt_t _offset;
+
        Glib::RefPtr<Pango::Layout> _layout;
 
        bool         _with_info;
@@ -166,6 +170,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
                Bars,
                Beats,
                Ticks,
+               SS_Seconds,
+               SS_Deciseconds,
                S_Samples,
        };
 
@@ -208,6 +214,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        void set_timecode (samplepos_t, bool);
        void set_bbt (samplepos_t, ARDOUR::samplecnt_t, bool);
        void set_minsec (samplepos_t, bool);
+       void set_seconds (samplepos_t, bool);
        void set_samples (samplepos_t, bool);
        void set_out_of_bounds (bool negative);
 
@@ -216,14 +223,15 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        samplepos_t get_sample_step (Field, samplepos_t pos = 0, int dir = 1);
 
        bool timecode_validate_edit (const std::string&);
-       bool bbt_validate_edit (const std::string&);
+       bool bbt_validate_edit (std::string&);
        bool minsec_validate_edit (const std::string&);
 
        samplepos_t samples_from_timecode_string (const std::string&) const;
        samplepos_t samples_from_bbt_string (samplepos_t, const std::string&) const;
        samplepos_t sample_duration_from_bbt_string (samplepos_t, const std::string&) const;
        samplepos_t samples_from_minsec_string (const std::string&) const;
-       samplepos_t samples_from_audioframes_string (const std::string&) const;
+       samplepos_t samples_from_seconds_string (const std::string&) const;
+       samplepos_t samples_from_audiosamples_string (const std::string&) const;
 
        void session_configuration_changed (std::string);
        void session_property_changed (const PBD::PropertyChange&);
@@ -239,6 +247,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        ARDOUR::samplecnt_t parse_as_timecode_distance (const std::string&);
        ARDOUR::samplecnt_t parse_as_minsec_distance (const std::string&);
        ARDOUR::samplecnt_t parse_as_bbt_distance (const std::string&);
+       ARDOUR::samplecnt_t parse_as_seconds_distance (const std::string&);
        ARDOUR::samplecnt_t parse_as_samples_distance (const std::string&);
 
        void set_font (Pango::FontDescription);