summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-04-08 22:36:41 +0200
committerCarl Hetherington <cth@carlh.net>2023-04-08 22:36:41 +0200
commita66c4f957d50e93e01912810876fbdd883ac5d6a (patch)
tree7363418aba7dec13c528a688180c3292d2e3cdf0
parentb6deee98e2928040793bd76ab879a5b9be4b80dc (diff)
Improve thumbprint dialog; disallow thumbprint editing and make OK only sensitive when a certificate is there.
-rw-r--r--src/wx/screen_dialog.cc13
1 files changed, 12 insertions, 1 deletions
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<TrustedDevice> get ()
@@ -96,6 +100,13 @@ public:
}
private:
+ void setup_sensitivity()
+ {
+ auto ok = dynamic_cast<wxButton*>(FindWindowById(wxID_OK, this));
+ DCPOMATIC_ASSERT(ok);
+ ok->Enable(static_cast<bool>(_certificate));
+ }
+
wxTextCtrl* _thumbprint;
wxButton* _file;
boost::optional<dcp::Certificate> _certificate;