UI: Add editor_mixer route pointer to session so all UIs can know the same current_st...
[ardour.git] / libs / ardour / ardour / export_filename.h
index 3dccda728ff786fb786d64b7fa5b091d980f1af1..3761f97cb6bf9d404d967f177789863e03ae43e8 100644 (file)
 #define __ardour_export_filename_h__
 
 #include <boost/shared_ptr.hpp>
-#include <glibmm/ustring.h>
+
+#include <string>
+
+#include <ardour/export_pointers.h>
+
 #include "pbd/statefuldestructible.h"
 
 namespace ARDOUR
 {
 
 class Session;
-class ExportTimespan;
-class ExportChannelConfiguration;
-class ExportFormatSpecification;
-
-class ExportFilename {
-  private:
-
-       typedef boost::shared_ptr<ExportTimespan> TimespanPtr;
-       typedef boost::shared_ptr<ExportChannelConfiguration> ChannelConfigPtr;
-       typedef boost::shared_ptr<ExportFormatSpecification const> FormatPtr;
 
+class LIBARDOUR_API ExportFilename {
   public:
 
        enum DateFormat {
@@ -49,7 +44,7 @@ class ExportFilename {
                D_BE,        // big endian (no deliminator)
                D_BEShortY   // big endian short year representation
        };
-       
+
        enum TimeFormat {
                T_None,
                T_NoDelim,
@@ -60,73 +55,74 @@ class ExportFilename {
        friend class ExportElementFactory;
        ExportFilename (Session & session);
 
-  public:      
+  public:
        /* Serialization */
-       
+
        XMLNode & get_state ();
        int set_state (const XMLNode &);
-       
+
        /* data access */
-       
-       Glib::ustring get_path (FormatPtr format) const;
-       Glib::ustring get_folder () const { return folder; }
-       
+
+       std::string get_path (ExportFormatSpecPtr format) const;
+       std::string get_folder () const { return folder; }
+
        TimeFormat get_time_format () const { return time_format; }
        DateFormat get_date_format () const { return date_format; }
-       Glib::ustring get_time_format_str (TimeFormat format) const;
-       Glib::ustring get_date_format_str (DateFormat format) const;
-       
-       Glib::ustring get_label () const { return label; }
+       std::string get_time_format_str (TimeFormat format) const;
+       std::string get_date_format_str (DateFormat format) const;
+
+       std::string get_label () const { return label; }
        uint32_t get_revision () const { return revision; }
-       
+
        /* data modification */
-       
+
        void set_time_format (TimeFormat format);
        void set_date_format (DateFormat format);
-       void set_label (Glib::ustring value);
+       void set_label (std::string value);
        void set_revision (uint32_t value) { revision = value; }
        void set_channel (uint32_t value) { channel = value; }
-       bool set_folder (Glib::ustring path);
-       
-       void set_timespan (TimespanPtr ts) { timespan = ts; }
-       void set_channel_config (ChannelConfigPtr cc) { channel_config = cc; }
-       
+       bool set_folder (std::string path);
+
+       void set_timespan (ExportTimespanPtr ts) { timespan = ts; }
+       void set_channel_config (ExportChannelConfigPtr cc) { channel_config = cc; }
+
        /* public members */
-       
+
        bool include_label;
        bool include_session;
        bool include_revision;
        bool include_channel_config;
+       bool include_format_name;
        bool include_channel;
        bool include_timespan;
        bool include_time;
        bool include_date;
-       
+
   private:
 
        Session & session;
 
-       Glib::ustring   label;
+       std::string   label;
        uint32_t  revision;
        uint32_t  channel;
-       
-       Glib::ustring   folder;
-       
+
+       std::string   folder;
+
        DateFormat date_format;
        TimeFormat time_format;
-       
-       Glib::ustring get_formatted_time (Glib::ustring const & format) const;
-       struct tm * time_struct; // Due to static allocation no destructor or copy-ctor is needed because of this
-       
-       TimespanPtr timespan;
-       ChannelConfigPtr channel_config;
-       
+
+       std::string get_formatted_time (std::string const & format) const;
+       struct tm time_struct;
+
+       ExportTimespanPtr timespan;
+       ExportChannelConfigPtr channel_config;
+
        /* Serialization helpers */
-       
-       typedef std::pair<bool, Glib::ustring> FieldPair;
-       
-       void add_field (XMLNode * node, Glib::ustring const & name, bool enabled, Glib::ustring const & value = "");
-       FieldPair get_field (XMLNode const & node, Glib::ustring const & name);
+
+       typedef std::pair<bool, std::string> FieldPair;
+
+       void add_field (XMLNode * node, std::string const & name, bool enabled, std::string const & value = "");
+       FieldPair get_field (XMLNode const & node, std::string const & name);
        FieldPair analyse_folder ();
 };