#include <cerrno>
#include <glib.h>
-#include <pbd/gstdio_compat.h>
+#include "pbd/gstdio_compat.h"
#include <glibmm/fileutils.h>
#include <glibmm/miscutils.h>
#include "pbd/enumwriter.h"
+#include "pbd/enum_convert.h"
#include "pbd/xml++.h"
-#include "pbd/convert.h"
#include "ardour/export_profile_manager.h"
#include "ardour/export_format_specification.h"
#include "ardour/session.h"
#include "ardour/broadcast_info.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
+
+namespace PBD {
+ DEFINE_ENUM_CONVERT(ARDOUR::ExportProfileManager::TimeFormat);
+}
using namespace std;
using namespace Glib;
{
ExportProfileManager::ExportProfileManager (Session & s, ExportType type)
- : type(type)
+ : _type(type)
, handler (s.get_export_handler())
, session (s)
}
// ...and each channel config
- filename->include_channel_config = (type == StemExport) ||
+ filename->include_channel_config = (_type == StemExport) ||
(channel_configs.size() > 1);
for(ChannelConfigStateList::iterator cc_it = channel_configs.begin(); cc_it != channel_configs.end(); ++cc_it) {
handler->add_export_config (*ts_it, (*cc_it)->config, (*format_it)->format, filename, b);
if (!preset) { return false; }
XMLNode const * state;
+ /* local state is saved in instant.xml and contains timespan
+ * and channel config for per session.
+ * It may not be present for a given preset/session combination
+ * and is never preset for system-wide presets, but that's OK.
+ */
if ((state = preset->get_local_state())) {
set_local_state (*state);
- } else { ok = false; }
+ }
if ((state = preset->get_global_state())) {
if (!set_global_state (*state)) {
} else {
session_range = session.locations()->session_range_location();
}
-
+
if (!session_range) { return false; }
ExportTimespanPtr timespan = handler->add_timespan();
ExportProfileManager::deserialize_timespan (XMLNode & root)
{
TimespanStatePtr state (new TimespanState (selection_range, ranges));
- XMLProperty const * prop;
XMLNodeList spans = root.children ("Range");
for (XMLNodeList::iterator node_it = spans.begin(); node_it != spans.end(); ++node_it) {
- prop = (*node_it)->property ("id");
- if (!prop) { continue; }
- string id = prop->value();
+ std::string id;
+ if (!(*node_it)->get_property ("id", id)) {
+ continue;
+ }
Location * location = 0;
for (LocationList::iterator it = ranges->begin(); it != ranges->end(); ++it) {
state->timespans->push_back (timespan);
}
- if ((prop = root.property ("format"))) {
- state->time_format = (TimeFormat) string_2_enum (prop->value(), TimeFormat);
- }
+ root.get_property ("format", state->time_format);
if (state->timespans->empty()) {
return TimespanStatePtr();
update_ranges ();
for (TimespanList::iterator it = state->timespans->begin(); it != state->timespans->end(); ++it) {
if ((span = root.add_child ("Range"))) {
- span->add_property ("id", (*it)->range_id());
+ span->set_property ("id", (*it)->range_id());
}
}
- root.add_property ("format", enum_2_string (state->time_format));
+ root.set_property ("format", state->time_format);
return root;
}
string new_name = format->name();
new_name += export_format_suffix;
- /* make sure its legal for the filesystem */
+ /* make sure its legal for the filesystem */
- new_name = legalize_for_path (new_name);
+ new_name = legalize_for_path (new_name);
std::string new_path = Glib::build_filename (export_config_dir, new_name);
tree.write();
}
- FormatListChanged ();
return new_path;
}
ExportProfileManager::FormatStatePtr
ExportProfileManager::deserialize_format (XMLNode & root)
{
- XMLProperty * prop;
+ XMLProperty const * prop;
PBD::UUID id;
if ((prop = root.property ("id"))) {
XMLNode * root = new XMLNode ("ExportFormat");
string id = state->format ? state->format->id().to_s() : "";
- root->add_property ("id", id);
+ root->set_property ("id", id);
return *root;
}
ExportProfileManager::get_sample_filename_for_format (ExportFilenamePtr filename, ExportFormatSpecPtr format)
{
assert (format);
-
+
if (channel_configs.empty()) { return ""; }
std::list<string> filenames;
if (!channel_configs.empty ()) {
channel_config_state = channel_configs.front();
}
-
+
TimespanStatePtr timespan_state = timespans.front();
/*** Check "global" config ***/
check_config (warnings, timespan_state, channel_config_state, *format_it, *filename_it);
}
}
-
+
return warnings;
}
void
ExportProfileManager::check_config (boost::shared_ptr<Warnings> warnings,
- TimespanStatePtr timespan_state,
- ChannelConfigStatePtr channel_config_state,
- FormatStatePtr format_state,
- FilenameStatePtr filename_state)
+ TimespanStatePtr timespan_state,
+ ChannelConfigStatePtr channel_config_state,
+ FormatStatePtr format_state, FilenameStatePtr filename_state)
{
TimespanListPtr timespans = timespan_state->timespans;
ExportChannelConfigPtr channel_config = channel_config_state->config;