X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fscreen_dialog.cc;h=89249645a5153009c2b0e26530561a4ce7e837d8;hb=76f601f5edbdfceec91ff6f6ce4b310e0d3a6ce9;hp=7ff5197137cd27e6d06c25e3d0326fb684d34bf0;hpb=373f010a7f04add1f49169cbaa60cb7ae5f508d4;p=dcpomatic.git diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index 7ff519713..89249645a 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -19,7 +19,7 @@ #include #include -#include +#include #include "lib/compose.hpp" #include "screen_dialog.h" #include "wx_util.h" @@ -28,7 +28,7 @@ using std::string; using std::cout; using boost::shared_ptr; -ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ptr certificate) +ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ptr certificate) : wxDialog (parent, wxID_ANY, std_to_wx (title)) , _certificate (certificate) { @@ -65,7 +65,9 @@ ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ 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 @@ -74,24 +76,34 @@ ScreenDialog::name () const return wx_to_std (_name->GetValue()); } -shared_ptr +shared_ptr 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 (FindWindowById (wxID_OK, this)); + ok->Enable (_certificate.get ()); }