Remove swaroop variant.
[dcpomatic.git] / src / wx / config_dialog.cc
index 85ff0a9a3361efd9d5a3d3f72850a15288aeb309..2319754f04827aa51a196f8e3c76705d1d1ec5db 100644 (file)
@@ -36,6 +36,9 @@ using boost::bind;
 using boost::optional;
 using boost::shared_ptr;
 using boost::function;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 
 static
 bool
@@ -53,6 +56,14 @@ Page::Page (wxSize panel_size, int border)
        _config_connection = Config::instance()->Changed.connect (bind (&Page::config_changed_wrapper, this));
 }
 
+
+wxWindow*
+Page::CreateWindow (wxWindow* parent)
+{
+       return create_window (parent);
+}
+
+
 wxWindow*
 Page::create_window (wxWindow* parent)
 {
@@ -84,37 +95,20 @@ Page::window_destroyed ()
 }
 
 
-StockPage::StockPage (Kind kind, wxSize panel_size, int border)
-       : wxStockPreferencesPage (kind)
-       , Page (panel_size, border)
-{
-
-}
-
-wxWindow*
-StockPage::CreateWindow (wxWindow* parent)
-{
-       return create_window (parent);
-}
-
-StandardPage::StandardPage (wxSize panel_size, int border)
+GeneralPage::GeneralPage (wxSize panel_size, int border)
        : Page (panel_size, border)
 {
 
 }
 
-wxWindow*
-StandardPage::CreateWindow (wxWindow* parent)
-{
-       return create_window (parent);
-}
 
-GeneralPage::GeneralPage (wxSize panel_size, int border)
-       : StockPage (Kind_General, panel_size, border)
+wxString
+GeneralPage::GetName () const
 {
-
+       return _("General");
 }
 
+
 void
 GeneralPage::add_language_controls (wxGridBagSizer* table, int& r)
 {
@@ -262,19 +256,10 @@ CertificateChainEditor::CertificateChainEditor (
        , _get (get)
        , _nag_alter (nag_alter)
 {
-       wxFont subheading_font (*wxNORMAL_FONT);
-       subheading_font.SetWeight (wxFONTWEIGHT_BOLD);
-
        _sizer = new wxBoxSizer (wxVERTICAL);
 
-       {
-               wxStaticText* m = new StaticText (this, title);
-               m->SetFont (subheading_font);
-               _sizer->Add (m, 0, wxALL, border);
-       }
-
        wxBoxSizer* certificates_sizer = new wxBoxSizer (wxHORIZONTAL);
-       _sizer->Add (certificates_sizer, 0, wxLEFT | wxRIGHT, border);
+       _sizer->Add (certificates_sizer, 0, wxALL, border);
 
        _certificates = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxSize (440, 150), wxLC_REPORT | wxLC_SINGLE_SEL);
 
@@ -690,14 +675,18 @@ KeysPage::setup ()
                sizer->Add (m, 0, wxALL, _border);
        }
 
+       wxSizer* buttons = new wxBoxSizer (wxVERTICAL);
+
        wxButton* export_decryption_certificate = new Button (_panel, _("Export KDM decryption certificate..."));
-       sizer->Add (export_decryption_certificate, 0, wxLEFT, _border);
+       buttons->Add (export_decryption_certificate, 0, wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
        wxButton* export_settings = new Button (_panel, _("Export all KDM decryption settings..."));
-       sizer->Add (export_settings, 0, wxLEFT, _border);
+       buttons->Add (export_settings, 0, wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
        wxButton* import_settings = new Button (_panel, _("Import all KDM decryption settings..."));
-       sizer->Add (import_settings, 0, wxLEFT, _border);
+       buttons->Add (import_settings, 0, wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
        wxButton* decryption_advanced = new Button (_panel, _("Advanced..."));
-       sizer->Add (decryption_advanced, 0, wxALL, _border);
+       buttons->Add (decryption_advanced, 0);
+
+       sizer->Add (buttons, 0, wxLEFT, _border);
 
        export_decryption_certificate->Bind (wxEVT_BUTTON, bind (&KeysPage::export_decryption_certificate, this));
        export_settings->Bind (wxEVT_BUTTON, bind (&KeysPage::export_decryption_chain_and_key, this));
@@ -892,9 +881,13 @@ SoundPage::setup ()
 
        RtAudio audio (DCPOMATIC_RTAUDIO_API);
        for (unsigned int i = 0; i < audio.getDeviceCount(); ++i) {
-               RtAudio::DeviceInfo dev = audio.getDeviceInfo (i);
-               if (dev.probed && dev.outputChannels > 0) {
-                       _sound_output->Append (std_to_wx (dev.name));
+               try {
+                       RtAudio::DeviceInfo dev = audio.getDeviceInfo (i);
+                       if (dev.probed && dev.outputChannels > 0) {
+                               _sound_output->Append (std_to_wx (dev.name));
+                       }
+               } catch (RtAudioError&) {
+                       /* Something went wrong so let's just ignore that device */
                }
        }
 
@@ -927,7 +920,13 @@ SoundPage::sound_output_changed ()
 {
        RtAudio audio (DCPOMATIC_RTAUDIO_API);
        optional<string> const so = get_sound_output();
-       if (!so || *so == audio.getDeviceInfo(audio.getDefaultOutputDevice()).name) {
+       string default_device;
+       try {
+               default_device = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name;
+       } catch (RtAudioError&) {
+               /* Never mind */
+       }
+       if (!so || *so == default_device) {
                Config::instance()->unset_sound_output ();
        } else {
                Config::instance()->set_sound_output (*so);
@@ -951,7 +950,7 @@ SoundPage::config_changed ()
                RtAudio audio (DCPOMATIC_RTAUDIO_API);
                try {
                        configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name;
-               } catch (RtAudioError& e) {
+               } catch (RtAudioError&) {
                        /* Probably no audio devices at all */
                }
        }
@@ -984,9 +983,13 @@ SoundPage::config_changed ()
        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;
+                       try {
+                               RtAudio::DeviceInfo info = audio.getDeviceInfo(i);
+                               if (info.name == *configured_so && info.outputChannels > 0) {
+                                       channels = info.outputChannels;
+                               }
+                       } catch (RtAudioError&) {
+                               /* Never mind */
                        }
                }
        }
@@ -997,15 +1000,15 @@ SoundPage::config_changed ()
 
        _map->set (Config::instance()->audio_mapping(channels));
 
-       vector<string> input;
+       vector<NamedChannel> input;
        for (int i = 0; i < MAX_DCP_AUDIO_CHANNELS; ++i) {
-               input.push_back (short_audio_channel_name(i));
+               input.push_back (NamedChannel(short_audio_channel_name(i), i));
        }
        _map->set_input_channels (input);
 
-       vector<string> output;
+       vector<NamedChannel> output;
        for (int i = 0; i < channels; ++i) {
-               output.push_back (dcp::raw_convert<string>(i));
+               output.push_back (NamedChannel(dcp::raw_convert<string>(i), i));
        }
        _map->set_output_channels (output);
 
@@ -1032,7 +1035,7 @@ SoundPage::get_sound_output ()
 
 
 LocationsPage::LocationsPage (wxSize panel_size, int border)
-       : StandardPage (panel_size, border)
+       : Page (panel_size, border)
 {
 
 }
@@ -1054,7 +1057,6 @@ LocationsPage::GetLargeIcon () const
 void
 LocationsPage::setup ()
 {
-
        int r = 0;
 
        wxGridBagSizer* table = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
@@ -1075,19 +1077,9 @@ LocationsPage::setup ()
        table->Add (_kdm_directory, wxGBPosition (r, 1));
        ++r;
 
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-       add_label_to_sizer (table, _panel, _("Background image"), true, wxGBPosition (r, 0));
-       _background_image = new FilePickerCtrl (_panel, _("Select image file"), "*.png;*.jpg;*.jpeg;*.tif;*.tiff", true, false);
-       table->Add (_background_image, wxGBPosition (r, 1));
-       ++r;
-#endif
-
        _content_directory->Bind (wxEVT_DIRPICKER_CHANGED, bind(&LocationsPage::content_directory_changed, this));
        _playlist_directory->Bind (wxEVT_DIRPICKER_CHANGED, bind(&LocationsPage::playlist_directory_changed, this));
        _kdm_directory->Bind (wxEVT_DIRPICKER_CHANGED, bind(&LocationsPage::kdm_directory_changed, this));
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-       _background_image->Bind (wxEVT_FILEPICKER_CHANGED, bind(&LocationsPage::background_image_changed, this));
-#endif
 }
 
 void
@@ -1104,11 +1096,6 @@ LocationsPage::config_changed ()
        if (config->player_kdm_directory()) {
                checked_set (_kdm_directory, *config->player_kdm_directory());
        }
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-       if (config->player_background_image()) {
-               checked_set (_background_image, *config->player_background_image());
-       }
-#endif
 }
 
 void
@@ -1128,20 +1115,3 @@ LocationsPage::kdm_directory_changed ()
 {
        Config::instance()->set_player_kdm_directory(wx_to_std(_kdm_directory->GetPath()));
 }
-
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-void
-LocationsPage::background_image_changed ()
-{
-       boost::filesystem::path const f = wx_to_std(_background_image->GetPath());
-       if (!boost::filesystem::is_regular_file(f) || !wxImage::CanRead(std_to_wx(f.string()))) {
-               error_dialog (0, _("Could not load image file."));
-               if (Config::instance()->player_background_image()) {
-                       checked_set (_background_image, *Config::instance()->player_background_image());
-               }
-               return;
-       }
-
-       Config::instance()->set_player_background_image(f);
-}
-#endif