X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_dialog.h;h=13b327fe50d2b051f2d71d96687f32ad6751d681;hb=eeae80e6d95b5abf5b682c92a3f41d20e4b15746;hp=454b52389cba1a94fa45a4d9b46301d2865a967d;hpb=6772e21f09ba65f479d525d8a64e910b9cc6a6d6;p=ardour.git diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h index 454b52389c..13b327fe50 100644 --- a/gtk2_ardour/export_dialog.h +++ b/gtk2_ardour/export_dialog.h @@ -20,6 +20,7 @@ #ifndef __ardour_export_dialog_h__ #define __ardour_export_dialog_h__ +#include #include #include #include @@ -48,15 +49,17 @@ namespace ARDOUR { class ExportDialog : public ArdourDialog { public: - ExportDialog (PublicEditor&, ARDOUR::AudioRegion* r = 0); + ExportDialog (PublicEditor&); ~ExportDialog (); void connect_to_session (ARDOUR::Session*); - void set_range (jack_nframes_t start, jack_nframes_t end); + virtual void set_range (nframes_t start, nframes_t end); void start_export (); protected: - struct ExportModelColumns : public Gtk::TreeModel::ColumnRecord + ARDOUR::AudioExportSpecification spec; + + struct ExportModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn output; @@ -68,35 +71,71 @@ class ExportDialog : public ArdourDialog }; ExportModelColumns exp_cols; - + + // These methods are intended to be used in constructors of subclasses + void do_not_allow_track_and_master_selection(); + void do_not_allow_channel_count_selection(); + void do_not_allow_export_cd_markers(); + + // Checks the given filename for validity when export gets started. + // Export will interrupt when this method returns 'false'. + // Method is responsible for informing user. + virtual bool is_filepath_valid(string &filepath); + + // Gets called from within do_export. Is responsible for exporting the + // audio data. spec has already been filled with user input before calling + // this method. The dialog will be closed after this function exited. + virtual void export_audio_data() = 0; + + // reads the user input and fills spec with the according values + // filepath: complete path to the target file, including filename + void initSpec(string &filepath); + + void set_progress_fraction(double progress) { + progress_bar.set_fraction (progress); } + + ARDOUR::Session& getSession() { return *session; }; + string get_selected_header_format() { + return header_format_combo.get_active_text(); }; + string get_selected_file_name() { return file_entry.get_text(); }; + private: PublicEditor& editor; ARDOUR::Session* session; - ARDOUR::AudioRegion* audio_region; - Gtk::VBox vpacker; + bool track_and_master_selection_allowed; + bool channel_count_selection_allowed; + bool export_cd_markers_allowed; + Gtk::VBox track_vpacker; Gtk::HBox hpacker; - Gtk::HBox button_box; Gtk::Table format_table; Gtk::Frame format_frame; - Gtk::Label sample_rate_label; - Gtk::ComboBoxText sample_rate_combo; - Gtk::Label src_quality_label; - Gtk::ComboBoxText src_quality_combo; - Gtk::Label dither_type_label; - Gtk::ComboBoxText dither_type_combo; Gtk::Label cue_file_label; Gtk::ComboBoxText cue_file_combo; + Gtk::Label channel_count_label; Gtk::ComboBoxText channel_count_combo; + Gtk::Label header_format_label; Gtk::ComboBoxText header_format_combo; + Gtk::Label bitdepth_format_label; Gtk::ComboBoxText bitdepth_format_combo; + Gtk::Label endian_format_label; Gtk::ComboBoxText endian_format_combo; + + Gtk::Label sample_rate_label; + Gtk::ComboBoxText sample_rate_combo; + + Gtk::Label src_quality_label; + Gtk::ComboBoxText src_quality_combo; + + Gtk::Label dither_type_label; + Gtk::ComboBoxText dither_type_combo; + Gtk::CheckButton cuefile_only_checkbox; Gtk::Frame file_frame; @@ -104,8 +143,8 @@ class ExportDialog : public ArdourDialog Gtk::HBox file_hbox; Gtk::Button file_browse_button; - Gtk::Button ok_button; - Gtk::Button cancel_button; + Gtk::Button* ok_button; + Gtk::Button* cancel_button; Gtk::Label cancel_label; Gtk::ProgressBar progress_bar; Gtk::ScrolledWindow track_scroll; @@ -115,11 +154,10 @@ class ExportDialog : public ArdourDialog Glib::RefPtr track_list; Gtk::TreeView master_selector; Glib::RefPtr master_list; - Gtk::FileSelection *file_selector; - ARDOUR::AudioExportSpecification spec; static void *_thread (void *arg); - gint progress_timeout (); + // sets the export progress in the progress bar + virtual gint progress_timeout (); sigc::connection progress_connection; void build_window (); void end_dialog(); @@ -130,25 +168,20 @@ class ExportDialog : public ArdourDialog void cue_file_type_chosen(); void fill_lists(); + void write_track_and_master_selection_to_spec(); - void do_export_cd_markers (const string& path, const string& cuefile_type); + void do_export_cd_markers (const string& path, const string& cuefile_type); void export_cue_file (ARDOUR::Locations::LocationList& locations, const string& path); void export_toc_file (ARDOUR::Locations::LocationList& locations, const string& path); void do_export (); - gint change_focus_policy (GdkEventAny *, bool); gint window_closed (GdkEventAny *ignored); void track_selector_button_click (); - void initiate_browse (); - void finish_browse (int status); + void browse (); void set_state(); void save_state(); - - static void* _export_region_thread (void *); - void export_region (); }; #endif // __ardour_export_dialog_h__ -