X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_dialog.h;h=13b327fe50d2b051f2d71d96687f32ad6751d681;hb=76c25a4a4459b8e550c3c687458d04db0beaee77;hp=597e2b3c21e97d67f3f46a65d0a4435d0614aca6;hpb=00d7dde42eecb936a20426a16da69db5998cf8b0;p=ardour.git diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h index 597e2b3c21..13b327fe50 100644 --- a/gtk2_ardour/export_dialog.h +++ b/gtk2_ardour/export_dialog.h @@ -49,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; @@ -69,50 +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; + 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 cue_file_label; + Gtk::ComboBoxText cue_file_combo; + Gtk::Label channel_count_label; - Gtk::Alignment channel_count_align; Gtk::ComboBoxText channel_count_combo; Gtk::Label header_format_label; - Gtk::Alignment header_format_align; Gtk::ComboBoxText header_format_combo; Gtk::Label bitdepth_format_label; - Gtk::Alignment bitdepth_format_align; Gtk::ComboBoxText bitdepth_format_combo; Gtk::Label endian_format_label; - Gtk::Alignment endian_format_align; Gtk::ComboBoxText endian_format_combo; Gtk::Label sample_rate_label; - Gtk::Alignment sample_rate_align; Gtk::ComboBoxText sample_rate_combo; Gtk::Label src_quality_label; - Gtk::Alignment src_quality_align; Gtk::ComboBoxText src_quality_combo; Gtk::Label dither_type_label; - Gtk::Alignment dither_type_align; Gtk::ComboBoxText dither_type_combo; - Gtk::Label cue_file_label; - Gtk::Alignment cue_file_align; - Gtk::ComboBoxText cue_file_combo; - Gtk::CheckButton cuefile_only_checkbox; Gtk::Frame file_frame; @@ -120,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; @@ -131,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(); @@ -146,8 +168,9 @@ 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 (); @@ -155,15 +178,10 @@ class ExportDialog : public ArdourDialog 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__ -