summaryrefslogtreecommitdiff
path: root/gtk2_ardour/export_video_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-02-27 23:17:26 +0100
committerRobin Gareus <robin@gareus.org>2015-02-28 02:36:58 +0100
commitc90400364a6d057fc101ceff30b07f4b6863cd84 (patch)
tree1b68128236e91c3731c232ddf1f8af4359a79ad9 /gtk2_ardour/export_video_dialog.cc
parentc0411de949bf3cd1cd9c975efd8618e89f7ae46f (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.cc145
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 ()
{