summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-03-03 19:55:41 +0000
committerCarl Hetherington <cth@carlh.net>2017-03-03 19:55:41 +0000
commite4d7f575fab50b6d255821d6d6a8171c8e1f13f6 (patch)
tree49f603a388e8a8ca3107e6106e13dcdb3fbdbc93 /src/wx
parentccc8409dceedcf71872b2846b9b4a4dea9042bda (diff)
Add options to write KDMs to separate directories / ZIP files.
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/kdm_dialog.cc9
-rw-r--r--src/wx/kdm_output_panel.cc66
-rw-r--r--src/wx/kdm_output_panel.h5
-rw-r--r--src/wx/name_format_editor.cc8
4 files changed, 78 insertions, 10 deletions
diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc
index 223a183b3..5679cf0cb 100644
--- a/src/wx/kdm_dialog.cc
+++ b/src/wx/kdm_dialog.cc
@@ -147,4 +147,13 @@ KDMDialog::make_clicked ()
if (result.first) {
JobManager::instance()->add (result.first);
}
+
+ if (result.second > 0) {
+ /* XXX: proper plural form support in wxWidgets? */
+ wxString s = result.second == 1 ? _("%d KDM written to %s") : _("%d KDMs written to %s");
+ message_dialog (
+ this,
+ wxString::Format (s, result.second, std_to_wx(_output->directory().string()).data())
+ );
+ }
}
diff --git a/src/wx/kdm_output_panel.cc b/src/wx/kdm_output_panel.cc
index c6845f7bd..f9078eac4 100644
--- a/src/wx/kdm_output_panel.cc
+++ b/src/wx/kdm_output_panel.cc
@@ -62,6 +62,20 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop)
{
int flags = wxALIGN_TOP | wxTOP | wxLEFT | wxRIGHT;
+ wxString t = _("Folder / ZIP name format");
+#ifdef __WXOSX__
+ flags |= wxALIGN_RIGHT;
+ t += wxT (":");
+#endif
+ wxStaticText* m = new wxStaticText (this, wxID_ANY, t);
+ table->Add (m, 0, flags, DCPOMATIC_SIZER_Y_GAP);
+ }
+
+ _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);
+
+ {
+ int flags = wxALIGN_TOP | wxTOP | wxLEFT | wxRIGHT;
wxString t = _("Filename format");
#ifdef __WXOSX__
flags |= wxALIGN_RIGHT;
@@ -104,6 +118,16 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop)
table->Add (_folder, 1, wxEXPAND);
+ wxSizer* 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);
+ _write_folder = new wxRadioButton (this, wxID_ANY, _("Write a folder for each cinema's KDMs"));
+ write_options->Add (_write_folder);
+ _write_zip = new wxRadioButton (this, wxID_ANY, _("Write a ZIP file for each cinema's KDMs"));
+ write_options->Add (_write_zip);
+ table->AddSpacer (0);
+ table->Add (write_options);
+
_email = new wxCheckBox (this, wxID_ANY, _("Send by email"));
table->Add (_email, 1, wxEXPAND);
table->AddSpacer (0);
@@ -119,7 +143,11 @@ KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop)
void
KDMOutputPanel::setup_sensitivity ()
{
- _folder->Enable (_write_to->GetValue ());
+ bool const write = _write_to->GetValue ();
+ _folder->Enable (write);
+ _write_flat->Enable (write);
+ _write_folder->Enable (write);
+ _write_zip->Enable (write);
}
pair<shared_ptr<Job>, int>
@@ -138,14 +166,34 @@ KDMOutputPanel::make (
name_values['b'] = dcp::LocalTime(timing->from()).date() + " " + dcp::LocalTime(timing->from()).time_of_day();
name_values['e'] = dcp::LocalTime(timing->until()).date() + " " + dcp::LocalTime(timing->until()).time_of_day();
- if (_write_to->GetValue ()) {
- written = ScreenKDM::write_files (
- screen_kdms,
- directory(),
- _filename_format->get(),
- name_values,
- confirm_overwrite
- );
+ if (_write_to->GetValue()) {
+ if (_write_flat->GetValue()) {
+ written = ScreenKDM::write_files (
+ screen_kdms,
+ directory(),
+ _filename_format->get(),
+ name_values,
+ confirm_overwrite
+ );
+ } else if (_write_folder->GetValue()) {
+ written = CinemaKDMs::write_directories (
+ CinemaKDMs::collect (screen_kdms),
+ directory(),
+ _container_name_format->get(),
+ _filename_format->get(),
+ name_values,
+ confirm_overwrite
+ );
+ } else if (_write_zip->GetValue()) {
+ written = CinemaKDMs::write_zip_files (
+ CinemaKDMs::collect (screen_kdms),
+ directory(),
+ _container_name_format->get(),
+ _filename_format->get(),
+ name_values,
+ confirm_overwrite
+ );
+ }
}
if (_email->GetValue ()) {
diff --git a/src/wx/kdm_output_panel.h b/src/wx/kdm_output_panel.h
index 772c12a0d..cb6f9a1ca 100644
--- a/src/wx/kdm_output_panel.h
+++ b/src/wx/kdm_output_panel.h
@@ -25,6 +25,7 @@
#include <wx/wx.h>
#include <boost/filesystem.hpp>
+class wxRadioButton;
class wxDirPickerCtrl;
class DirPickerCtrl;
class KDMTimingPanel;
@@ -51,6 +52,7 @@ public:
private:
wxChoice* _type;
+ NameFormatEditor* _container_name_format;
NameFormatEditor* _filename_format;
wxCheckBox* _write_to;
#ifdef DCPOMATIC_USE_OWN_PICKER
@@ -58,5 +60,8 @@ private:
#else
wxDirPickerCtrl* _folder;
#endif
+ wxRadioButton* _write_flat;
+ wxRadioButton* _write_folder;
+ wxRadioButton* _write_zip;
wxCheckBox* _email;
};
diff --git a/src/wx/name_format_editor.cc b/src/wx/name_format_editor.cc
index 1f7ca109b..82adc3f55 100644
--- a/src/wx/name_format_editor.cc
+++ b/src/wx/name_format_editor.cc
@@ -34,7 +34,9 @@ NameFormatEditor::NameFormatEditor (wxWindow* parent, dcp::NameFormat name, dcp:
, _suffix (suffix)
{
_sizer->Add (_specification, 0, wxEXPAND, DCPOMATIC_SIZER_Y_GAP);
- _sizer->Add (_example, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
+ if (!_examples.empty ()) {
+ _sizer->Add (_example, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
+ }
_panel->SetSizer (_sizer);
for (dcp::NameFormat::Map::const_iterator i = titles.begin(); i != titles.end(); ++i) {
@@ -63,6 +65,10 @@ NameFormatEditor::changed ()
void
NameFormatEditor::update_example ()
{
+ if (_examples.empty ()) {
+ return;
+ }
+
_name.set_specification (careful_string_filter (wx_to_std (_specification->GetValue ())));
wxString example = wxString::Format (_("e.g. %s"), std_to_wx (_name.get (_examples, _suffix)));