X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fexport_format_dialog.h;h=8d37ded2cdd5201c690cf73c82c8e277de398036;hb=a366fba7d0933a8f2d97d95fefcbcdc9692d2117;hp=fed081f9f02937663d31eeacc03b6fb6d752b35e;hpb=b5a57cc78c92b1d887b7e8de040d8663a9ba187e;p=ardour.git diff --git a/gtk2_ardour/export_format_dialog.h b/gtk2_ardour/export_format_dialog.h index fed081f9f0..8d37ded2cd 100644 --- a/gtk2_ardour/export_format_dialog.h +++ b/gtk2_ardour/export_format_dialog.h @@ -21,24 +21,25 @@ #ifndef __export_format_dialog_h__ #define __export_format_dialog_h__ -#include -#include -#include -#include +#include "ardour/types.h" +#include "ardour/export_format_manager.h" +#include "ardour/export_format_compatibility.h" +#include "ardour/export_formats.h" -#include +#include "pbd/xml++.h" +#include "pbd/signals.h" #include "ardour_dialog.h" #include "audio_clock.h" #include -class ExportFormatDialog : public ArdourDialog { +class ExportFormatDialog : public ArdourDialog, public PBD::ScopedConnectionList { private: - typedef ARDOUR::ExportFormatManager::WeakCompatPtr WeakCompatPtr; + typedef ARDOUR::WeakExportFormatCompatibilityPtr WeakCompatPtr; + typedef ARDOUR::WeakExportFormatPtr WeakFormatPtr; typedef ARDOUR::ExportFormatManager::WeakQualityPtr WeakQualityPtr; - typedef ARDOUR::ExportFormatManager::WeakFormatPtr WeakFormatPtr; typedef ARDOUR::ExportFormatManager::WeakSampleRatePtr WeakSampleRatePtr; typedef ARDOUR::ExportFormatManager::WeakSampleFormatPtr WeakSampleFormatPtr; typedef ARDOUR::ExportFormatManager::WeakDitherTypePtr WeakDitherTypePtr; @@ -57,9 +58,9 @@ class ExportFormatDialog : public ArdourDialog { FormatPtr format; ARDOUR::ExportFormatManager manager; - + XMLNode & original_state; - + ARDOUR::AnyTime silence_start; ARDOUR::AnyTime silence_end; @@ -67,7 +68,7 @@ class ExportFormatDialog : public ArdourDialog { void revert (); /*** Init functions ***/ - + void load_state (FormatPtr spec); void init_format_table (); void init_encoding_option_widgets (); @@ -75,71 +76,73 @@ class ExportFormatDialog : public ArdourDialog { /*** Interactive selections ***/ /* These are connected to signals from GUI components, and should change element states */ - - void update_compatibility_selection (Glib::ustring const & path); + + void update_compatibility_selection (std::string const & path); void update_quality_selection (); void update_format_selection (); void update_sample_rate_selection (); void update_sample_format_selection (); void update_dither_type_selection (); - + template void update_selection (Glib::RefPtr & list, Gtk::TreeView & view, ColsT & cols); - + /* These are connected to signals from elements, and should only update the gui */ - + void change_compatibility_selection (bool select, WeakCompatPtr compat); - + void change_quality_selection (bool select, WeakQualityPtr quality); void change_format_selection (bool select, WeakFormatPtr format); void change_sample_rate_selection (bool select, WeakSampleRatePtr rate); void change_sample_format_selection (bool select, WeakSampleFormatPtr format); void change_dither_type_selection (bool select, WeakDitherTypePtr type); - + template void change_selection (bool select, boost::weak_ptr w_ptr, Glib::RefPtr & list, Gtk::TreeView & view, ColsT & cols); - + void change_quality_compatibility (bool compatibility, WeakQualityPtr quality); void change_format_compatibility (bool compatibility, WeakFormatPtr format); void change_sample_rate_compatibility (bool compatibility, WeakSampleRatePtr rate); void change_sample_format_compatibility (bool compatibility, WeakSampleFormatPtr format); void change_dither_type_compatibility (bool compatibility, WeakDitherTypePtr type); - + template void change_compatibility (bool compatibility, boost::weak_ptr w_ptr, Glib::RefPtr & list, ColsT & cols, - Glib::ustring const & c_incompatible = "red", Glib::ustring const & c_compatible = "white"); - + std::string const & c_incompatible = "red", std::string const & c_compatible = "white"); + + void update_description(); + uint32_t applying_changes_from_engine; - + /*** Non-interactive selections ***/ - + void update_name (); - + void update_trim_start_selection (); void update_trim_end_selection (); - + void update_normalize_selection (); void update_silence_start_selection (); void update_silence_end_selection (); - + void update_clock (AudioClock & clock, ARDOUR::AnyTime const & time); void update_time (ARDOUR::AnyTime & time, AudioClock const & clock); - + void update_src_quality_selection (); void update_tagging_selection (); - + /*** Encoding options */ - - void change_encoding_options (ARDOUR::ExportFormatManager::FormatPtr ptr); - + + void change_encoding_options (ARDOUR::ExportFormatPtr ptr); + void empty_encoding_option_table (); void remove_widget (Gtk::Widget & to_remove, Gtk::Container * remove_from); - + void show_linear_enconding_options (boost::shared_ptr ptr); void show_ogg_enconding_options (boost::shared_ptr ptr); void show_flac_enconding_options (boost::shared_ptr ptr); void show_bwf_enconding_options (boost::shared_ptr ptr); - + void fill_sample_format_lists (boost::shared_ptr ptr); /*** GUI components ***/ @@ -150,159 +153,168 @@ class ExportFormatDialog : public ArdourDialog { Gtk::Label name_label; Gtk::Entry name_entry; - + Gtk::Label name_generated_part; + /* Normalize */ - + Gtk::HBox normalize_hbox; Gtk::CheckButton normalize_checkbox; Gtk::SpinButton normalize_spinbutton; Gtk::Adjustment normalize_adjustment; Gtk::Label normalize_db_label; - + /* Silence */ - + Gtk::Table silence_table; - + Gtk::CheckButton trim_start_checkbox; Gtk::CheckButton silence_start_checkbox; AudioClock silence_start_clock; - + Gtk::CheckButton trim_end_checkbox; Gtk::CheckButton silence_end_checkbox; AudioClock silence_end_clock; - + /* Format table */ - + struct CompatibilityCols : public Gtk::TreeModelColumnRecord { public: - Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn selected; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn ptr; + Gtk::TreeModelColumn selected; + Gtk::TreeModelColumn label; + CompatibilityCols () { add(ptr); add(selected); add(label); } }; CompatibilityCols compatibility_cols; Glib::RefPtr compatibility_list; - + /* Hack to disallow row selection in compatibilities */ void prohibit_compatibility_selection (); sigc::connection compatibility_select_connection; - + struct QualityCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn color; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn color; + Gtk::TreeModelColumn label; + QualityCols () { add(ptr); add(color); add(label); } }; QualityCols quality_cols; Glib::RefPtr quality_list; - + struct FormatCols : public Gtk::TreeModelColumnRecord { public: - Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn color; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn ptr; + Gtk::TreeModelColumn color; + Gtk::TreeModelColumn label; + FormatCols () { add(ptr); add(color); add(label); } - }; + }; FormatCols format_cols; Glib::RefPtr format_list; - + struct SampleRateCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn color; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn color; + Gtk::TreeModelColumn label; + SampleRateCols () { add(ptr); add(color); add(label); } }; SampleRateCols sample_rate_cols; Glib::RefPtr sample_rate_list; - + Gtk::Table format_table; - + Gtk::Label compatibility_label; Gtk::Label quality_label; Gtk::Label format_label; Gtk::Label sample_rate_label; - + Gtk::TreeView compatibility_view; Gtk::TreeView quality_view; Gtk::TreeView format_view; Gtk::TreeView sample_rate_view; - + /* SRC quality combo */ - + struct SRCQualityCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn id; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn label; + SRCQualityCols () { add(id); add(label); } }; SRCQualityCols src_quality_cols; Glib::RefPtr src_quality_list; - + Gtk::Label src_quality_label; Gtk::ComboBox src_quality_combo; /* Common encoding option components */ - + Gtk::VBox encoding_options_vbox; Gtk::Label encoding_options_label; - + Gtk::Table encoding_options_table; /* Other common components */ - + Gtk::Button * revert_button; Gtk::Button * close_button; - + /*** Changing encoding option stuff ***/ - + /* Linear */ - + struct SampleFormatCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn color; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn color; + Gtk::TreeModelColumn label; + SampleFormatCols () { add(ptr); add(color); add(label); } }; SampleFormatCols sample_format_cols; Glib::RefPtr sample_format_list; - + struct DitherTypeCols : public Gtk::TreeModelColumnRecord { public: Gtk::TreeModelColumn ptr; - Gtk::TreeModelColumn color; - Gtk::TreeModelColumn label; - + Gtk::TreeModelColumn color; + Gtk::TreeModelColumn label; + DitherTypeCols () { add(ptr); add (color); add(label); } }; DitherTypeCols dither_type_cols; Glib::RefPtr dither_type_list; - + Gtk::Label sample_format_label; Gtk::Label dither_label; - + + Gtk::CheckButton with_cue; + Gtk::CheckButton with_toc; + + Gtk::VBox cue_toc_vbox; + + void update_with_toc (); + void update_with_cue (); + Gtk::TreeView sample_format_view; Gtk::TreeView dither_type_view; - + /* Tagging */ - + Gtk::CheckButton tag_checkbox; - + }; #endif /* __export_format_dialog_h__ */