+
+void
+ContentMenu::ov ()
+{
+ DCPOMATIC_ASSERT (!_content.empty ());
+ shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (_content.front ());
+ DCPOMATIC_ASSERT (dcp);
+
+ wxDirDialog* d = new wxDirDialog (_parent, _("Select OV"));
+
+ if (d->ShowModal() == wxID_OK) {
+ dcp->add_ov (wx_to_std (d->GetPath ()));
+ shared_ptr<Film> film = _film.lock ();
+ DCPOMATIC_ASSERT (film);
+ JobManager::instance()->add (shared_ptr<Job> (new ExamineContentJob (film, dcp)));
+ }
+
+ d->Destroy ();
+}
+
+void
+ContentMenu::properties ()
+{
+ shared_ptr<Film> film = _film.lock ();
+ DCPOMATIC_ASSERT (film);
+ ContentPropertiesDialog* d = new ContentPropertiesDialog (_parent, film, _content.front());
+ d->ShowModal ();
+ d->Destroy ();
+}
+
+void
+ContentMenu::cpl_selected (wxCommandEvent& ev)
+{
+ if (!_pop_up_open) {
+ return;
+ }
+
+ DCPOMATIC_ASSERT (!_content.empty ());
+ shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (_content.front ());
+ DCPOMATIC_ASSERT (dcp);
+
+ DCPExaminer ex (dcp, true);
+ list<shared_ptr<dcp::CPL> > cpls = ex.cpls ();
+ DCPOMATIC_ASSERT (ev.GetId() > 0);
+ DCPOMATIC_ASSERT (ev.GetId() <= int (cpls.size()));
+
+ list<shared_ptr<dcp::CPL> >::const_iterator i = cpls.begin ();
+ for (int j = 0; j < ev.GetId() - 1; ++j) {
+ ++i;
+ }
+
+ dcp->set_cpl ((*i)->id ());
+ shared_ptr<Film> film = _film.lock ();
+ DCPOMATIC_ASSERT (film);
+ JobManager::instance()->add (shared_ptr<Job> (new ExamineContentJob (film, dcp)));
+}