X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fwx_util.cc;h=94a08f37289625eaf4c660ab4ba5c81d6b5cab36;hb=f0edd6ab35c3c2b7800a26ec8206adab75e5f633;hp=367d1edbbf522d12634dbc2c967bea73732f83cd;hpb=ad49361b303d1ceff7048fa0e89ba609ca9ce376;p=dcpomatic.git diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 367d1edbb..94a08f372 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -123,7 +123,7 @@ int const ThreadedStaticText::_update_event_id = 10000; * @param initial Initial text for the wxStaticText while the computation is being run. * @param fn Function which works out what the wxStaticText content should be and returns it. */ -ThreadedStaticText::ThreadedStaticText (wxWindow* parent, wxString initial, function fn) +ThreadedStaticText::ThreadedStaticText (wxWindow* parent, wxString initial, boost::function fn) : wxStaticText (parent, wxID_ANY, initial) { Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ThreadedStaticText::thread_finished, this, _1), _update_event_id); @@ -139,7 +139,7 @@ ThreadedStaticText::~ThreadedStaticText () /** Run our thread and post the result to the GUI thread via AddPendingEvent */ void -ThreadedStaticText::run (function fn) +ThreadedStaticText::run (boost::function fn) try { wxCommandEvent ev (wxEVT_COMMAND_TEXT_UPDATED, _update_event_id); @@ -189,6 +189,15 @@ checked_set (wxSpinCtrl* widget, int value) } } +void +checked_set (wxSpinCtrlDouble* widget, double value) +{ + /* XXX: completely arbitrary epsilon */ + if (fabs (widget->GetValue() - value) < 1e-16) { + widget->SetValue (value); + } +} + void checked_set (wxChoice* widget, int value) { @@ -296,3 +305,35 @@ wx_get (wxChoice* w) { return w->GetSelection (); } + +double +wx_get (wxSpinCtrlDouble* w) +{ + return w->GetValue (); +} + +void +run_gui_loop () +{ + while (wxTheApp->Pending ()) { + wxTheApp->Dispatch (); + } +} + +/** @param s String of the form Context|String + * @return translation, or String if no translation is available. + */ +wxString +context_translation (wxString s) +{ + wxString t = wxGetTranslation (s); + if (t == s) { + /* No translation; strip the context */ + int c = t.Find (wxT ("|")); + if (c != wxNOT_FOUND) { + t = t.Mid (c + 1); + } + } + + return t; +}