#include <string>
#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <sigc++/signal.h>
-#include <sigc++/trackable.h>
-#include "ardour/export_formats.h"
+#include "pbd/signals.h"
-using std::string;
+#include "ardour/export_formats.h"
+#include "ardour/export_pointers.h"
namespace ARDOUR
{
class ExportFormatSpecification;
class AnyTime;
-class ExportFormatManager : public sigc::trackable
+class LIBARDOUR_API ExportFormatManager : public PBD::ScopedConnectionList
{
public:
- typedef boost::shared_ptr<ExportFormatCompatibility> CompatPtr;
- typedef boost::weak_ptr<ExportFormatCompatibility> WeakCompatPtr;
- typedef std::list<CompatPtr> CompatList;
-
- typedef boost::shared_ptr<ExportFormat> FormatPtr;
- typedef boost::weak_ptr<ExportFormat> WeakFormatPtr;
- typedef std::list<FormatPtr> FormatList;
-
+ typedef std::list<ExportFormatCompatibilityPtr> CompatList;
+ typedef std::list<ExportFormatPtr> FormatList;
+
typedef HasSampleFormat::SampleFormatPtr SampleFormatPtr;
typedef HasSampleFormat::SampleFormatList SampleFormatList;
typedef HasSampleFormat::WeakSampleFormatPtr WeakSampleFormatPtr;
-
+
typedef HasSampleFormat::DitherTypePtr DitherTypePtr;
typedef HasSampleFormat::WeakDitherTypePtr WeakDitherTypePtr;
-
- typedef boost::shared_ptr<ExportFormatSpecification> SpecPtr;
- typedef boost::shared_ptr<ExportFormatBase> FormatBasePtr;
-
+
/* Quality states */
-
+
class QualityState : public ExportFormatBase::SelectableCompatible {
- public:
- QualityState (ExportFormatBase::Quality quality, Glib::ustring name) :
- quality (quality) { set_name (name); }
+ public:
+ QualityState (ExportFormatBase::Quality quality, std::string name) :
+ quality (quality) { set_name (name); }
ExportFormatBase::Quality quality;
};
typedef boost::shared_ptr<QualityState> QualityPtr;
typedef boost::weak_ptr<QualityState> WeakQualityPtr;
typedef std::list<QualityPtr> QualityList;
-
+
/* Sample rate states */
-
+
class SampleRateState : public ExportFormatBase::SelectableCompatible {
public:
- SampleRateState (ExportFormatBase::SampleRate rate, Glib::ustring name) :
- rate (rate) { set_name (name); }
+ SampleRateState (ExportFormatBase::SampleRate rate, std::string name)
+ : rate (rate) { set_name (name); }
ExportFormatBase::SampleRate rate;
};
typedef boost::shared_ptr<SampleRateState> SampleRatePtr;
public:
- explicit ExportFormatManager (SpecPtr specification);
+ explicit ExportFormatManager (ExportFormatSpecPtr specification);
~ExportFormatManager ();
/* Signals */
- sigc::signal<void, bool> CompleteChanged;
+ PBD::Signal1<void,bool> CompleteChanged;
+ PBD::Signal0<void> DescriptionChanged;
/* Access to lists */
QualityList const & get_qualities () { return qualities; }
FormatList const & get_formats () { return formats; }
SampleRateList const & get_sample_rates () { return sample_rates; }
-
+
/* Non interactive selections */
-
- void set_name (Glib::ustring name);
-
+
+ void set_name (std::string name);
+
+ void select_with_cue (bool);
+ void select_with_toc (bool);
+ void select_with_mp4chaps (bool);
+ void select_upload (bool);
+ void set_command (std::string);
void select_src_quality (ExportFormatBase::SRCQuality value);
void select_trim_beginning (bool value);
void select_silence_beginning (AnyTime const & time);
void init_formats ();
void init_sample_rates ();
- void add_compatibility (CompatPtr ptr);
+ void add_compatibility (ExportFormatCompatibilityPtr ptr);
void add_quality (QualityPtr ptr);
- void add_format (FormatPtr ptr);
+ void add_format (ExportFormatPtr ptr);
void add_sample_rate (SampleRatePtr ptr);
/* Connected to signals */
-
- void change_compatibility_selection (bool select, WeakCompatPtr const & compat);
+
+ void change_compatibility_selection (bool select, WeakExportFormatCompatibilityPtr const & compat);
void change_quality_selection (bool select, WeakQualityPtr const & quality);
- void change_format_selection (bool select, WeakFormatPtr const & format);
+ void change_format_selection (bool select, WeakExportFormatPtr const & format);
void change_sample_rate_selection (bool select, WeakSampleRatePtr const & rate);
-
+
void change_sample_format_selection (bool select, WeakSampleFormatPtr const & format);
void change_dither_type_selection (bool select, WeakDitherTypePtr const & type);
-
+
/* Do actual selection */
-
- void select_compatibility (WeakCompatPtr const & compat);
+
+ void select_compatibility (WeakExportFormatCompatibilityPtr const & compat);
void select_quality (QualityPtr const & quality);
- void select_format (FormatPtr const & format);
+ void select_format (ExportFormatPtr const & format);
void select_sample_rate (SampleRatePtr const & rate);
-
+
void select_sample_format (SampleFormatPtr const & format);
void select_dither_type (DitherTypePtr const & type);
-
+
bool pending_selection_change;
void selection_changed ();
-
+ void check_for_description_change ();
+
/* Formats and compatibilities */
-
+
QualityPtr get_selected_quality ();
- FormatPtr get_selected_format ();
+ ExportFormatPtr get_selected_format ();
SampleRatePtr get_selected_sample_rate ();
-
+
SampleFormatPtr get_selected_sample_format ();
-
- FormatBasePtr get_compatibility_intersection ();
-
- FormatBasePtr universal_set;
- SpecPtr current_selection;
-
+
+ ExportFormatBasePtr get_compatibility_intersection ();
+
+ ExportFormatBasePtr universal_set;
+ ExportFormatSpecPtr current_selection;
+
CompatList compatibilities;
QualityList qualities;
FormatList formats;
SampleRateList sample_rates;
+ std::string prev_description;
+
};
} // namespace ARDOUR