23 #include <glibmm/miscutils.h>
24 #include <glibmm/fileutils.h>
37 #include "ardour/utils.h"
48 ExportFilename::ExportFilename (
Session & session) :
49 include_label (false),
50 include_session (false),
51 include_revision (false),
52 include_channel_config (false),
53 include_format_name (false),
54 include_channel (false),
55 include_timespan (true),
88 child->
add_property (
"relative", dir.first ?
"true" :
"false");
111 child = node.
child (
"Folder");
112 if (!child) {
return -1; }
116 if ((prop = child->
property (
"relative"))) {
122 if ((prop = child->
property (
"path"))) {
124 tmp = Glib::build_filename (
folder, prop->
value());
125 if (!Glib::file_test (tmp, Glib::FILE_TEST_EXISTS)) {
160 if (extra_node && (prop = extra_node->
property (
"revision"))) {
171 bool filename_empty =
true;
174 path += filename_empty ?
"" :
"_";
176 filename_empty =
false;
180 path += filename_empty ?
"" :
"_";
182 filename_empty =
false;
186 path += filename_empty ?
"" :
"_";
189 filename_empty =
false;
193 path += filename_empty ?
"" :
"_";
195 filename_empty =
false;
199 path += filename_empty ?
"" :
"_";
201 filename_empty =
false;
205 path += filename_empty ?
"" :
"_";
208 filename_empty =
false;
212 path += filename_empty ?
"" :
"_";
214 filename_empty =
false;
218 path += filename_empty ?
"" :
"_";
220 filename_empty =
false;
224 path += filename_empty ?
"" :
"_";
225 path += format->name();
226 filename_empty =
false;
230 path += format->extension ();
234 return Glib::build_filename (
folder, path);
251 return _(
"Invalid time format");
275 return _(
"Invalid date format");
322 strftime (buffer, 80, format.c_str(),
time_struct);
324 string return_value (buffer);
334 std::cerr <<
"Error adding a field to ExportFilename XML-tree" << std::endl;
339 child->
add_property (
"enabled", enabled ?
"true" :
"false");
340 if (!value.empty()) {
353 for (XMLNodeList::iterator it = children.begin(); it != children.end(); ++it) {
355 if (prop && !prop->
value().compare (name)) {
357 prop = (*it)->property (
"enabled");
358 if (prop && !prop->
value().compare (
"true")) {
364 prop = (*it)->property (
"value");
366 pair.second = prop->
value();
382 string::size_type session_dir_len = session_dir.length();
384 string folder_beginning =
folder.substr (0, session_dir_len);
386 if (!folder_beginning.compare (session_dir)) {
388 pair.second =
folder.substr (session_dir_len);
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))
int atoi(const string &s)
bool set_folder(std::string path)
const std::string & value() const
const std::string root_path() const
FieldPair get_field(XMLNode const &node, std::string const &name)
LIBARDOUR_API const char * revision
LIBPBD_API Transmitter warning
const XMLNodeList & children(const std::string &str=std::string()) const
std::ostream & endmsg(std::ostream &ostr)
int set_state(const XMLNode &)
XMLNode * add_child(const char *)
std::list< XMLNode * > XMLNodeList
std::string get_time_format_str(TimeFormat format) const
std::string get_path(ExportFormatSpecPtr format) const
XMLProperty * property(const char *)
#define string_2_enum(str, e)
ExportChannelConfigPtr channel_config
std::string get_formatted_time(std::string const &format) const
bool string_is_affirmative(const std::string &str)
ExportTimespanPtr timespan
XMLProperty * add_property(const char *name, const std::string &value)
const std::string export_path() const
void set_date_format(DateFormat format)
void set_time_format(TimeFormat format)
LIBARDOUR_API std::string legalize_for_universal_path(const std::string &str)
XMLNode * instant_xml(const std::string &str)
FieldPair analyse_folder()
XMLNode * extra_xml(const std::string &str, bool add_if_missing=false)
XMLNode * child(const char *) const
bool include_channel_config
const SessionDirectory & session_directory() const
void add_extra_xml(XMLNode &)
void add_field(XMLNode *node, std::string const &name, bool enabled, std::string const &value="")
void set_label(std::string value)
std::string string_compose(const std::string &fmt, const T1 &o1)
std::pair< bool, std::string > FieldPair
std::string get_date_format_str(DateFormat format) const