Add FilmViewer::time_until_next_frame.
[dcpomatic.git] / src / wx / wx_util.cc
index 98d69e0db1a1082f1b169042b2b94a83d2c3a31c..28f79431a5147171626e1b45b90d51630b4420c9 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
@@ -24,6 +24,8 @@
 
 #include "wx_util.h"
 #include "file_picker_ctrl.h"
+#include "static_text.h"
+#include "password_entry.h"
 #include "lib/config.h"
 #include "lib/job_manager.h"
 #include "lib/util.h"
@@ -42,6 +44,7 @@ using std::pair;
 using boost::shared_ptr;
 using boost::optional;
 using dcp::locale_convert;
+using namespace dcpomatic;
 
 wxStaticText *
 #ifdef __WXOSX__
@@ -55,7 +58,7 @@ create_label (wxWindow* p, wxString t, bool)
                t += wxT (":");
        }
 #endif
-       return new wxStaticText (p, wxID_ANY, t);
+       return new StaticText (p, t);
 }
 
 /** Add a wxStaticText to a wxSizer, aligning it at vertical centre.
@@ -156,6 +159,7 @@ message_dialog (wxWindow* parent, wxString m)
        d->Destroy ();
 }
 
+/** @return true if the user answered "yes" */
 bool
 confirm_dialog (wxWindow* parent, wxString m)
 {
@@ -291,6 +295,14 @@ checked_set (wxTextCtrl* widget, string value)
        }
 }
 
+void
+checked_set (PasswordEntry* entry, string value)
+{
+       if (entry->get() != value) {
+               entry->set(value);
+       }
+}
+
 void
 checked_set (wxTextCtrl* widget, wxString value)
 {
@@ -360,6 +372,9 @@ dcpomatic_setup_i18n ()
                   of wxWidgets.
                */
                locale->AddCatalog (wxT ("dcpomatic2-wxstd"));
+
+               /* Fedora 29 (at least) installs wxstd3.mo instead of wxstd.mo */
+               locale->AddCatalog (wxT ("wxstd3"));
 #endif
 
                locale->AddCatalog (wxT ("libdcpomatic2-wx"));
@@ -454,13 +469,11 @@ maybe_show_splash ()
 {
        wxSplashScreen* splash = 0;
        try {
-               if (!Config::have_existing ("config.xml")) {
-                       wxBitmap bitmap;
-                       boost::filesystem::path p = shared_path () / "splash.png";
-                       if (bitmap.LoadFile (std_to_wx (p.string ()), wxBITMAP_TYPE_PNG)) {
-                               splash = new wxSplashScreen (bitmap, wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_NO_TIMEOUT, 0, 0, -1);
-                               wxYield ();
-                       }
+               wxBitmap bitmap;
+               boost::filesystem::path p = shared_path () / "splash.png";
+               if (bitmap.LoadFile (std_to_wx (p.string ()), wxBITMAP_TYPE_PNG)) {
+                       splash = new wxSplashScreen (bitmap, wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_NO_TIMEOUT, 0, 0, -1);
+                       wxYield ();
                }
        } catch (boost::filesystem::filesystem_error& e) {
                /* Maybe we couldn't find the splash image; never mind */
@@ -504,7 +517,7 @@ display_progress (wxString title, wxString task)
        bool ok = true;
 
        while (jm->work_to_do()) {
-               dcpomatic_sleep (1);
+               dcpomatic_sleep_seconds (1);
                if (!progress.Pulse()) {
                        /* user pressed cancel */
                        BOOST_FOREACH (shared_ptr<Job> i, jm->get()) {
@@ -517,19 +530,3 @@ display_progress (wxString title, wxString task)
 
        return ok;
 }
-
-bool
-report_errors_from_last_job (wxWindow* parent)
-{
-       JobManager* jm = JobManager::instance ();
-
-       DCPOMATIC_ASSERT (!jm->get().empty());
-
-       shared_ptr<Job> last = jm->get().back();
-       if (last->finished_in_error()) {
-               error_dialog(parent, std_to_wx(last->error_summary()) + ".\n", std_to_wx(last->error_details()));
-               return false;
-       }
-
-       return true;
-}