X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffull_config_dialog.cc;h=c41236096c9466d2896b23cbe0e202e58297bca3;hb=44da1840ca17d0945cb1886bb17218990850894c;hp=370ec35a1a90ea0b13cfd5ceb1780595658fe814;hpb=981100bbff6883ff024b41d4b62e00b2ab8caec4;p=dcpomatic.git diff --git a/src/wx/full_config_dialog.cc b/src/wx/full_config_dialog.cc index 370ec35a1..c41236096 100644 --- a/src/wx/full_config_dialog.cc +++ b/src/wx/full_config_dialog.cc @@ -71,6 +71,9 @@ using boost::bind; using boost::shared_ptr; using boost::function; using boost::optional; +#if BOOST_VERSION >= 106100 +using namespace boost::placeholders; +#endif using dcp::locale_convert; class FullGeneralPage : public GeneralPage @@ -89,11 +92,6 @@ private: int r = 0; add_language_controls (table, r); - add_label_to_sizer (table, _panel, _("Interface complexity"), true, wxGBPosition(r, 0)); - _interface_complexity = new wxChoice (_panel, wxID_ANY); - table->Add (_interface_complexity, wxGBPosition (r, 1)); - ++r; - add_label_to_sizer (table, _panel, _("Number of threads DCP-o-matic should use"), true, wxGBPosition (r, 0)); _master_encoding_threads = new wxSpinCtrl (_panel); table->Add (_master_encoding_threads, wxGBPosition (r, 1)); @@ -128,27 +126,9 @@ private: add_update_controls (table, r); - wxFlexGridSizer* bottom_table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - bottom_table->AddGrowableCol (1, 1); - - add_label_to_sizer (bottom_table, _panel, _("Issuer"), true); - _issuer = new wxTextCtrl (_panel, wxID_ANY); - bottom_table->Add (_issuer, 1, wxALL | wxEXPAND); - - add_label_to_sizer (bottom_table, _panel, _("Creator"), true); - _creator = new wxTextCtrl (_panel, wxID_ANY); - bottom_table->Add (_creator, 1, wxALL | wxEXPAND); - - table->Add (bottom_table, wxGBPosition (r, 0), wxGBSpan (2, 2), wxEXPAND); - ++r; - _config_file->Bind (wxEVT_FILEPICKER_CHANGED, boost::bind (&FullGeneralPage::config_file_changed, this)); _cinemas_file->Bind (wxEVT_FILEPICKER_CHANGED, boost::bind (&FullGeneralPage::cinemas_file_changed, this)); - _interface_complexity->Append (_("Simple")); - _interface_complexity->Append (_("Full")); - _interface_complexity->Bind (wxEVT_CHOICE, boost::bind(&FullGeneralPage::interface_complexity_changed, this)); - _master_encoding_threads->SetRange (1, 128); _master_encoding_threads->Bind (wxEVT_SPINCTRL, boost::bind (&FullGeneralPage::master_encoding_threads_changed, this)); _server_encoding_threads->SetRange (1, 128); @@ -159,31 +139,18 @@ private: _analyse_ebur128->Bind (wxEVT_CHECKBOX, boost::bind (&FullGeneralPage::analyse_ebur128_changed, this)); #endif _automatic_audio_analysis->Bind (wxEVT_CHECKBOX, boost::bind (&FullGeneralPage::automatic_audio_analysis_changed, this)); - - _issuer->Bind (wxEVT_TEXT, boost::bind (&FullGeneralPage::issuer_changed, this)); - _creator->Bind (wxEVT_TEXT, boost::bind (&FullGeneralPage::creator_changed, this)); } void config_changed () { Config* config = Config::instance (); - switch (config->interface_complexity()) { - case Config::INTERFACE_SIMPLE: - checked_set (_interface_complexity, 0); - break; - case Config::INTERFACE_FULL: - checked_set (_interface_complexity, 1); - break; - } checked_set (_master_encoding_threads, config->master_encoding_threads ()); checked_set (_server_encoding_threads, config->server_encoding_threads ()); #ifdef DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG checked_set (_analyse_ebur128, config->analyse_ebur128 ()); #endif checked_set (_automatic_audio_analysis, config->automatic_audio_analysis ()); - checked_set (_issuer, config->dcp_issuer ()); - checked_set (_creator, config->dcp_creator ()); checked_set (_config_file, config->config_file()); checked_set (_cinemas_file, config->cinemas_file()); @@ -203,16 +170,6 @@ private: d->Destroy (); } - void interface_complexity_changed () - { - if (_interface_complexity->GetSelection() == 0) { - Config::instance()->set_interface_complexity (Config::INTERFACE_SIMPLE); - } else { - Config::instance()->set_interface_complexity (Config::INTERFACE_FULL); - } - } - - #ifdef DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG void analyse_ebur128_changed () { @@ -235,16 +192,6 @@ private: Config::instance()->set_server_encoding_threads (_server_encoding_threads->GetValue ()); } - void issuer_changed () - { - Config::instance()->set_dcp_issuer (wx_to_std (_issuer->GetValue ())); - } - - void creator_changed () - { - Config::instance()->set_dcp_creator (wx_to_std (_creator->GetValue ())); - } - void config_file_changed () { Config* config = Config::instance(); @@ -276,7 +223,6 @@ private: Config::instance()->set_cinemas_file (wx_to_std (_cinemas_file->GetPath ())); } - wxChoice* _interface_complexity; wxSpinCtrl* _master_encoding_threads; wxSpinCtrl* _server_encoding_threads; FilePickerCtrl* _config_file; @@ -285,15 +231,13 @@ private: wxCheckBox* _analyse_ebur128; #endif wxCheckBox* _automatic_audio_analysis; - wxTextCtrl* _issuer; - wxTextCtrl* _creator; }; -class DefaultsPage : public StandardPage +class DefaultsPage : public Page { public: DefaultsPage (wxSize panel_size, int border) - : StandardPage (panel_size, border) + : Page (panel_size, border) {} wxString GetName () const @@ -316,15 +260,15 @@ private: _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border); { - add_label_to_sizer (table, _panel, _("Default duration of still images"), true); + add_label_to_sizer (table, _panel, _("Default duration of still images"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _still_length = new wxSpinCtrl (_panel); s->Add (_still_length); - add_label_to_sizer (s, _panel, _("s"), false); + add_label_to_sizer (s, _panel, _("s"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); table->Add (s, 1); } - add_label_to_sizer (table, _panel, _("Default directory for new films"), true); + add_label_to_sizer (table, _panel, _("Default directory for new films"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); #ifdef DCPOMATIC_USE_OWN_PICKER _directory = new DirPickerCtrl (_panel); #else @@ -332,49 +276,45 @@ private: #endif table->Add (_directory, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("Default ISDCF name details"), true); + add_label_to_sizer (table, _panel, _("Default ISDCF name details"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _isdcf_metadata_button = new Button (_panel, _("Edit...")); table->Add (_isdcf_metadata_button); - add_label_to_sizer (table, _panel, _("Default container"), true); + add_label_to_sizer (table, _panel, _("Default container"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _container = new wxChoice (_panel, wxID_ANY); table->Add (_container); - add_label_to_sizer (table, _panel, _("Default scale-to"), true); - _scale_to = new wxChoice (_panel, wxID_ANY); - table->Add (_scale_to); - - add_label_to_sizer (table, _panel, _("Default content type"), true); + add_label_to_sizer (table, _panel, _("Default content type"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _dcp_content_type = new wxChoice (_panel, wxID_ANY); table->Add (_dcp_content_type); - add_label_to_sizer (table, _panel, _("Default DCP audio channels"), true); + add_label_to_sizer (table, _panel, _("Default DCP audio channels"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _dcp_audio_channels = new wxChoice (_panel, wxID_ANY); table->Add (_dcp_audio_channels); { - add_label_to_sizer (table, _panel, _("Default JPEG2000 bandwidth"), true); + add_label_to_sizer (table, _panel, _("Default JPEG2000 bandwidth"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _j2k_bandwidth = new wxSpinCtrl (_panel); s->Add (_j2k_bandwidth); - add_label_to_sizer (s, _panel, _("Mbit/s"), false); + add_label_to_sizer (s, _panel, _("Mbit/s"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); table->Add (s, 1); } { - add_label_to_sizer (table, _panel, _("Default audio delay"), true); + add_label_to_sizer (table, _panel, _("Default audio delay"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _audio_delay = new wxSpinCtrl (_panel); s->Add (_audio_delay); - add_label_to_sizer (s, _panel, _("ms"), false); + add_label_to_sizer (s, _panel, _("ms"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); table->Add (s, 1); } - add_label_to_sizer (table, _panel, _("Default standard"), true); + add_label_to_sizer (table, _panel, _("Default standard"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _standard = new wxChoice (_panel, wxID_ANY); table->Add (_standard); - add_label_to_sizer (table, _panel, _("Default KDM directory"), true); + add_label_to_sizer (table, _panel, _("Default KDM directory"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); #ifdef DCPOMATIC_USE_OWN_PICKER _kdm_directory = new DirPickerCtrl (_panel); #else @@ -383,9 +323,6 @@ private: table->Add (_kdm_directory, 1, wxEXPAND); - _upload_after_make_dcp = new CheckBox (_panel, _("Default to enabling upload of DCP to TMS")); - table->Add (_upload_after_make_dcp, 1, wxEXPAND); - _still_length->SetRange (1, 3600); _still_length->Bind (wxEVT_SPINCTRL, boost::bind (&DefaultsPage::still_length_changed, this)); @@ -400,14 +337,6 @@ private: _container->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::container_changed, this)); - _scale_to->Append (_("Guess from content")); - - BOOST_FOREACH (Ratio const * i, Ratio::all()) { - _scale_to->Append (std_to_wx(i->image_nickname())); - } - - _scale_to->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::scale_to_changed, this)); - BOOST_FOREACH (DCPContentType const * i, DCPContentType::all()) { _dcp_content_type->Append (std_to_wx (i->pretty_name ())); } @@ -426,8 +355,6 @@ private: _standard->Append (_("SMPTE")); _standard->Append (_("Interop")); _standard->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::standard_changed, this)); - - _upload_after_make_dcp->Bind (wxEVT_CHECKBOX, boost::bind (&DefaultsPage::upload_after_make_dcp_changed, this)); } void config_changed () @@ -441,17 +368,6 @@ private: } } - vector ratios = Ratio::all (); - for (size_t i = 0; i < ratios.size(); ++i) { - if (ratios[i] == config->default_scale_to ()) { - _scale_to->SetSelection (i + 1); - } - } - - if (!config->default_scale_to()) { - _scale_to->SetSelection (0); - } - vector const ct = DCPContentType::all (); for (size_t i = 0; i < ct.size(); ++i) { if (ct[i] == config->default_dcp_content_type ()) { @@ -467,7 +383,6 @@ private: checked_set (_dcp_audio_channels, locale_convert (config->default_dcp_audio_channels())); checked_set (_audio_delay, config->default_audio_delay ()); checked_set (_standard, config->default_interop() ? 1 : 0); - checked_set (_upload_after_make_dcp, config->default_upload_after_make_dcp()); } void j2k_bandwidth_changed () @@ -519,17 +434,6 @@ private: Config::instance()->set_default_container (ratio[_container->GetSelection()]); } - void scale_to_changed () - { - int const s = _scale_to->GetSelection (); - if (s == 0) { - Config::instance()->set_default_scale_to (0); - } else { - vector ratio = Ratio::all (); - Config::instance()->set_default_scale_to (ratio[s - 1]); - } - } - void dcp_content_type_changed () { vector ct = DCPContentType::all (); @@ -541,11 +445,6 @@ private: Config::instance()->set_default_interop (_standard->GetSelection() == 1); } - void upload_after_make_dcp_changed () - { - Config::instance()->set_default_upload_after_make_dcp (_upload_after_make_dcp->GetValue ()); - } - wxSpinCtrl* _j2k_bandwidth; wxSpinCtrl* _audio_delay; wxButton* _isdcf_metadata_button; @@ -558,18 +457,16 @@ private: wxDirPickerCtrl* _kdm_directory; #endif wxChoice* _container; - wxChoice* _scale_to; wxChoice* _dcp_content_type; wxChoice* _dcp_audio_channels; wxChoice* _standard; - wxCheckBox* _upload_after_make_dcp; }; -class EncodingServersPage : public StandardPage +class EncodingServersPage : public Page { public: EncodingServersPage (wxSize panel_size, int border) - : StandardPage (panel_size, border) + : Page (panel_size, border) {} wxString GetName () const @@ -591,7 +488,7 @@ private: _panel->GetSizer()->Add (_use_any_servers, 0, wxALL, _border); vector columns; - columns.push_back (EditableListColumn(wx_to_std(_("IP address / host name")))); + columns.push_back (EditableListColumn(_("IP address / host name"))); _servers_list = new EditableList ( _panel, columns, @@ -625,11 +522,11 @@ private: EditableList* _servers_list; }; -class TMSPage : public StandardPage +class TMSPage : public Page { public: TMSPage (wxSize panel_size, int border) - : StandardPage (panel_size, border) + : Page (panel_size, border) {} wxString GetName () const @@ -647,33 +544,37 @@ public: private: void setup () { + _upload = new CheckBox (_panel, _("Upload DCP to TMS after creation")); + _panel->GetSizer()->Add (_upload, 0, wxALL | wxEXPAND, _border); + wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); table->AddGrowableCol (1, 1); _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border); - add_label_to_sizer (table, _panel, _("Protocol"), true); + add_label_to_sizer (table, _panel, _("Protocol"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _tms_protocol = new wxChoice (_panel, wxID_ANY); table->Add (_tms_protocol, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("IP address"), true); + add_label_to_sizer (table, _panel, _("IP address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _tms_ip = new wxTextCtrl (_panel, wxID_ANY); table->Add (_tms_ip, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("Target path"), true); + add_label_to_sizer (table, _panel, _("Target path"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _tms_path = new wxTextCtrl (_panel, wxID_ANY); table->Add (_tms_path, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("User name"), true); + add_label_to_sizer (table, _panel, _("User name"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _tms_user = new wxTextCtrl (_panel, wxID_ANY); table->Add (_tms_user, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("Password"), true); + add_label_to_sizer (table, _panel, _("Password"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _tms_password = new PasswordEntry (_panel); table->Add (_tms_password->get_panel(), 1, wxEXPAND); _tms_protocol->Append (_("SCP (for AAM and Doremi)")); _tms_protocol->Append (_("FTP (for Dolby)")); + _upload->Bind (wxEVT_CHECKBOX, boost::bind(&TMSPage::upload_changed, this)); _tms_protocol->Bind (wxEVT_CHOICE, boost::bind (&TMSPage::tms_protocol_changed, this)); _tms_ip->Bind (wxEVT_TEXT, boost::bind (&TMSPage::tms_ip_changed, this)); _tms_path->Bind (wxEVT_TEXT, boost::bind (&TMSPage::tms_path_changed, this)); @@ -685,6 +586,7 @@ private: { Config* config = Config::instance (); + checked_set (_upload, config->upload_after_make_dcp()); checked_set (_tms_protocol, config->tms_protocol ()); checked_set (_tms_ip, config->tms_ip ()); checked_set (_tms_path, config->tms_path ()); @@ -692,6 +594,11 @@ private: checked_set (_tms_password, config->tms_password ()); } + void upload_changed () + { + Config::instance()->set_upload_after_make_dcp (_upload->GetValue()); + } + void tms_protocol_changed () { Config::instance()->set_tms_protocol(static_cast(_tms_protocol->GetSelection())); @@ -717,6 +624,7 @@ private: Config::instance()->set_tms_password (_tms_password->get()); } + CheckBox* _upload; wxChoice* _tms_protocol; wxTextCtrl* _tms_ip; wxTextCtrl* _tms_path; @@ -730,11 +638,11 @@ column (string s) return s; } -class EmailPage : public StandardPage +class EmailPage : public Page { public: EmailPage (wxSize panel_size, int border) - : StandardPage (panel_size, border) + : Page (panel_size, border) {} wxString GetName () const @@ -756,16 +664,16 @@ private: table->AddGrowableCol (1, 1); _panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border); - add_label_to_sizer (table, _panel, _("Outgoing mail server"), true); + add_label_to_sizer (table, _panel, _("Outgoing mail server"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); { wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _server = new wxTextCtrl (_panel, wxID_ANY); s->Add (_server, 1, wxEXPAND | wxALL); - add_label_to_sizer (s, _panel, _("port"), false); + add_label_to_sizer (s, _panel, _("port"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _port = new wxSpinCtrl (_panel, wxID_ANY); _port->SetRange (0, 65535); s->Add (_port); - add_label_to_sizer (s, _panel, _("protocol"), false); + add_label_to_sizer (s, _panel, _("protocol"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _protocol = new wxChoice (_panel, wxID_ANY); /* Make sure this matches the switches in config_changed and port_changed below */ _protocol->Append (_("Auto")); @@ -776,11 +684,11 @@ private: table->Add (s, 1, wxEXPAND | wxALL); } - add_label_to_sizer (table, _panel, _("User name"), true); + add_label_to_sizer (table, _panel, _("User name"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _user = new wxTextCtrl (_panel, wxID_ANY); table->Add (_user, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("Password"), true); + add_label_to_sizer (table, _panel, _("Password"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _password = new PasswordEntry (_panel); table->Add (_password->get_panel(), 1, wxEXPAND | wxALL); @@ -860,16 +768,16 @@ private: PasswordEntry* _password; }; -class KDMEmailPage : public StandardPage +class KDMEmailPage : public Page { public: KDMEmailPage (wxSize panel_size, int border) #ifdef DCPOMATIC_OSX /* We have to force both width and height of this one */ - : StandardPage (wxSize (panel_size.GetWidth(), 128), border) + : Page (wxSize (panel_size.GetWidth(), 128), border) #else - : StandardPage (panel_size, border) + : Page (panel_size, border) #endif {} @@ -892,17 +800,17 @@ private: table->AddGrowableCol (1, 1); _panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border); - add_label_to_sizer (table, _panel, _("Subject"), true); + add_label_to_sizer (table, _panel, _("Subject"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _subject = new wxTextCtrl (_panel, wxID_ANY); table->Add (_subject, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("From address"), true); + add_label_to_sizer (table, _panel, _("From address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _from = new wxTextCtrl (_panel, wxID_ANY); table->Add (_from, 1, wxEXPAND | wxALL); vector columns; - columns.push_back (EditableListColumn(wx_to_std(_("Address")))); - add_label_to_sizer (table, _panel, _("CC addresses"), true); + columns.push_back (EditableListColumn(_("Address"))); + add_label_to_sizer (table, _panel, _("CC addresses"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _cc = new EditableList ( _panel, columns, @@ -912,7 +820,7 @@ private: ); table->Add (_cc, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("BCC address"), true); + add_label_to_sizer (table, _panel, _("BCC address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _bcc = new wxTextCtrl (_panel, wxID_ANY); table->Add (_bcc, 1, wxEXPAND | wxALL); @@ -981,15 +889,15 @@ private: wxButton* _reset_email; }; -class NotificationsPage : public StandardPage +class NotificationsPage : public Page { public: NotificationsPage (wxSize panel_size, int border) #ifdef DCPOMATIC_OSX /* We have to force both width and height of this one */ - : StandardPage (wxSize (panel_size.GetWidth(), 128), border) + : Page (wxSize (panel_size.GetWidth(), 128), border) #else - : StandardPage (panel_size, border) + : Page (panel_size, border) #endif {} @@ -1020,21 +928,21 @@ private: table->Add (_enable_email, 1, wxEXPAND | wxALL); table->AddSpacer (0); - add_label_to_sizer (table, _panel, _("Subject"), true); + add_label_to_sizer (table, _panel, _("Subject"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _subject = new wxTextCtrl (_panel, wxID_ANY); table->Add (_subject, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("From address"), true); + add_label_to_sizer (table, _panel, _("From address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _from = new wxTextCtrl (_panel, wxID_ANY); table->Add (_from, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("To address"), true); + add_label_to_sizer (table, _panel, _("To address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _to = new wxTextCtrl (_panel, wxID_ANY); table->Add (_to, 1, wxEXPAND | wxALL); vector columns; - columns.push_back (EditableListColumn(wx_to_std(_("Address")))); - add_label_to_sizer (table, _panel, _("CC addresses"), true); + columns.push_back (EditableListColumn(_("Address"))); + add_label_to_sizer (table, _panel, _("CC addresses"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _cc = new EditableList ( _panel, columns, @@ -1044,7 +952,7 @@ private: ); table->Add (_cc, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("BCC address"), true); + add_label_to_sizer (table, _panel, _("BCC address"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _bcc = new wxTextCtrl (_panel, wxID_ANY); table->Add (_bcc, 1, wxEXPAND | wxALL); @@ -1151,16 +1059,16 @@ private: wxButton* _reset_email; }; -class CoverSheetPage : public StandardPage +class CoverSheetPage : public Page { public: CoverSheetPage (wxSize panel_size, int border) #ifdef DCPOMATIC_OSX /* We have to force both width and height of this one */ - : StandardPage (wxSize (panel_size.GetWidth(), 128), border) + : Page (wxSize (panel_size.GetWidth(), 128), border) #else - : StandardPage (panel_size, border) + : Page (panel_size, border) #endif {} @@ -1216,14 +1124,129 @@ private: }; +class IdentifiersPage : public Page +{ +public: + IdentifiersPage (wxSize panel_size, int border) + : Page (panel_size, border) + {} + + wxString GetName () const + { + return _("Identifiers"); + } + +#ifdef DCPOMATIC_OSX + wxBitmap GetLargeIcon () const + { + return wxBitmap ("identifiers", wxBITMAP_TYPE_PNG_RESOURCE); + } +#endif + +private: + void setup () + { + wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + table->AddGrowableCol (1, 1); + + add_label_to_sizer (table, _panel, _("Issuer"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _issuer = new wxTextCtrl (_panel, wxID_ANY); + _issuer->SetToolTip (_("This will be written to the DCP's XML files as the . If it is blank, a default value mentioning DCP-o-matic will be used.")); + table->Add (_issuer, 1, wxALL | wxEXPAND); + + add_label_to_sizer (table, _panel, _("Creator"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _creator = new wxTextCtrl (_panel, wxID_ANY); + _creator->SetToolTip (_("This will be written to the DCP's XML files as the . If it is blank, a default value mentioning DCP-o-matic will be used.")); + table->Add (_creator, 1, wxALL | wxEXPAND); + + add_label_to_sizer (table, _panel, _("Company name"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _company_name = new wxTextCtrl (_panel, wxID_ANY); + _company_name->SetToolTip (_("This will be written to the DCP's MXF files as the 'company name'. If it is blank, a default value mentioning libdcp (an internal DCP-o-matic library) will be used.")); + table->Add (_company_name, 1, wxALL | wxEXPAND); + + add_label_to_sizer (table, _panel, _("Product name"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _product_name = new wxTextCtrl (_panel, wxID_ANY); + _product_name->SetToolTip (_("This will be written to the DCP's MXF files as the 'product name'. If it is blank, a default value mentioning libdcp (an internal DCP-o-matic library) will be used.")); + table->Add (_product_name, 1, wxALL | wxEXPAND); + + add_label_to_sizer (table, _panel, _("Product version"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _product_version = new wxTextCtrl (_panel, wxID_ANY); + _product_version->SetToolTip (_("This will be written to the DCP's MXF files as the 'product version'. If it is blank, a default value mentioning libdcp (an internal DCP-o-matic library) will be used.")); + table->Add (_product_version, 1, wxALL | wxEXPAND); + + add_label_to_sizer (table, _panel, _("JPEG2000 comment"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _j2k_comment = new wxTextCtrl (_panel, wxID_ANY); + _j2k_comment->SetToolTip (_("This will be written to the DCP's JPEG2000 data as a comment. If it is blank, a default value mentioning libdcp (an internal DCP-o-matic library) will be used.")); + table->Add (_j2k_comment, 1, wxALL | wxEXPAND); + + _panel->GetSizer()->Add (table, 0, wxEXPAND | wxALL, _border); + + _issuer->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::issuer_changed, this)); + _creator->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::creator_changed, this)); + _company_name->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::company_name_changed, this)); + _product_name->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::product_name_changed, this)); + _product_version->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::product_version_changed, this)); + _j2k_comment->Bind (wxEVT_TEXT, boost::bind(&IdentifiersPage::j2k_comment_changed, this)); + } + + void config_changed () + { + Config* config = Config::instance (); + checked_set (_issuer, config->dcp_issuer ()); + checked_set (_creator, config->dcp_creator ()); + checked_set (_company_name, config->dcp_company_name ()); + checked_set (_product_name, config->dcp_product_name ()); + checked_set (_product_version, config->dcp_product_version ()); + checked_set (_j2k_comment, config->dcp_j2k_comment ()); + } + + void issuer_changed () + { + Config::instance()->set_dcp_issuer (wx_to_std (_issuer->GetValue ())); + } + + void creator_changed () + { + Config::instance()->set_dcp_creator (wx_to_std (_creator->GetValue ())); + } + + void company_name_changed () + { + Config::instance()->set_dcp_company_name (wx_to_std(_company_name->GetValue())); + } + + void product_name_changed () + { + Config::instance()->set_dcp_product_name (wx_to_std(_product_name->GetValue())); + } + + void product_version_changed () + { + Config::instance()->set_dcp_product_version (wx_to_std(_product_version->GetValue())); + } + + void j2k_comment_changed () + { + Config::instance()->set_dcp_j2k_comment (wx_to_std(_j2k_comment->GetValue())); + } + + wxTextCtrl* _issuer; + wxTextCtrl* _creator; + wxTextCtrl* _company_name; + wxTextCtrl* _product_name; + wxTextCtrl* _product_version; + wxTextCtrl* _j2k_comment; +}; + + /** @class AdvancedPage * @brief Advanced page of the preferences dialog. */ -class AdvancedPage : public StockPage +class AdvancedPage : public Page { public: AdvancedPage (wxSize panel_size, int border) - : StockPage (Kind_Advanced, panel_size, border) + : Page (panel_size, border) , _maximum_j2k_bandwidth (0) , _allow_any_dcp_frame_rate (0) , _allow_any_container (0) @@ -1236,8 +1259,23 @@ public: , _log_debug_threed (0) , _log_debug_encode (0) , _log_debug_email (0) + , _log_debug_video_view (0) + , _log_debug_player (0) + , _log_debug_audio_analysis (0) {} + wxString GetName () const + { + return _("Advanced"); + } + +#ifdef DCPOMATIC_OSX + wxBitmap GetLargeIcon () const + { + return wxBitmap ("advanced", wxBITMAP_TYPE_PNG_RESOURCE); + } +#endif + private: void add_top_aligned_label_to_sizer (wxSizer* table, wxWindow* parent, wxString text) { @@ -1257,7 +1295,7 @@ private: _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border); { - add_label_to_sizer (table, _panel, _("Maximum JPEG2000 bandwidth"), true); + add_label_to_sizer (table, _panel, _("Maximum JPEG2000 bandwidth"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _maximum_j2k_bandwidth = new wxSpinCtrl (_panel); s->Add (_maximum_j2k_bandwidth, 1); @@ -1265,7 +1303,7 @@ private: table->Add (s, 1); } - add_label_to_sizer (table, _panel, _("Video display mode"), true); + add_label_to_sizer (table, _panel, _("Video display mode"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _video_display_mode = new wxChoice (_panel, wxID_ANY); table->Add (_video_display_mode); @@ -1280,7 +1318,7 @@ private: table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL); table->AddSpacer (0); - _allow_any_container = new CheckBox (_panel, _("Allow non-standard container ratios")); + _allow_any_container = new CheckBox (_panel, _("Allow full-frame and non-standard container ratios")); table->Add (_allow_any_container, 1, wxEXPAND | wxALL); table->AddSpacer (0); @@ -1297,7 +1335,7 @@ private: table->AddSpacer (0); { - add_label_to_sizer (table, _panel, _("Maximum number of frames to store per thread"), true); + add_label_to_sizer (table, _panel, _("Maximum number of frames to store per thread"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _frames_in_memory_multiplier = new wxSpinCtrl (_panel); s->Add (_frames_in_memory_multiplier, 1); @@ -1352,6 +1390,12 @@ private: t->Add (_log_debug_encode, 1, wxEXPAND | wxALL); _log_debug_email = new CheckBox (_panel, _("Debug: email sending")); t->Add (_log_debug_email, 1, wxEXPAND | wxALL); + _log_debug_video_view = new CheckBox (_panel, _("Debug: video view")); + t->Add (_log_debug_video_view, 1, wxEXPAND | wxALL); + _log_debug_player = new CheckBox (_panel, _("Debug: player")); + t->Add (_log_debug_player, 1, wxEXPAND | wxALL); + _log_debug_audio_analysis = new CheckBox (_panel, _("Debug: audio analysis")); + t->Add (_log_debug_audio_analysis, 1, wxEXPAND | wxALL); table->Add (t, 0, wxALL, 6); } @@ -1380,6 +1424,9 @@ private: _log_debug_threed->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); _log_debug_encode->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); _log_debug_email->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); + _log_debug_video_view->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); + _log_debug_player->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); + _log_debug_audio_analysis->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::log_changed, this)); #ifdef DCPOMATIC_WINDOWS _win32_console->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::win32_console_changed, this)); #endif @@ -1409,6 +1456,9 @@ private: checked_set (_log_debug_threed, config->log_types() & LogEntry::TYPE_DEBUG_THREED); checked_set (_log_debug_encode, config->log_types() & LogEntry::TYPE_DEBUG_ENCODE); checked_set (_log_debug_email, config->log_types() & LogEntry::TYPE_DEBUG_EMAIL); + checked_set (_log_debug_video_view, config->log_types() & LogEntry::TYPE_DEBUG_VIDEO_VIEW); + checked_set (_log_debug_player, config->log_types() & LogEntry::TYPE_DEBUG_PLAYER); + checked_set (_log_debug_audio_analysis, config->log_types() & LogEntry::TYPE_DEBUG_AUDIO_ANALYSIS); checked_set (_frames_in_memory_multiplier, config->frames_in_memory_multiplier()); #ifdef DCPOMATIC_WINDOWS checked_set (_win32_console, config->win32_console()); @@ -1488,6 +1538,15 @@ private: if (_log_debug_email->GetValue ()) { types |= LogEntry::TYPE_DEBUG_EMAIL; } + if (_log_debug_video_view->GetValue()) { + types |= LogEntry::TYPE_DEBUG_VIDEO_VIEW; + } + if (_log_debug_player->GetValue()) { + types |= LogEntry::TYPE_DEBUG_PLAYER; + } + if (_log_debug_audio_analysis->GetValue()) { + types |= LogEntry::TYPE_DEBUG_AUDIO_ANALYSIS; + } Config::instance()->set_log_types (types); } @@ -1514,6 +1573,9 @@ private: wxCheckBox* _log_debug_threed; wxCheckBox* _log_debug_encode; wxCheckBox* _log_debug_email; + wxCheckBox* _log_debug_video_view; + wxCheckBox* _log_debug_player; + wxCheckBox* _log_debug_audio_analysis; #ifdef DCPOMATIC_WINDOWS wxCheckBox* _win32_console; #endif @@ -1546,6 +1608,7 @@ create_full_config_dialog () e->AddPage (new KDMEmailPage (ps, border)); e->AddPage (new NotificationsPage (ps, border)); e->AddPage (new CoverSheetPage (ps, border)); + e->AddPage (new IdentifiersPage (ps, border)); e->AddPage (new AdvancedPage (ps, border)); return e; }