2 Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
4 This file is part of DCP-o-matic.
6 DCP-o-matic is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 DCP-o-matic is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
21 /** @file src/player_config_dialog.cc
22 * @brief A dialogue to edit DCP-o-matic Player configuration.
25 #include "config_dialog.h"
27 #include "editable_list.h"
28 #include "filter_dialog.h"
29 #include "dir_picker_ctrl.h"
30 #include "file_picker_ctrl.h"
31 #include "isdcf_metadata_dialog.h"
32 #include "server_dialog.h"
33 #include "make_chain_dialog.h"
34 #include "email_dialog.h"
35 #include "name_format_editor.h"
36 #include "nag_dialog.h"
37 #include "config_dialog.h"
38 #include "lib/config.h"
39 #include "lib/ratio.h"
40 #include "lib/filter.h"
41 #include "lib/dcp_content_type.h"
44 #include "lib/cross.h"
45 #include "lib/exceptions.h"
46 #include <dcp/locale_convert.h>
47 #include <dcp/exceptions.h>
48 #include <dcp/certificate_chain.h>
49 #include <wx/stdpaths.h>
50 #include <wx/preferences.h>
51 #include <wx/spinctrl.h>
52 #include <wx/filepicker.h>
54 #include <boost/filesystem.hpp>
55 #include <boost/foreach.hpp>
66 using boost::shared_ptr;
67 using boost::function;
68 using boost::optional;
69 using dcp::locale_convert;
71 class PlayerGeneralPage : public GeneralPage
74 PlayerGeneralPage (wxSize panel_size, int border)
75 : GeneralPage (panel_size, border)
81 wxGridBagSizer* table = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
82 _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
85 add_language_controls (table, r);
86 add_play_sound_controls (table, r);
87 add_update_controls (table, r);
89 add_label_to_sizer (table, _panel, _("Start player as"), true, wxGBPosition(r, 0));
90 _player_mode = new wxChoice (_panel, wxID_ANY);
91 _player_mode->Append (_("window"));
92 _player_mode->Append (_("full screen"));
93 _player_mode->Append (_("full screen with controls on second monitor"));
94 table->Add (_player_mode, wxGBPosition(r, 1));
97 _player_mode->Bind (wxEVT_CHOICE, bind(&PlayerGeneralPage::player_mode_changed, this));
100 void config_changed ()
102 GeneralPage::config_changed ();
104 switch (Config::instance()->player_mode()) {
105 case Config::PLAYER_MODE_WINDOW:
106 checked_set (_player_mode, 0);
108 case Config::PLAYER_MODE_FULL:
109 checked_set (_player_mode, 1);
111 case Config::PLAYER_MODE_DUAL:
112 checked_set (_player_mode, 2);
118 void player_mode_changed ()
120 switch (_player_mode->GetSelection()) {
122 Config::instance()->set_player_mode(Config::PLAYER_MODE_WINDOW);
125 Config::instance()->set_player_mode(Config::PLAYER_MODE_FULL);
128 Config::instance()->set_player_mode(Config::PLAYER_MODE_DUAL);
133 wxChoice* _player_mode;
137 create_player_config_dialog ()
139 wxPreferencesEditor* e = new wxPreferencesEditor ();
142 /* Width that we force some of the config panels to be on OSX so that
143 the containing window doesn't shrink too much when we select those panels.
144 This is obviously an unpleasant hack.
146 wxSize ps = wxSize (520, -1);
147 int const border = 16;
149 wxSize ps = wxSize (-1, -1);
150 int const border = 8;
153 e->AddPage (new PlayerGeneralPage (ps, border));
154 e->AddPage (new KeysPage (ps, border));