+class AudioClock;
+
+class TimeFXDialog : public ArdourDialog, public ProgressReporter
+{
+public:
+ /* We need a position so that BBT mode in the clock can function */
+ TimeFXDialog (Editor& e, bool for_pitch, ARDOUR::samplecnt_t old_length, ARDOUR::samplecnt_t new_length, ARDOUR::samplepos_t position);
+
+ ARDOUR::TimeFXRequest request;
+ Editor& editor;
+ bool pitching;
+ Gtk::ProgressBar progress_bar;
+ ARDOUR::RegionList regions;
+
+ /* SoundTouch */
+ Gtk::CheckButton quick_button;
+ Gtk::CheckButton antialias_button;
+ Gtk::VBox upper_button_box;
+
+ /* RubberBand */
+ Gtk::ComboBoxText stretch_opts_selector;
+ Gtk::Label stretch_opts_label;
+ Gtk::CheckButton precise_button;
+ Gtk::CheckButton preserve_formants_button;
+
+ Gtk::Button* cancel_button;
+ Gtk::Button* action_button;
+ Gtk::VBox packer;
+ int status;
+
+ sigc::connection first_cancel;
+ sigc::connection first_delete;
+ void cancel_in_progress ();
+ gint delete_in_progress (GdkEventAny*);
+
+ float get_time_fraction () const;
+ float get_pitch_fraction () const;
+
+ void start_updates ();
+
+ void on_response (int response_id) {
+ Gtk::Dialog::on_response (response_id);
+ }
+
+ void hide () {
+ regions.clear ();
+ ArdourDialog::hide ();
+ }
+
+private:
+ ARDOUR::samplecnt_t original_length;
+ Gtk::Adjustment pitch_octave_adjustment;
+ Gtk::Adjustment pitch_semitone_adjustment;
+ Gtk::Adjustment pitch_cent_adjustment;
+ Gtk::SpinButton pitch_octave_spinner;
+ Gtk::SpinButton pitch_semitone_spinner;
+ Gtk::SpinButton pitch_cent_spinner;
+ Gtk::Adjustment duration_adjustment;
+ AudioClock* duration_clock;
+ bool ignore_adjustment_change;
+ bool ignore_clock_change;
+ sigc::connection update_connection;
+ float progress;