/*
- Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#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 "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 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__
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.
d->Destroy ();
}
+/** @return true if the user answered "yes" */
bool
confirm_dialog (wxWindow* parent, wxString m)
{
}
}
+void
+checked_set (PasswordEntry* entry, string value)
+{
+ if (entry->get() != value) {
+ entry->set(value);
+ }
+}
+
void
checked_set (wxTextCtrl* widget, wxString value)
{
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"));
{
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;
+ if (bitmap.LoadFile(bitmap_path("splash"), 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 */
return splash;
}
-optional<boost::filesystem::path>
-path_from_file_dialog (wxFileDialog* dialog, string extension)
-{
- boost::filesystem::path p(wx_to_std(dialog->GetPath()));
- p.replace_extension(extension);
- if (boost::filesystem::is_regular_file(p) && !confirm_dialog(dialog, wxString::Format(_("A file named %s already exists. Do you want to replace it?"), std_to_wx(p.filename().string())))) {
- return optional<boost::filesystem::path>();
- }
- return p;
-}
-
double
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<Job> i, jm->get()) {
+ i->cancel();
+ }
+ ok = false;
+ break;
+ }
+ }
+
+ return ok;
+}
+
+
+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;
+
+#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());
+}
+