X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_player.cc;h=cdacee7848f288e34ab9bb5cbf7471e841e406c9;hp=cd941e93557deab2cc53344204f5022fdc88dcd5;hb=77d2514fee2919c32e4db92b8f75369754d17fb5;hpb=257fce15e8b4dfa112d039e7888e3ec04e523198 diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index cd941e935..cdacee784 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -30,6 +30,7 @@ #include "wx/standard_controls.h" #include "wx/swaroop_controls.h" #include "wx/timer_display.h" +#include "wx/system_information_dialog.h" #include "lib/cross.h" #include "lib/config.h" #include "lib/util.h" @@ -111,6 +112,7 @@ enum { ID_tools_verify, ID_tools_check_for_updates, ID_tools_timing, + ID_tools_system_information, /* IDs for shortcuts (with no associated menu item) */ ID_start_stop, ID_back_frame, @@ -131,6 +133,7 @@ public: , _history_items (0) , _history_position (0) , _history_separator (0) + , _system_information_dialog (0) , _view_full_screen (0) , _view_dual_screen (0) { @@ -172,6 +175,7 @@ public: Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_verify, this), ID_tools_verify); Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_check_for_updates, this), ID_tools_check_for_updates); Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_timing, this), ID_tools_timing); + Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this), ID_tools_system_information); /* Use a panel as the only child of the Frame so that we avoid the dark-grey background on Windows. @@ -283,6 +287,15 @@ public: } } +#ifdef DCPOMATIC_VARIANT_SWAROOP + BOOST_FOREACH (shared_ptr i, _film->content()) { + shared_ptr c = dynamic_pointer_cast(i); + if (c && !c->kdm_timing_window_valid()) { + ok = false; + } + } +#endif + if (!ok) { error_dialog (this, _("The KDM does not allow playback of this content at this time.")); } @@ -451,6 +464,21 @@ public: private: + bool report_errors_from_last_job (wxWindow* parent) const + { + JobManager* jm = JobManager::instance (); + + DCPOMATIC_ASSERT (!jm->get().empty()); + + shared_ptr last = jm->get().back(); + if (last->finished_in_error()) { + error_dialog(parent, wxString::Format(_("Could not load DCP.\n\n%s."), std_to_wx(last->error_summary()).data()), std_to_wx(last->error_details())); + return false; + } + + return true; + } + void setup_menu (wxMenuBar* m) { _file_menu = new wxMenu; @@ -503,6 +531,7 @@ private: tools->AppendSeparator (); tools->Append (ID_tools_check_for_updates, _("Check for updates")); tools->Append (ID_tools_timing, _("Timing...")); + tools->Append (ID_tools_system_information, _("System information...")); wxMenu* help = new wxMenu; #ifdef __WXOSX__ @@ -796,6 +825,15 @@ private: d->Destroy (); } + void tools_system_information () + { + if (!_system_information_dialog) { + _system_information_dialog = new SystemInformationDialog (this, _viewer); + } + + _system_information_dialog->Show (); + } + void help_about () { AboutDialog* d = new AboutDialog (this); @@ -953,6 +991,7 @@ private: wxMenuItem* _history_separator; shared_ptr _viewer; Controls* _controls; + SystemInformationDialog* _system_information_dialog; boost::shared_ptr _film; boost::signals2::scoped_connection _config_changed_connection; wxMenuItem* _file_add_ov;