+
+string
+string_client_data (wxClientData* o)
+{
+ return wx_to_std (dynamic_cast<wxStringClientData*>(o)->GetData());
+}
+
+void
+checked_set (wxFilePickerCtrl* widget, string value)
+{
+ if (widget->GetPath() != std_to_wx (value)) {
+ if (value.empty()) {
+ /* Hack to make wxWidgets clear the control when we are passed
+ an empty value.
+ */
+ value = " ";
+ }
+ widget->SetPath (std_to_wx (value));
+ }
+}
+
+void
+checked_set (wxSpinCtrl* widget, int value)
+{
+ if (widget->GetValue() != value) {
+ widget->SetValue (value);
+ }
+}
+
+void
+checked_set (wxChoice* widget, int value)
+{
+ if (widget->GetSelection() != value) {
+ widget->SetSelection (value);
+ }
+}
+
+void
+checked_set (wxChoice* widget, string value)
+{
+ wxClientData* o = 0;
+ if (widget->GetSelection() != -1) {
+ o = widget->GetClientObject (widget->GetSelection ());
+ }
+
+ if (!o || string_client_data(o) != value) {
+ for (unsigned int i = 0; i < widget->GetCount(); ++i) {
+ if (string_client_data (widget->GetClientObject (i)) == value) {
+ widget->SetSelection (i);
+ }
+ }
+ }
+}
+
+void
+checked_set (wxTextCtrl* widget, string value)
+{
+ if (widget->GetValue() != std_to_wx (value)) {
+ widget->ChangeValue (std_to_wx (value));
+ }
+}
+
+void
+checked_set (wxStaticText* widget, string value)
+{
+ if (widget->GetLabel() != std_to_wx (value)) {
+ widget->SetLabel (std_to_wx (value));
+ }
+}
+
+void
+checked_set (wxCheckBox* widget, bool value)
+{
+ if (widget->GetValue() != value) {
+ widget->SetValue (value);
+ }
+}
+
+void
+checked_set (wxRadioButton* widget, bool value)
+{
+ if (widget->GetValue() != value) {
+ widget->SetValue (value);
+ }
+}