diff options
author | Robin Gareus <robin@gareus.org> | 2015-02-27 23:17:26 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-02-28 02:36:58 +0100 |
commit | c90400364a6d057fc101ceff30b07f4b6863cd84 (patch) | |
tree | 1b68128236e91c3731c232ddf1f8af4359a79ad9 /gtk2_ardour/export_video_dialog.cc | |
parent | c0411de949bf3cd1cd9c975efd8618e89f7ae46f (diff) |
prepare saving video-export settings.
* migrate dialog from Editor to UI.
* make it a WM proxied window
* prepare applying state after construction..
Diffstat (limited to 'gtk2_ardour/export_video_dialog.cc')
-rw-r--r-- | gtk2_ardour/export_video_dialog.cc | 145 |
1 files changed, 85 insertions, 60 deletions
diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index 5aa26ea508..139371b21c 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -63,9 +63,8 @@ using namespace PBD; using namespace ARDOUR; using namespace VideoUtils; -ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range) +ExportVideoDialog::ExportVideoDialog () : ArdourDialog (_("Export Video File ")) - , export_range (tme) , outfn_path_label (_("File:"), Gtk::ALIGN_LEFT) , outfn_browse_button (_("Browse")) , invid_path_label (_("Video:"), Gtk::ALIGN_LEFT) @@ -90,8 +89,6 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range , debug_checkbox (_("Debug Mode: Print ffmpeg command and output to stdout.")) #endif { - set_session (s); - set_name ("ExportVideoDialog"); set_modal (true); set_skip_taskbar_hint (true); @@ -144,53 +141,7 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range insnd_combo.set_name ("PaddedButton"); insnd_combo.append_text (string_compose (_("from the %1 session's start to the session's end"), PROGRAM_NAME)); - - frameoffset_t av_offset = ARDOUR_UI::instance()->video_timeline->get_offset(); - if (av_offset < 0 ) { - insnd_combo.append_text (_("from 00:00:00:00 to the video's end")); - } else { - insnd_combo.append_text (_("from the video's start to the video's end")); - } - if (!export_range.empty()) { - insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame() - } - if (range) { - insnd_combo.set_active(2); - } else { - insnd_combo.set_active(0); - } - outfn_path_entry.set_width_chars(38); - outfn_path_entry.set_text (_session->session_directory().export_path() + G_DIR_SEPARATOR +"export.avi"); - - XMLNode* node = _session->extra_xml (X_("Videotimeline")); - if (node) { - bool filenameset = false; - if (node->property(X_("OriginalVideoFile"))) { - std::string filename = node->property(X_("OriginalVideoFile"))->value(); - if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) { - invid_path_entry.set_text (filename); - filenameset = true; - } - } - if (!filenameset - && node->property(X_("Filename")) - && node->property(X_("LocalFile")) - && node->property(X_("LocalFile"))->value() == X_("1") - ) { - std::string filename = node->property(X_("Filename"))->value(); - if (filename.at(0) != G_DIR_SEPARATOR) { - filename = Glib::build_filename (_session->session_directory().video_path(), filename); - } - if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) { - invid_path_entry.set_text (filename); - filenameset = true; - } - } - if (!filenameset) { - invid_path_entry.set_text (X_("")); - } - } l = manage (new Label (_("<b>Settings:</b>"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); l->set_use_markup (); @@ -306,16 +257,6 @@ ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme, bool range fps_combo.append_text("30"); fps_combo.append_text("59.94"); fps_combo.append_text("60"); - float tcfps = _session->timecode_frames_per_second(); - if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); } - else if (fabs(tcfps - 24.0 ) < 0.01) { fps_combo.set_active(1); } - else if (fabs(tcfps - 24.976) < 0.01) { fps_combo.set_active(2); } - else if (fabs(tcfps - 25.0 ) < 0.01) { fps_combo.set_active(3); } - else if (fabs(tcfps - 29.97 ) < 0.01) { fps_combo.set_active(4); } - else if (fabs(tcfps - 30.0 ) < 0.01) { fps_combo.set_active(5); } - else if (fabs(tcfps - 59.94 ) < 0.01) { fps_combo.set_active(6); } - else if (fabs(tcfps - 60.0 ) < 0.01) { fps_combo.set_active(7); } - else { fps_combo.set_active(5); } aspect_combo.set_name ("PaddedButton"); aspect_combo.append_text("4:3"); @@ -358,6 +299,90 @@ ExportVideoDialog::~ExportVideoDialog () if (transcoder) { delete transcoder; transcoder = 0;} } + +void +ExportVideoDialog::apply_state (TimeSelection &tme, bool range) +{ + export_range = tme; + outfn_path_entry.set_text (_session->session_directory().export_path() + G_DIR_SEPARATOR +"export.avi"); + + frameoffset_t av_offset = ARDOUR_UI::instance()->video_timeline->get_offset(); + if (av_offset < 0 ) { + insnd_combo.append_text (_("from 00:00:00:00 to the video's end")); + } else { + insnd_combo.append_text (_("from the video's start to the video's end")); + } + if (!export_range.empty()) { + insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame() + } + if (range) { + insnd_combo.set_active(2); + } else { + insnd_combo.set_active(0); + } + + float tcfps = _session->timecode_frames_per_second(); + if (fabs(tcfps - 23.976) < 0.01) { fps_combo.set_active(0); } + else if (fabs(tcfps - 24.0 ) < 0.01) { fps_combo.set_active(1); } + else if (fabs(tcfps - 24.976) < 0.01) { fps_combo.set_active(2); } + else if (fabs(tcfps - 25.0 ) < 0.01) { fps_combo.set_active(3); } + else if (fabs(tcfps - 29.97 ) < 0.01) { fps_combo.set_active(4); } + else if (fabs(tcfps - 30.0 ) < 0.01) { fps_combo.set_active(5); } + else if (fabs(tcfps - 59.94 ) < 0.01) { fps_combo.set_active(6); } + else if (fabs(tcfps - 60.0 ) < 0.01) { fps_combo.set_active(7); } + else { fps_combo.set_active(5); } + + XMLNode* node = _session->extra_xml (X_("Videotimeline")); + if (node) { + bool filenameset = false; + if (node->property(X_("OriginalVideoFile"))) { + std::string filename = node->property(X_("OriginalVideoFile"))->value(); + if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) { + invid_path_entry.set_text (filename); + filenameset = true; + } + } + if (!filenameset + && node->property(X_("Filename")) + && node->property(X_("LocalFile")) + && node->property(X_("LocalFile"))->value() == X_("1") + ) + { + std::string filename = node->property(X_("Filename"))->value(); + if (filename.at(0) != G_DIR_SEPARATOR) + { + filename = Glib::build_filename (_session->session_directory().video_path(), filename); + } + if (Glib::file_test(filename, Glib::FILE_TEST_EXISTS)) + { + invid_path_entry.set_text (filename); + filenameset = true; + } + } + if (!filenameset) { + invid_path_entry.set_text (X_("")); + } + } + + node = _session->extra_xml (X_("Videoexport")); + if (node) { + if (node->property(X_("OriginalVideoFile"))) { + } + } +} + +XMLNode& +ExportVideoDialog::get_state () +{ + XMLNode* node = new XMLNode (X_("Videoexport")); + return *node; +} + +void +ExportVideoDialog::set_state (const XMLNode &) +{ +} + void ExportVideoDialog::on_show () { |