std::shared_ptr
[dcpomatic.git] / src / wx / config_dialog.h
index 896b463d819d01af0c889035bc41559f90b9ef6a..b2ebbe605b16eeab20d482d82c17dd85a7fb3618 100644 (file)
 #include "lib/util.h"
 #include "lib/cross.h"
 #include "lib/exceptions.h"
+#include "lib/warnings.h"
 #include <dcp/locale_convert.h>
 #include <dcp/exceptions.h>
 #include <dcp/certificate_chain.h>
+DCPOMATIC_DISABLE_WARNINGS
 #include <wx/stdpaths.h>
 #include <wx/preferences.h>
 #include <wx/spinctrl.h>
 #include <wx/filepicker.h>
+DCPOMATIC_ENABLE_WARNINGS
 #include <RtAudio.h>
 #include <boost/filesystem.hpp>
 #include <boost/foreach.hpp>
 #include <iostream>
 
-class Page
+class AudioMappingView;
+
+class Page : public wxPreferencesPage
 {
 public:
        Page (wxSize panel_size, int border);
        virtual ~Page () {}
 
+       wxWindow* CreateWindow (wxWindow* parent);
+
 protected:
        wxWindow* create_window (wxWindow* parent);
 
@@ -68,45 +75,34 @@ private:
        bool _window_exists;
 };
 
-class StockPage : public wxStockPreferencesPage, public Page
+class GeneralPage : public Page
 {
 public:
-       StockPage (Kind kind, wxSize panel_size, int border);
-       wxWindow* CreateWindow (wxWindow* parent);
-};
+       GeneralPage (wxSize panel_size, int border);
 
-class StandardPage : public wxPreferencesPage, public Page
-{
-public:
-       StandardPage (wxSize panel_size, int border);
-       wxWindow* CreateWindow (wxWindow* parent);
-};
+       wxString GetName () const;
 
-class GeneralPage : public StockPage
-{
-public:
-       GeneralPage (wxSize panel_size, int border);
+#ifdef DCPOMATIC_OSX
+       wxBitmap GetLargeIcon () const
+       {
+               return wxBitmap ("general", wxBITMAP_TYPE_PNG_RESOURCE);
+       }
+#endif
 
 protected:
        void add_language_controls (wxGridBagSizer* table, int& r);
-       void add_play_sound_controls (wxGridBagSizer* table, int& r);
        void add_update_controls (wxGridBagSizer* table, int& r);
        virtual void config_changed ();
 
 private:
        void setup_sensitivity ();
-        boost::optional<std::string> get_sound_output ();
        void set_language_changed ();
        void language_changed ();
        void check_for_updates_changed ();
        void check_for_test_updates_changed ();
-       void sound_changed ();
-        void sound_output_changed ();
 
        wxCheckBox* _set_language;
        wxChoice* _language;
-       wxCheckBox* _sound;
-       wxChoice* _sound_output;
        wxCheckBox* _check_for_updates;
        wxCheckBox* _check_for_test_updates;
 };
@@ -118,9 +114,9 @@ public:
                wxWindow* parent,
                wxString title,
                int border,
-               boost::function<void (boost::shared_ptr<dcp::CertificateChain>)> set,
-               boost::function<boost::shared_ptr<const dcp::CertificateChain> (void)> get,
-               boost::function<bool (void)> nag_remake
+               boost::function<void (std::shared_ptr<dcp::CertificateChain>)> set,
+               boost::function<std::shared_ptr<const dcp::CertificateChain> (void)> get,
+               boost::function<bool (void)> nag_alter
                );
 
        void add_button (wxWindow* button);
@@ -149,16 +145,16 @@ private:
        wxStaticText* _private_key_bad;
        wxSizer* _sizer;
        wxBoxSizer* _button_sizer;
-       boost::function<void (boost::shared_ptr<dcp::CertificateChain>)> _set;
-       boost::function<boost::shared_ptr<const dcp::CertificateChain> (void)> _get;
-       boost::function<bool (void)> _nag_remake;
+       boost::function<void (std::shared_ptr<dcp::CertificateChain>)> _set;
+       boost::function<std::shared_ptr<const dcp::CertificateChain> (void)> _get;
+       boost::function<bool (void)> _nag_alter;
 };
 
-class KeysPage : public StandardPage
+class KeysPage : public Page
 {
 public:
        KeysPage (wxSize panel_size, int border)
-               : StandardPage (panel_size, border)
+               : Page (panel_size, border)
        {}
 
        wxString GetName () const;
@@ -176,7 +172,7 @@ private:
 
        void export_decryption_certificate ();
        void config_changed () {}
-       bool nag_remake_decryption_chain ();
+       bool nag_alter_decryption_chain ();
        void decryption_advanced ();
        void signing_advanced ();
        void export_decryption_chain_and_key ();
@@ -184,4 +180,60 @@ private:
 };
 
 
+class SoundPage : public Page
+{
+public:
+       SoundPage (wxSize panel_size, int border)
+               : Page (panel_size, border)
+       {}
+
+       wxString GetName() const;
+
+#ifdef DCPOMATIC_OSX
+       wxBitmap GetLargeIcon () const
+       {
+               return wxBitmap ("sound", wxBITMAP_TYPE_PNG_RESOURCE);
+       }
+#endif
+
+private:
+
+       void setup ();
+       void config_changed ();
+        boost::optional<std::string> get_sound_output ();
+       void sound_changed ();
+       void sound_output_changed ();
+       void setup_sensitivity ();
+       void map_changed (AudioMapping m);
+       void reset_to_default ();
+
+       wxCheckBox* _sound;
+       wxChoice* _sound_output;
+       wxStaticText* _sound_output_details;
+       AudioMappingView* _map;
+       Button* _reset_to_default;
+};
+
+class LocationsPage : public Page
+{
+public:
+       LocationsPage (wxSize panel_size, int border);
+
+       wxString GetName () const;
+
+#ifdef DCPOMATIC_OSX
+       wxBitmap GetLargeIcon () const;
+#endif
+
+private:
+       void setup ();
+       void config_changed ();
+       void content_directory_changed ();
+       void playlist_directory_changed ();
+       void kdm_directory_changed ();
+
+       wxDirPickerCtrl* _content_directory;
+       wxDirPickerCtrl* _playlist_directory;
+       wxDirPickerCtrl* _kdm_directory;
+};
 #endif