X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fscreen_dialog.cc;h=7ff5197137cd27e6d06c25e3d0326fb684d34bf0;hb=373f010a7f04add1f49169cbaa60cb7ae5f508d4;hp=32f36ab8ba78c04f2148de1e6c9873a811acf73f;hpb=3031638f0ddf23654b72af2088a7616791307310;p=dcpomatic.git diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index 32f36ab8b..7ff519713 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -17,21 +17,42 @@ */ +#include +#include +#include +#include "lib/compose.hpp" #include "screen_dialog.h" #include "wx_util.h" using std::string; +using std::cout; +using boost::shared_ptr; -ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name) +ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ptr certificate) : wxDialog (parent, wxID_ANY, std_to_wx (title)) + , _certificate (certificate) { wxFlexGridSizer* table = new wxFlexGridSizer (2, 6, 6); table->AddGrowableCol (1, 1); - add_label_to_sizer (table, this, "Name"); - _name = new wxTextCtrl (this, wxID_ANY, std_to_wx (name), wxDefaultPosition, wxSize (256, -1)); + add_label_to_sizer (table, this, "Name", true); + _name = new wxTextCtrl (this, wxID_ANY, std_to_wx (name), wxDefaultPosition, wxSize (320, -1)); table->Add (_name, 1, wxEXPAND); + add_label_to_sizer (table, this, "Certificate", true); + _certificate_load = new wxButton (this, wxID_ANY, wxT ("Load from file...")); + table->Add (_certificate_load, 1, wxEXPAND); + + table->AddSpacer (0); + _certificate_text = new wxTextCtrl (this, wxID_ANY, wxT (""), wxDefaultPosition, wxSize (320, 256), wxTE_MULTILINE | wxTE_READONLY); + if (certificate) { + _certificate_text->SetValue (certificate->certificate ()); + } + wxFont font = wxSystemSettings::GetFont (wxSYS_ANSI_FIXED_FONT); + font.SetPointSize (font.GetPointSize() / 2); + _certificate_text->SetFont (font); + table->Add (_certificate_text, 1, wxEXPAND); + wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); overall_sizer->Add (table, 1, wxEXPAND | wxALL, 6); @@ -43,6 +64,8 @@ ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name) SetSizer (overall_sizer); overall_sizer->Layout (); overall_sizer->SetSizeHints (this); + + _certificate_load->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ScreenDialog::load_certificate), 0, this); } string @@ -50,3 +73,25 @@ ScreenDialog::name () const { return wx_to_std (_name->GetValue()); } + +shared_ptr +ScreenDialog::certificate () const +{ + return _certificate; +} + +void +ScreenDialog::load_certificate (wxCommandEvent &) +{ + 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())); + } + + d->Destroy (); +}