X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_filename.cc;h=945af25dee12b2adcb73e27d5415c4b1539b5181;hb=dd07428c48bb4df60b9d0c6c3cd524279ab4e524;hp=a5b0a07a60a599d15202b43e3ff8c0f6ff953200;hpb=57bcb2182fa44ffb04f7b255a5676ef4af879b42;p=ardour.git diff --git a/libs/ardour/export_filename.cc b/libs/ardour/export_filename.cc index a5b0a07a60..945af25dee 100644 --- a/libs/ardour/export_filename.cc +++ b/libs/ardour/export_filename.cc @@ -19,7 +19,6 @@ */ #include -#include "ardour/export_filename.h" #include #include @@ -28,11 +27,13 @@ #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" @@ -49,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); @@ -62,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); } } @@ -85,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; } @@ -142,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()); } @@ -206,6 +220,12 @@ 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 ();