+ } catch (dcp::FileError& e) {
+
+ string m = String::compose (_("An error occurred whilst handling the file %1."), boost::filesystem::path (e.filename()).leaf());
+
+ try {
+ boost::filesystem::space_info const s = boost::filesystem::space (e.filename());
+ if (s.available < pow (1024, 3)) {
+ m += N_("\n\n");
+ m += _("The drive that the film is stored on is low in disc space. Free some more space and try again.");
+ }
+ } catch (...) {
+
+ }
+
+ set_error (e.what(), m);
+ set_progress (1);
+ set_state (FINISHED_ERROR);
+
+ } catch (OpenFileError& e) {
+
+ set_error (
+ String::compose (_("Could not open %1"), e.file().string()),
+ String::compose (
+ _("DCP-o-matic could not open the file %1. Perhaps it does not exist or is in an unexpected format."),
+ boost::filesystem::absolute (e.file()).string()
+ )
+ );
+
+ 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."),
+ boost::filesystem::absolute (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);
+
+ } catch (std::bad_alloc& e) {
+
+ set_error (_("Out of memory"), _("There was not enough memory to do this. If you are running a 32-bit operating system try reducing the number of encoding threads in the General tab of Preferences."));