Change last commit to use it's own variable rather than borrowing solo's
[ardour.git] / libs / ardour / export_filename.cc
index d00b0147a7bcd4bd7833947c34b34ada69cb73fa..077106a4b0a8e0afe73d9bf31d25336300fcf91d 100644 (file)
@@ -19,7 +19,6 @@
 */
 
 #include <string>
-#include "ardour/export_filename.h"
 
 #include <glibmm/miscutils.h>
 #include <glibmm/fileutils.h>
 #include "pbd/convert.h"
 #include "pbd/enumwriter.h"
 
+#include "ardour/libardour_visibility.h"
 #include "ardour/session.h"
 #include "ardour/session_directory.h"
-#include "ardour/export_timespan.h"
+#include "ardour/export_filename.h"
 #include "ardour/export_format_specification.h"
 #include "ardour/export_channel_configuration.h"
+#include "ardour/export_timespan.h"
+#include "ardour/utils.h"
 
 #include "i18n.h"
 
@@ -48,12 +50,15 @@ ExportFilename::ExportFilename (Session & session) :
   include_session (false),
   include_revision (false),
   include_channel_config (false),
+  include_format_name (false),
   include_channel (false),
   include_timespan (true), // Include timespan name always
   include_time (false),
   include_date (false),
   session (session),
-  revision (1)
+  revision (1),
+  date_format (D_None),
+  time_format (T_None)
 {
        time_t rawtime;
        std::time (&rawtime);
@@ -61,9 +66,14 @@ ExportFilename::ExportFilename (Session & session) :
 
        folder = session.session_directory().export_path();
 
-       XMLNode * instant_node = session.instant_xml ("ExportFilename");
-       if (instant_node) {
-               set_state (*instant_node);
+       XMLNode * extra_node = session.extra_xml ("ExportFilename");
+       /* Legacy sessions used Session instant.xml for this */
+       if (!extra_node) {
+               session.instant_xml ("ExportFilename");
+       }
+
+       if (extra_node) {
+               set_state (*extra_node);
        }
 }
 
@@ -84,9 +94,9 @@ ExportFilename::get_state ()
        add_field (node, "time", include_time, enum_2_string (time_format));
        add_field (node, "date", include_date, enum_2_string (date_format));
 
-       XMLNode * instant_node = new XMLNode ("ExportRevision");
-       instant_node->add_property ("revision", to_string (revision, std::dec));
-       session.add_instant_xml (*instant_node);
+       XMLNode * extra_node = new XMLNode ("ExportRevision");
+       extra_node->add_property ("revision", to_string (revision, std::dec));
+       session.add_extra_xml (*extra_node);
 
        return *node;
 }
@@ -118,7 +128,7 @@ ExportFilename::set_state (const XMLNode & node)
                        folder = tmp;
                }
        }
-       
+
        if (folder.empty()) {
                folder = session.session_directory().export_path();
        }
@@ -141,8 +151,13 @@ ExportFilename::set_state (const XMLNode & node)
        include_date = pair.first;
        date_format = (DateFormat) string_2_enum (pair.second, date_format);
 
-       XMLNode * instant_node = session.instant_xml ("ExportRevision");
-       if (instant_node && (prop = instant_node->property ("revision"))) {
+       XMLNode * extra_node = session.extra_xml ("ExportRevision");
+       /* Legacy sessions used Session instant.xml for this */
+       if (!extra_node) {
+               extra_node = session.instant_xml ("ExportRevision");
+       }
+
+       if (extra_node && (prop = extra_node->property ("revision"))) {
                revision = atoi (prop->value());
        }
 
@@ -205,9 +220,17 @@ ExportFilename::get_path (ExportFormatSpecPtr format) const
                filename_empty = false;
        }
 
+       if (include_format_name) {
+               path += filename_empty ? "" : "_";
+               path += format->name();
+               filename_empty = false;
+       }
+
        path += ".";
        path += format->extension ();
 
+       path = legalize_for_universal_path (path);
+
        return Glib::build_filename (folder, path);
 }