summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic_kdm.cc29
-rw-r--r--src/tools/dcpomatic_kdm_cli.cc12
2 files changed, 33 insertions, 8 deletions
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc
index a0a3a59f8..880aec454 100644
--- a/src/tools/dcpomatic_kdm.cc
+++ b/src/tools/dcpomatic_kdm.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2015-2016 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -63,6 +63,7 @@ using std::vector;
using boost::shared_ptr;
using boost::bind;
using boost::optional;
+using boost::ref;
enum {
ID_help_report_a_problem = 1,
@@ -268,6 +269,14 @@ private:
m->Append (help, _("&Help"));
}
+ bool confirm_overwrite (boost::filesystem::path path)
+ {
+ return confirm_dialog (
+ this,
+ wxString::Format (_("File %s already exists. Do you want to overwrite it?"), std_to_wx(path.string()).data())
+ );
+ }
+
void create_kdms ()
{
try {
@@ -315,13 +324,19 @@ private:
name_values['e'] = dcp::LocalTime(_timing->until()).date() + " " + dcp::LocalTime(_timing->until()).time_of_day();
if (_output->write_to()) {
- ScreenKDM::write_files (screen_kdms, _output->directory(), _output->name_format(), name_values);
- /* XXX: proper plural form support in wxWidgets? */
- wxString s = screen_kdms.size() == 1 ? _("%d KDM written to %s") : _("%d KDMs written to %s");
- message_dialog (
- this,
- wxString::Format (s, int(screen_kdms.size()), std_to_wx(_output->directory().string()).data())
+ int written = ScreenKDM::write_files (
+ screen_kdms, _output->directory(), _output->name_format(), name_values,
+ bind (&DOMFrame::confirm_overwrite, this, _1)
);
+
+ if (written > 0) {
+ /* XXX: proper plural form support in wxWidgets? */
+ wxString s = written == 1 ? _("%d KDM written to %s") : _("%d KDMs written to %s");
+ message_dialog (
+ this,
+ wxString::Format (s, written, std_to_wx(_output->directory().string()).data())
+ );
+ }
} else {
string film_name = decrypted.annotation_text().get_value_or ("");
if (film_name.empty ()) {
diff --git a/src/tools/dcpomatic_kdm_cli.cc b/src/tools/dcpomatic_kdm_cli.cc
index f0097d7de..7cfcaa171 100644
--- a/src/tools/dcpomatic_kdm_cli.cc
+++ b/src/tools/dcpomatic_kdm_cli.cc
@@ -40,6 +40,7 @@ using std::list;
using std::vector;
using boost::shared_ptr;
using boost::optional;
+using boost::bind;
static void
help ()
@@ -106,6 +107,12 @@ duration_from_string (string d)
exit (EXIT_FAILURE);
}
+static bool
+always_overwrite ()
+{
+ return true;
+}
+
int main (int argc, char* argv[])
{
boost::filesystem::path output;
@@ -306,7 +313,10 @@ int main (int argc, char* argv[])
cout << "Wrote ZIP files to " << output << "\n";
}
} else {
- ScreenKDM::write_files (screen_kdms, output, Config::instance()->kdm_filename_format(), values);
+ ScreenKDM::write_files (
+ screen_kdms, output, Config::instance()->kdm_filename_format(), values,
+ bind (&always_overwrite)
+ );
if (verbose) {
cout << "Wrote KDM files to " << output << "\n";