+
+/** @class ThreadedStaticText
+ *
+ * @brief A wxStaticText whose content is computed in a separate thread, to avoid holding
+ * up the GUI while work is done.
+ */
+class ThreadedStaticText : public wxStaticText
+{
+public:
+ ThreadedStaticText (wxWindow* parent, wxString initial, boost::function<std::string ()> fn);
+ ~ThreadedStaticText ();
+
+private:
+ void run (boost::function<std::string ()> fn);
+ void thread_finished (wxCommandEvent& ev);
+
+ /** Thread to do our work in */
+ boost::thread* _thread;
+
+ static const int _update_event_id;
+};
+
+extern std::string string_client_data (wxClientData* o);
+
+extern void checked_set (wxFilePickerCtrl* widget, std::string value);
+extern void checked_set (wxSpinCtrl* widget, int value);
+extern void checked_set (wxChoice* widget, int value);
+extern void checked_set (wxChoice* widget, std::string value);
+extern void checked_set (wxTextCtrl* widget, std::string value);
+extern void checked_set (wxCheckBox* widget, bool value);
+extern void checked_set (wxRadioButton* widget, bool value);
+extern void checked_set (wxStaticText* widget, std::string value);