diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-01-14 21:49:40 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-01-14 21:49:40 +0000 |
| commit | 048f9b6b5569f03d1342a04f75c83a2bad340996 (patch) | |
| tree | 2e9db97154b82b91a7a6ff1002d317f35d11608d /src/wx | |
| parent | 3031638f0ddf23654b72af2088a7616791307310 (diff) | |
Various work on certificate handling for screens; need XML config here, now.
Diffstat (limited to 'src/wx')
| -rw-r--r-- | src/wx/kdm_dialog.cc | 5 | ||||
| -rw-r--r-- | src/wx/screen_dialog.cc | 49 | ||||
| -rw-r--r-- | src/wx/screen_dialog.h | 11 |
3 files changed, 60 insertions, 5 deletions
diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index 0febdf38e..d94c13057 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -269,7 +269,7 @@ KDMDialog::add_screen_clicked (wxCommandEvent &) ScreenDialog* d = new ScreenDialog (this, "Add Screen"); d->ShowModal (); - shared_ptr<Screen> s (new Screen (d->name())); + shared_ptr<Screen> s (new Screen (d->name(), d->certificate())); c->screens.push_back (s); add_screen (c, s); @@ -287,10 +287,11 @@ KDMDialog::edit_screen_clicked (wxCommandEvent &) pair<wxTreeItemId, shared_ptr<Screen> > s = selected_screens().front(); - ScreenDialog* d = new ScreenDialog (this, "Edit screen", s.second->name); + ScreenDialog* d = new ScreenDialog (this, "Edit screen", s.second->name, s.second->certificate); d->ShowModal (); s.second->name = d->name (); + s.second->certificate = d->certificate (); _targets->SetItemText (s.first, std_to_wx (d->name())); Config::instance()->write (); diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index 32f36ab8b..910dece9d 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -17,21 +17,42 @@ */ +#include <wx/filepicker.h> +#include <wx/validate.h> +#include <libdcp/exceptions.h> +#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<libdcp::Certificate> 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)); + _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"); + _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<libdcp::Certificate> +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 (); +} diff --git a/src/wx/screen_dialog.h b/src/wx/screen_dialog.h index 78869782f..1bd4a89a9 100644 --- a/src/wx/screen_dialog.h +++ b/src/wx/screen_dialog.h @@ -18,14 +18,23 @@ */ #include <wx/wx.h> +#include <boost/shared_ptr.hpp> +#include <libdcp/certificates.h> class ScreenDialog : public wxDialog { public: - ScreenDialog (wxWindow *, std::string, std::string name = ""); + ScreenDialog (wxWindow *, std::string, std::string name = "", boost::shared_ptr<libdcp::Certificate> c = boost::shared_ptr<libdcp::Certificate> ()); std::string name () const; + boost::shared_ptr<libdcp::Certificate> certificate () const; private: + void load_certificate (wxCommandEvent &); + wxTextCtrl* _name; + wxButton* _certificate_load; + wxTextCtrl* _certificate_text; + + boost::shared_ptr<libdcp::Certificate> _certificate; }; |
