BOOST_FOREACH.
[dcpomatic.git] / src / wx / wx_util.cc
index 1a537c0875759f16cafe388a1a4f739cb46cde22..3386b2700c522c7047c4bb0e0c738473cf1b6303 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #include "lib/util.h"
 #include "lib/cross.h"
 #include "lib/job.h"
+#include "lib/warnings.h"
 #include <dcp/locale_convert.h>
+DCPOMATIC_DISABLE_WARNINGS
 #include <wx/spinctrl.h>
 #include <wx/splash.h>
 #include <wx/progdlg.h>
 #include <wx/filepicker.h>
+DCPOMATIC_ENABLE_WARNINGS
 #include <boost/thread.hpp>
 
 using std::string;
 using std::vector;
 using std::pair;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
 using dcp::locale_convert;
+using namespace dcpomatic;
 
 wxStaticText *
 #ifdef __WXOSX__
@@ -469,8 +473,7 @@ maybe_show_splash ()
        wxSplashScreen* splash = 0;
        try {
                wxBitmap bitmap;
-               boost::filesystem::path p = shared_path () / "splash.png";
-               if (bitmap.LoadFile (std_to_wx (p.string ()), wxBITMAP_TYPE_PNG)) {
+               if (bitmap.LoadFile(bitmap_path("splash"), wxBITMAP_TYPE_PNG)) {
                        splash = new wxSplashScreen (bitmap, wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_NO_TIMEOUT, 0, 0, -1);
                        wxYield ();
                }
@@ -516,10 +519,10 @@ 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()) {
+                       for (auto i: jm->get()) {
                                i->cancel();
                        }
                        ok = false;
@@ -530,18 +533,73 @@ 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());
+int
+get_offsets (vector<Offset>& offsets)
+{
+       offsets.push_back (Offset(_("UTC-11"),  -11,  0));
+       offsets.push_back (Offset(_("UTC-10"),  -10,  0));
+       offsets.push_back (Offset(_("UTC-9"),    -9,  0));
+       offsets.push_back (Offset(_("UTC-8"),    -8,  0));
+       offsets.push_back (Offset(_("UTC-7"),    -7,  0));
+       offsets.push_back (Offset(_("UTC-6"),    -6,  0));
+       offsets.push_back (Offset(_("UTC-5"),    -5,  0));
+       offsets.push_back (Offset(_("UTC-4:30"), -4, 30));
+       offsets.push_back (Offset(_("UTC-4"),    -4,  0));
+       offsets.push_back (Offset(_("UTC-3:30"), -3, 30));
+       offsets.push_back (Offset(_("UTC-3"),    -3,  0));
+       offsets.push_back (Offset(_("UTC-2"),    -2,  0));
+       offsets.push_back (Offset(_("UTC-1"),    -1,  0));
+       int utc = offsets.size();
+       offsets.push_back (Offset(_("UTC")  ,     0,  0));
+       offsets.push_back (Offset(_("UTC+1"),     1,  0));
+       offsets.push_back (Offset(_("UTC+2"),     2,  0));
+       offsets.push_back (Offset(_("UTC+3"),     3,  0));
+       offsets.push_back (Offset(_("UTC+4"),     4,  0));
+       offsets.push_back (Offset(_("UTC+5"),     5,  0));
+       offsets.push_back (Offset(_("UTC+5:30"),  5, 30));
+       offsets.push_back (Offset(_("UTC+6"),     6,  0));
+       offsets.push_back (Offset(_("UTC+7"),     7,  0));
+       offsets.push_back (Offset(_("UTC+8"),     8,  0));
+       offsets.push_back (Offset(_("UTC+9"),     9,  0));
+       offsets.push_back (Offset(_("UTC+9:30"),  9, 30));
+       offsets.push_back (Offset(_("UTC+10"),   10,  0));
+       offsets.push_back (Offset(_("UTC+11"),   11,  0));
+       offsets.push_back (Offset(_("UTC+12"),   12,  0));
+
+       return utc;
+}
+
+
+wxString
+bitmap_path (string name)
+{
+       boost::filesystem::path base;
 
-       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;
+#ifdef DCPOMATIC_DEBUG
+       /* Hack to allow Linux and OS X to find icons when running from the source tree */
+       char* path = getenv ("DCPOMATIC_GRAPHICS");
+       if (path) {
+               base = path;
+       } else {
+               base = resources_path();
        }
+#else
+       base = resources_path();
+#endif
+
+       boost::filesystem::path p = base / String::compose("%1.png", name);
+       return std_to_wx (p.string());
+}
+
 
-       return true;
+wxSize
+small_button_size (wxWindow* parent, wxString text)
+{
+       wxClientDC dc (parent);
+       wxSize size = dc.GetTextExtent (text);
+       size.SetHeight (-1);
+       size.IncBy (24, 0);
+       return size;
 }
+