Store subtitle language(s) in Film, and allow setup of those
[dcpomatic.git] / src / tools / dcpomatic_player.cc
index 50981525f34b0035349134733784967ca82331c8..a82e67b88d7d6c09d2340c31571a9aa376aee116 100644 (file)
@@ -73,9 +73,6 @@
 #ifdef __WXGTK__
 #include <X11/Xlib.h>
 #endif
-#ifdef __WXOSX__
-#include <ApplicationServices/ApplicationServices.h>
-#endif
 #include <boost/bind.hpp>
 #include <boost/algorithm/string.hpp>
 #include <iostream>
@@ -98,6 +95,9 @@ using boost::optional;
 using boost::dynamic_pointer_cast;
 using boost::thread;
 using boost::bind;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 using dcp::raw_convert;
 using namespace dcpomatic;
 
@@ -153,6 +153,7 @@ public:
                , _system_information_dialog (0)
                , _view_full_screen (0)
                , _view_dual_screen (0)
+               , _main_sizer (new wxBoxSizer (wxVERTICAL))
 {
                dcpomatic_log.reset (new NullLog());
 
@@ -296,13 +297,15 @@ public:
 
        void setup_main_sizer (Config::PlayerMode mode)
        {
-               wxSizer* main_sizer = new wxBoxSizer (wxVERTICAL);
+               _main_sizer->Detach (_viewer->panel());
+               _main_sizer->Detach (_controls);
+               _main_sizer->Detach (_info);
                if (mode != Config::PLAYER_MODE_DUAL) {
-                       main_sizer->Add (_viewer->panel(), 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
+                       _main_sizer->Add (_viewer->panel(), 1, wxEXPAND);
                }
-               main_sizer->Add (_controls, mode == Config::PLAYER_MODE_DUAL ? 1 : 0, wxEXPAND | wxALL, 6);
-               main_sizer->Add (_info, 0, wxEXPAND | wxALL, 6);
-               _overall_panel->SetSizer (main_sizer);
+               _main_sizer->Add (_controls, mode == Config::PLAYER_MODE_DUAL ? 1 : 0, wxEXPAND | wxALL, 6);
+               _main_sizer->Add (_info, 0, wxEXPAND | wxALL, 6);
+               _overall_panel->SetSizer (_main_sizer);
                _overall_panel->Layout ();
        }
 
@@ -426,6 +429,8 @@ public:
 #endif
                } catch (dcp::ReadError& e) {
                        error_dialog (this, wxString::Format(_("Could not load a DCP from %s"), std_to_wx(dir.string())), std_to_wx(e.what()));
+               } catch (DCPError& e) {
+                       error_dialog (this, wxString::Format(_("Could not load a DCP from %s"), std_to_wx(dir.string())), std_to_wx(e.what()));
                }
        }
 
@@ -783,6 +788,7 @@ private:
 
                dcp->set_cpl ((*i)->id());
                dcp->examine (_film, shared_ptr<Job>());
+               _info->triggered_update ();
        }
 
        void view_full_screen ()
@@ -835,10 +841,10 @@ private:
                                switch (Config::instance()->image_display()) {
                                case 0:
                                        _dual_screen->Move (0, 0);
-                                       Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+                                       Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
                                        break;
                                case 1:
-                                       _dual_screen->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+                                       _dual_screen->Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
                                        // (0, 0) doesn't seem to work for some strange reason
                                        Move (8, 8);
                                        break;
@@ -1013,7 +1019,7 @@ private:
                        } else {
                                dcpomatic_log.reset (new NullLog());
                        }
-                       dcpomatic_log->set_types (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR | LogEntry::TYPE_DEBUG_PLAYER);
+                       dcpomatic_log->set_types (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR | LogEntry::TYPE_DEBUG_VIDEO_VIEW);
                }
        }
 
@@ -1082,6 +1088,7 @@ private:
        wxMenuItem* _tools_verify;
        wxMenuItem* _view_full_screen;
        wxMenuItem* _view_dual_screen;
+       wxSizer* _main_sizer;
        PlayerStressTester _stress;
 };
 
@@ -1156,10 +1163,8 @@ private:
                        unsetenv ("UBUNTU_MENUPROXY");
 #endif
 
-#ifdef __WXOSX__
-                       ProcessSerialNumber serial;
-                       GetCurrentProcess (&serial);
-                       TransformProcessType (&serial, kProcessTransformToForegroundApplication);
+#ifdef DCPOMATIC_OSX
+                       make_foreground_application ();
 #endif
 
                        dcpomatic_setup_path_encoding ();