X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_filename.cc;h=201abb934be93a08344db3a5d86a410a43907dec;hb=bc0bb9662e939c1b37f4335c05292a7b0ad21a20;hp=9a05afa5ba8448e5718e585181848c3a21e21a3a;hpb=7099f0ec4e1fe3909cc829dae72897d7ee836326;p=ardour.git diff --git a/libs/ardour/export_filename.cc b/libs/ardour/export_filename.cc index 9a05afa5ba..201abb934b 100644 --- a/libs/ardour/export_filename.cc +++ b/libs/ardour/export_filename.cc @@ -26,6 +26,7 @@ #include "pbd/xml++.h" #include "pbd/convert.h" #include "pbd/enumwriter.h" +#include "pbd/localtime_r.h" #include "ardour/libardour_visibility.h" #include "ardour/session.h" @@ -56,11 +57,13 @@ ExportFilename::ExportFilename (Session & session) : 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); - time_struct = localtime (&rawtime); + localtime_r (&rawtime, &time_struct); folder = session.session_directory().export_path(); @@ -88,6 +91,7 @@ ExportFilename::get_state () add_field (node, "label", include_label, label); add_field (node, "session", include_session); + add_field (node, "timespan", include_timespan); add_field (node, "revision", include_revision); add_field (node, "time", include_time, enum_2_string (time_format)); add_field (node, "date", include_date, enum_2_string (date_format)); @@ -126,7 +130,7 @@ ExportFilename::set_state (const XMLNode & node) folder = tmp; } } - + if (folder.empty()) { folder = session.session_directory().export_path(); } @@ -138,6 +142,9 @@ ExportFilename::set_state (const XMLNode & node) pair = get_field (node, "session"); include_session = pair.first; + pair = get_field (node, "timespan"); + include_timespan = pair.first; + pair = get_field (node, "revision"); include_revision = pair.first; @@ -167,6 +174,18 @@ ExportFilename::get_path (ExportFormatSpecPtr format) const { string path; bool filename_empty = true; + bool with_timespan = include_timespan; + + if (!include_session + && !include_label + && !include_revision + && !include_timespan + && !include_channel_config + && !include_channel + && !include_date + && !include_format_name) { + with_timespan = true; + } if (include_session) { path += filename_empty ? "" : "_"; @@ -187,7 +206,7 @@ ExportFilename::get_path (ExportFormatSpecPtr format) const filename_empty = false; } - if (include_timespan && timespan) { + if (with_timespan && timespan) { path += filename_empty ? "" : "_"; path += timespan->name(); filename_empty = false; @@ -224,6 +243,10 @@ ExportFilename::get_path (ExportFormatSpecPtr format) const filename_empty = false; } + if (path.empty ()) { + path = "export"; + } + path += "."; path += format->extension (); @@ -317,7 +340,7 @@ string ExportFilename::get_formatted_time (string const & format) const { char buffer [80]; - strftime (buffer, 80, format.c_str(), time_struct); + strftime (buffer, 80, format.c_str(), &time_struct); string return_value (buffer); return return_value;