Make a small class to choose KDM types.
authorCarl Hetherington <cth@carlh.net>
Sat, 19 Mar 2022 19:30:20 +0000 (20:30 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 19 Mar 2022 19:57:45 +0000 (20:57 +0100)
src/wx/kdm_choice.cc [new file with mode: 0644]
src/wx/kdm_choice.h [new file with mode: 0644]
src/wx/kdm_output_panel.cc
src/wx/kdm_output_panel.h
src/wx/wscript

diff --git a/src/wx/kdm_choice.cc b/src/wx/kdm_choice.cc
new file mode 100644 (file)
index 0000000..64a43f7
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+    Copyright (C) 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_choice.h"
+
+
+KDMChoice::KDMChoice (wxWindow* parent)
+       : wxChoice (parent, wxID_ANY)
+{
+       Append("Modified Transitional 1", reinterpret_cast<void*>(dcp::Formulation::MODIFIED_TRANSITIONAL_1));
+       Append("DCI Any", reinterpret_cast<void*>(dcp::Formulation::DCI_ANY));
+       Append("DCI Specific", reinterpret_cast<void*>(dcp::Formulation::DCI_SPECIFIC));
+       Append("Multiple Modified Transitional 1", reinterpret_cast<void*>(dcp::Formulation::MULTIPLE_MODIFIED_TRANSITIONAL_1));
+}
+
+
+dcp::Formulation
+KDMChoice::get () const
+{
+       return static_cast<dcp::Formulation>(reinterpret_cast<intptr_t>(GetClientData(GetSelection())));
+}
+
diff --git a/src/wx/kdm_choice.h b/src/wx/kdm_choice.h
new file mode 100644 (file)
index 0000000..3f2bcdf
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    Copyright (C) 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 <dcp/types.h>
+#include <wx/wx.h>
+
+
+class KDMChoice : public wxChoice
+{
+public:
+       KDMChoice (wxWindow* parent);
+
+       dcp::Formulation get () const;
+};
+
index e7bbe292dd875303a93a18c1ae996dad40471f00..ec2182c36a1e2f2fd79ae3d44e3adae75dcbbba6 100644 (file)
@@ -23,6 +23,7 @@
 #include "confirm_kdm_email_dialog.h"
 #include "dcpomatic_button.h"
 #include "kdm_advanced_dialog.h"
+#include "kdm_choice.h"
 #include "kdm_output_panel.h"
 #include "kdm_timing_panel.h"
 #include "name_format_editor.h"
@@ -69,11 +70,7 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent)
        add_label_to_sizer (table, this, _("KDM type"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
 
        auto type = new wxBoxSizer (wxHORIZONTAL);
-       _type = new wxChoice (this, wxID_ANY);
-       _type->Append ("Modified Transitional 1", ((void *) dcp::Formulation::MODIFIED_TRANSITIONAL_1));
-       _type->Append ("DCI Any", ((void *) dcp::Formulation::DCI_ANY));
-       _type->Append ("DCI Specific", ((void *) dcp::Formulation::DCI_SPECIFIC));
-       _type->Append ("Multiple Modified Transitional 1", ((void *) dcp::Formulation::MULTIPLE_MODIFIED_TRANSITIONAL_1));
+       _type = new KDMChoice (this);
        type->Add (_type, 1, wxTOP, DCPOMATIC_CHOICE_TOP_PAD);
        _type->SetSelection (0);
        auto advanced = new Button (this, _("Advanced..."));
@@ -329,7 +326,7 @@ KDMOutputPanel::make (
 dcp::Formulation
 KDMOutputPanel::formulation () const
 {
-       return (dcp::Formulation) reinterpret_cast<intptr_t> (_type->GetClientData (_type->GetSelection()));
+       return _type->get();
 }
 
 
index 0025b0072655292f837ccbd424c15bc84e5beebd..37cca30de06af3f5b3bf173b0e1527179cef9e8b 100644 (file)
@@ -28,6 +28,7 @@
 
 class DirPickerCtrl;
 class Job;
+class KDMChoice;
 class NameFormatEditor;
 class wxDirPickerCtrl;
 class wxRadioButton;
@@ -64,7 +65,7 @@ private:
        void write_to_changed ();
        void email_changed ();
 
-       wxChoice* _type;
+       KDMChoice* _type;
        NameFormatEditor* _container_name_format;
        NameFormatEditor* _filename_format;
        wxCheckBox* _write_to;
index 7e028274e188324d611266a5387a08309d7fe645..d2e16c2fea832da6416487ff2ddf95beec280fb7 100644 (file)
@@ -1,5 +1,5 @@
 #
-#    Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
+#    Copyright (C) 2012-2022 Carl Hetherington <cth@carlh.net>
 #
 #    This file is part of DCP-o-matic.
 #
@@ -95,6 +95,7 @@ sources = """
           kdm_timing_panel.cc
           language_tag_dialog.cc
           language_tag_widget.cc
+          kdm_choice.cc
           make_chain_dialog.cc
           markers_dialog.cc
           message_dialog.cc