+ wxCheckBox* _check_for_updates;
+ wxCheckBox* _check_for_test_updates;
+};
+
+
+class CertificateChainEditor : public wxDialog
+{
+public:
+ CertificateChainEditor (
+ wxWindow* parent,
+ wxString title,
+ int border,
+ std::function<void (std::shared_ptr<dcp::CertificateChain>)> set,
+ std::function<std::shared_ptr<const dcp::CertificateChain> (void)> get,
+ std::function<bool (void)> nag_alter
+ );
+
+ void add_button (wxWindow* button);
+
+private:
+ void add_certificate ();
+ void remove_certificate ();
+ void export_certificate ();
+ void update_certificate_list ();
+ void remake_certificates ();
+ void update_sensitivity ();
+ void update_private_key ();
+ void import_private_key ();
+ void export_private_key ();
+ void export_chain ();
+
+ wxListCtrl* _certificates;
+ wxButton* _add_certificate;
+ wxButton* _export_certificate;
+ wxButton* _remove_certificate;
+ wxButton* _remake_certificates;
+ wxStaticText* _private_key;
+ wxButton* _import_private_key;
+ wxButton* _export_private_key;
+ wxButton* _export_chain;
+ wxStaticText* _private_key_bad;
+ wxSizer* _sizer;
+ wxBoxSizer* _button_sizer;
+ std::function<void (std::shared_ptr<dcp::CertificateChain>)> _set;
+ std::function<std::shared_ptr<const dcp::CertificateChain> (void)> _get;
+ std::function<bool (void)> _nag_alter;
+};
+
+class KeysPage : public Page
+{
+public:
+ KeysPage (wxSize panel_size, int border)
+ : Page (panel_size, border)
+ {}
+
+ wxString GetName () const override;
+
+#ifdef DCPOMATIC_OSX
+ wxBitmap GetLargeIcon () const override
+ {
+ return wxBitmap(bitmap_path("keys.png"), wxBITMAP_TYPE_PNG);
+ }
+#endif
+
+private:
+
+ void setup () override;
+
+ void export_decryption_certificate ();
+ void config_changed () override {}
+ bool nag_alter_decryption_chain ();
+ void decryption_advanced ();
+ void signing_advanced ();
+ void export_decryption_chain_and_key ();
+ void import_decryption_chain_and_key ();
+ void remake_signing ();
+};
+
+
+class SoundPage : public Page
+{
+public:
+ SoundPage (wxSize panel_size, int border)
+ : Page (panel_size, border)
+ {}
+
+ wxString GetName() const override;
+
+#ifdef DCPOMATIC_OSX
+ wxBitmap GetLargeIcon () const override
+ {
+ return wxBitmap(bitmap_path("sound.png"), wxBITMAP_TYPE_PNG);
+ }
+#endif
+
+private:
+
+ void setup () override;
+ void config_changed () override;
+ boost::optional<std::string> get_sound_output ();
+ void sound_changed ();
+ void sound_output_changed ();
+ void setup_sensitivity ();
+ void map_changed (AudioMapping m);
+ void reset_to_default ();
+
+ wxCheckBox* _sound;
+ wxChoice* _sound_output;
+ wxStaticText* _sound_output_details;
+ AudioMappingView* _map;
+ Button* _reset_to_default;
+};
+
+
+class LocationsPage : public Page
+{
+public:
+ LocationsPage (wxSize panel_size, int border);
+
+ wxString GetName () const override;
+
+#ifdef DCPOMATIC_OSX
+ wxBitmap GetLargeIcon () const override;