silence_end_clock ("silence_end", true, "", true, false, true),
upload_checkbox(_("Upload to Soundcloud")),
+ command_label(_("Command to run post-export (%1=full path & filename, %2=directory, %3=basename):")),
format_table (3, 4),
compatibility_label (_("Compatibility"), Gtk::ALIGN_LEFT),
silence_table.attach (silence_end_clock, 2, 3, 2, 3);
get_vbox()->pack_start (upload_checkbox, false, false);
+ get_vbox()->pack_start (command_label, false, false);
+ get_vbox()->pack_start (command_entry, false, false);
+
/* Format table */
init_format_table();
with_cue.signal_toggled().connect (sigc::mem_fun (*this, &ExportFormatDialog::update_with_cue));
with_toc.signal_toggled().connect (sigc::mem_fun (*this, &ExportFormatDialog::update_with_toc));
upload_checkbox.signal_toggled().connect (sigc::mem_fun (*this, &ExportFormatDialog::update_upload));
+ command_entry.signal_changed().connect (sigc::mem_fun (*this, &ExportFormatDialog::update_command));
cue_toc_vbox.pack_start (with_cue, false, false);
cue_toc_vbox.pack_start (with_toc, false, false);
tag_checkbox.set_active (spec->tag());
upload_checkbox.set_active (spec->upload());
+ command_entry.set_text (spec->command());
}
void
manager.select_upload (upload_checkbox.get_active());
}
+void
+ExportFormatDialog::update_command ()
+{
+ manager.set_command (command_entry.get_text());
+}
+
+void
ExportFormatDialog::update_description()
{
std::string text = ": " + format->description(false);
/* Upload */
Gtk::CheckButton upload_checkbox;
+ Gtk::Label command_label;
+ Gtk::Entry command_entry;
/* Format table */
void update_with_toc ();
void update_with_cue ();
void update_upload ();
+ void update_command ();
Gtk::TreeView sample_format_view;
Gtk::TreeView dither_type_view;
void select_with_cue (bool);
void select_with_toc (bool);
void select_upload (bool);
+ void set_command (std::string);
void select_src_quality (ExportFormatBase::SRCQuality value);
void select_trim_beginning (bool value);
void select_silence_beginning (AnyTime const & time);
void set_with_cue (bool yn) { _with_cue = yn; }
void set_with_toc (bool yn) { _with_toc = yn; }
void set_upload (bool yn) { _upload = yn; }
+ void set_command (std::string command) { _command = command; }
void set_silence_beginning (AnyTime const & value) { _silence_beginning = value; }
void set_silence_end (AnyTime const & value) { _silence_end = value; }
bool with_toc() const { return _with_toc; }
bool with_cue() const { return _with_cue; }
bool upload() const { return _upload; }
+ std::string command() const { return _command; }
bool tag () const { return _tag && supports_tagging; }
bool _with_toc;
bool _with_cue;
bool _upload;
+ std::string _command;
/* serialization helpers */
check_for_description_change ();
}
+void
+ExportFormatManager::set_command (std::string command)
+{
+ current_selection->set_command (command);
+ check_for_description_change ();
+}
+
+void
ExportFormatManager::select_trim_beginning (bool value)
{
current_selection->set_trim_beginning (value);
, _with_toc (false)
, _with_cue (false)
, _upload (false)
+ , _command ("")
{
format_ids.insert (F_None);
endiannesses.insert (E_FileDefault);
root->add_property ("with-cue", _with_cue ? "true" : "false");
root->add_property ("with-toc", _with_toc ? "true" : "false");
root->add_property ("upload", _upload ? "true" : "false");
+ root->add_property ("command", _command);
node = root->add_child ("Encoding");
node->add_property ("id", enum_2_string (format_id()));
_upload = false;
}
+ if ((prop = root.property ("command"))) {
+ _command = prop->value();
+ } else {
+ _command = "";
+ }
+
/* Encoding and SRC */
if ((child = root.child ("Encoding"))) {
if (_upload) {
components.push_back ("Upload");
}
+
+ if (!_command.empty()) {
+ components.push_back ("+");
+ }
+
string desc;
if (include_name) {
desc = _name + ": ";
export_cd_marker_file (current_timespan, fmt, filepath, CDMarkerTOC);
}
+ if (!fmt->command().empty()) {
+ std::string command = string_compose(fmt->command(),
+ filepath,
+ Glib::path_get_dirname(filepath),
+ PBD::basename_nosuffix(filepath)
+ );
+ std::cerr << "running command: " << command << "..." << std::endl;
+ system(command.c_str());
+ }
+
if (fmt->upload()) {
SoundcloudUploader *soundcloud_uploader = new SoundcloudUploader;
std::string token = soundcloud_uploader->Get_Auth_Token(upload_username, upload_password);