X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Fexport_profile_manager.h;h=f73085e5ba69ba269f407531f4657448e03f1000;hb=452672f78f5f0f9195bfd48398e29b18a8fb1df7;hp=aff481eced4bc11d05ed659c681dcc90c155d12c;hpb=48dd5afaa57b5485297b9583a4124e9f444acd84;p=ardour.git diff --git a/libs/ardour/ardour/export_profile_manager.h b/libs/ardour/ardour/export_profile_manager.h index aff481eced..f73085e5ba 100644 --- a/libs/ardour/ardour/export_profile_manager.h +++ b/libs/ardour/ardour/export_profile_manager.h @@ -25,10 +25,9 @@ #include #include #include +#include #include -#include -#include #include "pbd/uuid.h" #include "pbd/file_utils.h" @@ -37,16 +36,12 @@ #include "ardour/filesystem_paths.h" #include "ardour/location.h" #include "ardour/types.h" +#include "ardour/export_handler.h" namespace ARDOUR { class ExportHandler; -class ExportTimespan; -class ExportChannelConfiguration; -class ExportFormatSpecification; -class ExportFilename; -class ExportPreset; class Location; class Session; @@ -55,18 +50,18 @@ class ExportProfileManager { public: - ExportProfileManager (Session & s); + ExportProfileManager (Session & s, std::string xml_node_name); ~ExportProfileManager (); void load_profile (); void prepare_for_export (); - typedef boost::shared_ptr PresetPtr; - typedef std::list PresetList; + typedef std::list PresetList; PresetList const & get_presets () { return preset_list; } - bool load_preset (PresetPtr preset); - PresetPtr save_preset (std::string const & name); + bool load_preset (ExportPresetPtr preset); + ExportPresetPtr new_preset (std::string const & name); + ExportPresetPtr save_preset (std::string const & name); void remove_preset (); private: @@ -75,9 +70,11 @@ class ExportProfileManager typedef std::pair FilePair; typedef std::map FileMap; + std::string const xml_node_name; HandlerPtr handler; Session & session; + std::string preset_filename (std::string const & preset_name); void load_presets (); void load_preset_from_disk (PBD::sys::path const & path); @@ -89,9 +86,9 @@ class ExportProfileManager void serialize_global_profile (XMLNode & root); void serialize_local_profile (XMLNode & root); - PresetList preset_list; - PresetPtr current_preset; - FileMap preset_file_map; + PresetList preset_list; + ExportPresetPtr current_preset; + FileMap preset_file_map; std::vector find_file (std::string const & pattern); @@ -101,8 +98,7 @@ class ExportProfileManager /* Timespans */ public: - typedef boost::shared_ptr TimespanPtr; - typedef std::list TimespanList; + typedef std::list TimespanList; typedef boost::shared_ptr TimespanListPtr; typedef std::list LocationList; @@ -111,7 +107,6 @@ class ExportProfileManager BBT, MinSec, Frames, - Off }; struct TimespanState { @@ -136,8 +131,8 @@ class ExportProfileManager typedef boost::shared_ptr TimespanStatePtr; typedef std::list TimespanStateList; - void set_selection_range (nframes_t start = 0, nframes_t end = 0); - std::string set_single_range (nframes_t start, nframes_t end, Glib::ustring name); + void set_selection_range (framepos_t start = 0, framepos_t end = 0); + std::string set_single_range (framepos_t start, framepos_t end, std::string name); TimespanStateList const & get_timespans () { return check_list (timespans); } private: @@ -163,17 +158,17 @@ class ExportProfileManager /* Channel Configs */ public: - typedef boost::shared_ptr ChannelConfigPtr; - struct ChannelConfigState { - ChannelConfigPtr config; + ExportChannelConfigPtr config; - ChannelConfigState (ChannelConfigPtr ptr) : config (ptr) {} + ChannelConfigState (ExportChannelConfigPtr ptr) : config (ptr) {} }; typedef boost::shared_ptr ChannelConfigStatePtr; typedef std::list ChannelConfigStateList; ChannelConfigStateList const & get_channel_configs () { return check_list (channel_configs); } + void clear_channel_configs () { channel_configs.clear(); } + ChannelConfigStatePtr add_channel_config (); private: @@ -184,14 +179,13 @@ class ExportProfileManager /* Formats */ public: - typedef boost::shared_ptr FormatPtr; - typedef std::list FormatList; + typedef std::list FormatList; struct FormatState { boost::shared_ptr list; - FormatPtr format; + ExportFormatSpecPtr format; - FormatState (boost::shared_ptr list, FormatPtr format) : + FormatState (boost::shared_ptr list, ExportFormatSpecPtr format) : list (list), format (format) {} }; typedef boost::shared_ptr FormatStatePtr; @@ -201,9 +195,9 @@ class ExportProfileManager FormatStatePtr duplicate_format_state (FormatStatePtr state); void remove_format_state (FormatStatePtr state); - PBD::sys::path save_format_to_disk (FormatPtr format); - void remove_format_profile (FormatPtr format); - FormatPtr get_new_format (FormatPtr original); + PBD::sys::path save_format_to_disk (ExportFormatSpecPtr format); + void remove_format_profile (ExportFormatSpecPtr format); + ExportFormatSpecPtr get_new_format (ExportFormatSpecPtr original); PBD::Signal0 FormatListChanged; @@ -217,7 +211,7 @@ class ExportProfileManager void load_formats (); - FormatPtr load_format (XMLNode & node); + ExportFormatSpecPtr load_format (XMLNode & node); void load_format_from_disk (PBD::sys::path const & path); boost::shared_ptr format_list; @@ -226,12 +220,10 @@ class ExportProfileManager /* Filenames */ public: - typedef boost::shared_ptr FilenamePtr; - struct FilenameState { - FilenamePtr filename; + ExportFilenamePtr filename; - FilenameState (FilenamePtr ptr) : filename (ptr) {} + FilenameState (ExportFilenamePtr ptr) : filename (ptr) {} }; typedef boost::shared_ptr FilenameStatePtr; typedef std::list FilenameStateList; @@ -240,19 +232,21 @@ class ExportProfileManager FilenameStatePtr duplicate_filename_state (FilenameStatePtr state); void remove_filename_state (FilenameStatePtr state); + std::string get_sample_filename_for_format (ExportFilenamePtr filename, ExportFormatSpecPtr format); + private: FilenameStateList filenames; bool init_filenames (XMLNodeList nodes); - FilenamePtr load_filename (XMLNode & node); + ExportFilenamePtr load_filename (XMLNode & node); /* Warnings */ public: struct Warnings { - std::list errors; - std::list warnings; - std::list conflicting_filenames; + std::list errors; + std::list warnings; + std::list conflicting_filenames; }; boost::shared_ptr get_warnings (); @@ -263,12 +257,16 @@ class ExportProfileManager ChannelConfigStatePtr channel_config_state, FormatStatePtr format_state, FilenameStatePtr filename_state); - - bool check_format (FormatPtr format, uint32_t channels); - bool check_sndfile_format (FormatPtr format, unsigned int channels); + + bool check_format (ExportFormatSpecPtr format, uint32_t channels); + bool check_sndfile_format (ExportFormatSpecPtr format, unsigned int channels); /* Utilities */ + void build_filenames(std::list & result, ExportFilenamePtr filename, + TimespanListPtr timespans, ExportChannelConfigPtr channel_config, + ExportFormatSpecPtr format); + /* Element state lists should never be empty, this is used to check them */ template std::list const &