X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_dialog.h;h=8e70920b7c472c750f4334968be1846891163525;hb=0d36301907afd612f93a7bfa53724cc9a17724de;hp=f7be550ebf3ee1ff2202bfd7b6ad76053668b0c1;hpb=e493b2b7c4fbbbfc457f02babf9546289b430177;p=ardour.git diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h index f7be550ebf..8e70920b7c 100644 --- a/gtk2_ardour/export_dialog.h +++ b/gtk2_ardour/export_dialog.h @@ -1,5 +1,6 @@ /* - Copyright (C) 1999-2002 Paul Davis + Copyright (C) 2008 Paul Davis + Author: Sakari Bergen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,116 +18,157 @@ */ -#ifndef __ardour_export_dialog_h__ -#define __ardour_export_dialog_h__ +#ifndef __export_dialog_h__ +#define __export_dialog_h__ -#include +#include + +#include "ardour/export_handler.h" +#include "ardour/export_profile_manager.h" -#include +#include "public_editor.h" +#include "export_timespan_selector.h" +#include "export_channel_selector.h" +#include "export_file_notebook.h" +#include "export_preset_selector.h" #include "ardour_dialog.h" -#include +#include -class PublicEditor; +#include "i18n.h" namespace ARDOUR { - class Session; - class AudioRegion; + class ExportStatus; } -class ExportDialog : public ArdourDialog -{ +class ExportTimespanSelector; +class ExportChannelSelector; + +class ExportDialog : public ArdourDialog { + public: - ExportDialog (PublicEditor&, ARDOUR::AudioRegion* r = 0); - ~ExportDialog (); - void connect_to_session (ARDOUR::Session*); - void set_range (jack_nframes_t start, jack_nframes_t end); - void start_export (); + explicit ExportDialog (PublicEditor & editor, Glib::ustring title = _("Export")); + ~ExportDialog (); + + void set_session (ARDOUR::Session* s); + + /* Responses */ + + enum Responses { + RESPONSE_RT, + RESPONSE_FAST, + RESPONSE_CANCEL + }; + + protected: + + typedef boost::shared_ptr HandlerPtr; + typedef boost::shared_ptr ManagerPtr; + + HandlerPtr handler; + ManagerPtr profile_manager; + + // initializes GUI layout + virtual void init_gui (); + + // Must initialize all the shared_ptrs below + virtual void init_components (); + + boost::shared_ptr preset_selector; + boost::shared_ptr timespan_selector; + boost::shared_ptr channel_selector; + boost::shared_ptr file_notebook; + + Gtk::VBox warning_widget; + Gtk::VBox progress_widget; + + Gtk::Label * timespan_label; + Gtk::Label * channels_label; private: - PublicEditor& editor; - ARDOUR::Session* session; - ARDOUR::AudioRegion* audio_region; - Gtk::VBox vpacker; - 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::Combo sample_rate_combo; - Gtk::Label src_quality_label; - Gtk::Combo src_quality_combo; - Gtk::Label dither_type_label; - Gtk::Combo dither_type_combo; - Gtk::Label cue_file_label; - Gtk::Combo cue_file_combo; - Gtk::Label channel_count_label; - Gtk::Combo channel_count_combo; - Gtk::Label header_format_label; - Gtk::Combo header_format_combo; - Gtk::Label bitdepth_format_label; - Gtk::Combo bitdepth_format_combo; - Gtk::Label endian_format_label; - Gtk::Combo endian_format_combo; - Gtk::CheckButton cuefile_only_checkbox; - - Gtk::Frame file_frame; - Gtk::Entry file_entry; - Gtk::HBox file_hbox; - Gtk::Button file_browse_button; - - Gtk::Button ok_button; - Gtk::Button cancel_button; - Gtk::Label cancel_label; - Gtk::ProgressBar progress_bar; - Gtk::ScrolledWindow track_scroll; - Gtk::ScrolledWindow master_scroll; - Gtk::Button track_selector_button; - Gtk::CList track_selector; - Gtk::CList master_selector; - Gtk::FileSelection *file_selector; - ARDOUR::AudioExportSpecification spec; - - static GdkPixmap *check_pixmap; - static GdkBitmap *check_mask; - static GdkPixmap *empty_pixmap; - static GdkBitmap *empty_mask; - - static void *_thread (void *arg); + + void init (); + + void notify_errors (); + void close_dialog (); + + void sync_with_manager (); + void update_warnings (); + void show_conflicting_files (); + + void export_rt (); + void export_fw (); + + void show_progress (); gint progress_timeout (); - sigc::connection progress_connection; - void build_window (); - void end_dialog(); - gint header_chosen (GdkEventAny *ignored); - gint channels_chosen (GdkEventAny *ignored); - gint bitdepth_chosen (GdkEventAny *ignored); - gint sample_rate_chosen (GdkEventAny *ignored); - gint cue_file_type_chosen(GdkEventAny *ignored); - gint track_selector_button_press_event (GdkEventButton *ev); - gint master_selector_button_press_event (GdkEventButton *ev); - - 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 set_state(); - void save_state(); - - static void* _export_region_thread (void *); - void export_region (); + + typedef boost::shared_ptr StatusPtr; + + PublicEditor & editor; + StatusPtr status; + + /*** GUI components ***/ + + /* Warning area */ + + Gtk::HBox warn_hbox; + Gtk::Label warn_label; + Glib::ustring warn_string; + + Gtk::HBox list_files_hbox; + Gtk::Label list_files_label; + Gtk::Button list_files_button; + Glib::ustring list_files_string; + + void add_error (Glib::ustring const & text); + void add_warning (Glib::ustring const & text); + + /* Progress bar */ + + Gtk::Label progress_label; + Gtk::ProgressBar progress_bar; + sigc::connection progress_connection; + + /* Buttons */ + + Gtk::Button * cancel_button; + Gtk::Button * rt_export_button; + Gtk::Button * fast_export_button; + +}; + +class ExportRangeDialog : public ExportDialog +{ + public: + ExportRangeDialog (PublicEditor & editor, Glib::ustring range_id); + + private: + void init_components (); + + Glib::ustring range_id; +}; + +class ExportSelectionDialog : public ExportDialog +{ + public: + ExportSelectionDialog (PublicEditor & editor); + + private: + void init_components (); }; -#endif // __ardour_export_dialog_h__ +class ExportRegionDialog : public ExportDialog +{ + public: + ExportRegionDialog (PublicEditor & editor, ARDOUR::AudioRegion const & region, ARDOUR::AudioTrack & track); + + private: + void init_gui (); + void init_components (); + + ARDOUR::AudioRegion const & region; + ARDOUR::AudioTrack & track; +}; +#endif /* __ardour_export_dialog_h__ */