+ void view_cpl (wxCommandEvent& ev)
+ {
+ shared_ptr<DCPContent> dcp = boost::dynamic_pointer_cast<DCPContent>(_film->content().front());
+ DCPOMATIC_ASSERT (dcp);
+ DCPExaminer ex (dcp);
+ int id = ev.GetId() - ID_view_cpl;
+ DCPOMATIC_ASSERT (id >= 0);
+ DCPOMATIC_ASSERT (id < int(ex.cpls().size()));
+ list<shared_ptr<dcp::CPL> > cpls = ex.cpls();
+ list<shared_ptr<dcp::CPL> >::iterator i = cpls.begin();
+ while (id > 0) {
+ ++i;
+ --id;
+ }
+
+ dcp->set_cpl ((*i)->id());
+ dcp->examine (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 ();
+ }
+
+ void view_dual_screen ()
+ {
+ if (_mode == Config::PLAYER_MODE_DUAL) {
+ _mode = Config::PLAYER_MODE_WINDOW;
+ } else {
+ _mode = Config::PLAYER_MODE_DUAL;
+ }
+ setup_screen ();
+ }
+
+ void setup_screen ()
+ {
+ _controls->Show (_mode == Config::PLAYER_MODE_WINDOW);
+ _info->Show (_mode == Config::PLAYER_MODE_WINDOW);
+ _overall_panel->SetBackgroundColour (_mode == Config::PLAYER_MODE_WINDOW ? wxNullColour : wxColour(0, 0, 0));
+ ShowFullScreen (_mode != Config::PLAYER_MODE_WINDOW);
+ if (_mode == Config::PLAYER_MODE_DUAL) {
+ _cinema_dialog->Show ();
+ if (wxDisplay::GetCount() > 1) {
+ this->Move (wxDisplay(0).GetClientArea().GetWidth(), 0);
+ /* (0, 0) doesn't seem to work for some strange reason */
+ _cinema_dialog->Move (8, 8);
+ }
+ }
+ }
+
+ void view_closed_captions ()
+ {
+ _viewer->show_closed_captions ();
+ }
+
+ void tools_verify ()
+ {
+ shared_ptr<DCPContent> dcp = boost::dynamic_pointer_cast<DCPContent>(_film->content().front());
+ DCPOMATIC_ASSERT (dcp);
+
+ JobManager* jm = JobManager::instance ();
+ jm->add (shared_ptr<Job> (new VerifyDCPJob (dcp->directories())));
+ bool const ok = progress (_("Verifying DCP"));
+ if (!ok) {
+ return;
+ }
+
+ DCPOMATIC_ASSERT (!jm->get().empty());
+ shared_ptr<VerifyDCPJob> last = dynamic_pointer_cast<VerifyDCPJob> (jm->get().back());
+ DCPOMATIC_ASSERT (last);
+
+ VerifyDCPDialog* d = new VerifyDCPDialog (this, last);
+ d->ShowModal ();
+ d->Destroy ();
+ }
+