X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.h;h=ac90cd42da2af4ae7a2356485a2aedde6ceb1858;hb=377de24c4cb129fab39e30a089050c2af8202494;hp=8a17de58db9b460abf130692bf1a7a9fa7a656b4;hpb=e8204f55c981493b99814f71a50b3c3d62601032;p=dcpomatic.git diff --git a/src/wx/config_dialog.h b/src/wx/config_dialog.h index 8a17de58d..ac90cd42d 100644 --- a/src/wx/config_dialog.h +++ b/src/wx/config_dialog.h @@ -1,120 +1,188 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2018 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ -/** @file src/config_dialog.h - * @brief A dialogue to edit DCP-o-matic configuration. - */ +#ifndef DCPOMATIC_CONFIG_DIALOG_H +#define DCPOMATIC_CONFIG_DIALOG_H -#include -#include -#include -#include #include "wx_util.h" #include "editable_list.h" +#include "make_chain_dialog.h" +#include "lib/config.h" +#include "lib/ratio.h" +#include "lib/filter.h" +#include "lib/dcp_content_type.h" +#include "lib/log.h" +#include "lib/util.h" +#include "lib/cross.h" +#include "lib/exceptions.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Page +{ +public: + Page (wxSize panel_size, int border); + virtual ~Page () {} + +protected: + wxWindow* create_window (wxWindow* parent); + + int _border; + wxPanel* _panel; + +private: + virtual void config_changed () = 0; + virtual void setup () = 0; -class DirPickerCtrl; -class wxNotebook; -class PresetColourConversion; -class PresetColourConversionDialog; -class ServerDialog; + void config_changed_wrapper (); + void window_destroyed (); -/** @class ConfigDialog - * @brief A dialogue to edit DCP-o-matic configuration. - */ -class ConfigDialog : public wxDialog + wxSize _panel_size; + boost::signals2::scoped_connection _config_connection; + bool _window_exists; +}; + +class StockPage : public wxStockPreferencesPage, public Page +{ +public: + StockPage (Kind kind, wxSize panel_size, int border); + wxWindow* CreateWindow (wxWindow* parent); +}; + +class StandardPage : public wxPreferencesPage, public Page { public: - ConfigDialog (wxWindow *); + StandardPage (wxSize panel_size, int border); + wxWindow* CreateWindow (wxWindow* parent); +}; + +class GeneralPage : public StockPage +{ +public: + GeneralPage (wxSize panel_size, int border); + +protected: + void add_language_controls (wxGridBagSizer* table, int& r); + void add_play_sound_controls (wxGridBagSizer* table, int& r); + void add_update_controls (wxGridBagSizer* table, int& r); + virtual void config_changed (); private: + void setup_sensitivity (); + boost::optional get_sound_output (); void set_language_changed (); void language_changed (); - void tms_ip_changed (); - void tms_path_changed (); - void tms_user_changed (); - void tms_password_changed (); - void num_local_encoding_threads_changed (); - void default_still_length_changed (); - void default_directory_changed (); - void edit_default_dci_metadata_clicked (); - void default_container_changed (); - void default_dcp_content_type_changed (); - void issuer_changed (); - void creator_changed (); - void default_j2k_bandwidth_changed (); - void default_audio_delay_changed (); - void mail_server_changed (); - void mail_user_changed (); - void mail_password_changed (); - void kdm_from_changed (); - void kdm_email_changed (); - void use_any_servers_changed (); - - void setup_language_sensitivity (); - - void make_misc_panel (); - void make_defaults_panel (); - void make_servers_panel (); - void make_tms_panel (); - void make_metadata_panel (); - void make_colour_conversions_panel (); - void make_kdm_email_panel (); - void check_for_updates_changed (); void check_for_test_updates_changed (); + void sound_changed (); + void sound_output_changed (); - wxNotebook* _notebook; - wxPanel* _misc_panel; - wxPanel* _defaults_panel; - wxPanel* _servers_panel; - wxPanel* _tms_panel; - EditableList* _colour_conversions_panel; - wxPanel* _metadata_panel; wxCheckBox* _set_language; wxChoice* _language; - wxChoice* _default_container; - wxChoice* _default_dcp_content_type; - wxTextCtrl* _tms_ip; - wxTextCtrl* _tms_path; - wxTextCtrl* _tms_user; - wxTextCtrl* _tms_password; - wxSpinCtrl* _num_local_encoding_threads; - wxTextCtrl* _mail_server; - wxTextCtrl* _mail_user; - wxTextCtrl* _mail_password; - wxTextCtrl* _kdm_from; - wxSpinCtrl* _default_still_length; -#ifdef DCPOMATIC_USE_OWN_DIR_PICKER - DirPickerCtrl* _default_directory; -#else - wxDirPickerCtrl* _default_directory; -#endif - wxButton* _default_dci_metadata_button; - wxTextCtrl* _issuer; - wxTextCtrl* _creator; - wxSpinCtrl* _default_j2k_bandwidth; - wxSpinCtrl* _default_audio_delay; - wxPanel* _kdm_email_panel; - wxTextCtrl* _kdm_email; - wxCheckBox* _use_any_servers; + wxCheckBox* _sound; + wxChoice* _sound_output; + wxStaticText* _sound_output_details; wxCheckBox* _check_for_updates; wxCheckBox* _check_for_test_updates; - EditableList* _servers_list; }; +class CertificateChainEditor : public wxDialog +{ +public: + CertificateChainEditor ( + wxWindow* parent, + wxString title, + int border, + boost::function)> set, + boost::function (void)> get, + boost::function 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; + boost::function)> _set; + boost::function (void)> _get; + boost::function _nag_alter; +}; + +class KeysPage : public StandardPage +{ +public: + KeysPage (wxSize panel_size, int border) + : StandardPage (panel_size, border) + {} + + wxString GetName () const; + +#ifdef DCPOMATIC_OSX + wxBitmap GetLargeIcon () const + { + return wxBitmap ("keys", wxBITMAP_TYPE_PNG_RESOURCE); + } +#endif + +private: + + void setup (); + + void export_decryption_certificate (); + void config_changed () {} + bool nag_alter_decryption_chain (); + void decryption_advanced (); + void signing_advanced (); + void export_decryption_chain_and_key (); + void import_decryption_chain_and_key (); +}; + + +#endif