#include "lib/log.h"
#include "lib/make_dcp.h"
#include "lib/release_notes.h"
+#include "lib/scope_guard.h"
#include "lib/screen.h"
#include "lib/send_kdm_email_job.h"
#include "lib/signal_manager.h"
void file_new ()
{
auto d = new FilmNameLocationDialog (this, _("New Film"), true);
+ ScopeGuard sg = [d]() { d->Destroy(); };
int const r = d->ShowModal ();
- if (r == wxID_OK && d->check_path() && maybe_save_then_delete_film<FilmChangedClosingDialog>()) {
- try {
- new_film (d->path(), d->template_name());
- } catch (boost::filesystem::filesystem_error& e) {
+ if (r != wxID_OK || !d->check_path() || !maybe_save_then_delete_film<FilmChangedClosingDialog>()) {
+ return;
+ }
+
+ try {
+ new_film (d->path(), d->template_name());
+ } catch (boost::filesystem::filesystem_error& e) {
#ifdef DCPOMATIC_WINDOWS
- string bad_chars = "<>:\"/|?*";
- 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) {
- found_bad_chars += bad_chars[i];
- }
+ string bad_chars = "<>:\"/|?*";
+ 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) {
+ found_bad_chars += bad_chars[i];
}
- wxString message = _("Could not create folder to store film.");
- message += " ";
- if (!found_bad_chars.empty()) {
- 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()));
+ }
+ wxString message = _("Could not create folder to store film.");
+ message += " ";
+ if (!found_bad_chars.empty()) {
+ 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
- error_dialog (this, _("Could not create folder to store film."), std_to_wx(e.what()));
+ error_dialog (this, _("Could not create folder to store film."), std_to_wx(e.what()));
#endif
- }
}
-
- d->Destroy ();
}
void file_open ()
std_to_wx (Config::instance()->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ()),
wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST
);
+ ScopeGuard sg = [c]() { c->Destroy(); };
int r;
while (true) {
if (r == wxID_OK && maybe_save_then_delete_film<FilmChangedClosingDialog>()) {
load_film (wx_to_std (c->GetPath ()));
}
-
- c->Destroy ();
}
void file_save ()
void file_save_as_template ()
{
auto d = new SaveTemplateDialog (this);
- int const r = d->ShowModal ();
- if (r == wxID_OK) {
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() == wxID_OK) {
Config::instance()->save_template (_film, d->name ());
}
- d->Destroy ();
}
void file_duplicate ()
{
auto d = new FilmNameLocationDialog (this, _("Duplicate Film"), false);
- int const r = d->ShowModal ();
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (r == wxID_OK && d->check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) {
+ if (d->ShowModal() == wxID_OK && d->check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) {
shared_ptr<Film> film (new Film (d->path()));
film->copy_from (_film);
film->set_name (d->path().filename().generic_string());
film->write_metadata ();
}
-
- d->Destroy ();
}
void file_duplicate_and_open ()
{
auto d = new FilmNameLocationDialog (this, _("Duplicate Film"), false);
- int const r = d->ShowModal ();
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (r == wxID_OK && d->check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) {
+ if (d->ShowModal() == wxID_OK && d->check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) {
shared_ptr<Film> film (new Film (d->path()));
film->copy_from (_film);
film->set_name (d->path().filename().generic_string());
film->write_metadata ();
set_film (film);
}
-
- d->Destroy ();
}
void file_close ()
DCPOMATIC_ASSERT (_clipboard);
auto d = new PasteDialog (this, static_cast<bool>(_clipboard->video), static_cast<bool>(_clipboard->audio), !_clipboard->text.empty());
- if (d->ShowModal() == wxID_OK) {
- for (auto i: _film_editor->content_panel()->selected()) {
- if (d->video() && i->video) {
- DCPOMATIC_ASSERT (_clipboard->video);
- i->video->take_settings_from (_clipboard->video);
- }
- if (d->audio() && i->audio) {
- DCPOMATIC_ASSERT (_clipboard->audio);
- i->audio->take_settings_from (_clipboard->audio);
- }
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- if (d->text()) {
- auto j = i->text.begin ();
- auto k = _clipboard->text.begin ();
- while (j != i->text.end() && k != _clipboard->text.end()) {
- (*j)->take_settings_from (*k);
- ++j;
- ++k;
- }
+ for (auto i: _film_editor->content_panel()->selected()) {
+ if (d->video() && i->video) {
+ DCPOMATIC_ASSERT (_clipboard->video);
+ i->video->take_settings_from (_clipboard->video);
+ }
+ if (d->audio() && i->audio) {
+ DCPOMATIC_ASSERT (_clipboard->audio);
+ i->audio->take_settings_from (_clipboard->audio);
+ }
+
+ if (d->text()) {
+ auto j = i->text.begin ();
+ auto k = _clipboard->text.begin ();
+ while (j != i->text.end() && k != _clipboard->text.end()) {
+ (*j)->take_settings_from (*k);
+ ++j;
+ ++k;
}
}
}
- d->Destroy ();
}
void edit_select_all ()
_("Restore default preferences"),
wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- int const r = d->ShowModal ();
- d->Destroy ();
-
- if (r == wxID_YES) {
+ if (d->ShowModal() == wxID_YES) {
Config::restore_defaults ();
}
}
this, _("Specify ZIP file"), wxEmptyString, wxT("dcpomatic_config.zip"), wxT("ZIP files (*.zip)|*.zip"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
- int const r = dialog->ShowModal ();
- dialog->Destroy ();
-
- if (r == wxID_OK) {
+ if (dialog->ShowModal() == wxID_OK) {
save_all_config_as_zip (wx_to_std(dialog->GetPath()));
}
}
if (Config::instance()->show_hints_before_make_dcp()) {
auto hints = new HintsDialog (this, _film, false);
- int const r = hints->ShowModal();
- hints->Destroy ();
- if (r == wxID_CANCEL) {
+ ScopeGuard sg = [hints]() { hints->Destroy(); };
+ if (hints->ShowModal() == wxID_CANCEL) {
return;
}
}
if (Config::instance()->show_hints_before_make_dcp()) {
auto hints = new HintsDialog (this, _film, false);
- int const r = hints->ShowModal();
- hints->Destroy ();
- if (r == wxID_CANCEL) {
+ ScopeGuard sg = [hints]() { hints->Destroy(); };
+ if (hints->ShowModal() == wxID_CANCEL) {
return;
}
}
}
auto d = new SelfDKDMDialog (this, _film);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal () != wxID_OK) {
- d->Destroy ();
return;
}
kdm->as_xml (path);
}
}
-
- d->Destroy ();
}
void jobs_export_video_file ()
{
auto d = new ExportVideoFileDialog (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;
- }
- }
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- auto job = make_shared<TranscodeJob>(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP);
- job->set_encoder (
- make_shared<FFmpegEncoder> (
- _film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->split_streams(), d->x264_crf())
- );
- JobManager::instance()->add (job);
+ 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) {
+ return;
+ }
}
- d->Destroy ();
+
+ auto job = make_shared<TranscodeJob>(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP);
+ job->set_encoder (
+ make_shared<FFmpegEncoder> (
+ _film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->split_streams(), d->x264_crf())
+ );
+ JobManager::instance()->add (job);
}
void jobs_export_subtitles ()
{
auto d = new ExportSubtitlesDialog (this, _film->reels().size(), _film->interop());
- if (d->ShowModal() == wxID_OK) {
- auto job = make_shared<TranscodeJob>(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP);
- job->set_encoder (
- make_shared<SubtitleEncoder>(_film, job, d->path(), _film->isdcf_name(true), d->split_reels(), d->include_font())
- );
- JobManager::instance()->add (job);
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
+ return;
}
- d->Destroy ();
+ auto job = make_shared<TranscodeJob>(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP);
+ job->set_encoder(
+ make_shared<SubtitleEncoder>(_film, job, d->path(), _film->isdcf_name(true), d->split_reels(), d->include_font())
+ );
+ JobManager::instance()->add(job);
}
void tools_send_translations ()
{
auto d = new SendI18NDialog (this);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
string body;
body += d->name() + "\n";
}
}
}
-
- d->Destroy ();
}
void help_about ()
{
auto d = new AboutDialog (this);
+ ScopeGuard sg = [d]() { d->Destroy(); };
d->ShowModal ();
- d->Destroy ();
}
void help_report_a_problem ()
{
auto d = new ReportProblemDialog (this, _film);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal () == wxID_OK) {
d->report ();
}
- d->Destroy ();
}
bool should_close ()
_("Unfinished jobs"),
wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- bool const r = d->ShowModal() == wxID_YES;
- d->Destroy ();
- return r;
+ return d->ShowModal() == wxID_YES;
}
void close (wxCloseEvent& ev)
if (uc->state() == UpdateChecker::State::YES) {
auto dialog = new UpdateDialog (this, uc->stable(), uc->test());
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
dialog->ShowModal ();
- dialog->Destroy ();
} else if (uc->state() == UpdateChecker::State::FAILED) {
error_dialog (this, _("The DCP-o-matic download server could not be contacted."));
} else {
void analytics_message (string title, string html)
{
auto d = new HTMLDialog(this, std_to_wx(title), std_to_wx(html));
+ ScopeGuard sg = [d]() { d->Destroy(); };
d->ShowModal();
- d->Destroy();
}
void set_title ()
auto release_notes = find_release_notes(gui_is_dark());
if (release_notes) {
auto notes = new HTMLDialog(nullptr, _("Release notes"), std_to_wx(*release_notes), true);
+ ScopeGuard sg = [notes]() { notes->Destroy(); };
notes->Centre();
notes->ShowModal();
- notes->Destroy();
}
}
catch (exception& e)
{
if (_splash) {
_splash->Destroy ();
- _splash = 0;
+ _splash = nullptr;
}
}
_("Do nothing"),
Config::NAG_BAD_SIGNER_CHAIN_UTF8
);
- int const r = d->ShowModal ();
- d->Destroy ();
- return r == wxID_OK;
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ return d->ShowModal() == wxID_OK;
}
case Config::BAD_SIGNER_VALIDITY_TOO_LONG:
{
_("Do nothing"),
Config::NAG_BAD_SIGNER_CHAIN_VALIDITY
);
- int const r = d->ShowModal ();
- d->Destroy ();
- return r == wxID_OK;
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ return d->ShowModal() == wxID_OK;
}
case Config::BAD_SIGNER_INCONSISTENT:
{
"the certificate chain for signing DCPs and KDMs?"),
_("Close DCP-o-matic")
);
- int const r = d->ShowModal ();
- d->Destroy ();
- if (r != wxID_OK) {
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
exit (EXIT_FAILURE);
}
return true;
"configuration before continuing."),
_("Close DCP-o-matic")
);
- int const r = d->ShowModal ();
- d->Destroy ();
- if (r != wxID_OK) {
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
exit (EXIT_FAILURE);
}
return true;
#include "lib/job.h"
#include "lib/job_manager.h"
#include "lib/make_dcp.h"
+#include "lib/scope_guard.h"
#include "lib/transcode_job.h"
#include "lib/util.h"
#include "lib/version.h"
_("Unfinished jobs"),
wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
);
+ ScopeGuard sg = [d]{ d->Destroy(); };
- bool const r = d->ShowModal() == wxID_YES;
- d->Destroy ();
- return r;
+ return d->ShowModal() == wxID_YES;
}
void close (wxCloseEvent& ev)
void help_about ()
{
auto d = new AboutDialog (this);
+ ScopeGuard sg = [d]() { d->Destroy(); };
d->ShowModal ();
- d->Destroy ();
}
void add_film ()
{
- auto c = new wxDirDialog (this, _("Select film to open"), wxStandardPaths::Get().GetDocumentsDir(), wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST);
+ auto dialog = new wxDirDialog(this, _("Select film to open"), wxStandardPaths::Get().GetDocumentsDir(), wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST);
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
if (_last_parent) {
- c->SetPath (std_to_wx(_last_parent.get().string()));
+ dialog->SetPath(std_to_wx(_last_parent.get().string()));
}
int r;
while (true) {
- r = c->ShowModal ();
- if (r == wxID_OK && c->GetPath() == wxStandardPaths::Get().GetDocumentsDir()) {
+ r = dialog->ShowModal();
+ if (r == wxID_OK && dialog->GetPath() == wxStandardPaths::Get().GetDocumentsDir()) {
error_dialog (this, _("You did not select a folder. Make sure that you select a folder before clicking Open."));
} else {
break;
}
if (r == wxID_OK) {
- start_job (wx_to_std (c->GetPath ()));
+ start_job(wx_to_std(dialog->GetPath()));
}
- _last_parent = boost::filesystem::path (wx_to_std (c->GetPath ())).parent_path ();
-
- c->Destroy ();
+ _last_parent = boost::filesystem::path(wx_to_std(dialog->GetPath())).parent_path();
}
void config_changed (Config::Property what)
void help_about ()
{
auto d = new AboutDialog (this);
+ ScopeGuard sg = [d]() { d->Destroy(); };
d->ShowModal ();
- d->Destroy ();
}
void help_report_a_problem ()
{
auto d = new ReportProblemDialog (this, shared_ptr<Film>());
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal () == wxID_OK) {
d->report ();
}
- d->Destroy ();
}
void setup_menu (wxMenuBar* m)
void add_dkdm_folder_clicked ()
{
auto d = new NewDKDMFolderDialog (this);
- if (d->ShowModal() == wxID_OK) {
- auto new_dkdm = make_shared<DKDMGroup>(wx_to_std(d->get()));
- auto parent = dynamic_pointer_cast<DKDMGroup>(selected_dkdm());
- if (!parent) {
- parent = Config::instance()->dkdms ();
- }
- add_dkdm(new_dkdm, parent);
- update_dkdm_view();
+ ScopeGuard sg = [d]() { d->Destroy(); };
+ if (d->ShowModal() != wxID_OK) {
+ return;
}
- d->Destroy ();
+
+ auto new_dkdm = make_shared<DKDMGroup>(wx_to_std(d->get()));
+ auto parent = dynamic_pointer_cast<DKDMGroup>(selected_dkdm());
+ if (!parent) {
+ parent = Config::instance()->dkdms ();
+ }
+ add_dkdm(new_dkdm, parent);
+ update_dkdm_view();
}
void update_dkdm_view()
this, _("Select DKDM File"), wxEmptyString, wxEmptyString, wxT("XML files (*.xml)|*.xml"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
dkdm->dkdm().as_xml(wx_to_std(d->GetPath()));
}
- d->Destroy ();
}
void dkdm_search_changed()
CertificateChainEditor::add_certificate ()
{
auto d = new wxFileDialog (this, _("Select Certificate File"));
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
try {
extra = c.read_string (dcp::file_to_string (wx_to_std (d->GetPath ())));
} catch (boost::filesystem::filesystem_error& e) {
error_dialog (this, _("Could not import certificate (%s)"), d->GetPath());
- d->Destroy ();
return;
}
}
}
- d->Destroy ();
-
update_sensitivity ();
}
this, _("Select Certificate File"), wxEmptyString, default_name, wxT ("PEM files (*.pem)|*.pem"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
auto j = all.begin ();
for (int k = 0; k < i; ++k) {
++j;
}
- if (d->ShowModal () == wxID_OK) {
- boost::filesystem::path path (wx_to_std(d->GetPath()));
- if (path.extension() != ".pem") {
- path += ".pem";
- }
- dcp::File f(path, "w");
- if (!f) {
- throw OpenFileError (path, errno, OpenFileError::WRITE);
- }
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- string const s = j->certificate (true);
- f.checked_write(s.c_str(), s.length());
+ boost::filesystem::path path(wx_to_std(d->GetPath()));
+ if (path.extension() != ".pem") {
+ path += ".pem";
}
- d->Destroy ();
+ dcp::File f(path, "w");
+ if (!f) {
+ throw OpenFileError(path, errno, OpenFileError::WRITE);
+ }
+
+ string const s = j->certificate(true);
+ f.checked_write(s.c_str(), s.length());
}
void
this, _("Select Chain File"), wxEmptyString, wxT("certificate_chain.pem"), wxT("PEM files (*.pem)|*.pem"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (d->ShowModal () == wxID_OK) {
- boost::filesystem::path path (wx_to_std(d->GetPath()));
- if (path.extension() != ".pem") {
- path += ".pem";
- }
- dcp::File f(path, "w");
- if (!f) {
- throw OpenFileError (path, errno, OpenFileError::WRITE);
- }
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- auto const s = _get()->chain();
- f.checked_write (s.c_str(), s.length());
+ boost::filesystem::path path(wx_to_std(d->GetPath()));
+ if (path.extension() != ".pem") {
+ path += ".pem";
+ }
+ dcp::File f(path, "w");
+ if (!f) {
+ throw OpenFileError(path, errno, OpenFileError::WRITE);
}
- d->Destroy ();
+ auto const s = _get()->chain();
+ f.checked_write(s.c_str(), s.length());
}
void
}
auto d = new MakeChainDialog (this, _get());
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal () == wxID_OK) {
_set (d->get());
update_certificate_list ();
update_private_key ();
}
-
- d->Destroy ();
}
void
CertificateChainEditor::import_private_key ()
{
auto d = new wxFileDialog (this, _("Select Key File"));
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
try {
}
}
- d->Destroy ();
-
update_sensitivity ();
}
this, _("Select Key File"), wxEmptyString, wxT("private_key.pem"), wxT("PEM files (*.pem)|*.pem"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal () == wxID_OK) {
boost::filesystem::path path (wx_to_std(d->GetPath()));
auto const s = _get()->key().get ();
f.checked_write(s.c_str(), s.length());
}
- d->Destroy ();
}
wxString
_panel, _("Select Export File"), wxEmptyString, wxEmptyString, wxT ("DOM files (*.dom)|*.dom"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (d->ShowModal () == wxID_OK) {
- boost::filesystem::path path (wx_to_std(d->GetPath()));
- dcp::File f(path, "w");
- if (!f) {
- throw OpenFileError (path, errno, OpenFileError::WRITE);
- }
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- auto const chain = Config::instance()->decryption_chain()->chain();
- f.checked_write (chain.c_str(), chain.length());
- auto const key = Config::instance()->decryption_chain()->key();
- DCPOMATIC_ASSERT (key);
- f.checked_write(key->c_str(), key->length());
+ boost::filesystem::path path(wx_to_std(d->GetPath()));
+ dcp::File f(path, "w");
+ if (!f) {
+ throw OpenFileError(path, errno, OpenFileError::WRITE);
}
- d->Destroy ();
+ auto const chain = Config::instance()->decryption_chain()->chain();
+ f.checked_write(chain.c_str(), chain.length());
+ auto const key = Config::instance()->decryption_chain()->key();
+ DCPOMATIC_ASSERT(key);
+ f.checked_write(key->c_str(), key->length());
}
void
auto d = new wxFileDialog (
_panel, _("Select File To Import"), wxEmptyString, wxEmptyString, wxT ("DOM files (*.dom)|*.dom")
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (d->ShowModal () == wxID_OK) {
- auto new_chain = make_shared<dcp::CertificateChain>();
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- dcp::File f(wx_to_std(d->GetPath()), "r");
- if (!f) {
- throw OpenFileError (f.path(), errno, OpenFileError::WRITE);
- }
+ auto new_chain = make_shared<dcp::CertificateChain>();
- string current;
- while (!f.eof()) {
- char buffer[128];
- if (f.gets(buffer, 128) == 0) {
- break;
- }
- current += buffer;
- if (strncmp (buffer, "-----END CERTIFICATE-----", 25) == 0) {
- new_chain->add (dcp::Certificate (current));
- current = "";
- } else if (strncmp (buffer, "-----END RSA PRIVATE KEY-----", 29) == 0) {
- new_chain->set_key (current);
- current = "";
- }
- }
+ dcp::File f(wx_to_std(d->GetPath()), "r");
+ if (!f) {
+ throw OpenFileError(f.path(), errno, OpenFileError::WRITE);
+ }
- if (new_chain->chain_valid() && new_chain->private_key_valid()) {
- Config::instance()->set_decryption_chain (new_chain);
- } else {
- error_dialog (_panel, _("Invalid DCP-o-matic export file"));
+ string current;
+ while (!f.eof()) {
+ char buffer[128];
+ if (f.gets(buffer, 128) == 0) {
+ break;
+ }
+ current += buffer;
+ if (strncmp (buffer, "-----END CERTIFICATE-----", 25) == 0) {
+ new_chain->add(dcp::Certificate(current));
+ current = "";
+ } else if (strncmp (buffer, "-----END RSA PRIVATE KEY-----", 29) == 0) {
+ new_chain->set_key(current);
+ current = "";
}
}
- d->Destroy ();
+
+ if (new_chain->chain_valid() && new_chain->private_key_valid()) {
+ Config::instance()->set_decryption_chain(new_chain);
+ } else {
+ error_dialog(_panel, _("Invalid DCP-o-matic export file"));
+ }
}
bool
_panel, _("Select Certificate File"), wxEmptyString, default_name, wxT("PEM files (*.pem)|*.pem"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT
);
+ ScopeGuard sg = [d]() { d->Destroy(); };
- if (d->ShowModal () == wxID_OK) {
- boost::filesystem::path path (wx_to_std(d->GetPath()));
- if (path.extension() != ".pem") {
- path += ".pem";
- }
- dcp::File f(path, "w");
- if (!f) {
- throw OpenFileError (path, errno, OpenFileError::WRITE);
- }
+ if (d->ShowModal() != wxID_OK) {
+ return;
+ }
- auto const s = Config::instance()->decryption_chain()->leaf().certificate (true);
- f.checked_write(s.c_str(), s.length());
+ boost::filesystem::path path(wx_to_std(d->GetPath()));
+ if (path.extension() != ".pem") {
+ path += ".pem";
+ }
+ dcp::File f(path, "w");
+ if (!f) {
+ throw OpenFileError(path, errno, OpenFileError::WRITE);
}
- d->Destroy ();
+ auto const s = Config::instance()->decryption_chain()->leaf().certificate (true);
+ f.checked_write(s.c_str(), s.length());
}
wxString
auto ic = dynamic_pointer_cast<ImageContent> (i);
if (ic) {
auto e = new ImageSequenceDialog (_splitter);
- int const r = e->ShowModal();
- auto const frame_rate = e->frame_rate ();
- e->Destroy ();
+ ScopeGuard sg = [e]() { e->Destroy(); };
- if (r != wxID_OK) {
+ if (e->ShowModal() != wxID_OK) {
return;
}
-
- ic->set_video_frame_rate(_film, frame_rate);
+ ic->set_video_frame_rate(_film, e->frame_rate());
}
_film->examine_and_add_content (i);
#include "lib/job.h"
#include "lib/job_manager.h"
#include "lib/player_video.h"
+#include "lib/scope_guard.h"
#include <dcp/cpl.h>
#include <dcp/dcp.h>
#include <dcp/reel.h>
Controls::timecode_clicked ()
{
auto dialog = new PlayheadToTimecodeDialog(this, _viewer.position(), _film->video_frame_rate());
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
+
if (dialog->ShowModal() == wxID_OK) {
_viewer.seek(dialog->get(), true);
}
- dialog->Destroy ();
}
Controls::frame_number_clicked ()
{
auto dialog = new PlayheadToFrameDialog(this, _viewer.position(), _film->video_frame_rate());
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
+
if (dialog->ShowModal() == wxID_OK) {
_viewer.seek(dialog->get(), true);
}
- dialog->Destroy ();
}
#include "dcpomatic_button.h"
#include "wx_util.h"
+#include "lib/scope_guard.h"
#include <dcp/warnings.h>
LIBDCP_DISABLE_WARNINGS
#include <wx/listctrl.h>
void add_clicked ()
{
S* dialog = new S (this);
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
if (dialog->ShowModal() == wxID_OK) {
auto const v = dialog->get ();
_set (all);
}
}
-
- dialog->Destroy ();
}
void edit_clicked ()
DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ()));
S* dialog = new S (this);
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
dialog->set (all[item]);
if (dialog->ShowModal() == wxID_OK) {
auto const v = dialog->get ();
all[item] = v.get ();
}
- dialog->Destroy ();
for (size_t i = 0; i < _columns.size(); ++i) {
_list->SetItem (item, i, std_to_wx (_column (all[item], i)));
#include "language_tag_dialog.h"
#include "language_tag_widget.h"
#include "wx_util.h"
+#include "lib/scope_guard.h"
#include <dcp/warnings.h>
LIBDCP_DISABLE_WARNINGS
#include <wx/wx.h>
LanguageTagWidget::edit ()
{
auto d = new LanguageTagDialog(_parent, _tag.get_value_or(dcp::LanguageTag("en")));
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
set(d->get());
Changed(d->get());
}
- d->Destroy ();
}
void
ScreenDialog::download_recipient ()
{
- auto d = new DownloadCertificateDialog (this);
- if (d->ShowModal() == wxID_OK) {
- set_recipient (d->certificate());
- checked_set (_recipient_file, d->url());
+ auto dialog = new DownloadCertificateDialog (this);
+ ScopeGuard sg = [dialog]() { dialog->Destroy(); };
+ if (dialog->ShowModal() == wxID_OK) {
+ set_recipient(dialog->certificate());
+ checked_set(_recipient_file, dialog->url());
}
- d->Destroy ();
setup_sensitivity ();
}
#include "lib/ffmpeg_content.h"
#include "lib/ffmpeg_subtitle_stream.h"
#include "lib/job_manager.h"
+#include "lib/scope_guard.h"
#include "lib/string_text_file_content.h"
#include "lib/string_text_file_decoder.h"
#include "lib/subtitle_analysis.h"
if (_dcp_track->GetSelection() == int(_dcp_track->GetCount()) - 1) {
auto d = new DCPTextTrackDialog (this);
+ ScopeGuard sg = [d]() { d->Destroy(); };
if (d->ShowModal() == wxID_OK) {
track = d->get();
}
- d->Destroy ();
} else {
/* Find the DCPTextTrack that was selected */
for (auto i: _parent->film()->closed_caption_tracks()) {