/*
- 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.
using std::vector;
using boost::shared_ptr;
using boost::bind;
+using boost::optional;
+using boost::ref;
enum {
ID_help_report_a_problem = 1,
{
}
+
+ optional<dcp::EncryptedKDM> get ()
+ {
+ try {
+ return dcp::EncryptedKDM (dcp::file_to_string (wx_to_std (_dialog->GetPath ()), MAX_KDM_SIZE));
+ } catch (cxml::Error& e) {
+ error_dialog (_parent, wxString::Format ("This file does not look like a KDM (%s)", std_to_wx (e.what()).data()));
+ }
+
+ return optional<dcp::EncryptedKDM> ();
+ }
};
static string
setup_menu (bar);
SetMenuBar (bar);
- Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&DOMFrame::file_exit, this), wxID_EXIT);
- Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&DOMFrame::edit_preferences, this), wxID_PREFERENCES);
- Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT);
- Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_exit, this), wxID_EXIT);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_preferences, this), wxID_PREFERENCES);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT);
+ Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem);
/* Use a panel as the only child of the Frame so that we avoid
the dark-grey background on Windows.
vector<string> columns;
columns.push_back (wx_to_std (_("CPL")));
_dkdm = new EditableList<dcp::EncryptedKDM, KDMFileDialogWrapper> (
- overall_panel, columns, bind (&DOMFrame::dkdms, this), bind (&DOMFrame::set_dkdms, this, _1), bind (&always_valid), bind (&column, _1), false
+ overall_panel, columns, bind (&DOMFrame::dkdms, this), bind (&DOMFrame::set_dkdms, this, _1), bind (&column, _1), false
);
right->Add (_dkdm, 0, wxEXPAND | wxALL, DCPOMATIC_SIZER_Y_GAP);
Config::instance()->Changed.connect (boost::bind (&Config::write, Config::instance ()));
_screens->ScreensChanged.connect (boost::bind (&DOMFrame::setup_sensitivity, this));
- _create->Bind (wxEVT_COMMAND_BUTTON_CLICKED, bind (&DOMFrame::create_kdms, this));
+ _create->Bind (wxEVT_BUTTON, bind (&DOMFrame::create_kdms, this));
_dkdm->SelectionChanged.connect (boost::bind (&DOMFrame::setup_sensitivity, this));
setup_sensitivity ();
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 {
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 ()) {