X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fwx_util.cc;h=6eef0d14795020f0cab6481e76e98ba9687e6567;hb=581797d640af1572f884ddf4395924894b745b3a;hp=91fd426247a94e40caaa82a547796864706e3c5c;hpb=69e46a5803c9c015f3da4153340b3d4554deea2e;p=dcpomatic.git diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 91fd42624..6eef0d147 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2016 Carl Hetherington + Copyright (C) 2012-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -24,18 +24,27 @@ #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" #include "lib/cross.h" +#include "lib/job.h" #include #include #include +#include #include #include -using namespace std; -using namespace boost; +using std::string; +using std::vector; +using std::pair; +using boost::shared_ptr; +using boost::optional; using dcp::locale_convert; +using namespace dcpomatic; wxStaticText * #ifdef __WXOSX__ @@ -49,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. @@ -130,7 +139,9 @@ error_dialog (wxWindow* parent, wxString m, optional e) { wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_ERROR); if (e) { - d->SetExtendedMessage (*e); + wxString em = *e; + em[0] = wxToupper (em[0]); + d->SetExtendedMessage (em); } d->ShowModal (); d->Destroy (); @@ -148,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) { @@ -283,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) { @@ -352,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")); @@ -446,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 */ @@ -461,12 +482,6 @@ maybe_show_splash () return splash; } -boost::filesystem::path -path_from_file_dialog (wxFileDialog* dialog, string extension) -{ - return boost::filesystem::path(wx_to_std(dialog->GetPath())).replace_extension(extension); -} - double calculate_mark_interval (double mark_interval) { @@ -489,3 +504,66 @@ calculate_mark_interval (double mark_interval) return mark_interval; } + + +/** @return false if the task was cancelled */ +bool +display_progress (wxString title, wxString task) +{ + JobManager* jm = JobManager::instance (); + + wxProgressDialog progress (title, task, 100, 0, wxPD_CAN_ABORT); + + bool ok = true; + + while (jm->work_to_do()) { + dcpomatic_sleep_seconds (1); + if (!progress.Pulse()) { + /* user pressed cancel */ + BOOST_FOREACH (shared_ptr i, jm->get()) { + i->cancel(); + } + ok = false; + break; + } + } + + return ok; +} + + +int +get_offsets (vector& 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; +}