using std::cout;
using boost::shared_ptr;
-ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ptr<libdcp::Certificate> certificate)
+ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ptr<dcp::Certificate> certificate)
: wxDialog (parent, wxID_ANY, std_to_wx (title))
, _certificate (certificate)
{
overall_sizer->Layout ();
overall_sizer->SetSizeHints (this);
- _certificate_load->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ScreenDialog::load_certificate), 0, this);
+ _certificate_load->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ScreenDialog::load_certificate, this));
+
+ setup_sensitivity ();
}
string
return wx_to_std (_name->GetValue());
}
-shared_ptr<libdcp::Certificate>
+shared_ptr<dcp::Certificate>
ScreenDialog::certificate () const
{
return _certificate;
}
void
-ScreenDialog::load_certificate (wxCommandEvent &)
+ScreenDialog::load_certificate ()
{
wxFileDialog* d = new wxFileDialog (this, _("Select Certificate File"));
- d->ShowModal ();
-
- try {
- _certificate.reset (new libdcp::Certificate (wx_to_std (d->GetPath ())));
- _certificate_text->SetValue (_certificate->certificate ());
- } catch (libdcp::MiscError& e) {
- error_dialog (this, String::compose ("Could not read certificate file (%1)", e.what()));
- }
+ if (d->ShowModal () == wxID_OK) {
+ try {
+ _certificate.reset (new dcp::Certificate (boost::filesystem::path (wx_to_std (d->GetPath ()))));
+ _certificate_text->SetValue (_certificate->certificate ());
+ } catch (dcp::MiscError& e) {
+ error_dialog (this, String::compose ("Could not read certificate file (%1)", e.what()));
+ }
+ }
+
d->Destroy ();
+
+ setup_sensitivity ();
+}
+
+void
+ScreenDialog::setup_sensitivity ()
+{
+ wxButton* ok = dynamic_cast<wxButton*> (FindWindowById (wxID_OK, this));
+ ok->Enable (_certificate);
}