X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fwx_util.cc;h=8b6d0961ba74a0f91b3e59d11c3b309a9ade9bc5;hp=6eef0d14795020f0cab6481e76e98ba9687e6567;hb=d31674ec14bb533fe2b195601e9ee2fe03848487;hpb=581797d640af1572f884ddf4395924894b745b3a diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 6eef0d147..8b6d0961b 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2019 Carl Hetherington + Copyright (C) 2012-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -31,17 +31,20 @@ #include "lib/util.h" #include "lib/cross.h" #include "lib/job.h" +#include "lib/warnings.h" #include +DCPOMATIC_DISABLE_WARNINGS #include #include #include #include +DCPOMATIC_ENABLE_WARNINGS #include 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; @@ -77,7 +80,7 @@ add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool left, int prop, in flags |= wxALIGN_RIGHT; } #endif - wxStaticText* m = create_label (p, t, left); + auto m = create_label (p, t, left); s->Add (m, prop, flags, 6); return m; } @@ -107,7 +110,7 @@ add_label_to_sizer (wxGridBagSizer* s, wxWindow* p, wxString t, bool left, wxGBP flags |= wxALIGN_RIGHT; } #endif - wxStaticText* m = create_label (p, t, left); + auto m = create_label (p, t, left); s->Add (m, pos, span, flags); return m; } @@ -137,7 +140,7 @@ add_label_to_sizer (wxGridBagSizer* s, wxStaticText* t, bool, wxGBPosition pos, void error_dialog (wxWindow* parent, wxString m, optional e) { - wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_ERROR); + auto d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_ERROR); if (e) { wxString em = *e; em[0] = wxToupper (em[0]); @@ -154,7 +157,7 @@ error_dialog (wxWindow* parent, wxString m, optional e) void message_dialog (wxWindow* parent, wxString m) { - wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_INFORMATION); + auto d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_INFORMATION); d->ShowModal (); d->Destroy (); } @@ -250,7 +253,7 @@ checked_set (wxChoice* widget, int value) void checked_set (wxChoice* widget, string value) { - wxClientData* o = 0; + wxClientData* o = nullptr; if (widget->GetSelection() != -1) { o = widget->GetClientObject (widget->GetSelection ()); } @@ -282,8 +285,8 @@ checked_set (wxChoice* widget, vector > items) } widget->Clear (); - for (vector >::const_iterator i = items.begin(); i != items.end(); ++i) { - widget->Append (std_to_wx (i->first), new wxStringClientData (std_to_wx (i->second))); + for (auto i: items) { + widget->Append (std_to_wx(i.first), new wxStringClientData(std_to_wx(i.second))); } } @@ -348,15 +351,15 @@ dcpomatic_setup_i18n () { int language = wxLANGUAGE_DEFAULT; - boost::optional config_lang = Config::instance()->language (); + auto config_lang = Config::instance()->language (); if (config_lang && !config_lang->empty ()) { - wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (config_lang.get ())); + auto const li = wxLocale::FindLanguageInfo (std_to_wx (config_lang.get ())); if (li) { language = li->Language; } } - wxLocale* locale = 0; + wxLocale* locale = nullptr; if (wxLocale::IsAvailable (language)) { locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT); @@ -415,7 +418,7 @@ wx_get (wxSpinCtrlDouble* w) wxString context_translation (wxString s) { - wxString t = wxGetTranslation (s); + auto t = wxGetTranslation (s); if (t == s) { /* No translation; strip the context */ int c = t.Find (wxT ("|")); @@ -430,7 +433,7 @@ context_translation (wxString s) wxString time_to_timecode (DCPTime t, double fps) { - double w = t.seconds (); + auto w = t.seconds (); int const h = (w / 3600); w -= h * 3600; int const m = (w / 60); @@ -467,11 +470,10 @@ setup_audio_channels_choice (wxChoice* choice, int minimum) wxSplashScreen * maybe_show_splash () { - wxSplashScreen* splash = 0; + wxSplashScreen* splash = nullptr; 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 (); } @@ -510,7 +512,7 @@ calculate_mark_interval (double mark_interval) bool display_progress (wxString title, wxString task) { - JobManager* jm = JobManager::instance (); + auto jm = JobManager::instance (); wxProgressDialog progress (title, task, 100, 0, wxPD_CAN_ABORT); @@ -520,7 +522,7 @@ display_progress (wxString title, wxString task) dcpomatic_sleep_seconds (1); if (!progress.Pulse()) { /* user pressed cancel */ - BOOST_FOREACH (shared_ptr i, jm->get()) { + for (auto i: jm->get()) { i->cancel(); } ok = false; @@ -567,3 +569,37 @@ get_offsets (vector& offsets) 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()); +} + + +wxSize +small_button_size (wxWindow* parent, wxString text) +{ + wxClientDC dc (parent); + auto size = dc.GetTextExtent (text); + size.SetHeight (-1); + size.IncBy (24, 0); + return size; +} +