Use XMLNode::get/set_property in ExportVideoDialog class

This commit is contained in:
Tim Mayberry 2016-08-29 17:18:45 +10:00
parent a8420d4b6b
commit 0bfdab738b

View file

@ -371,20 +371,18 @@ ExportVideoDialog::apply_state (TimeSelection &tme, bool range)
XMLNode* node = _session->extra_xml (X_("Videotimeline")); XMLNode* node = _session->extra_xml (X_("Videotimeline"));
bool filenameset = false; bool filenameset = false;
if (node) { if (node) {
if (node->property(X_("OriginalVideoFile"))) { std::string filename;
std::string filename = node->property(X_("OriginalVideoFile"))->value(); if (node->get_property(X_("OriginalVideoFile"), filename)) {
if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) { if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) {
invid_path_entry.set_text (filename); invid_path_entry.set_text (filename);
filenameset = true; filenameset = true;
} }
} }
if (!filenameset
&& node->property(X_("Filename")) bool local_file;
&& node->property(X_("LocalFile"))
&& node->property(X_("LocalFile"))->value() == X_("1") if (!filenameset && node->get_property (X_("Filename"), filename) &&
) node->get_property (X_("LocalFile"), local_file) && local_file) {
{
std::string filename = node->property(X_("Filename"))->value();
if (filename.at(0) != G_DIR_SEPARATOR) if (filename.at(0) != G_DIR_SEPARATOR)
{ {
filename = Glib::build_filename (_session->session_directory().video_path(), filename); filename = Glib::build_filename (_session->session_directory().video_path(), filename);
@ -402,55 +400,78 @@ ExportVideoDialog::apply_state (TimeSelection &tme, bool range)
node = _session->extra_xml (X_("Videoexport")); node = _session->extra_xml (X_("Videoexport"));
if (node) { if (node) {
XMLProperty const * prop; bool yn;
prop = node->property (X_("ChangeGeometry")); if (node->get_property (X_("ChangeGeometry"), yn)) {
if (prop) { scale_checkbox.set_active(atoi(prop->value())?true:false); } scale_checkbox.set_active (yn);
prop = node->property (X_("KeepAspect")); }
if (prop) { scale_aspect.set_active(atoi(prop->value())?true:false); } if (node->get_property (X_("KeepAspect"), yn)) {
prop = node->property (X_("ChangeAspect")); scale_aspect.set_active (yn);
if (prop) { aspect_checkbox.set_active(atoi(prop->value())?true:false); } }
prop = node->property (X_("NormalizeAudio")); if (node->get_property (X_("ChangeAspect"), yn)) {
if (prop) { normalize_checkbox.set_active(atoi(prop->value())?true:false); } aspect_checkbox.set_active (yn);
prop = node->property (X_("TwoPassEncode")); }
if (prop) { twopass_checkbox.set_active(atoi(prop->value())?true:false); } if (node->get_property (X_("NormalizeAudio"), yn)) {
prop = node->property (X_("CodecOptimzations")); normalize_checkbox.set_active (yn);
if (prop) { optimizations_checkbox.set_active(atoi(prop->value())?true:false); } }
prop = node->property (X_("Deinterlace")); if (node->get_property (X_("TwoPassEncode"), yn)) {
if (prop) { deinterlace_checkbox.set_active(atoi(prop->value())?true:false); } twopass_checkbox.set_active (yn);
prop = node->property (X_("BFrames")); }
if (prop) { bframes_checkbox.set_active(atoi(prop->value())?true:false); } if (node->get_property (X_("CodecOptimzations"), yn)) {
prop = node->property (X_("ChangeFPS")); optimizations_checkbox.set_active (yn);
if (prop) { fps_checkbox.set_active(atoi(prop->value())?true:false); } }
prop = node->property (X_("Metadata")); if (node->get_property (X_("Deinterlace"), yn)) {
if (prop) { meta_checkbox.set_active(atoi(prop->value())?true:false); } deinterlace_checkbox.set_active (yn);
}
if (node->get_property (X_("BFrames"), yn)) {
bframes_checkbox.set_active (yn);
}
if (node->get_property (X_("ChangeFPS"), yn)) {
fps_checkbox.set_active (yn);
}
if (node->get_property (X_("Metadata"), yn)) {
meta_checkbox.set_active (yn);
}
prop = node->property (X_("Format")); std::string str;
if (prop && !prop->value().empty()) { change_file_extension( "." + prop->value()); } if (node->get_property (X_("Format"), str) && !str.empty()) {
change_file_extension ("." + str);
}
_suspend_signals = true; _suspend_signals = true;
prop = node->property (X_("Width")); double val;
if (prop) { width_spinner.set_value(atoi(prop->value())); } if (node->get_property (X_("Width"), val)) {
prop = node->property (X_("Height")); width_spinner.set_value (val);
if (prop) { height_spinner.set_value(atoi(prop->value())); } }
if (node->get_property (X_("Height"), val)) {
height_spinner.set_value (val);
}
_suspend_signals = false; _suspend_signals = false;
prop = node->property (X_("FPS")); if (fps_checkbox.get_active () && node->get_property (X_("FPS"), val)) {
if (prop && fps_checkbox.get_active()) { tcfps = atof(prop->value()); } tcfps = val;
}
prop = node->property (X_("Preset")); if (node->get_property (X_("Preset"), str)) {
if (prop) { preset_combo.set_active_text(prop->value()); } preset_combo.set_active_text (str);
prop = node->property (X_("VCodec")); }
if (prop) { video_codec_combo.set_active_text(prop->value()); } if (node->get_property (X_("VCodec"), str)) {
prop = node->property (X_("ACodec")); video_codec_combo.set_active_text (str);
if (prop) { audio_codec_combo.set_active_text(prop->value()); } }
prop = node->property (X_("VBitrate")); if (node->get_property (X_("ACodec"), str)) {
if (prop) { video_bitrate_combo.set_active_text(prop->value()); } audio_codec_combo.set_active_text (str);
prop = node->property (X_("ABitrate")); }
if (prop) { audio_bitrate_combo.set_active_text(prop->value()); } if (node->get_property (X_("VBitrate"), str)) {
prop = node->property (X_("AspectRatio")); video_bitrate_combo.set_active_text (str);
if (prop) { aspect_combo.set_active_text(prop->value()); } }
prop = node->property (X_("SampleRate")); if (node->get_property (X_("ABitrate"), str)) {
if (prop) { audio_samplerate_combo.set_active_text(prop->value()); } audio_bitrate_combo.set_active_text (str);
}
if (node->get_property (X_("AspectRatio"), str)) {
aspect_combo.set_active_text (str);
}
if (node->get_property (X_("SampleRate"), str)) {
audio_samplerate_combo.set_active_text (str);
}
} }
if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); } if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); }
@ -484,30 +505,30 @@ ExportVideoDialog::get_state ()
{ {
LocaleGuard lg; LocaleGuard lg;
XMLNode* node = new XMLNode (X_("Videoexport")); XMLNode* node = new XMLNode (X_("Videoexport"));
node->add_property (X_("ChangeGeometry"), scale_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("ChangeGeometry"), scale_checkbox.get_active());
node->add_property (X_("KeepAspect"), scale_aspect.get_active() ? X_("1") : X_("0")); node->set_property (X_("KeepAspect"), scale_aspect.get_active());
node->add_property (X_("ChangeAspect"), aspect_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("ChangeAspect"), aspect_checkbox.get_active());
node->add_property (X_("NormalizeAudio"), normalize_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("NormalizeAudio"), normalize_checkbox.get_active());
node->add_property (X_("TwoPassEncode"), twopass_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("TwoPassEncode"), twopass_checkbox.get_active());
node->add_property (X_("CodecOptimzations"), optimizations_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("CodecOptimzations"), optimizations_checkbox.get_active());
node->add_property (X_("Deinterlace"), deinterlace_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("Deinterlace"), deinterlace_checkbox.get_active());
node->add_property (X_("BFrames"), bframes_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("BFrames"), bframes_checkbox.get_active());
node->add_property (X_("ChangeFPS"), fps_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("ChangeFPS"), fps_checkbox.get_active());
node->add_property (X_("Metadata"), meta_checkbox.get_active() ? X_("1") : X_("0")); node->set_property (X_("Metadata"), meta_checkbox.get_active());
node->add_property (X_("Format"), get_file_extension(outfn_path_entry.get_text())); node->set_property (X_("Format"), get_file_extension(outfn_path_entry.get_text()));
node->add_property (X_("Width"), width_spinner.get_value()); node->set_property (X_("Width"), width_spinner.get_value());
node->add_property (X_("Height"), height_spinner.get_value()); node->set_property (X_("Height"), height_spinner.get_value());
node->add_property (X_("Preset"), preset_combo.get_active_text()); node->set_property (X_("Preset"), preset_combo.get_active_text());
node->add_property (X_("VCodec"), video_codec_combo.get_active_text()); node->set_property (X_("VCodec"), video_codec_combo.get_active_text());
node->add_property (X_("ACodec"), audio_codec_combo.get_active_text()); node->set_property (X_("ACodec"), audio_codec_combo.get_active_text());
node->add_property (X_("VBitrate"), video_bitrate_combo.get_active_text()); node->set_property (X_("VBitrate"), video_bitrate_combo.get_active_text());
node->add_property (X_("ABitrate"), audio_bitrate_combo.get_active_text()); node->set_property (X_("ABitrate"), audio_bitrate_combo.get_active_text());
node->add_property (X_("AspectRatio"), aspect_combo.get_active_text()); node->set_property (X_("AspectRatio"), aspect_combo.get_active_text());
node->add_property (X_("SampleRate"), audio_samplerate_combo.get_active_text()); node->set_property (X_("SampleRate"), audio_samplerate_combo.get_active_text());
node->add_property (X_("FPS"), fps_combo.get_active_text()); node->set_property (X_("FPS"), fps_combo.get_active_text());
return *node; return *node;
} }