summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--hacks/start_servers.sh4
-rw-r--r--src/lib/film.cc17
-rw-r--r--src/wx/subtitle_panel.cc38
4 files changed, 31 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog
index 6442d79cb..ac0cbdf4b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-25 c.hetherington <cth@carlh.net>
+
+ * Disallow impossible burn settings by manipulating
+ the controls in the subtitle panel (#625).
+
2015-06-25 Carl Hetherington <cth@carlh.net>
* Version 2.1.10 released.
diff --git a/hacks/start_servers.sh b/hacks/start_servers.sh
index 997181849..9c2669cbb 100644
--- a/hacks/start_servers.sh
+++ b/hacks/start_servers.sh
@@ -2,5 +2,5 @@
dsh -m cs2-17 -m cs2-18 -m cs2-19 -m cs2-20 \
"screen -dmS dcpomatic bash -c 'cd src/dcpomatic2; LD_LIBRARY_PATH=$HOME/ubuntu/lib run/dcpomatic_server_cli --verbose'"
-#dsh -m cs2-5 -m cs2-6 -m cs2-7 -m cs2-8 \
-# "screen -dmS dcpomatic bash -c 'cd src/dcpomatic2; LD_LIBRARY_PATH=$HOME/ubuntu/lib run/dcpomatic_server_cli --verbose'"
+dsh -m cs2-5 -m cs2-6 -m cs2-7 -m cs2-8 \
+ "screen -dmS dcpomatic bash -c 'cd src/dcpomatic2; LD_LIBRARY_PATH=$HOME/ubuntu/lib run/dcpomatic_server_cli --verbose'"
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 2ef59fe21..51f4c7156 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -276,25 +276,12 @@ Film::make_dcp ()
throw BadSettingError (_("name"), _("cannot contain slashes"));
}
- bool must_burn = false;
- ContentList cl = content ();
- BOOST_FOREACH (shared_ptr<Content> c, cl) {
- shared_ptr<SubtitleContent> sc = dynamic_pointer_cast<SubtitleContent> (c);
- if (sc && sc->has_image_subtitles() && sc->use_subtitles() && !sc->burn_subtitles ()) {
- must_burn = true;
- }
- }
-
- if (must_burn) {
- throw EncodeError (_("this project has content with image-based subtitles, which this version of DCP-o-matic cannot include as separate DCP subtitles. To use these subtitles you must burn them into the image (tick the box in the Subtitles tab)."));
- }
-
set_isdcf_date_today ();
environment_info (log ());
- for (ContentList::const_iterator i = cl.begin(); i != cl.end(); ++i) {
- LOG_GENERAL ("Content: %1", (*i)->technical_summary());
+ BOOST_FOREACH (shared_ptr<const Content> i, content ()) {
+ LOG_GENERAL ("Content: %1", i->technical_summary());
}
LOG_GENERAL ("DCP video rate %1 fps", video_frame_rate());
LOG_GENERAL ("%1 threads", Config::instance()->num_local_encoding_threads());
diff --git a/src/wx/subtitle_panel.cc b/src/wx/subtitle_panel.cc
index bf3e6d72a..a7774ed20 100644
--- a/src/wx/subtitle_panel.cc
+++ b/src/wx/subtitle_panel.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,20 +17,21 @@
*/
-#include <boost/lexical_cast.hpp>
-#include <wx/spinctrl.h>
-#include "lib/ffmpeg_content.h"
-#include "lib/subrip_content.h"
-#include "lib/ffmpeg_subtitle_stream.h"
-#include "lib/dcp_subtitle_content.h"
-#include "lib/subrip_decoder.h"
-#include "lib/dcp_subtitle_decoder.h"
#include "subtitle_panel.h"
#include "film_editor.h"
#include "wx_util.h"
#include "subtitle_view.h"
#include "content_panel.h"
#include "fonts_dialog.h"
+#include "lib/ffmpeg_content.h"
+#include "lib/subrip_content.h"
+#include "lib/ffmpeg_subtitle_stream.h"
+#include "lib/dcp_subtitle_content.h"
+#include "lib/subrip_decoder.h"
+#include "lib/dcp_subtitle_decoder.h"
+#include <wx/spinctrl.h>
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
using std::vector;
using std::string;
@@ -204,11 +205,11 @@ SubtitlePanel::setup_sensitivity ()
int any_subs = 0;
int ffmpeg_subs = 0;
int subrip_or_dcp_subs = 0;
- SubtitleContentList c = _parent->selected_subtitle ();
- for (SubtitleContentList::const_iterator i = c.begin(); i != c.end(); ++i) {
- shared_ptr<const FFmpegContent> fc = boost::dynamic_pointer_cast<const FFmpegContent> (*i);
- shared_ptr<const SubRipContent> sc = boost::dynamic_pointer_cast<const SubRipContent> (*i);
- shared_ptr<const DCPSubtitleContent> dsc = boost::dynamic_pointer_cast<const DCPSubtitleContent> (*i);
+ int image_subs = 0;
+ BOOST_FOREACH (shared_ptr<SubtitleContent> i, _parent->selected_subtitle ()) {
+ shared_ptr<const FFmpegContent> fc = boost::dynamic_pointer_cast<const FFmpegContent> (i);
+ shared_ptr<const SubRipContent> sc = boost::dynamic_pointer_cast<const SubRipContent> (i);
+ shared_ptr<const DCPSubtitleContent> dsc = boost::dynamic_pointer_cast<const DCPSubtitleContent> (i);
if (fc) {
if (fc->has_subtitles ()) {
++ffmpeg_subs;
@@ -220,12 +221,17 @@ SubtitlePanel::setup_sensitivity ()
} else {
++any_subs;
}
+
+ if (i->has_image_subtitles ()) {
+ ++image_subs;
+ /* We must burn image subtitles at the moment */
+ i->set_burn_subtitles (true);
+ }
}
_use->Enable (any_subs > 0);
bool const use = _use->GetValue ();
-
- _burn->Enable (any_subs > 0 && use);
+ _burn->Enable (any_subs > 0 && use && image_subs == 0);
_x_offset->Enable (any_subs > 0 && use);
_y_offset->Enable (any_subs > 0 && use);
_x_scale->Enable (any_subs > 0 && use);