Use the correct font to render subtitles in preview / burn-in (#663).
[dcpomatic.git] / src / lib / job.cc
index 8c46b49621c4a86a8c637d114d29dacce0976c00..25a533654a0afa08d466e9f5f906b6fdc9ec2532 100644 (file)
 
 */
 
-/** @file src/job.cc
+/** @file  src/job.cc
  *  @brief A parent class to represent long-running tasks which are run in their own thread.
  */
 
-#include <boost/thread.hpp>
-#include <boost/filesystem.hpp>
-#include <dcp/exceptions.h>
 #include "job.h"
 #include "util.h"
 #include "cross.h"
 #include "exceptions.h"
 #include "film.h"
 #include "log.h"
+#include "compose.hpp"
+#include <dcp/exceptions.h>
+#include <boost/thread.hpp>
+#include <boost/filesystem.hpp>
 
 #include "i18n.h"
 
@@ -97,6 +98,23 @@ Job::run_wrapper ()
                set_progress (1);
                set_state (FINISHED_ERROR);
 
+       } catch (boost::filesystem::filesystem_error& e) {
+
+               if (e.code() == boost::system::errc::no_such_file_or_directory) {
+                       set_error (
+                               String::compose (_("Could not open %1"), e.path1().string ()),
+                               String::compose (_("DCP-o-matic could not open the file %1.  Perhaps it does not exist or is in an unexpected format."), e.path1().string())
+                               );
+               } else {
+                       set_error (
+                               e.what (),
+                               string (_("It is not known what caused this error.")) + "  " + REPORT_PROBLEM
+                               );
+               }
+
+               set_progress (1);
+               set_state (FINISHED_ERROR);
+
        } catch (boost::thread_interrupted &) {
 
                set_state (FINISHED_CANCELLED);