*/
#include "config_dialog.h"
+#include "static_text.h"
+#include "check_box.h"
#include "nag_dialog.h"
+#include "dcpomatic_button.h"
using std::string;
using std::vector;
void
GeneralPage::add_language_controls (wxGridBagSizer* table, int& r)
{
- _set_language = new wxCheckBox (_panel, wxID_ANY, _("Set language"));
+ _set_language = new CheckBox (_panel, _("Set language"));
table->Add (_set_language, wxGBPosition (r, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
_language = new wxChoice (_panel, wxID_ANY);
vector<pair<string, string> > languages;
void
GeneralPage::add_play_sound_controls (wxGridBagSizer* table, int& r)
{
- _sound = new wxCheckBox (_panel, wxID_ANY, _("Play sound via"));
+ _sound = new CheckBox (_panel, _("Play sound via"));
table->Add (_sound, wxGBPosition (r, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
_sound_output = new wxChoice (_panel, wxID_ANY);
table->Add (_sound_output, wxGBPosition (r, 1));
void
GeneralPage::add_update_controls (wxGridBagSizer* table, int& r)
{
- _check_for_updates = new wxCheckBox (_panel, wxID_ANY, _("Check for updates on startup"));
+ _check_for_updates = new CheckBox (_panel, _("Check for updates on startup"));
table->Add (_check_for_updates, wxGBPosition (r, 0), wxGBSpan (1, 2));
++r;
- _check_for_test_updates = new wxCheckBox (_panel, wxID_ANY, _("Check for testing updates on startup"));
+ _check_for_test_updates = new CheckBox (_panel, _("Check for testing updates on startup"));
table->Add (_check_for_test_updates, wxGBPosition (r, 0), wxGBSpan (1, 2));
++r;
_sizer = new wxBoxSizer (wxVERTICAL);
{
- wxStaticText* m = new wxStaticText (this, wxID_ANY, title);
+ wxStaticText* m = new StaticText (this, title);
m->SetFont (subheading_font);
_sizer->Add (m, 0, wxALL, border);
}
{
wxSizer* s = new wxBoxSizer (wxVERTICAL);
- _add_certificate = new wxButton (this, wxID_ANY, _("Add..."));
+ _add_certificate = new Button (this, _("Add..."));
s->Add (_add_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
- _remove_certificate = new wxButton (this, wxID_ANY, _("Remove"));
+ _remove_certificate = new Button (this, _("Remove"));
s->Add (_remove_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
- _export_certificate = new wxButton (this, wxID_ANY, _("Export"));
+ _export_certificate = new Button (this, _("Export"));
s->Add (_export_certificate, 0, wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
certificates_sizer->Add (s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP);
}
int r = 0;
add_label_to_sizer (table, this, _("Leaf private key"), true, wxGBPosition (r, 0));
- _private_key = new wxStaticText (this, wxID_ANY, wxT (""));
+ _private_key = new StaticText (this, wxT(""));
wxFont font = _private_key->GetFont ();
font.SetFamily (wxFONTFAMILY_TELETYPE);
_private_key->SetFont (font);
table->Add (_private_key, wxGBPosition (r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
- _import_private_key = new wxButton (this, wxID_ANY, _("Import..."));
+ _import_private_key = new Button (this, _("Import..."));
table->Add (_import_private_key, wxGBPosition (r, 2));
- _export_private_key = new wxButton (this, wxID_ANY, _("Export..."));
+ _export_private_key = new Button (this, _("Export..."));
table->Add (_export_private_key, wxGBPosition (r, 3));
++r;
_button_sizer = new wxBoxSizer (wxHORIZONTAL);
- _remake_certificates = new wxButton (this, wxID_ANY, _("Re-make certificates and key..."));
+ _remake_certificates = new Button (this, _("Re-make certificates and key..."));
_button_sizer->Add (_remake_certificates, 1, wxRIGHT, border);
+ _export_chain = new Button (this, _("Export chain..."));
+ _button_sizer->Add (_export_chain, 1, wxRIGHT, border);
table->Add (_button_sizer, wxGBPosition (r, 0), wxGBSpan (1, 4));
++r;
- _private_key_bad = new wxStaticText (this, wxID_ANY, _("Leaf private key does not match leaf certificate!"));
+ _private_key_bad = new StaticText (this, _("Leaf private key does not match leaf certificate!"));
font = *wxSMALL_FONT;
font.SetWeight (wxFONTWEIGHT_BOLD);
_private_key_bad->SetFont (font);
_certificates->Bind (wxEVT_LIST_ITEM_SELECTED, bind (&CertificateChainEditor::update_sensitivity, this));
_certificates->Bind (wxEVT_LIST_ITEM_DESELECTED, bind (&CertificateChainEditor::update_sensitivity, this));
_remake_certificates->Bind (wxEVT_BUTTON, bind (&CertificateChainEditor::remake_certificates, this));
+ _export_chain->Bind (wxEVT_BUTTON, bind (&CertificateChainEditor::export_chain, this));
_import_private_key->Bind (wxEVT_BUTTON, bind (&CertificateChainEditor::import_private_key, this));
_export_private_key->Bind (wxEVT_BUTTON, bind (&CertificateChainEditor::export_private_key, this));
}
string const s = j->certificate (true);
- fwrite (s.c_str(), 1, s.length(), f);
+ checked_fwrite (s.c_str(), s.length(), f, path);
fclose (f);
}
d->Destroy ();
}
+void
+CertificateChainEditor::export_chain ()
+{
+ wxFileDialog* d = new wxFileDialog (
+ this, _("Select Chain File"), wxEmptyString, wxEmptyString, wxT("PEM files (*.pem)|*.pem"),
+ wxFD_SAVE | wxFD_OVERWRITE_PROMPT
+ );
+
+ if (d->ShowModal () == wxID_OK) {
+ boost::filesystem::path path (wx_to_std(d->GetPath()));
+ FILE* f = fopen_boost (path, "w");
+ if (!f) {
+ throw OpenFileError (path, errno, false);
+ }
+
+ string const s = _get()->chain();
+ checked_fwrite (s.c_str(), s.length(), f, path);
+ fclose (f);
+ }
+
+ d->Destroy ();
+}
+
void
CertificateChainEditor::update_certificate_list ()
{
}
string const s = _get()->key().get ();
- fwrite (s.c_str(), 1, s.length(), f);
+ checked_fwrite (s.c_str(), s.length(), f, path);
fclose (f);
}
d->Destroy ();
wxSizer* sizer = _panel->GetSizer();
{
- wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Decrypting KDMs"));
+ wxStaticText* m = new StaticText (_panel, _("Decrypting KDMs"));
m->SetFont (subheading_font);
sizer->Add (m, 0, wxALL, _border);
}
- wxButton* export_decryption_certificate = new wxButton (_panel, wxID_ANY, _("Export KDM decryption certificate..."));
+ wxButton* export_decryption_certificate = new Button (_panel, _("Export KDM decryption certificate..."));
sizer->Add (export_decryption_certificate, 0, wxLEFT, _border);
- wxButton* export_decryption_chain = new wxButton (_panel, wxID_ANY, _("Export KDM decryption chain..."));
- sizer->Add (export_decryption_chain, 0, wxLEFT, _border);
- wxButton* export_settings = new wxButton (_panel, wxID_ANY, _("Export all KDM decryption settings..."));
+ wxButton* export_settings = new Button (_panel, _("Export all KDM decryption settings..."));
sizer->Add (export_settings, 0, wxLEFT, _border);
- wxButton* import_settings = new wxButton (_panel, wxID_ANY, _("Import all KDM decryption settings..."));
+ wxButton* import_settings = new Button (_panel, _("Import all KDM decryption settings..."));
sizer->Add (import_settings, 0, wxLEFT, _border);
- wxButton* decryption_advanced = new wxButton (_panel, wxID_ANY, _("Advanced..."));
+ wxButton* decryption_advanced = new Button (_panel, _("Advanced..."));
sizer->Add (decryption_advanced, 0, wxALL, _border);
export_decryption_certificate->Bind (wxEVT_BUTTON, bind (&KeysPage::export_decryption_certificate, this));
- export_decryption_chain->Bind (wxEVT_BUTTON, bind (&KeysPage::export_decryption_chain, this));
export_settings->Bind (wxEVT_BUTTON, bind (&KeysPage::export_decryption_chain_and_key, this));
import_settings->Bind (wxEVT_BUTTON, bind (&KeysPage::import_decryption_chain_and_key, this));
decryption_advanced->Bind (wxEVT_BUTTON, bind (&KeysPage::decryption_advanced, this));
{
- wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Signing DCPs and KDMs"));
+ wxStaticText* m = new StaticText (_panel, _("Signing DCPs and KDMs"));
m->SetFont (subheading_font);
sizer->Add (m, 0, wxALL, _border);
}
- wxButton* signing_advanced = new wxButton (_panel, wxID_ANY, _("Advanced..."));
+ wxButton* signing_advanced = new Button (_panel, _("Advanced..."));
sizer->Add (signing_advanced, 0, wxLEFT, _border);
signing_advanced->Bind (wxEVT_BUTTON, bind (&KeysPage::signing_advanced, this));
}
}
string const chain = Config::instance()->decryption_chain()->chain();
- fwrite (chain.c_str(), 1, chain.length(), f);
+ checked_fwrite (chain.c_str(), chain.length(), f, path);
optional<string> const key = Config::instance()->decryption_chain()->key();
DCPOMATIC_ASSERT (key);
- fwrite (key->c_str(), 1, key->length(), f);
+ checked_fwrite (key->c_str(), key->length(), f, path);
fclose (f);
}
d->Destroy ();
);
}
-void
-KeysPage::export_decryption_chain ()
-{
- wxFileDialog* d = new wxFileDialog (
- _panel, _("Select Chain File"), wxEmptyString, _("dcpomatic_kdm_decryption_chain.pem"), wxT ("PEM files (*.pem)|*.pem"),
- wxFD_SAVE | wxFD_OVERWRITE_PROMPT
- );
-
- if (d->ShowModal () == wxID_OK) {
- boost::filesystem::path path (wx_to_std(d->GetPath()));
- FILE* f = fopen_boost (path, "w");
- if (!f) {
- throw OpenFileError (path, errno, false);
- }
-
- string const s = Config::instance()->decryption_chain()->chain();
- fwrite (s.c_str(), 1, s.length(), f);
- fclose (f);
- }
- d->Destroy ();
-}
-
void
KeysPage::export_decryption_certificate ()
{
}
string const s = Config::instance()->decryption_chain()->leaf().certificate (true);
- fwrite (s.c_str(), 1, s.length(), f);
+ checked_fwrite (s.c_str(), s.length(), f, path);
fclose (f);
}