projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
No-op; fix GPL address and use the explicit-program-name version.
[dcpomatic.git]
/
src
/
wx
/
content_menu.cc
diff --git
a/src/wx/content_menu.cc
b/src/wx/content_menu.cc
index 0adbc775a9134810e9db50ec4b1b4cb9f08a96f7..3d5b002798ee72d6c8cce2d968f0733879a8b0c6 100644
(file)
--- a/
src/wx/content_menu.cc
+++ b/
src/wx/content_menu.cc
@@
-1,19
+1,20
@@
/*
/*
- Copyright (C) 2013-201
5
Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-201
6
Carl Hetherington <cth@carlh.net>
- This program is free software; you can redistribute it and/or modify
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
-
This program
is distributed in the hope that it will be useful,
+
DCP-o-matic
is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
*/
*/
@@
-31,11
+32,16
@@
#include "lib/job_manager.h"
#include "lib/exceptions.h"
#include "lib/dcp_content.h"
#include "lib/job_manager.h"
#include "lib/exceptions.h"
#include "lib/dcp_content.h"
+#include "lib/ffmpeg_content.h"
+#include "lib/audio_content.h"
#include <wx/wx.h>
#include <wx/dirdlg.h>
#include <wx/wx.h>
#include <wx/dirdlg.h>
+#include <boost/foreach.hpp>
+#include <iostream>
using std::cout;
using std::vector;
using std::cout;
using std::vector;
+using std::exception;
using boost::shared_ptr;
using boost::weak_ptr;
using boost::dynamic_pointer_cast;
using boost::shared_ptr;
using boost::weak_ptr;
using boost::dynamic_pointer_cast;
@@
-86,8
+92,8
@@
ContentMenu::popup (weak_ptr<Film> film, ContentList c, TimelineContentViewList
_repeat->Enable (!_content.empty ());
int n = 0;
_repeat->Enable (!_content.empty ());
int n = 0;
-
for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i
) {
- if (dynamic_pointer_cast<FFmpegContent> (
*
i)) {
+
BOOST_FOREACH (shared_ptr<Content> i, _content
) {
+ if (dynamic_pointer_cast<FFmpegContent> (i)) {
++n;
}
}
++n;
}
}
@@
-138,8
+144,8
@@
void
ContentMenu::join ()
{
vector<shared_ptr<Content> > fc;
ContentMenu::join ()
{
vector<shared_ptr<Content> > fc;
-
for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i
) {
- shared_ptr<FFmpegContent> f = dynamic_pointer_cast<FFmpegContent> (
*
i);
+
BOOST_FOREACH (shared_ptr<Content> i, _content
) {
+ shared_ptr<FFmpegContent> f = dynamic_pointer_cast<FFmpegContent> (i);
if (f) {
fc.push_back (f);
}
if (f) {
fc.push_back (f);
}
@@
-154,8
+160,8
@@
ContentMenu::join ()
try {
shared_ptr<FFmpegContent> joined (new FFmpegContent (film, fc));
try {
shared_ptr<FFmpegContent> joined (new FFmpegContent (film, fc));
-
for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i
) {
- film->remove_content (
*
i);
+
BOOST_FOREACH (shared_ptr<Content> i, _content
) {
+ film->remove_content (i);
}
film->add_content (joined);
} catch (JoinError& e) {
}
film->add_content (joined);
} catch (JoinError& e) {
@@
-181,8
+187,8
@@
ContentMenu::remove ()
/* Special case: we only remove FFmpegContent if its video view is selected;
if not, and its audio view is selected, we unmap the audio.
*/
/* Special case: we only remove FFmpegContent if its video view is selected;
if not, and its audio view is selected, we unmap the audio.
*/
-
for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i
) {
- shared_ptr<FFmpegContent> fc = dynamic_pointer_cast<FFmpegContent> (
*
i);
+
BOOST_FOREACH (shared_ptr<Content> i, _content
) {
+ shared_ptr<FFmpegContent> fc = dynamic_pointer_cast<FFmpegContent> (i);
if (!fc) {
continue;
}
if (!fc) {
continue;
}
@@
-190,9
+196,9
@@
ContentMenu::remove ()
shared_ptr<TimelineVideoContentView> video;
shared_ptr<TimelineAudioContentView> audio;
shared_ptr<TimelineVideoContentView> video;
shared_ptr<TimelineAudioContentView> audio;
-
for (TimelineContentViewList::iterator i = _views.begin(); i != _views.end(); ++i
) {
- shared_ptr<TimelineVideoContentView> v = dynamic_pointer_cast<TimelineVideoContentView> (
*i
);
- shared_ptr<TimelineAudioContentView> a = dynamic_pointer_cast<TimelineAudioContentView> (
*i
);
+
BOOST_FOREACH (shared_ptr<TimelineContentView> j, _views
) {
+ shared_ptr<TimelineVideoContentView> v = dynamic_pointer_cast<TimelineVideoContentView> (
j
);
+ shared_ptr<TimelineAudioContentView> a = dynamic_pointer_cast<TimelineAudioContentView> (
j
);
if (v && v->content() == fc) {
video = v;
} else if (a && a->content() == fc) {
if (v && v->content() == fc) {
video = v;
} else if (a && a->content() == fc) {
@@
-201,9
+207,9
@@
ContentMenu::remove ()
}
if (!video && audio) {
}
if (!video && audio) {
- AudioMapping m = fc->audio
_
mapping ();
+ AudioMapping m = fc->audio
->
mapping ();
m.unmap_all ();
m.unmap_all ();
- fc->
set_audio
_mapping (m);
+ fc->
audio->set
_mapping (m);
handled = true;
}
}
handled = true;
}
}
@@
-233,22
+239,27
@@
ContentMenu::find_missing ()
/* XXX: a bit nasty */
shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (_content.front ());
/* XXX: a bit nasty */
shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (_content.front ());
- if (ic && !ic->still ()) {
+ shared_ptr<DCPContent> dc = dynamic_pointer_cast<DCPContent> (_content.front ());
+
+ int r = wxID_CANCEL;
+ boost::filesystem::path path;
+
+ if ((ic && !ic->still ()) || dc) {
wxDirDialog* d = new wxDirDialog (0, _("Choose a folder"), wxT (""), wxDD_DIR_MUST_EXIST);
wxDirDialog* d = new wxDirDialog (0, _("Choose a folder"), wxT (""), wxDD_DIR_MUST_EXIST);
- int const r = d->ShowModal ();
- if (r == wxID_OK) {
- content.reset (new ImageContent (film, boost::filesystem::path (wx_to_std (d->GetPath ()))));
- }
+ r = d->ShowModal ();
+ path = wx_to_std (d->GetPath ());
d->Destroy ();
} else {
wxFileDialog* d = new wxFileDialog (0, _("Choose a file"), wxT (""), wxT (""), wxT ("*.*"), wxFD_MULTIPLE);
d->Destroy ();
} else {
wxFileDialog* d = new wxFileDialog (0, _("Choose a file"), wxT (""), wxT (""), wxT ("*.*"), wxFD_MULTIPLE);
- int const r = d->ShowModal ();
- if (r == wxID_OK) {
- content = content_factory (film, wx_to_std (d->GetPath ()));
- }
+ r = d->ShowModal ();
+ path = wx_to_std (d->GetPath ());
d->Destroy ();
}
d->Destroy ();
}
+ if (r == wxID_OK) {
+ content = content_factory (film, path);
+ }
+
if (!content) {
return;
}
if (!content) {
return;
}
@@
-276,8
+287,8
@@
ContentMenu::re_examine ()
return;
}
return;
}
-
for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i
) {
- film->examine_content (
*
i);
+
BOOST_FOREACH (shared_ptr<Content> i, _content
) {
+ film->examine_content (i);
}
}
}
}
@@
-312,7
+323,14
@@
ContentMenu::kdm ()
wxFileDialog* d = new wxFileDialog (_parent, _("Select KDM"));
if (d->ShowModal() == wxID_OK) {
wxFileDialog* d = new wxFileDialog (_parent, _("Select KDM"));
if (d->ShowModal() == wxID_OK) {
- dcp->add_kdm (dcp::EncryptedKDM (dcp::file_to_string (wx_to_std (d->GetPath ()))));
+ try {
+ dcp->add_kdm (dcp::EncryptedKDM (dcp::file_to_string (wx_to_std (d->GetPath ()))));
+ } catch (exception& e) {
+ error_dialog (_parent, wxString::Format (_("Could not load KDM (%s)"), e.what ()));
+ d->Destroy ();
+ return;
+ }
+
shared_ptr<Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
film->examine_content (dcp);
shared_ptr<Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
film->examine_content (dcp);