Disallow non-burn of image subtitles by disabling the relevant widgets (#625).
authorCarl Hetherington <cth@carlh.net>
Thu, 25 Jun 2015 14:47:28 +0000 (15:47 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 25 Jun 2015 14:47:28 +0000 (15:47 +0100)
ChangeLog
hacks/start_servers.sh
src/lib/film.cc
src/wx/subtitle_panel.cc

index 6442d79cb910309b3208a697410cd60306e85c3b..ac0cbdf4b62348c051645a08f9c42721fdea238e 100644 (file)
--- 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.
index 997181849e70259afe6281f2277eac81a6cb54de..9c2669cbb66d673d24196dfa627d98b09fe4a27d 100644 (file)
@@ -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'"
index 2ef59fe216e04aa89fb378f7d849948a8375174b..51f4c7156cb087fbc65240718375c80e9a9a5cfa 100644 (file)
@@ -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());
index bf3e6d72af81fefeb11f9870f69d05196ad2a920..a7774ed2083aa2c8415d828bd00754bb14dcd942 100644 (file)
@@ -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
 
 */
 
-#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);