+ dcp->examine (_film, shared_ptr<Job>());
+ }
+
+ void view_full_screen ()
+ {
+ if (_mode == Config::PLAYER_MODE_FULL) {
+ _mode = Config::PLAYER_MODE_WINDOW;
+ } else {
+ _mode = Config::PLAYER_MODE_FULL;
+ }
+ setup_screen ();
+ setup_menu ();
+ }
+
+ void view_dual_screen ()
+ {
+ if (_mode == Config::PLAYER_MODE_DUAL) {
+ _mode = Config::PLAYER_MODE_WINDOW;
+ } else {
+ _mode = Config::PLAYER_MODE_DUAL;
+ }
+ setup_screen ();
+ setup_menu ();
+ }
+
+ void setup_menu ()
+ {
+ if (_view_full_screen) {
+ _view_full_screen->Check (_mode == Config::PLAYER_MODE_FULL);
+ }
+ if (_view_dual_screen) {
+ _view_dual_screen->Check (_mode == Config::PLAYER_MODE_DUAL);
+ }
+ }
+
+ void setup_screen ()
+ {
+ _controls->Show (_mode != Config::PLAYER_MODE_FULL);
+ _info->Show (_mode != Config::PLAYER_MODE_FULL);
+ _overall_panel->SetBackgroundColour (_mode == Config::PLAYER_MODE_FULL ? wxColour(0, 0, 0) : wxNullColour);
+ ShowFullScreen (_mode == Config::PLAYER_MODE_FULL);
+ _viewer->set_pad_black (_mode != Config::PLAYER_MODE_WINDOW);
+
+ if (_mode == Config::PLAYER_MODE_DUAL) {
+ _dual_screen = new wxFrame (this, wxID_ANY, wxT(""));
+ _dual_screen->SetBackgroundColour (wxColour(0, 0, 0));
+ _dual_screen->ShowFullScreen (true);
+ _viewer->panel()->Reparent (_dual_screen);
+ _dual_screen->Show ();
+ if (wxDisplay::GetCount() > 1) {
+ switch (Config::instance()->image_display()) {
+ case 0:
+ _dual_screen->Move (0, 0);
+ Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+ break;
+ case 1:
+ _dual_screen->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+ // (0, 0) doesn't seem to work for some strange reason
+ Move (8, 8);
+ break;
+ }
+ }
+ } else {
+ if (_dual_screen) {
+ _viewer->panel()->Reparent (_overall_panel);
+ _dual_screen->Destroy ();
+ _dual_screen = 0;
+ }
+ }
+
+ setup_main_sizer (_mode);
+ }
+
+ void view_closed_captions ()
+ {
+ _viewer->show_closed_captions ();