X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic.cc;h=7877b1cb6d02a7a1ac49c3f6c042cabf19201341;hb=f5c8aa4a7dd65eb9c343cd88d6dcad2354b73808;hp=8bcca9b22b721d20d21b1a0f8fec461f5bc20e0e;hpb=c8966336f48c4de7222a97c23eccad24fab45121;p=dcpomatic.git diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 8bcca9b22..7877b1cb6 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -24,78 +24,79 @@ */ -#include "wx/standard_controls.h" -#include "wx/film_viewer.h" -#include "wx/film_editor.h" -#include "wx/job_manager_view.h" -#include "wx/full_config_dialog.h" -#include "wx/wx_util.h" -#include "wx/film_name_location_dialog.h" -#include "wx/wx_signal_manager.h" -#include "wx/recreate_chain_dialog.h" #include "wx/about_dialog.h" -#include "wx/kdm_dialog.h" -#include "wx/dkdm_dialog.h" -#include "wx/self_dkdm_dialog.h" -#include "wx/servers_list_dialog.h" -#include "wx/hints_dialog.h" -#include "wx/update_dialog.h" #include "wx/content_panel.h" -#include "wx/report_problem_dialog.h" -#include "wx/video_waveform_dialog.h" -#include "wx/system_information_dialog.h" -#include "wx/save_template_dialog.h" -#include "wx/templates_dialog.h" -#include "wx/nag_dialog.h" +#include "wx/dkdm_dialog.h" #include "wx/export_subtitles_dialog.h" #include "wx/export_video_file_dialog.h" -#include "wx/paste_dialog.h" +#include "wx/film_editor.h" +#include "wx/film_name_location_dialog.h" +#include "wx/film_viewer.h" #include "wx/focus_manager.h" +#include "wx/full_config_dialog.h" +#include "wx/hints_dialog.h" #include "wx/html_dialog.h" -#include "wx/send_i18n_dialog.h" #include "wx/i18n_hook.h" -#include "lib/film.h" +#include "wx/job_manager_view.h" +#include "wx/kdm_dialog.h" +#include "wx/nag_dialog.h" +#include "wx/paste_dialog.h" +#include "wx/recreate_chain_dialog.h" +#include "wx/report_problem_dialog.h" +#include "wx/save_template_dialog.h" +#include "wx/self_dkdm_dialog.h" +#include "wx/send_i18n_dialog.h" +#include "wx/servers_list_dialog.h" +#include "wx/standard_controls.h" +#include "wx/system_information_dialog.h" +#include "wx/templates_dialog.h" +#include "wx/update_dialog.h" +#include "wx/video_waveform_dialog.h" +#include "wx/wx_signal_manager.h" +#include "wx/wx_util.h" #include "lib/analytics.h" -#include "lib/emailer.h" +#include "lib/audio_content.h" +#include "lib/check_content_change_job.h" +#include "lib/cinema.h" +#include "lib/compose.hpp" #include "lib/config.h" -#include "lib/cross.h" -#include "lib/util.h" -#include "lib/video_content.h" #include "lib/content.h" -#include "lib/version.h" -#include "lib/signal_manager.h" -#include "lib/log.h" -#include "lib/screen.h" -#include "lib/job_manager.h" -#include "lib/exceptions.h" -#include "lib/cinema.h" -#include "lib/kdm_with_metadata.h" -#include "lib/send_kdm_email_job.h" -#include "lib/encode_server_finder.h" -#include "lib/update_checker.h" -#include "lib/cross.h" #include "lib/content_factory.h" -#include "lib/compose.hpp" -#include "lib/dcpomatic_socket.h" -#include "lib/hints.h" +#include "lib/cross.h" +#include "lib/cross.h" #include "lib/dcp_content.h" -#include "lib/ffmpeg_encoder.h" -#include "lib/transcode_job.h" -#include "lib/dkdm_wrapper.h" -#include "lib/audio_content.h" -#include "lib/check_content_change_job.h" -#include "lib/text_content.h" #include "lib/dcpomatic_log.h" +#include "lib/dcpomatic_socket.h" +#include "lib/dkdm_wrapper.h" +#include "lib/emailer.h" +#include "lib/encode_server_finder.h" +#include "lib/exceptions.h" +#include "lib/ffmpeg_encoder.h" +#include "lib/film.h" +#include "lib/hints.h" +#include "lib/job_manager.h" +#include "lib/kdm_with_metadata.h" +#include "lib/log.h" +#include "lib/make_dcp.h" +#include "lib/screen.h" +#include "lib/send_kdm_email_job.h" +#include "lib/signal_manager.h" #include "lib/subtitle_encoder.h" +#include "lib/text_content.h" +#include "lib/transcode_job.h" +#include "lib/update_checker.h" +#include "lib/util.h" +#include "lib/version.h" +#include "lib/video_content.h" #include "lib/warnings.h" #include #include DCPOMATIC_DISABLE_WARNINGS -#include -#include #include +#include #include #include +#include #include DCPOMATIC_ENABLE_WARNINGS #ifdef __WXGTK__ @@ -104,8 +105,8 @@ DCPOMATIC_ENABLE_WARNINGS #ifdef __WXMSW__ #include #endif -#include #include +#include #include #include /* This is OK as it's only used with DCPOMATIC_WINDOWS */ @@ -365,9 +366,8 @@ public: set_menu_sensitivity (); - _film_editor->FileChanged.connect (bind (&DOMFrame::file_changed, this, _1)); _film_editor->content_panel()->SelectionChanged.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this)); - file_changed (""); + set_title (); JobManager::instance()->ActiveJobsChanged.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this)); @@ -492,8 +492,10 @@ public: if (_film) { _film->Change.connect (boost::bind (&DOMFrame::film_change, this, _1)); _film->Message.connect (boost::bind(&DOMFrame::film_message, this, _1)); + _film->DirtyChange.connect (boost::bind(&DOMFrame::set_title, this)); dcpomatic_log = _film->log (); } + set_title (); } shared_ptr film () const { @@ -522,16 +524,6 @@ private: } } - void file_changed (boost::filesystem::path f) - { - auto s = wx_to_std(_("DCP-o-matic")); - if (!f.empty ()) { - s += " - " + f.string (); - } - - SetTitle (std_to_wx (s)); - } - void file_new () { auto d = new FilmNameLocationDialog (this, _("New Film"), true); @@ -614,7 +606,7 @@ private: int const r = d->ShowModal (); if (r == wxID_OK && d->check_path() && maybe_save_film()) { - shared_ptr film (new Film (d->path())); + auto film = make_shared(d->path()); film->copy_from (_film); film->set_name (d->path().filename().generic_string()); film->write_metadata (); @@ -629,7 +621,7 @@ private: int const r = d->ShowModal (); if (r == wxID_OK && d->check_path() && maybe_save_film()) { - shared_ptr film (new Film (d->path())); + auto film = make_shared(d->path()); film->copy_from (_film); film->set_name (d->path().filename().generic_string()); film->write_metadata (); @@ -798,7 +790,7 @@ private: a long time, and crashes/power failures are moderately likely. */ _film->write_metadata (); - _film->make_dcp (TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP); + make_dcp (_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP); } catch (BadSettingError& e) { error_dialog (this, wxString::Format (_("Bad setting for %s."), std_to_wx(e.setting()).data()), std_to_wx(e.what())); } catch (std::exception& e) { @@ -1100,8 +1092,17 @@ private: body += i.first + "\n" + i.second + "\n\n"; } list to = { "carl@dcpomatic.com" }; - Emailer emailer (d->email(), to, "DCP-o-matic translations", body); - emailer.send ("main.carlh.net", 2525, EmailProtocol::STARTTLS); + if (d->email().find("@") == string::npos) { + error_dialog (this, _("You must enter a valid email address when sending translations, " + "otherwise the DCP-o-matic maintainers cannot credit you or contact you with questions.")); + } else { + Emailer emailer (d->email(), to, "DCP-o-matic translations", body); + try { + emailer.send ("main.carlh.net", 2525, EmailProtocol::STARTTLS); + } catch (NetworkError& e) { + error_dialog (this, _("Could not send translations"), std_to_wx(e.what())); + } + } } d->Destroy (); @@ -1505,6 +1506,21 @@ private: d->Destroy(); } + void set_title () + { + auto s = wx_to_std(_("DCP-o-matic")); + if (_film) { + if (_film->directory()) { + s += " - " + _film->directory()->string(); + } + if (_film->dirty()) { + s += " *"; + } + } + + SetTitle (std_to_wx(s)); + } + FilmEditor* _film_editor; std::shared_ptr _film_viewer; StandardControls* _controls;