X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic.cc;h=d207953ce5824101982e329e004ba37f8bd9eefb;hb=aea3b88c63895121cbb632dfc84755a11cdeffba;hp=508390a38986dce5161aaab445ddb925c26df55c;hpb=248fe9bd28d93a9e269093b4dfbec5d0ceb49ce1;p=dcpomatic.git diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 508390a38..d207953ce 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -40,6 +40,7 @@ #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" @@ -82,6 +83,7 @@ #include "lib/check_content_change_job.h" #include "lib/text_content.h" #include "lib/dcpomatic_log.h" +#include "lib/subtitle_encoder.h" #include #include #include @@ -234,6 +236,7 @@ enum { ID_tools_manage_templates, ID_tools_check_for_updates, ID_tools_send_translations, + ID_tools_system_information, ID_tools_restore_default_preferences, ID_help_report_a_problem, /* IDs for shortcuts (with no associated menu item) */ @@ -251,6 +254,7 @@ public: explicit DOMFrame (wxString const & title) : wxFrame (NULL, -1, title) , _video_waveform_dialog (0) + , _system_information_dialog (0) , _hints_dialog (0) , _servers_list_dialog (0) , _config_dialog (0) @@ -324,6 +328,7 @@ public: Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_manage_templates, this), ID_tools_manage_templates); Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_check_for_updates, this), ID_tools_check_for_updates); Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_send_translations, this), ID_tools_send_translations); + Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this),ID_tools_system_information); Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences); Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT); Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem); @@ -505,7 +510,7 @@ private: } 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) { @@ -753,7 +758,7 @@ private: a long time, and crashes/power failures are moderately likely. */ _film->write_metadata (); - _film->make_dcp (); + _film->make_dcp (true); } 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) { @@ -904,14 +909,24 @@ private: void jobs_export () { - ExportDialog* d = new ExportDialog (this); + ExportDialog* d = new ExportDialog (this, _film->isdcf_name(true)); if (d->ShowModal() == wxID_OK) { shared_ptr job (new TranscodeJob (_film)); - job->set_encoder ( - shared_ptr ( - 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(new SubtitleEncoder(_film, job, d->path(), d->split_reels())) + ); + } else { + job->set_encoder ( + shared_ptr ( + new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->split_reels(), d->x264_crf() +#ifdef DCPOMATIC_VARIANT_SWAROOP + , optional(), optional() +#endif + ) + ) + ); + } JobManager::instance()->add (job); } d->Destroy (); @@ -987,6 +1002,15 @@ private: _video_waveform_dialog->Show (); } + void tools_system_information () + { + if (!_system_information_dialog) { + _system_information_dialog = new SystemInformationDialog (this, _film_viewer); + } + + _system_information_dialog->Show (); + } + void tools_hints () { if (!_hints_dialog) { @@ -1275,6 +1299,7 @@ private: add_item (tools, _("Manage templates..."), ID_tools_manage_templates, 0); add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0); add_item (tools, _("Send translations..."), ID_tools_send_translations, 0); + add_item (tools, _("System information..."), ID_tools_system_information, 0); tools->AppendSeparator (); add_item (tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS); @@ -1422,6 +1447,7 @@ private: boost::shared_ptr _film_viewer; StandardControls* _controls; VideoWaveformDialog* _video_waveform_dialog; + SystemInformationDialog* _system_information_dialog; HintsDialog* _hints_dialog; ServersListDialog* _servers_list_dialog; wxPreferencesEditor* _config_dialog; @@ -1524,8 +1550,18 @@ private: Config::instance()->set_nagged(Config::NAG_INITIAL_SETUP, true); } + if (running_32_on_64 ()) { + NagDialog::maybe_nag ( + _frame, Config::NAG_32_ON_64, + _("You are running the 32-bit version of DCP-o-matic on a 64-bit version of Windows. This will limit the memory available to DCP-o-matic and may cause errors. You are strongly advised to install the 64-bit version of DCP-o-matic."), + false); + } + _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); @@ -1546,9 +1582,6 @@ private: } } - signal_manager = new wxSignalManager (this); - Bind (wxEVT_IDLE, boost::bind (&App::idle, this)); - Bind (wxEVT_TIMER, boost::bind (&App::check, this)); _timer.reset (new wxTimer (this)); _timer->Start (1000); @@ -1637,9 +1670,10 @@ private: report_exception (); } - void idle () + void idle (wxIdleEvent& ev) { signal_manager->ui_idle (); + ev.Skip (); } void check ()