Rename export dialogue to export video.
authorCarl Hetherington <cth@carlh.net>
Tue, 25 Aug 2020 19:06:53 +0000 (21:06 +0200)
committerCarl Hetherington <cth@carlh.net>
Tue, 25 Aug 2020 19:06:53 +0000 (21:06 +0200)
src/tools/dcpomatic.cc
src/wx/export_dialog.cc [deleted file]
src/wx/export_dialog.h [deleted file]
src/wx/export_video_file_dialog.cc [new file with mode: 0644]
src/wx/export_video_file_dialog.h [new file with mode: 0644]
src/wx/wscript

index fe76c60436f2a50732872abc810a4a74444d5e66..9401bc3405f8e995551f2fdd74fc39a3f943f62f 100644 (file)
@@ -45,8 +45,8 @@
 #include "wx/save_template_dialog.h"
 #include "wx/templates_dialog.h"
 #include "wx/nag_dialog.h"
-#include "wx/export_dialog.h"
 #include "wx/export_subtitles_dialog.h"
+#include "wx/export_video_file_dialog.h"
 #include "wx/paste_dialog.h"
 #include "wx/focus_manager.h"
 #include "wx/html_dialog.h"
@@ -228,7 +228,7 @@ enum {
        ID_jobs_make_kdms,
        ID_jobs_make_dkdms,
        ID_jobs_make_self_dkdm,
-       ID_jobs_export,
+       ID_jobs_export_video_file,
        ID_jobs_export_subtitles,
        ID_jobs_send_dcp_to_tms,
        ID_jobs_show_dcp,
@@ -322,7 +322,7 @@ public:
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dkdms, this),         ID_jobs_make_dkdms);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dcp_batch, this),     ID_jobs_make_dcp_batch);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_self_dkdm, this),     ID_jobs_make_self_dkdm);
-               Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export, this),             ID_jobs_export);
+               Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export_video_file, this),  ID_jobs_export_video_file);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export_subtitles, this),   ID_jobs_export_subtitles);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_send_dcp_to_tms, this),    ID_jobs_send_dcp_to_tms);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_show_dcp, this),           ID_jobs_show_dcp);
@@ -955,9 +955,10 @@ private:
                d->Destroy ();
        }
 
-       void jobs_export ()
+
+       void jobs_export_video_file ()
        {
-               ExportDialog* d = new ExportDialog (this, _film->isdcf_name(true));
+               ExportVideoFileDialog* d = new ExportVideoFileDialog (this, _film->isdcf_name(true));
                if (d->ShowModal() == wxID_OK) {
                        if (boost::filesystem::exists(d->path())) {
                                bool ok = confirm_dialog(
@@ -972,21 +973,15 @@ private:
                        }
 
                        shared_ptr<TranscodeJob> job (new TranscodeJob (_film));
-                       if (d->format() == EXPORT_FORMAT_SUBTITLES_DCP) {
-                               job->set_encoder (
-                                       shared_ptr<SubtitleEncoder>(new SubtitleEncoder(_film, job, d->path(), d->split_reels()))
-                                       );
-                       } else {
-                               job->set_encoder (
-                                       shared_ptr<FFmpegEncoder> (
-                                               new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->split_streams(), d->x264_crf()
+                       job->set_encoder (
+                               shared_ptr<FFmpegEncoder> (
+                                       new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->split_streams(), d->x264_crf()
 #ifdef DCPOMATIC_VARIANT_SWAROOP
-                                                                  , optional<dcp::Key>(), optional<string>()
+                                                          , optional<dcp::Key>(), optional<string>()
 #endif
-                                                       )
                                                )
-                                       );
-                       }
+                                       )
+                               );
                        JobManager::instance()->add (job);
                }
                d->Destroy ();
@@ -1351,7 +1346,7 @@ private:
                add_item (jobs_menu, _("Make &DKDMs...\tCtrl-D"), ID_jobs_make_dkdms, NEEDS_FILM);
                add_item (jobs_menu, _("Make DKDM for DCP-o-matic..."), ID_jobs_make_self_dkdm, NEEDS_FILM | NEEDS_ENCRYPTION);
                jobs_menu->AppendSeparator ();
-               add_item (jobs_menu, _("Export video file...\tCtrl-E"), ID_jobs_export, NEEDS_FILM);
+               add_item (jobs_menu, _("Export video file...\tCtrl-E"), ID_jobs_export_video_file, NEEDS_FILM);
                add_item (jobs_menu, _("Export subtitles..."), ID_jobs_export_subtitles, NEEDS_FILM);
                jobs_menu->AppendSeparator ();
                add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
diff --git a/src/wx/export_dialog.cc b/src/wx/export_dialog.cc
deleted file mode 100644 (file)
index 3553f3c..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
-    Copyright (C) 2017-2018 Carl Hetherington <cth@carlh.net>
-
-    This file is part of DCP-o-matic.
-
-    DCP-o-matic is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    DCP-o-matic is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-#include "export_dialog.h"
-#include "file_picker_ctrl.h"
-#include "wx_util.h"
-#include "check_box.h"
-#include "lib/warnings.h"
-DCPOMATIC_DISABLE_WARNINGS
-#include <wx/filepicker.h>
-DCPOMATIC_ENABLE_WARNINGS
-#include <boost/bind.hpp>
-
-using std::string;
-using boost::bind;
-
-#define FORMATS 2
-
-wxString format_names[] = {
-       _("ProRes"),
-       _("MP4 / H.264"),
-};
-
-wxString format_filters[] = {
-       _("MOV files (*.mov)|*.mov"),
-       _("MP4 files (*.mp4)|*.mp4"),
-};
-
-wxString format_extensions[] = {
-       "mov",
-       "mp4",
-};
-
-ExportFormat formats[] = {
-       EXPORT_FORMAT_PRORES,
-       EXPORT_FORMAT_H264_AAC,
-};
-
-ExportDialog::ExportDialog (wxWindow* parent, string name)
-       : TableDialog (parent, _("Export film"), 2, 1, true)
-       , _initial_name (name)
-{
-       add (_("Format"), true);
-       _format = new wxChoice (this, wxID_ANY);
-       add (_format);
-       add_spacer ();
-       _mixdown = new CheckBox (this, _("Mix audio down to stereo"));
-       add (_mixdown, false);
-       add_spacer ();
-       _split_reels = new CheckBox (this, _("Write reels into separate files"));
-       add (_split_reels, false);
-       add_spacer ();
-       _split_streams = new CheckBox (this, _("Write each audio channel to its own stream"));
-       add (_split_streams, false);
-       _x264_crf_label[0] = add (_("Quality"), true);
-       _x264_crf = new wxSlider (this, wxID_ANY, 23, 0, 51, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
-       add (_x264_crf, false);
-       add_spacer ();
-       _x264_crf_label[1] = add (_("0 is best, 51 is worst"), false);
-       wxFont font = _x264_crf_label[1]->GetFont();
-       font.SetStyle(wxFONTSTYLE_ITALIC);
-       font.SetPointSize(font.GetPointSize() - 1);
-       _x264_crf_label[1]->SetFont(font);
-
-       add (_("Output file"), true);
-       /* Don't warn overwrite here, because on Linux (at least) if we specify a filename like foo
-          the wxFileDialog will check that foo exists, but we will add an extension so we actually
-          need to check if foo.mov (or similar) exists.  I can't find a way to make wxWidgets do this,
-          so disable its check and the caller will have to do it themselves.
-       */
-       _file = new FilePickerCtrl (this, _("Select output file"), format_filters[0], false, false);
-       _file->SetPath (_initial_name);
-       add (_file);
-
-       for (int i = 0; i < FORMATS; ++i) {
-               _format->Append (format_names[i]);
-       }
-       _format->SetSelection (0);
-
-       _x264_crf->Enable (false);
-       for (int i = 0; i < 2; ++i) {
-               _x264_crf_label[i]->Enable (false);
-       }
-
-       _format->Bind (wxEVT_CHOICE, bind (&ExportDialog::format_changed, this));
-       _file->Bind (wxEVT_FILEPICKER_CHANGED, bind (&ExportDialog::file_changed, this));
-
-       layout ();
-
-       wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
-       ok->Enable (false);
-}
-
-void
-ExportDialog::format_changed ()
-{
-       DCPOMATIC_ASSERT (_format->GetSelection() >= 0 && _format->GetSelection() < FORMATS);
-       _file->SetWildcard (format_filters[_format->GetSelection()]);
-       _file->SetPath (_initial_name);
-       _x264_crf->Enable (_format->GetSelection() == 1);
-       for (int i = 0; i < 2; ++i) {
-               _x264_crf_label[i]->Enable (_format->GetSelection() == 1);
-       }
-       _mixdown->Enable (_format->GetSelection() != 2);
-}
-
-boost::filesystem::path
-ExportDialog::path () const
-{
-       wxFileName fn (_file->GetPath());
-       fn.SetExt (format_extensions[_format->GetSelection()]);
-       return wx_to_std (fn.GetFullPath());
-}
-
-ExportFormat
-ExportDialog::format () const
-{
-       DCPOMATIC_ASSERT (_format->GetSelection() >= 0 && _format->GetSelection() < FORMATS);
-       return formats[_format->GetSelection()];
-}
-
-bool
-ExportDialog::mixdown_to_stereo () const
-{
-       return _mixdown->GetValue ();
-}
-
-bool
-ExportDialog::split_reels () const
-{
-       return _split_reels->GetValue ();
-}
-
-bool
-ExportDialog::split_streams () const
-{
-       return _split_streams->GetValue ();
-}
-
-int
-ExportDialog::x264_crf () const
-{
-       return _x264_crf->GetValue ();
-}
-
-void
-ExportDialog::file_changed ()
-{
-       wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
-       DCPOMATIC_ASSERT (ok);
-       ok->Enable (path().is_absolute());
-}
diff --git a/src/wx/export_dialog.h b/src/wx/export_dialog.h
deleted file mode 100644 (file)
index fc22d03..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-    Copyright (C) 2017-2018 Carl Hetherington <cth@carlh.net>
-
-    This file is part of DCP-o-matic.
-
-    DCP-o-matic is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    DCP-o-matic is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-#include "table_dialog.h"
-#include "lib/ffmpeg_encoder.h"
-#include <wx/wx.h>
-#include <boost/filesystem.hpp>
-
-class FilePickerCtrl;
-
-class ExportDialog : public TableDialog
-{
-public:
-       explicit ExportDialog (wxWindow* parent, std::string name);
-
-       boost::filesystem::path path () const;
-       ExportFormat format () const;
-       bool mixdown_to_stereo () const;
-       bool split_reels () const;
-       bool split_streams () const;
-       int x264_crf () const;
-
-private:
-       void format_changed ();
-       void file_changed ();
-
-       std::string _initial_name;
-       wxChoice* _format;
-       wxCheckBox* _mixdown;
-       wxCheckBox* _split_reels;
-       wxCheckBox* _split_streams;
-       wxSlider* _x264_crf;
-       wxStaticText* _x264_crf_label[2];
-       FilePickerCtrl* _file;
-};
diff --git a/src/wx/export_video_file_dialog.cc b/src/wx/export_video_file_dialog.cc
new file mode 100644 (file)
index 0000000..062fcc8
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+    Copyright (C) 2017-2020 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "check_box.h"
+#include "export_video_file_dialog.h"
+#include "file_picker_ctrl.h"
+#include "wx_util.h"
+#include "lib/warnings.h"
+DCPOMATIC_DISABLE_WARNINGS
+#include <wx/filepicker.h>
+DCPOMATIC_ENABLE_WARNINGS
+#include <boost/bind.hpp>
+
+using std::string;
+using boost::bind;
+
+#define FORMATS 2
+
+wxString format_names[] = {
+       _("ProRes"),
+       _("MP4 / H.264"),
+};
+
+wxString format_filters[] = {
+       _("MOV files (*.mov)|*.mov"),
+       _("MP4 files (*.mp4)|*.mp4"),
+};
+
+wxString format_extensions[] = {
+       "mov",
+       "mp4",
+};
+
+ExportFormat formats[] = {
+       EXPORT_FORMAT_PRORES,
+       EXPORT_FORMAT_H264_AAC,
+};
+
+ExportVideoFileDialog::ExportVideoFileDialog (wxWindow* parent, string name)
+       : TableDialog (parent, _("Export video file"), 2, 1, true)
+       , _initial_name (name)
+{
+       add (_("Format"), true);
+       _format = new wxChoice (this, wxID_ANY);
+       add (_format);
+       add_spacer ();
+       _mixdown = new CheckBox (this, _("Mix audio down to stereo"));
+       add (_mixdown, false);
+       add_spacer ();
+       _split_reels = new CheckBox (this, _("Write reels into separate files"));
+       add (_split_reels, false);
+       add_spacer ();
+       _split_streams = new CheckBox (this, _("Write each audio channel to its own stream"));
+       add (_split_streams, false);
+       _x264_crf_label[0] = add (_("Quality"), true);
+       _x264_crf = new wxSlider (this, wxID_ANY, 23, 0, 51, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
+       add (_x264_crf, false);
+       add_spacer ();
+       _x264_crf_label[1] = add (_("0 is best, 51 is worst"), false);
+       wxFont font = _x264_crf_label[1]->GetFont();
+       font.SetStyle(wxFONTSTYLE_ITALIC);
+       font.SetPointSize(font.GetPointSize() - 1);
+       _x264_crf_label[1]->SetFont(font);
+
+       add (_("Output file"), true);
+       /* Don't warn overwrite here, because on Linux (at least) if we specify a filename like foo
+          the wxFileDialog will check that foo exists, but we will add an extension so we actually
+          need to check if foo.mov (or similar) exists.  I can't find a way to make wxWidgets do this,
+          so disable its check and the caller will have to do it themselves.
+       */
+       _file = new FilePickerCtrl (this, _("Select output file"), format_filters[0], false, false);
+       _file->SetPath (_initial_name);
+       add (_file);
+
+       for (int i = 0; i < FORMATS; ++i) {
+               _format->Append (format_names[i]);
+       }
+       _format->SetSelection (0);
+
+       _x264_crf->Enable (false);
+       for (int i = 0; i < 2; ++i) {
+               _x264_crf_label[i]->Enable (false);
+       }
+
+       _format->Bind (wxEVT_CHOICE, bind (&ExportVideoFileDialog::format_changed, this));
+       _file->Bind (wxEVT_FILEPICKER_CHANGED, bind (&ExportVideoFileDialog::file_changed, this));
+
+       layout ();
+
+       wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
+       ok->Enable (false);
+}
+
+void
+ExportVideoFileDialog::format_changed ()
+{
+       DCPOMATIC_ASSERT (_format->GetSelection() >= 0 && _format->GetSelection() < FORMATS);
+       _file->SetWildcard (format_filters[_format->GetSelection()]);
+       _file->SetPath (_initial_name);
+       _x264_crf->Enable (_format->GetSelection() == 1);
+       for (int i = 0; i < 2; ++i) {
+               _x264_crf_label[i]->Enable (_format->GetSelection() == 1);
+       }
+       _mixdown->Enable (_format->GetSelection() != 2);
+}
+
+boost::filesystem::path
+ExportVideoFileDialog::path () const
+{
+       wxFileName fn (_file->GetPath());
+       fn.SetExt (format_extensions[_format->GetSelection()]);
+       return wx_to_std (fn.GetFullPath());
+}
+
+ExportFormat
+ExportVideoFileDialog::format () const
+{
+       DCPOMATIC_ASSERT (_format->GetSelection() >= 0 && _format->GetSelection() < FORMATS);
+       return formats[_format->GetSelection()];
+}
+
+bool
+ExportVideoFileDialog::mixdown_to_stereo () const
+{
+       return _mixdown->GetValue ();
+}
+
+bool
+ExportVideoFileDialog::split_reels () const
+{
+       return _split_reels->GetValue ();
+}
+
+bool
+ExportVideoFileDialog::split_streams () const
+{
+       return _split_streams->GetValue ();
+}
+
+int
+ExportVideoFileDialog::x264_crf () const
+{
+       return _x264_crf->GetValue ();
+}
+
+void
+ExportVideoFileDialog::file_changed ()
+{
+       wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this));
+       DCPOMATIC_ASSERT (ok);
+       ok->Enable (path().is_absolute());
+}
diff --git a/src/wx/export_video_file_dialog.h b/src/wx/export_video_file_dialog.h
new file mode 100644 (file)
index 0000000..a58fadd
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+    Copyright (C) 2017-2020 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "table_dialog.h"
+#include "lib/ffmpeg_encoder.h"
+#include <wx/wx.h>
+#include <boost/filesystem.hpp>
+
+class FilePickerCtrl;
+
+class ExportVideoFileDialog : public TableDialog
+{
+public:
+       ExportVideoFileDialog (wxWindow* parent, std::string name);
+
+       boost::filesystem::path path () const;
+       ExportFormat format () const;
+       bool mixdown_to_stereo () const;
+       bool split_reels () const;
+       bool split_streams () const;
+       int x264_crf () const;
+
+private:
+       void format_changed ();
+       void file_changed ();
+
+       std::string _initial_name;
+       wxChoice* _format;
+       wxCheckBox* _mixdown;
+       wxCheckBox* _split_reels;
+       wxCheckBox* _split_streams;
+       wxSlider* _x264_crf;
+       wxStaticText* _x264_crf_label[2];
+       FilePickerCtrl* _file;
+};
index 5d8fc16bb7b060cc89ddb383aa022756067a247b..d7a13e32ba7e6df3d28190d7e23c8346d2a48c12 100644 (file)
@@ -65,8 +65,8 @@ sources = """
           dolby_doremi_certificate_panel.cc
           download_certificate_dialog.cc
           download_certificate_panel.cc
-          export_dialog.cc
           export_subtitles_dialog.cc
+          export_video_file_dialog.cc
           file_picker_ctrl.cc
           film_editor.cc
           film_name_location_dialog.cc