Merge master.
[dcpomatic.git] / src / wx / wx_util.h
index 3fcc383f0c447c89fe11854943b39aceb69a1818..bff11647edb653c92eade0b72ac6d3a939f04538 100644 (file)
 */
 
 #include <wx/wx.h>
+#include <wx/gbsizer.h>
+#include <boost/function.hpp>
+#include <boost/thread.hpp>
+
+class wxFilePickerCtrl;
+class wxSpinCtrl;
+class wxGridBagSizer;
 
 /** @file src/wx/wx_util.h
- *  @brief Some utility functions.
+ *  @brief Some utility functions and classes.
  */
 
-extern void error_dialog (std::string);
-extern wxStaticText* add_label_to_sizer (wxSizer *, wxWindow *, std::string);
+extern void error_dialog (wxWindow *, wxString);
+extern bool confirm_dialog (wxWindow *, wxString);
+extern wxStaticText* add_label_to_sizer (wxSizer *, wxWindow *, wxString, int prop = 0);
+extern wxStaticText* add_label_to_grid_bag_sizer (wxGridBagSizer *, wxWindow *, wxString, wxGBPosition, wxGBSpan span = wxDefaultSpan);
 extern std::string wx_to_std (wxString);
 extern wxString std_to_wx (std::string);
+extern void dcpomatic_setup_i18n ();
+
+/** @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);