X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.h;h=c767929f75f76fc9558bade2ca846b890e3e3620;hp=32123a0d7eb92748d3b0e3cd701dca15c614bb53;hb=439b5d7a315daf2422cb6c995110d628a91d9389;hpb=71ea64782f215c605877f5c231a2a8b1838fe8bd diff --git a/src/wx/config_dialog.h b/src/wx/config_dialog.h index 32123a0d7..c767929f7 100644 --- a/src/wx/config_dialog.h +++ b/src/wx/config_dialog.h @@ -1,76 +1,246 @@ /* - 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 DVD-o-matic configuration. - */ -#include -#include -#include +#ifndef DCPOMATIC_CONFIG_DIALOG_H +#define DCPOMATIC_CONFIG_DIALOG_H + + +#include "editable_list.h" +#include "make_chain_dialog.h" +#include "wx_util.h" +#include "lib/config.h" +#include "lib/cross.h" +#include "lib/dcp_content_type.h" +#include "lib/exceptions.h" +#include "lib/filter.h" +#include "lib/log.h" +#include "lib/ratio.h" +#include "lib/util.h" +#include +#include +#include +#include +LIBDCP_DISABLE_WARNINGS #include +#include +#include +#include +#include +LIBDCP_ENABLE_WARNINGS +#include + + +class AudioMappingView; + + +class Page : public wxPreferencesPage +{ +public: + Page (wxSize panel_size, int border); + virtual ~Page () {} + + wxWindow* CreateWindow (wxWindow* parent) override; + +protected: + wxWindow* create_window (wxWindow* parent); + + int _border; + wxPanel* _panel; + +private: + virtual void config_changed () = 0; + virtual void setup () = 0; + + void config_changed_wrapper (); + void window_destroyed (); + + wxSize _panel_size; + boost::signals2::scoped_connection _config_connection; + bool _window_exists; +}; + + +class GeneralPage : public Page +{ +public: + GeneralPage (wxSize panel_size, int border); + + wxString GetName () const override; + +#ifdef DCPOMATIC_OSX + wxBitmap GetLargeIcon () const override + { + return wxBitmap(bitmap_path("general.png"), wxBITMAP_TYPE_PNG); + } +#endif + +protected: + void add_language_controls (wxGridBagSizer* table, int& r); + void add_update_controls (wxGridBagSizer* table, int& r); + void config_changed () override; + +private: + void setup_sensitivity (); + void set_language_changed (); + void language_changed (); + void check_for_updates_changed (); + void check_for_test_updates_changed (); + + wxCheckBox* _set_language; + wxChoice* _language; + wxCheckBox* _check_for_updates; + wxCheckBox* _check_for_test_updates; +}; + -class DirPickerCtrl; +class CertificateChainEditor : public wxDialog +{ +public: + CertificateChainEditor ( + wxWindow* parent, + wxString title, + int border, + std::function)> set, + std::function (void)> get, + std::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 (); -class ServerDescription; + 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)> _set; + std::function (void)> _get; + std::function _nag_alter; +}; -/** @class ConfigDialog - * @brief A dialogue to edit DVD-o-matic configuration. - */ -class ConfigDialog : public wxDialog +class KeysPage : public Page { public: - ConfigDialog (wxWindow *); + 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 tms_ip_changed (wxCommandEvent &); - void tms_path_changed (wxCommandEvent &); - void tms_user_changed (wxCommandEvent &); - void tms_password_changed (wxCommandEvent &); - void num_local_encoding_threads_changed (wxCommandEvent &); - void default_directory_changed (wxCommandEvent &); - void reference_scaler_changed (wxCommandEvent &); - void edit_reference_filters_clicked (wxCommandEvent &); - void reference_filters_changed (std::vector); - void add_server_clicked (wxCommandEvent &); - void edit_server_clicked (wxCommandEvent &); - void remove_server_clicked (wxCommandEvent &); - void server_selection_changed (wxListEvent &); - - void add_server_to_control (ServerDescription *); - - wxTextCtrl* _tms_ip; - wxTextCtrl* _tms_path; - wxTextCtrl* _tms_user; - wxTextCtrl* _tms_password; - wxSpinCtrl* _num_local_encoding_threads; -#ifdef __WXMSW__ - DirPickerCtrl* _default_directory; -#else - wxDirPickerCtrl* _default_directory; -#endif - wxComboBox* _reference_scaler; - wxStaticText* _reference_filters; - wxButton* _reference_filters_button; - wxListCtrl* _servers; - wxButton* _add_server; - wxButton* _edit_server; - wxButton* _remove_server; + + 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 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; +#endif + +private: + void setup () override; + void config_changed () override; + void content_directory_changed (); + void playlist_directory_changed (); + void kdm_directory_changed (); + + wxDirPickerCtrl* _content_directory; + wxDirPickerCtrl* _playlist_directory; + wxDirPickerCtrl* _kdm_directory; }; +#endif