Split KDMOutputPanel into TallKDMOutputPanel and a base.
authorCarl Hetherington <cth@carlh.net>
Sat, 28 Dec 2024 22:25:09 +0000 (23:25 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 1 Jan 2025 00:54:38 +0000 (01:54 +0100)
The TallKDMOutputPanel is just responsible for layout out the controls.

src/tools/dcpomatic_kdm.cc
src/wx/kdm_dialog.cc
src/wx/kdm_output_panel.cc
src/wx/kdm_output_panel.h
src/wx/tall_kdm_output_panel.cc [new file with mode: 0644]
src/wx/tall_kdm_output_panel.h [new file with mode: 0644]
src/wx/wscript

index 64c7ca7e36efda034c86ee61937464db63187d41..8ac4b997a6371ce0726a7e0b3813776b3e0712df 100644 (file)
 #include "wx/file_picker_ctrl.h"
 #include "wx/full_config_dialog.h"
 #include "wx/job_view_dialog.h"
-#include "wx/kdm_output_panel.h"
 #include "wx/kdm_timing_panel.h"
 #include "wx/nag_dialog.h"
 #include "wx/new_dkdm_folder_dialog.h"
 #include "wx/report_problem_dialog.h"
 #include "wx/screens_panel.h"
 #include "wx/static_text.h"
+#include "wx/tall_kdm_output_panel.h"
 #include "wx/wx_signal_manager.h"
 #include "wx/wx_util.h"
 #include "wx/wx_variant.h"
@@ -225,7 +225,7 @@ public:
                h = new StaticText (overall_panel, _("Output"));
                h->SetFont (subheading_font);
                right->Add(h, 0, wxTOP, DCPOMATIC_SUBHEADING_TOP_PAD);
-               _output = new KDMOutputPanel (overall_panel);
+               _output = new TallKDMOutputPanel(overall_panel);
                right->Add (_output, 0, wxALL, DCPOMATIC_SIZER_Y_GAP);
 
                _create = new Button (overall_panel, _("Create KDMs"));
index 1a9c564d44789c9afff085f31f2b1ad344afdfb1..f96c89c98cf06dde48fb832cfa2354cd0a5584cc 100644 (file)
 #include "invalid_certificate_period_dialog.h"
 #include "kdm_cpl_panel.h"
 #include "kdm_dialog.h"
-#include "kdm_output_panel.h"
 #include "kdm_timing_panel.h"
 #include "screens_panel.h"
 #include "static_text.h"
+#include "tall_kdm_output_panel.h"
 #include "wx_util.h"
 #include "wx_variant.h"
 #include "lib/cinema.h"
@@ -113,7 +113,7 @@ KDMDialog::KDMDialog (wxWindow* parent, shared_ptr<const Film> film)
        h = new StaticText (this, _("Output"));
        h->SetFont (subheading_font);
        right->Add(h, 0, wxTOP, DCPOMATIC_SUBHEADING_TOP_PAD);
-       _output = new KDMOutputPanel (this);
+       _output = new TallKDMOutputPanel(this);
        right->Add (_output, 0, wxEXPAND | wxTOP, DCPOMATIC_SIZER_GAP);
 
        _make = new Button (this, _("Make KDMs"));
index 78186e4cbb1128f76f08ccac75dfb015ca0cac3b..3548d4dee33b5b86e2c0758007e1b74d31c90a4a 100644 (file)
@@ -66,36 +66,13 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent)
        , _forensic_mark_audio (true)
        , _forensic_mark_audio_up_to (12)
 {
-       auto table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0);
-       table->AddGrowableCol (1);
-
-       add_label_to_sizer (table, this, _("KDM type"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
-
-       auto type = new wxBoxSizer (wxHORIZONTAL);
        _type = new KDMChoice (this);
-       type->Add (_type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
        _type->set(Config::instance()->default_kdm_type());
-       auto advanced = new Button (this, _("Advanced..."));
-       type->Add (advanced, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
-       table->Add (type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
-
-       add_label_to_sizer(table, this, _("Annotation text"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
+       _advanced = new Button(this, _("Advanced..."));
        _annotation_text = new wxTextCtrl(this, wxID_ANY);
-       table->Add(_annotation_text, 1, wxEXPAND);
 
-       add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT);
        _container_name_format = new NameFormatEditor (this, Config::instance()->kdm_container_name_format(), dcp::NameFormat::Map(), dcp::NameFormat::Map(), "");
-       table->Add (_container_name_format->panel(), 1, wxEXPAND);
 
-       auto format = create_label (this, _("Filename format"), true);
-       auto align = new wxBoxSizer (wxHORIZONTAL);
-#ifdef DCPOMATIC_OSX
-       align->Add (format, 0, wxTOP, 2);
-       table->Add (align, 0, wxALIGN_RIGHT | wxRIGHT, DCPOMATIC_SIZER_GAP - 2);
-#else
-       align->Add (format, 0, wxLEFT, DCPOMATIC_SIZER_GAP);
-       table->Add (align, 0, wxTOP | wxRIGHT | wxALIGN_TOP, DCPOMATIC_SIZER_GAP);
-#endif
        dcp::NameFormat::Map titles;
        titles['f'] = wx_to_std (_("film name"));
        titles['c'] = wx_to_std (_("cinema"));
@@ -109,10 +86,8 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent)
        ex['b'] = "2012/03/15 12:30";
        ex['e'] = "2012/03/22 02:30";
        _filename_format = new NameFormatEditor (this, Config::instance()->kdm_filename_format(), titles, ex, ".xml");
-       table->Add (_filename_format->panel(), 1, wxEXPAND);
 
        _write_to = new CheckBox (this, _("Write to"));
-       table->Add (_write_to, 1, wxEXPAND);
 
 #ifdef DCPOMATIC_USE_OWN_PICKER
        _folder = new DirPickerCtrl (this);
@@ -127,22 +102,12 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent)
                _folder->SetPath (wxStandardPaths::Get().GetDocumentsDir());
        }
 
-       table->Add (_folder, 1, wxEXPAND);
-
-       auto write_options = new wxBoxSizer(wxVERTICAL);
        _write_flat = new wxRadioButton (this, wxID_ANY, _("Write all KDMs to the same folder"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
-       write_options->Add (_write_flat, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
        _write_folder = new wxRadioButton (this, wxID_ANY, _("Write a folder for each cinema's KDMs"));
-       write_options->Add (_write_folder, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
        _write_zip = new wxRadioButton (this, wxID_ANY, _("Write a ZIP file for each cinema's KDMs"));
-       write_options->Add (_write_zip, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
-       table->AddSpacer (0);
-       table->Add (write_options);
 
        _email = new CheckBox (this, _("Send by email"));
-       table->Add (_email, 1, wxEXPAND);
-       auto add_email_addresses = new wxButton(this, wxID_ANY, _("Set additional email addresses..."));
-       table->Add (add_email_addresses);
+       _add_email_addresses = new wxButton(this, wxID_ANY, _("Set additional email addresses..."));
 
        switch (Config::instance()->last_kdm_write_type().get_value_or(Config::KDM_WRITE_FLAT)) {
        case Config::KDM_WRITE_FLAT:
@@ -161,13 +126,11 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent)
 
        _write_to->bind(&KDMOutputPanel::write_to_changed, this);
        _email->bind(&KDMOutputPanel::email_changed, this);
-       add_email_addresses->Bind (wxEVT_BUTTON, boost::bind(&KDMOutputPanel::add_email_addresses_clicked, this));
+       _add_email_addresses->Bind(wxEVT_BUTTON, boost::bind(&KDMOutputPanel::add_email_addresses_clicked, this));
        _write_flat->Bind   (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
        _write_folder->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
        _write_zip->Bind    (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
-       advanced->Bind      (wxEVT_BUTTON, boost::bind (&KDMOutputPanel::advanced_clicked, this));
-
-       SetSizer (table);
+       _advanced->Bind     (wxEVT_BUTTON, boost::bind (&KDMOutputPanel::advanced_clicked, this));
 }
 
 
index 3b82321c6c2aa58c8d2b64bc8753653868358bdd..087c9d25087fc7a098b03f35f6373dbf0051ae1c 100644 (file)
@@ -70,13 +70,7 @@ public:
 
        boost::signals2::signal<void ()> MethodChanged;
 
-private:
-       void kdm_write_type_changed ();
-       void advanced_clicked ();
-       void write_to_changed ();
-       void email_changed ();
-       void add_email_addresses_clicked ();
-
+protected:
        KDMChoice* _type;
        wxTextCtrl* _annotation_text;
        NameFormatEditor* _container_name_format;
@@ -90,9 +84,18 @@ private:
        wxRadioButton* _write_flat;
        wxRadioButton* _write_folder;
        wxRadioButton* _write_zip;
+       wxButton* _advanced;
        CheckBox* _email;
-       bool _forensic_mark_video;
-       bool _forensic_mark_audio;
-       boost::optional<int> _forensic_mark_audio_up_to;
+       wxButton* _add_email_addresses;
+       bool _forensic_mark_video = true;
+       bool _forensic_mark_audio = true;
+       boost::optional<int> _forensic_mark_audio_up_to = 12;
        std::vector<std::string> _extra_addresses;
+
+private:
+       void kdm_write_type_changed ();
+       void advanced_clicked ();
+       void write_to_changed ();
+       void email_changed ();
+       void add_email_addresses_clicked ();
 };
diff --git a/src/wx/tall_kdm_output_panel.cc b/src/wx/tall_kdm_output_panel.cc
new file mode 100644 (file)
index 0000000..1fb5cd9
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+    Copyright (C) 2015-2022 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 "confirm_kdm_email_dialog.h"
+#include "dcpomatic_button.h"
+#include "extra_kdm_email_dialog.h"
+#include "kdm_advanced_dialog.h"
+#include "kdm_choice.h"
+#include "tall_kdm_output_panel.h"
+#include "kdm_timing_panel.h"
+#include "name_format_editor.h"
+#include "wx_util.h"
+#include "lib/cinema.h"
+#include "lib/config.h"
+#include "lib/send_kdm_email_job.h"
+#include <dcp/exceptions.h>
+#include <dcp/types.h>
+#include <dcp/warnings.h>
+#ifdef DCPOMATIC_USE_OWN_PICKER
+#include "dir_picker_ctrl.h"
+#else
+LIBDCP_DISABLE_WARNINGS
+#include <wx/filepicker.h>
+LIBDCP_ENABLE_WARNINGS
+#endif
+LIBDCP_DISABLE_WARNINGS
+#include <wx/stdpaths.h>
+LIBDCP_ENABLE_WARNINGS
+
+
+using std::exception;
+using std::function;
+using std::list;
+using std::make_pair;
+using std::make_shared;
+using std::pair;
+using std::shared_ptr;
+using std::string;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
+
+
+TallKDMOutputPanel::TallKDMOutputPanel(wxWindow* parent)
+       : KDMOutputPanel(parent)
+{
+       auto table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0);
+       table->AddGrowableCol (1);
+
+       add_label_to_sizer (table, this, _("KDM type"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
+
+       auto type = new wxBoxSizer (wxHORIZONTAL);
+       type->Add (_type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
+       type->Add (_advanced, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
+       table->Add (type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
+
+       add_label_to_sizer(table, this, _("Annotation text"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
+       table->Add(_annotation_text, 1, wxEXPAND);
+
+       add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT);
+       table->Add (_container_name_format->panel(), 1, wxEXPAND);
+
+       auto format = create_label (this, _("Filename format"), true);
+       auto align = new wxBoxSizer (wxHORIZONTAL);
+#ifdef DCPOMATIC_OSX
+       align->Add (format, 0, wxTOP, 2);
+       table->Add (align, 0, wxALIGN_RIGHT | wxRIGHT, DCPOMATIC_SIZER_GAP - 2);
+#else
+       align->Add (format, 0, wxLEFT, DCPOMATIC_SIZER_GAP);
+       table->Add (align, 0, wxTOP | wxRIGHT | wxALIGN_TOP, DCPOMATIC_SIZER_GAP);
+#endif
+       table->Add (_filename_format->panel(), 1, wxEXPAND);
+       table->Add (_write_to, 1, wxEXPAND);
+       table->Add (_folder, 1, wxEXPAND);
+
+       auto write_options = new wxBoxSizer(wxVERTICAL);
+       write_options->Add (_write_flat, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
+       write_options->Add (_write_folder, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
+       write_options->Add (_write_zip, 1, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
+       table->AddSpacer (0);
+       table->Add (write_options);
+
+       table->Add (_email, 1, wxEXPAND);
+       table->Add (_add_email_addresses);
+
+       SetSizer (table);
+}
diff --git a/src/wx/tall_kdm_output_panel.h b/src/wx/tall_kdm_output_panel.h
new file mode 100644 (file)
index 0000000..9fdad58
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+    Copyright (C) 2015-2022 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 "kdm_output_panel.h"
+
+
+class TallKDMOutputPanel : public KDMOutputPanel
+{
+public:
+       TallKDMOutputPanel(wxWindow* parent);
+};
index 5a19c0df3f57c62d7a5926732c9ceee705f564ee..9fc5a24efe92c6ff2f5bdc6a0860253c2f5fabc0 100644 (file)
@@ -162,6 +162,7 @@ sources = """
           system_font_dialog.cc
           system_information_dialog.cc
           table_dialog.cc
+          tall_kdm_output_panel.cc
           templates_dialog.cc
           text_panel.cc
           text_view.cc