From: Carl Hetherington Date: Sat, 8 Apr 2023 20:36:41 +0000 (+0200) Subject: Improve thumbprint dialog; disallow thumbprint editing and make OK only sensitive... X-Git-Tag: v2.16.52~4 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=a66c4f957d50e93e01912810876fbdd883ac5d6a Improve thumbprint dialog; disallow thumbprint editing and make OK only sensitive when a certificate is there. --- diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index 0ad8d9cf2..7578ca4ca 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -54,12 +54,14 @@ public: : TableDialog (parent, _("Trusted Device"), 3, 1, true) { add (_("Thumbprint"), true); - _thumbprint = add (new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(300, -1))); + _thumbprint = add(new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(300, -1), wxTE_READONLY)); _file = add (new Button(this, _("Load certificate..."))); layout (); _file->Bind (wxEVT_BUTTON, bind(&TrustedDeviceDialog::load_certificate, this)); + + setup_sensitivity(); } void load_certificate () @@ -72,6 +74,7 @@ public: try { _certificate = dcp::Certificate(dcp::file_to_string(dialog.paths()[0])); _thumbprint->SetValue (std_to_wx(_certificate->thumbprint())); + setup_sensitivity(); } catch (dcp::MiscError& e) { error_dialog(this, wxString::Format(_("Could not load certificate (%s)"), std_to_wx(e.what()))); } @@ -81,6 +84,7 @@ public: { _certificate = t.certificate (); _thumbprint->SetValue (std_to_wx(t.thumbprint())); + setup_sensitivity(); } optional get () @@ -96,6 +100,13 @@ public: } private: + void setup_sensitivity() + { + auto ok = dynamic_cast(FindWindowById(wxID_OK, this)); + DCPOMATIC_ASSERT(ok); + ok->Enable(static_cast(_certificate)); + } + wxTextCtrl* _thumbprint; wxButton* _file; boost::optional _certificate;