X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.cc;h=a6b299bcb6dd6c976baf59bdfda754fdef475d1f;hb=a8e31120a793f09ab56cc2847d76944ba698ba95;hp=13a4056708b9978a614bfdc3fc5a955cd097ae1f;hpb=0fb8f8c4ec481e342d26a332595d39fcf8cd4e94;p=dcpomatic.git diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 13a405670..a6b299bcb 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2018 Carl Hetherington + Copyright (C) 2012-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -23,6 +23,7 @@ #include "check_box.h" #include "nag_dialog.h" #include "dcpomatic_button.h" +#include using std::string; using std::vector; @@ -134,6 +135,7 @@ GeneralPage::add_language_controls (wxGridBagSizer* table, int& r) languages.push_back (make_pair ("Português do Brasil", "pt_BR")); languages.push_back (make_pair ("Svenska", "sv_SE")); languages.push_back (make_pair ("Slovenský jazyk", "sk_SK")); + languages.push_back (make_pair ("Türkçe", "tr_TR")); languages.push_back (make_pair ("українська мова", "uk_UA")); checked_set (_language, languages); table->Add (_language, wxGBPosition (r, 1)); @@ -157,10 +159,19 @@ GeneralPage::add_play_sound_controls (wxGridBagSizer* table, int& r) { _sound = new CheckBox (_panel, _("Play sound via")); table->Add (_sound, wxGBPosition (r, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); _sound_output = new wxChoice (_panel, wxID_ANY); - table->Add (_sound_output, wxGBPosition (r, 1)); + s->Add (_sound_output, 0); + _sound_output_details = new wxStaticText (_panel, wxID_ANY, wxT("")); + s->Add (_sound_output_details, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, DCPOMATIC_SIZER_X_GAP); + table->Add (s, wxGBPosition(r, 1)); ++r; + wxFont font = _sound_output_details->GetFont(); + font.SetStyle (wxFONTSTYLE_ITALIC); + font.SetPointSize (font.GetPointSize() - 1); + _sound_output_details->SetFont (font); + RtAudio audio (DCPOMATIC_RTAUDIO_API); for (unsigned int i = 0; i < audio.getDeviceCount(); ++i) { RtAudio::DeviceInfo dev = audio.getDeviceInfo (i); @@ -251,6 +262,33 @@ GeneralPage::config_changed () } } + RtAudio audio (DCPOMATIC_RTAUDIO_API); + + map apis; + apis[RtAudio::MACOSX_CORE] = _("CoreAudio"); + apis[RtAudio::WINDOWS_ASIO] = _("ASIO"); + apis[RtAudio::WINDOWS_DS] = _("Direct Sound"); + apis[RtAudio::WINDOWS_WASAPI] = _("WASAPI"); + apis[RtAudio::UNIX_JACK] = _("JACK"); + apis[RtAudio::LINUX_ALSA] = _("ALSA"); + apis[RtAudio::LINUX_PULSE] = _("PulseAudio"); + apis[RtAudio::LINUX_OSS] = _("OSS"); + apis[RtAudio::RTAUDIO_DUMMY] = _("Dummy"); + + int channels = 0; + if (configured_so) { + for (unsigned int i = 0; i < audio.getDeviceCount(); ++i) { + RtAudio::DeviceInfo info = audio.getDeviceInfo(i); + if (info.name == *configured_so && info.outputChannels > 0) { + channels = info.outputChannels; + } + } + } + + _sound_output_details->SetLabel ( + wxString::Format(_("%d channels on %s"), channels, apis[audio.getCurrentApi()]) + ); + setup_sensitivity (); } @@ -332,12 +370,12 @@ CertificateChainEditor::CertificateChainEditor ( int border, function)> set, function (void)> get, - function nag_remake + function nag_alter ) : wxDialog (parent, wxID_ANY, title) , _set (set) , _get (get) - , _nag_remake (nag_remake) + , _nag_alter (nag_alter) { wxFont subheading_font (*wxNORMAL_FONT); subheading_font.SetWeight (wxFONTWEIGHT_BOLD); @@ -499,6 +537,11 @@ CertificateChainEditor::add_certificate () void CertificateChainEditor::remove_certificate () { + if (_nag_alter()) { + /* Cancel was clicked */ + return; + } + int i = _certificates->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (i == -1) { return; @@ -510,6 +553,7 @@ CertificateChainEditor::remove_certificate () _set (chain); update_sensitivity (); + update_certificate_list (); } void @@ -634,7 +678,7 @@ CertificateChainEditor::remake_certificates () intermediate_common_name = i->subject_common_name (); } - if (_nag_remake()) { + if (_nag_alter()) { /* Cancel was clicked */ return; } @@ -793,7 +837,7 @@ KeysPage::decryption_advanced () _panel, _("Decrypting KDMs"), _border, bind (&Config::set_decryption_chain, Config::instance (), _1), bind (&Config::decryption_chain, Config::instance ()), - bind (&KeysPage::nag_remake_decryption_chain, this) + bind (&KeysPage::nag_alter_decryption_chain, this) ); c->ShowModal(); @@ -841,6 +885,15 @@ KeysPage::export_decryption_chain_and_key () void KeysPage::import_decryption_chain_and_key () { + if (NagDialog::maybe_nag ( + _panel, + Config::NAG_IMPORT_DECRYPTION_CHAIN, + _("If you continue with this operation you will no longer be able to use any DKDMs that you have created with the current certificates and key. Also, any KDMs that have been sent to you for those certificates will become useless. Proceed with caution!"), + true + )) { + return; + } + wxFileDialog* d = new wxFileDialog ( _panel, _("Select File To Import"), wxEmptyString, wxEmptyString, wxT ("DOM files (*.dom)|*.dom") ); @@ -880,11 +933,11 @@ KeysPage::import_decryption_chain_and_key () } bool -KeysPage::nag_remake_decryption_chain () +KeysPage::nag_alter_decryption_chain () { return NagDialog::maybe_nag ( _panel, - Config::NAG_REMAKE_DECRYPTION_CHAIN, + Config::NAG_ALTER_DECRYPTION_CHAIN, _("If you continue with this operation you will no longer be able to use any DKDMs that you have created. Also, any KDMs that have been sent to you will become useless. Proceed with caution!"), true );