#include "lib/check_content_change_job.h"
#include "lib/text_content.h"
#include "lib/dcpomatic_log.h"
+#include "lib/subtitle_encoder.h"
#include <dcp/exceptions.h>
#include <dcp/raw_convert.h>
#include <wx/generic/aboutdlgg.h>
} catch (boost::filesystem::filesystem_error& e) {
#ifdef DCPOMATIC_WINDOWS
string bad_chars = "<>:\"/|?*";
- string const filename = d->path().string();
+ string const filename = d->path().filename().string();
string found_bad_chars;
for (size_t i = 0; i < bad_chars.length(); ++i) {
if (filename.find(bad_chars[i]) != string::npos && found_bad_chars.find(bad_chars[i]) == string::npos) {
}
}
wxString message = _("Could not create folder to store film.");
+ message += " ";
if (!found_bad_chars.empty()) {
- message += " ";
message += wxString::Format (_("Try removing the %s characters from your folder name."), std_to_wx(found_bad_chars).data());
+ } else {
+ message += _("Please check that you do not have Windows controlled folder access enabled for DCP-o-matic.");
}
error_dialog (this, message, std_to_wx(e.what()));
#else
start (wx_to_std (wxStandardPaths::Get().GetExecutablePath()));
}
- dcpomatic_sleep (1);
+ dcpomatic_sleep_seconds (1);
}
return true;
void jobs_export ()
{
- ExportDialog* d = new ExportDialog (this);
+ ExportDialog* d = new ExportDialog (this, _film->isdcf_name(true));
if (d->ShowModal() == wxID_OK) {
+ if (boost::filesystem::exists(d->path())) {
+ bool ok = confirm_dialog(
+ this,
+ wxString::Format (_("File %s already exists. Do you want to overwrite it?"), std_to_wx(d->path().string()).data())
+ );
+
+ if (!ok) {
+ d->Destroy ();
+ return;
+ }
+ }
+
shared_ptr<TranscodeJob> job (new TranscodeJob (_film));
- job->set_encoder (
- shared_ptr<FFmpegEncoder> (
- new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->x264_crf()
+ if (d->format() == EXPORT_FORMAT_SUBTITLES_DCP) {
+ job->set_encoder (
+ shared_ptr<SubtitleEncoder>(new SubtitleEncoder(_film, job, d->path(), d->split_reels()))
+ );
+ } else {
+ job->set_encoder (
+ shared_ptr<FFmpegEncoder> (
+ new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->x264_crf()
#ifdef DCPOMATIC_VARIANT_SWAROOP
- , optional<dcp::Key>(), optional<string>()
+ , optional<dcp::Key>(), optional<string>()
#endif
+ )
)
- )
- );
+ );
+ }
JobManager::instance()->add (job);
}
d->Destroy ();
_frame->Show ();
+ signal_manager = new wxSignalManager (this);
+ Bind (wxEVT_IDLE, boost::bind (&App::idle, this, _1));
+
if (!_film_to_load.empty() && boost::filesystem::is_directory (_film_to_load)) {
try {
_frame->load_film (_film_to_load);
}
}
- signal_manager = new wxSignalManager (this);
- Bind (wxEVT_IDLE, boost::bind (&App::idle, this, _1));
-
Bind (wxEVT_TIMER, boost::bind (&App::check, this));
_timer.reset (new wxTimer (this));
_timer->Start (1000);