Remove references to / support for old RtError class (now RtAudioError).
[dcpomatic.git] / src / wx / config_dialog.cc
index 0ad7bfffaaa7555bc7d4d3f2294840ab0a8cf7fc..957fd32dbd8e4754f6bc8eb32a9cac1b932e0573 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)
 {
@@ -887,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 */
                }
        }
 
@@ -922,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);
@@ -946,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 */
                }
        }
@@ -979,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 */
                        }
                }
        }
@@ -992,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);
 
@@ -1027,7 +1035,7 @@ SoundPage::get_sound_output ()
 
 
 LocationsPage::LocationsPage (wxSize panel_size, int border)
-       : StandardPage (panel_size, border)
+       : Page (panel_size, border)
 {
 
 }
@@ -1049,7 +1057,6 @@ LocationsPage::GetLargeIcon () const
 void
 LocationsPage::setup ()
 {
-
        int r = 0;
 
        wxGridBagSizer* table = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);