From ec376c8fd9ff813392030426acd2317c6fa6527e Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Wed, 31 May 2006 23:57:54 +0000
Subject: [PATCH] added wx{Colour|File|Dir|Font}PickerCtrl (patch 1472329 by
 Francesco)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 Makefile.in                      | 355 +++++++++++++++++++
 build/bakefiles/files.bkl        |  33 ++
 build/msw/makefile.bcc           | 224 ++++++++++++
 build/msw/makefile.gcc           | 224 ++++++++++++
 build/msw/makefile.vc            | 224 ++++++++++++
 build/msw/makefile.wat           | 224 ++++++++++++
 build/msw/wx_core.dsp            | 245 +++++++++++++
 build/msw/wx_xrc.dsp             |  32 ++
 configure.in                     |  67 ++++
 docs/changes.txt                 |   1 +
 docs/latex/wx/category.tex       |  16 +-
 docs/latex/wx/classes.tex        |   5 +
 docs/latex/wx/clrpicker.tex      | 187 ++++++++++
 docs/latex/wx/dirpicker.tex      | 127 +++++++
 docs/latex/wx/filepicker.tex     | 195 +++++++++++
 docs/latex/wx/fontpicker.tex     | 200 +++++++++++
 docs/latex/wx/pickerbase.tex     |  87 +++++
 include/wx/chkconf.h             |  32 ++
 include/wx/clrpicker.h           | 204 +++++++++++
 include/wx/defs.h                |   7 +
 include/wx/filepicker.h          | 378 ++++++++++++++++++++
 include/wx/fontpicker.h          | 227 ++++++++++++
 include/wx/generic/clrpickerg.h  |  85 +++++
 include/wx/generic/filepickerg.h | 221 ++++++++++++
 include/wx/generic/fontpickerg.h |  81 +++++
 include/wx/gtk/clrpicker.h       |  70 ++++
 include/wx/gtk/filepicker.h      | 134 +++++++
 include/wx/gtk/fontpicker.h      |  69 ++++
 include/wx/mac/setup0.h          |   4 +
 include/wx/motif/setup0.h        |   4 +
 include/wx/msw/setup0.h          |   4 +
 include/wx/msw/wince/setup.h     |   4 +
 include/wx/os2/setup0.h          |   4 +
 include/wx/palmos/setup0.h       |   4 +
 include/wx/pickerbase.h          | 116 +++++++
 include/wx/setup_inc.h           |   4 +
 include/wx/xrc/xh_all.h          |   4 +
 include/wx/xrc/xh_clrpicker.h    |  29 ++
 include/wx/xrc/xh_dirpicker.h    |  29 ++
 include/wx/xrc/xh_filepicker.h   |  29 ++
 include/wx/xrc/xh_fontpicker.h   |  29 ++
 samples/widgets/Makefile.in      |   8 +
 samples/widgets/icons/picker.xpm | 183 ++++++++++
 samples/widgets/makefile.bcc     |   4 +
 samples/widgets/makefile.gcc     |   4 +
 samples/widgets/makefile.vc      |   4 +
 samples/widgets/makefile.wat     |   4 +
 samples/widgets/picker.cpp       | 577 +++++++++++++++++++++++++++++++
 samples/widgets/widgets.bkl      |   1 +
 samples/widgets/widgets.dsp      |   4 +
 samples/xrc/rc/controls.xrc      |  85 +++++
 setup.h.in                       |   7 +
 src/common/clrpickercmn.cpp      | 139 ++++++++
 src/common/datacmn.cpp           |  11 +
 src/common/filepickercmn.cpp     | 151 ++++++++
 src/common/fontpickercmn.cpp     | 172 +++++++++
 src/common/pickerbase.cpp        | 194 +++++++++++
 src/generic/clrpickerg.cpp       | 122 +++++++
 src/generic/filepickerg.cpp      |  85 +++++
 src/generic/fontpickerg.cpp      | 123 +++++++
 src/gtk/clrpicker.cpp            | 107 ++++++
 src/gtk/filepicker.cpp           | 249 +++++++++++++
 src/gtk/fontpicker.cpp           | 129 +++++++
 src/gtk/window.cpp               |   4 +
 src/wxWindows.dsp                |  84 +++++
 src/xrc/xh_clrpicker.cpp         |  55 +++
 src/xrc/xh_dirpicker.cpp         |  57 +++
 src/xrc/xh_filepicker.cpp        |  59 ++++
 src/xrc/xh_fontpicker.cpp        |  60 ++++
 src/xrc/xmlrsall.cpp             |  12 +
 70 files changed, 6911 insertions(+), 1 deletion(-)
 create mode 100644 docs/latex/wx/clrpicker.tex
 create mode 100644 docs/latex/wx/dirpicker.tex
 create mode 100644 docs/latex/wx/filepicker.tex
 create mode 100644 docs/latex/wx/fontpicker.tex
 create mode 100644 docs/latex/wx/pickerbase.tex
 create mode 100644 include/wx/clrpicker.h
 create mode 100644 include/wx/filepicker.h
 create mode 100644 include/wx/fontpicker.h
 create mode 100644 include/wx/generic/clrpickerg.h
 create mode 100644 include/wx/generic/filepickerg.h
 create mode 100644 include/wx/generic/fontpickerg.h
 create mode 100644 include/wx/gtk/clrpicker.h
 create mode 100644 include/wx/gtk/filepicker.h
 create mode 100644 include/wx/gtk/fontpicker.h
 create mode 100644 include/wx/pickerbase.h
 create mode 100644 include/wx/xrc/xh_clrpicker.h
 create mode 100644 include/wx/xrc/xh_dirpicker.h
 create mode 100644 include/wx/xrc/xh_filepicker.h
 create mode 100644 include/wx/xrc/xh_fontpicker.h
 create mode 100644 samples/widgets/icons/picker.xpm
 create mode 100644 samples/widgets/picker.cpp
 create mode 100644 src/common/clrpickercmn.cpp
 create mode 100644 src/common/filepickercmn.cpp
 create mode 100644 src/common/fontpickercmn.cpp
 create mode 100644 src/common/pickerbase.cpp
 create mode 100644 src/generic/clrpickerg.cpp
 create mode 100644 src/generic/filepickerg.cpp
 create mode 100644 src/generic/fontpickerg.cpp
 create mode 100644 src/gtk/clrpicker.cpp
 create mode 100644 src/gtk/filepicker.cpp
 create mode 100644 src/gtk/fontpicker.cpp
 create mode 100644 src/xrc/xh_clrpicker.cpp
 create mode 100644 src/xrc/xh_dirpicker.cpp
 create mode 100644 src/xrc/xh_filepicker.cpp
 create mode 100644 src/xrc/xh_fontpicker.cpp

diff --git a/Makefile.in b/Makefile.in
index 41d9f3c0a8..5a63d65ef9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1260,11 +1260,15 @@ XRCDLL_OBJECTS =  \
 	xrcdll_xh_chckl.o \
 	xrcdll_xh_choic.o \
 	xrcdll_xh_choicbk.o \
+	xrcdll_xh_clrpicker.o \
 	xrcdll_xh_combo.o \
 	xrcdll_xh_datectrl.o \
+	xrcdll_xh_dirpicker.o \
 	xrcdll_xh_dlg.o \
 	xrcdll_xh_frame.o \
 	xrcdll_xh_mdi.o \
+	xrcdll_xh_filepicker.o \
+	xrcdll_xh_fontpicker.o \
 	xrcdll_xh_gauge.o \
 	xrcdll_xh_gdctl.o \
 	xrcdll_xh_grid.o \
@@ -1312,11 +1316,15 @@ XRCLIB_OBJECTS =  \
 	xrclib_xh_chckl.o \
 	xrclib_xh_choic.o \
 	xrclib_xh_choicbk.o \
+	xrclib_xh_clrpicker.o \
 	xrclib_xh_combo.o \
 	xrclib_xh_datectrl.o \
+	xrclib_xh_dirpicker.o \
 	xrclib_xh_dlg.o \
 	xrclib_xh_frame.o \
 	xrclib_xh_mdi.o \
+	xrclib_xh_filepicker.o \
+	xrclib_xh_fontpicker.o \
 	xrclib_xh_gauge.o \
 	xrclib_xh_gdctl.o \
 	xrclib_xh_grid.o \
@@ -1863,8 +1871,11 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION__GUI_HDR =  \
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@GUI_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION__GUI_HDR)
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_GUI_HDR =  \
 	wx/generic/colrdlgg.h \
+	wx/generic/clrpickerg.h \
 	wx/generic/dirdlgg.h \
 	wx/generic/fdrepdlg.h \
+	wx/generic/fontpickerg.h \
+	wx/generic/filepickerg.h \
 	wx/generic/listctrl.h \
 	wx/generic/statusbr.h \
 	wx/generic/tabg.h \
@@ -1877,9 +1888,12 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_GUI_HDR =  \
 	wx/gtk/choice.h \
 	wx/gtk/combobox.h \
 	wx/gtk/control.h \
+	wx/gtk/clrpicker.h \
 	wx/gtk/dialog.h \
 	wx/gtk/dirdlg.h \
 	wx/gtk/filedlg.h \
+	wx/gtk/fontpicker.h \
+	wx/gtk/filepicker.h \
 	wx/gtk/fontdlg.h \
 	wx/gtk/frame.h \
 	wx/gtk/gauge.h \
@@ -2146,6 +2160,9 @@ COND_TOOLKIT_MOTIF_GUI_HDR =  \
 	wx/motif/window.h
 @COND_TOOLKIT_MOTIF@GUI_HDR = $(COND_TOOLKIT_MOTIF_GUI_HDR)
 COND_TOOLKIT_MSW_GUI_HDR =  \
+	wx/generic/clrpicker.h \
+	wx/generic/fontpicker.h \
+	wx/generic/filepicker.h \
 	wx/msw/accel.h \
 	wx/msw/app.h \
 	wx/msw/bitmap.h \
@@ -2337,6 +2354,9 @@ COND_TOOLKIT_PM_GUI_HDR =  \
 	wx/os2/window.h
 @COND_TOOLKIT_PM@GUI_HDR = $(COND_TOOLKIT_PM_GUI_HDR)
 COND_TOOLKIT_WINCE_GUI_HDR =  \
+	wx/generic/clrpicker.h \
+	wx/generic/fontpicker.h \
+	wx/generic/filepicker.h \
 	wx/msw/accel.h \
 	wx/msw/app.h \
 	wx/msw/bitmap.h \
@@ -2707,6 +2727,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS =  \
 	wx/caret.h \
 	wx/choicebk.h \
 	wx/clipbrd.h \
+	wx/clrpicker.h \
 	wx/cmdproc.h \
 	wx/colordlg.h \
 	wx/colour.h \
@@ -2724,6 +2745,8 @@ COND_USE_GUI_1_ALL_GUI_HEADERS =  \
 	wx/effects.h \
 	wx/evtloop.h \
 	wx/fdrepdlg.h \
+	wx/filepicker.h \
+	wx/fontpicker.h \
 	wx/fmappriv.h \
 	wx/font.h \
 	wx/fontdlg.h \
@@ -2825,9 +2848,13 @@ COND_USE_GUI_1_ALL_GUI_HEADERS =  \
 	wx/xrc/xh_chckl.h \
 	wx/xrc/xh_choic.h \
 	wx/xrc/xh_choicbk.h \
+	wx/xrc/xh_clrpicker.h \
 	wx/xrc/xh_combo.h \
 	wx/xrc/xh_datectrl.h \
+	wx/xrc/xh_dirpicker.h \
 	wx/xrc/xh_dlg.h \
+	wx/xrc/xh_filepicker.h \
+	wx/xrc/xh_fontpicker.h \
 	wx/xrc/xh_frame.h \
 	wx/xrc/xh_mdi.h \
 	wx/xrc/xh_gauge.h \
@@ -3108,11 +3135,15 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS =  \
 	monodll_xh_chckl.o \
 	monodll_xh_choic.o \
 	monodll_xh_choicbk.o \
+	monodll_xh_clrpicker.o \
 	monodll_xh_combo.o \
 	monodll_xh_datectrl.o \
+	monodll_xh_dirpicker.o \
 	monodll_xh_dlg.o \
 	monodll_xh_frame.o \
 	monodll_xh_mdi.o \
+	monodll_xh_filepicker.o \
+	monodll_xh_fontpicker.o \
 	monodll_xh_gauge.o \
 	monodll_xh_gdctl.o \
 	monodll_xh_grid.o \
@@ -3158,6 +3189,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS =  \
 	monodll_bookctrl.o \
 	monodll_choiccmn.o \
 	monodll_clipcmn.o \
+	monodll_clrpickercmn.o \
 	monodll_colourcmn.o \
 	monodll_combocmn.o \
 	monodll_cmdproc.o \
@@ -3178,6 +3210,8 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS =  \
 	monodll_effects.o \
 	monodll_evtloopcmn.o \
 	monodll_fddlgcmn.o \
+	monodll_filepickercmn.o \
+	monodll_fontpickercmn.o \
 	monodll_fldlgcmn.o \
 	monodll_fontcmn.o \
 	monodll_fontenumcmn.o \
@@ -3208,6 +3242,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS =  \
 	monodll_menucmn.o \
 	monodll_nbkbase.o \
 	monodll_paper.o \
+	monodll_pickerbase.o \
 	monodll_popupcmn.o \
 	monodll_prntbase.o \
 	monodll_quantize.o \
@@ -3315,6 +3350,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 	monodll_bookctrl.o \
 	monodll_choiccmn.o \
 	monodll_clipcmn.o \
+	monodll_clrpickercmn.o \
 	monodll_colourcmn.o \
 	monodll_combocmn.o \
 	monodll_cmdproc.o \
@@ -3335,6 +3371,8 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 	monodll_effects.o \
 	monodll_evtloopcmn.o \
 	monodll_fddlgcmn.o \
+	monodll_filepickercmn.o \
+	monodll_fontpickercmn.o \
 	monodll_fldlgcmn.o \
 	monodll_fontcmn.o \
 	monodll_fontenumcmn.o \
@@ -3365,6 +3403,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 	monodll_menucmn.o \
 	monodll_nbkbase.o \
 	monodll_paper.o \
+	monodll_pickerbase.o \
 	monodll_popupcmn.o \
 	monodll_prntbase.o \
 	monodll_quantize.o \
@@ -3809,8 +3848,11 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS =  \
 	monodll_accel.o \
 	monodll_colrdlgg.o \
+	monodll_clrpickerg.o \
 	monodll_dirdlgg.o \
 	monodll_fdrepdlg.o \
+	monodll_fontpickerg.o \
+	monodll_filepickerg.o \
 	monodll_filedlgg.o \
 	monodll_imaglist.o \
 	monodll_listctrl.o \
@@ -3828,7 +3870,10 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS =  \
 	monodll_colordlg.o \
 	monodll_combobox.o \
 	monodll_control.o \
+	monodll_clrpicker.o \
 	monodll_dialog.o \
+	monodll_fontpicker.o \
+	monodll_filepicker.o \
 	monodll_dirdlg.o \
 	monodll_filedlg.o \
 	monodll_fontdlg.o \
@@ -4009,6 +4054,9 @@ COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS =  \
 	monodll_tabg.o
 @COND_TOOLKIT_MOTIF@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS)
 COND_TOOLKIT_MSW___GUI_SRC_OBJECTS =  \
+	monodll_clrpickerg.o \
+	monodll_fontpickerg.o \
+	monodll_filepickerg.o \
 	monodll_statusbr.o \
 	monodll_prntdlgg.o \
 	monodll_accel.o \
@@ -4143,6 +4191,9 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS =  \
 	monodll_window.o
 @COND_TOOLKIT_PM@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_PM___GUI_SRC_OBJECTS)
 COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS =  \
+	monodll_clrpickerg.o \
+	monodll_fontpickerg.o \
+	monodll_filepickerg.o \
 	monodll_statusbr.o \
 	monodll_prntdlgg.o \
 	monodll_accel.o \
@@ -4749,11 +4800,15 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 =  \
 	monolib_xh_chckl.o \
 	monolib_xh_choic.o \
 	monolib_xh_choicbk.o \
+	monolib_xh_clrpicker.o \
 	monolib_xh_combo.o \
 	monolib_xh_datectrl.o \
+	monolib_xh_dirpicker.o \
 	monolib_xh_dlg.o \
 	monolib_xh_frame.o \
 	monolib_xh_mdi.o \
+	monolib_xh_filepicker.o \
+	monolib_xh_fontpicker.o \
 	monolib_xh_gauge.o \
 	monolib_xh_gdctl.o \
 	monolib_xh_grid.o \
@@ -4799,6 +4854,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 =  \
 	monolib_bookctrl.o \
 	monolib_choiccmn.o \
 	monolib_clipcmn.o \
+	monolib_clrpickercmn.o \
 	monolib_colourcmn.o \
 	monolib_combocmn.o \
 	monolib_cmdproc.o \
@@ -4819,6 +4875,8 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 =  \
 	monolib_effects.o \
 	monolib_evtloopcmn.o \
 	monolib_fddlgcmn.o \
+	monolib_filepickercmn.o \
+	monolib_fontpickercmn.o \
 	monolib_fldlgcmn.o \
 	monolib_fontcmn.o \
 	monolib_fontenumcmn.o \
@@ -4849,6 +4907,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 =  \
 	monolib_menucmn.o \
 	monolib_nbkbase.o \
 	monolib_paper.o \
+	monolib_pickerbase.o \
 	monolib_popupcmn.o \
 	monolib_prntbase.o \
 	monolib_quantize.o \
@@ -4956,6 +5015,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 	monolib_bookctrl.o \
 	monolib_choiccmn.o \
 	monolib_clipcmn.o \
+	monolib_clrpickercmn.o \
 	monolib_colourcmn.o \
 	monolib_combocmn.o \
 	monolib_cmdproc.o \
@@ -4976,6 +5036,8 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 	monolib_effects.o \
 	monolib_evtloopcmn.o \
 	monolib_fddlgcmn.o \
+	monolib_filepickercmn.o \
+	monolib_fontpickercmn.o \
 	monolib_fldlgcmn.o \
 	monolib_fontcmn.o \
 	monolib_fontenumcmn.o \
@@ -5006,6 +5068,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 	monolib_menucmn.o \
 	monolib_nbkbase.o \
 	monolib_paper.o \
+	monolib_pickerbase.o \
 	monolib_popupcmn.o \
 	monolib_prntbase.o \
 	monolib_quantize.o \
@@ -5451,8 +5514,11 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_1 =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_1 =  \
 	monolib_accel.o \
 	monolib_colrdlgg.o \
+	monolib_clrpickerg.o \
 	monolib_dirdlgg.o \
 	monolib_fdrepdlg.o \
+	monolib_fontpickerg.o \
+	monolib_filepickerg.o \
 	monolib_filedlgg.o \
 	monolib_imaglist.o \
 	monolib_listctrl.o \
@@ -5470,7 +5536,10 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_1 =  \
 	monolib_colordlg.o \
 	monolib_combobox.o \
 	monolib_control.o \
+	monolib_clrpicker.o \
 	monolib_dialog.o \
+	monolib_fontpicker.o \
+	monolib_filepicker.o \
 	monolib_dirdlg.o \
 	monolib_filedlg.o \
 	monolib_fontdlg.o \
@@ -5651,6 +5720,9 @@ COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_1 =  \
 	monolib_tabg.o
 @COND_TOOLKIT_MOTIF@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_1)
 COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_1 =  \
+	monolib_clrpickerg.o \
+	monolib_fontpickerg.o \
+	monolib_filepickerg.o \
 	monolib_statusbr.o \
 	monolib_prntdlgg.o \
 	monolib_accel.o \
@@ -5785,6 +5857,9 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_1 =  \
 	monolib_window.o
 @COND_TOOLKIT_PM@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_PM___GUI_SRC_OBJECTS_1)
 COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_1 =  \
+	monolib_clrpickerg.o \
+	monolib_fontpickerg.o \
+	monolib_filepickerg.o \
 	monolib_statusbr.o \
 	monolib_prntdlgg.o \
 	monolib_accel.o \
@@ -6674,6 +6749,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
 	coredll_bookctrl.o \
 	coredll_choiccmn.o \
 	coredll_clipcmn.o \
+	coredll_clrpickercmn.o \
 	coredll_colourcmn.o \
 	coredll_combocmn.o \
 	coredll_cmdproc.o \
@@ -6694,6 +6770,8 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
 	coredll_effects.o \
 	coredll_evtloopcmn.o \
 	coredll_fddlgcmn.o \
+	coredll_filepickercmn.o \
+	coredll_fontpickercmn.o \
 	coredll_fldlgcmn.o \
 	coredll_fontcmn.o \
 	coredll_fontenumcmn.o \
@@ -6724,6 +6802,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
 	coredll_menucmn.o \
 	coredll_nbkbase.o \
 	coredll_paper.o \
+	coredll_pickerbase.o \
 	coredll_popupcmn.o \
 	coredll_prntbase.o \
 	coredll_quantize.o \
@@ -6831,6 +6910,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 	coredll_bookctrl.o \
 	coredll_choiccmn.o \
 	coredll_clipcmn.o \
+	coredll_clrpickercmn.o \
 	coredll_colourcmn.o \
 	coredll_combocmn.o \
 	coredll_cmdproc.o \
@@ -6851,6 +6931,8 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 	coredll_effects.o \
 	coredll_evtloopcmn.o \
 	coredll_fddlgcmn.o \
+	coredll_filepickercmn.o \
+	coredll_fontpickercmn.o \
 	coredll_fldlgcmn.o \
 	coredll_fontcmn.o \
 	coredll_fontenumcmn.o \
@@ -6881,6 +6963,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 	coredll_menucmn.o \
 	coredll_nbkbase.o \
 	coredll_paper.o \
+	coredll_pickerbase.o \
 	coredll_popupcmn.o \
 	coredll_prntbase.o \
 	coredll_quantize.o \
@@ -7326,8 +7409,11 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_2 =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_2 =  \
 	coredll_accel.o \
 	coredll_colrdlgg.o \
+	coredll_clrpickerg.o \
 	coredll_dirdlgg.o \
 	coredll_fdrepdlg.o \
+	coredll_fontpickerg.o \
+	coredll_filepickerg.o \
 	coredll_filedlgg.o \
 	coredll_imaglist.o \
 	coredll_listctrl.o \
@@ -7345,7 +7431,10 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_2 =  \
 	coredll_colordlg.o \
 	coredll_combobox.o \
 	coredll_control.o \
+	coredll_clrpicker.o \
 	coredll_dialog.o \
+	coredll_fontpicker.o \
+	coredll_filepicker.o \
 	coredll_dirdlg.o \
 	coredll_filedlg.o \
 	coredll_fontdlg.o \
@@ -7526,6 +7615,9 @@ COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_2 =  \
 	coredll_tabg.o
 @COND_TOOLKIT_MOTIF@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_2)
 COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_2 =  \
+	coredll_clrpickerg.o \
+	coredll_fontpickerg.o \
+	coredll_filepickerg.o \
 	coredll_statusbr.o \
 	coredll_prntdlgg.o \
 	coredll_accel.o \
@@ -7660,6 +7752,9 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_2 =  \
 	coredll_window.o
 @COND_TOOLKIT_PM@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_PM___GUI_SRC_OBJECTS_2)
 COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_2 =  \
+	coredll_clrpickerg.o \
+	coredll_fontpickerg.o \
+	coredll_filepickerg.o \
 	coredll_statusbr.o \
 	coredll_prntdlgg.o \
 	coredll_accel.o \
@@ -8017,6 +8112,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
 	corelib_bookctrl.o \
 	corelib_choiccmn.o \
 	corelib_clipcmn.o \
+	corelib_clrpickercmn.o \
 	corelib_colourcmn.o \
 	corelib_combocmn.o \
 	corelib_cmdproc.o \
@@ -8037,6 +8133,8 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
 	corelib_effects.o \
 	corelib_evtloopcmn.o \
 	corelib_fddlgcmn.o \
+	corelib_filepickercmn.o \
+	corelib_fontpickercmn.o \
 	corelib_fldlgcmn.o \
 	corelib_fontcmn.o \
 	corelib_fontenumcmn.o \
@@ -8067,6 +8165,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
 	corelib_menucmn.o \
 	corelib_nbkbase.o \
 	corelib_paper.o \
+	corelib_pickerbase.o \
 	corelib_popupcmn.o \
 	corelib_prntbase.o \
 	corelib_quantize.o \
@@ -8174,6 +8273,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 	corelib_bookctrl.o \
 	corelib_choiccmn.o \
 	corelib_clipcmn.o \
+	corelib_clrpickercmn.o \
 	corelib_colourcmn.o \
 	corelib_combocmn.o \
 	corelib_cmdproc.o \
@@ -8194,6 +8294,8 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 	corelib_effects.o \
 	corelib_evtloopcmn.o \
 	corelib_fddlgcmn.o \
+	corelib_filepickercmn.o \
+	corelib_fontpickercmn.o \
 	corelib_fldlgcmn.o \
 	corelib_fontcmn.o \
 	corelib_fontenumcmn.o \
@@ -8224,6 +8326,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 	corelib_menucmn.o \
 	corelib_nbkbase.o \
 	corelib_paper.o \
+	corelib_pickerbase.o \
 	corelib_popupcmn.o \
 	corelib_prntbase.o \
 	corelib_quantize.o \
@@ -8669,8 +8772,11 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_3 =  \
 COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_3 =  \
 	corelib_accel.o \
 	corelib_colrdlgg.o \
+	corelib_clrpickerg.o \
 	corelib_dirdlgg.o \
 	corelib_fdrepdlg.o \
+	corelib_fontpickerg.o \
+	corelib_filepickerg.o \
 	corelib_filedlgg.o \
 	corelib_imaglist.o \
 	corelib_listctrl.o \
@@ -8688,7 +8794,10 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___GUI_SRC_OBJECTS_3 =  \
 	corelib_colordlg.o \
 	corelib_combobox.o \
 	corelib_control.o \
+	corelib_clrpicker.o \
 	corelib_dialog.o \
+	corelib_fontpicker.o \
+	corelib_filepicker.o \
 	corelib_dirdlg.o \
 	corelib_filedlg.o \
 	corelib_fontdlg.o \
@@ -8869,6 +8978,9 @@ COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_3 =  \
 	corelib_tabg.o
 @COND_TOOLKIT_MOTIF@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_MOTIF___GUI_SRC_OBJECTS_3)
 COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_3 =  \
+	corelib_clrpickerg.o \
+	corelib_fontpickerg.o \
+	corelib_filepickerg.o \
 	corelib_statusbr.o \
 	corelib_prntdlgg.o \
 	corelib_accel.o \
@@ -9003,6 +9115,9 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_3 =  \
 	corelib_window.o
 @COND_TOOLKIT_PM@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_PM___GUI_SRC_OBJECTS_3)
 COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_3 =  \
+	corelib_clrpickerg.o \
+	corelib_fontpickerg.o \
+	corelib_filepickerg.o \
 	corelib_statusbr.o \
 	corelib_prntdlgg.o \
 	corelib_accel.o \
@@ -11511,6 +11626,15 @@ monodll_net.o: $(srcdir)/src/msw/wince/net.cpp $(MONODLL_ODEP)
 monodll_artgtk.o: $(srcdir)/src/gtk/artgtk.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/artgtk.cpp
 
+monodll_clrpicker.o: $(srcdir)/src/gtk/clrpicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/clrpicker.cpp
+
+monodll_fontpicker.o: $(srcdir)/src/gtk/fontpicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/fontpicker.cpp
+
+monodll_filepicker.o: $(srcdir)/src/gtk/filepicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/filepicker.cpp
+
 monodll_gprint.o: $(srcdir)/src/gtk/gnome/gprint.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/gnome/gprint.cpp
 
@@ -11787,12 +11911,18 @@ monodll_xh_choic.o: $(srcdir)/src/xrc/xh_choic.cpp $(MONODLL_ODEP)
 monodll_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_choicbk.cpp
 
+monodll_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+
 monodll_xh_combo.o: $(srcdir)/src/xrc/xh_combo.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_combo.cpp
 
 monodll_xh_datectrl.o: $(srcdir)/src/xrc/xh_datectrl.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_datectrl.cpp
 
+monodll_xh_dirpicker.o: $(srcdir)/src/xrc/xh_dirpicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_dirpicker.cpp
+
 monodll_xh_dlg.o: $(srcdir)/src/xrc/xh_dlg.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_dlg.cpp
 
@@ -11802,6 +11932,12 @@ monodll_xh_frame.o: $(srcdir)/src/xrc/xh_frame.cpp $(MONODLL_ODEP)
 monodll_xh_mdi.o: $(srcdir)/src/xrc/xh_mdi.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_mdi.cpp
 
+monodll_xh_filepicker.o: $(srcdir)/src/xrc/xh_filepicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_filepicker.cpp
+
+monodll_xh_fontpicker.o: $(srcdir)/src/xrc/xh_fontpicker.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_fontpicker.cpp
+
 monodll_xh_gauge.o: $(srcdir)/src/xrc/xh_gauge.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_gauge.cpp
 
@@ -13392,6 +13528,15 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@monodll_colrdlgg.o: $(srcdir)/src/generic/colrdlgg.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/colrdlgg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monodll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monodll_dirdlgg.o: $(srcdir)/src/generic/dirdlgg.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/dirdlgg.cpp
 
@@ -13437,6 +13582,24 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_fdrepdlg.o: $(srcdir)/src/msw/fdrepdlg.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/fdrepdlg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monodll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monodll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monodll_filedlgg.o: $(srcdir)/src/generic/filedlgg.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/filedlgg.cpp
 
@@ -14571,6 +14734,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_clipcmn.o: $(srcdir)/src/common/clipcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/clipcmn.cpp
 
+@COND_USE_GUI_1@monodll_clrpickercmn.o: $(srcdir)/src/common/clrpickercmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/clrpickercmn.cpp
+
 @COND_USE_GUI_1@monodll_colourcmn.o: $(srcdir)/src/common/colourcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/colourcmn.cpp
 
@@ -14631,6 +14797,12 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
+@COND_USE_GUI_1@monodll_filepickercmn.o: $(srcdir)/src/common/filepickercmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/filepickercmn.cpp
+
+@COND_USE_GUI_1@monodll_fontpickercmn.o: $(srcdir)/src/common/fontpickercmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fontpickercmn.cpp
+
 @COND_USE_GUI_1@monodll_fldlgcmn.o: $(srcdir)/src/common/fldlgcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fldlgcmn.cpp
 
@@ -14721,6 +14893,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_paper.o: $(srcdir)/src/common/paper.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/paper.cpp
 
+@COND_USE_GUI_1@monodll_pickerbase.o: $(srcdir)/src/common/pickerbase.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/pickerbase.cpp
+
 @COND_USE_GUI_1@monodll_popupcmn.o: $(srcdir)/src/common/popupcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/popupcmn.cpp
 
@@ -15336,6 +15511,15 @@ monolib_net.o: $(srcdir)/src/msw/wince/net.cpp $(MONOLIB_ODEP)
 monolib_artgtk.o: $(srcdir)/src/gtk/artgtk.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/artgtk.cpp
 
+monolib_clrpicker.o: $(srcdir)/src/gtk/clrpicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/clrpicker.cpp
+
+monolib_fontpicker.o: $(srcdir)/src/gtk/fontpicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/fontpicker.cpp
+
+monolib_filepicker.o: $(srcdir)/src/gtk/filepicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/filepicker.cpp
+
 monolib_gprint.o: $(srcdir)/src/gtk/gnome/gprint.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/gnome/gprint.cpp
 
@@ -15612,12 +15796,18 @@ monolib_xh_choic.o: $(srcdir)/src/xrc/xh_choic.cpp $(MONOLIB_ODEP)
 monolib_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_choicbk.cpp
 
+monolib_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+
 monolib_xh_combo.o: $(srcdir)/src/xrc/xh_combo.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_combo.cpp
 
 monolib_xh_datectrl.o: $(srcdir)/src/xrc/xh_datectrl.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_datectrl.cpp
 
+monolib_xh_dirpicker.o: $(srcdir)/src/xrc/xh_dirpicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_dirpicker.cpp
+
 monolib_xh_dlg.o: $(srcdir)/src/xrc/xh_dlg.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_dlg.cpp
 
@@ -15627,6 +15817,12 @@ monolib_xh_frame.o: $(srcdir)/src/xrc/xh_frame.cpp $(MONOLIB_ODEP)
 monolib_xh_mdi.o: $(srcdir)/src/xrc/xh_mdi.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_mdi.cpp
 
+monolib_xh_filepicker.o: $(srcdir)/src/xrc/xh_filepicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_filepicker.cpp
+
+monolib_xh_fontpicker.o: $(srcdir)/src/xrc/xh_fontpicker.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_fontpicker.cpp
+
 monolib_xh_gauge.o: $(srcdir)/src/xrc/xh_gauge.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_gauge.cpp
 
@@ -17217,6 +17413,15 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@monolib_colrdlgg.o: $(srcdir)/src/generic/colrdlgg.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/colrdlgg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monolib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monolib_dirdlgg.o: $(srcdir)/src/generic/dirdlgg.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/dirdlgg.cpp
 
@@ -17262,6 +17467,24 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_fdrepdlg.o: $(srcdir)/src/msw/fdrepdlg.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/fdrepdlg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monolib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monolib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@monolib_filedlgg.o: $(srcdir)/src/generic/filedlgg.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/filedlgg.cpp
 
@@ -18396,6 +18619,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_clipcmn.o: $(srcdir)/src/common/clipcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/clipcmn.cpp
 
+@COND_USE_GUI_1@monolib_clrpickercmn.o: $(srcdir)/src/common/clrpickercmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/clrpickercmn.cpp
+
 @COND_USE_GUI_1@monolib_colourcmn.o: $(srcdir)/src/common/colourcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/colourcmn.cpp
 
@@ -18456,6 +18682,12 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
+@COND_USE_GUI_1@monolib_filepickercmn.o: $(srcdir)/src/common/filepickercmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/filepickercmn.cpp
+
+@COND_USE_GUI_1@monolib_fontpickercmn.o: $(srcdir)/src/common/fontpickercmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fontpickercmn.cpp
+
 @COND_USE_GUI_1@monolib_fldlgcmn.o: $(srcdir)/src/common/fldlgcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fldlgcmn.cpp
 
@@ -18546,6 +18778,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_paper.o: $(srcdir)/src/common/paper.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/paper.cpp
 
+@COND_USE_GUI_1@monolib_pickerbase.o: $(srcdir)/src/common/pickerbase.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/pickerbase.cpp
+
 @COND_USE_GUI_1@monolib_popupcmn.o: $(srcdir)/src/common/popupcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/popupcmn.cpp
 
@@ -20130,6 +20365,15 @@ coredll_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(COREDLL_ODEP)
 coredll_artgtk.o: $(srcdir)/src/gtk/artgtk.cpp $(COREDLL_ODEP)
 	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/artgtk.cpp
 
+coredll_clrpicker.o: $(srcdir)/src/gtk/clrpicker.cpp $(COREDLL_ODEP)
+	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/clrpicker.cpp
+
+coredll_fontpicker.o: $(srcdir)/src/gtk/fontpicker.cpp $(COREDLL_ODEP)
+	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/fontpicker.cpp
+
+coredll_filepicker.o: $(srcdir)/src/gtk/filepicker.cpp $(COREDLL_ODEP)
+	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/filepicker.cpp
+
 coredll_gprint.o: $(srcdir)/src/gtk/gnome/gprint.cpp $(COREDLL_ODEP)
 	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/gnome/gprint.cpp
 
@@ -21465,6 +21709,15 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@coredll_colrdlgg.o: $(srcdir)/src/generic/colrdlgg.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/colrdlgg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@coredll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@coredll_dirdlgg.o: $(srcdir)/src/generic/dirdlgg.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/dirdlgg.cpp
 
@@ -21510,6 +21763,24 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_fdrepdlg.o: $(srcdir)/src/msw/fdrepdlg.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/fdrepdlg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@coredll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@coredll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@coredll_filedlgg.o: $(srcdir)/src/generic/filedlgg.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/filedlgg.cpp
 
@@ -22611,6 +22882,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@coredll_clipcmn.o: $(srcdir)/src/common/clipcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/clipcmn.cpp
 
+@COND_USE_GUI_1@coredll_clrpickercmn.o: $(srcdir)/src/common/clrpickercmn.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/clrpickercmn.cpp
+
 @COND_USE_GUI_1@coredll_colourcmn.o: $(srcdir)/src/common/colourcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/colourcmn.cpp
 
@@ -22671,6 +22945,12 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@coredll_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
+@COND_USE_GUI_1@coredll_filepickercmn.o: $(srcdir)/src/common/filepickercmn.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/filepickercmn.cpp
+
+@COND_USE_GUI_1@coredll_fontpickercmn.o: $(srcdir)/src/common/fontpickercmn.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/fontpickercmn.cpp
+
 @COND_USE_GUI_1@coredll_fldlgcmn.o: $(srcdir)/src/common/fldlgcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/fldlgcmn.cpp
 
@@ -22761,6 +23041,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@coredll_paper.o: $(srcdir)/src/common/paper.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/paper.cpp
 
+@COND_USE_GUI_1@coredll_pickerbase.o: $(srcdir)/src/common/pickerbase.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/pickerbase.cpp
+
 @COND_USE_GUI_1@coredll_popupcmn.o: $(srcdir)/src/common/popupcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/popupcmn.cpp
 
@@ -22923,6 +23206,15 @@ corelib_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(CORELIB_ODEP)
 corelib_artgtk.o: $(srcdir)/src/gtk/artgtk.cpp $(CORELIB_ODEP)
 	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/artgtk.cpp
 
+corelib_clrpicker.o: $(srcdir)/src/gtk/clrpicker.cpp $(CORELIB_ODEP)
+	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/clrpicker.cpp
+
+corelib_fontpicker.o: $(srcdir)/src/gtk/fontpicker.cpp $(CORELIB_ODEP)
+	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/fontpicker.cpp
+
+corelib_filepicker.o: $(srcdir)/src/gtk/filepicker.cpp $(CORELIB_ODEP)
+	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/filepicker.cpp
+
 corelib_gprint.o: $(srcdir)/src/gtk/gnome/gprint.cpp $(CORELIB_ODEP)
 	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/gnome/gprint.cpp
 
@@ -24258,6 +24550,15 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@corelib_colrdlgg.o: $(srcdir)/src/generic/colrdlgg.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/colrdlgg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@corelib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_clrpickerg.o: $(srcdir)/src/generic/clrpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/clrpickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@corelib_dirdlgg.o: $(srcdir)/src/generic/dirdlgg.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/dirdlgg.cpp
 
@@ -24303,6 +24604,24 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_fdrepdlg.o: $(srcdir)/src/msw/fdrepdlg.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/fdrepdlg.cpp
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@corelib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_fontpickerg.o: $(srcdir)/src/generic/fontpickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/fontpickerg.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@corelib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_filepickerg.o: $(srcdir)/src/generic/filepickerg.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/filepickerg.cpp
+
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@corelib_filedlgg.o: $(srcdir)/src/generic/filedlgg.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/filedlgg.cpp
 
@@ -25404,6 +25723,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@corelib_clipcmn.o: $(srcdir)/src/common/clipcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/clipcmn.cpp
 
+@COND_USE_GUI_1@corelib_clrpickercmn.o: $(srcdir)/src/common/clrpickercmn.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/clrpickercmn.cpp
+
 @COND_USE_GUI_1@corelib_colourcmn.o: $(srcdir)/src/common/colourcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/colourcmn.cpp
 
@@ -25464,6 +25786,12 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@corelib_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
+@COND_USE_GUI_1@corelib_filepickercmn.o: $(srcdir)/src/common/filepickercmn.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/filepickercmn.cpp
+
+@COND_USE_GUI_1@corelib_fontpickercmn.o: $(srcdir)/src/common/fontpickercmn.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/fontpickercmn.cpp
+
 @COND_USE_GUI_1@corelib_fldlgcmn.o: $(srcdir)/src/common/fldlgcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/fldlgcmn.cpp
 
@@ -25554,6 +25882,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@corelib_paper.o: $(srcdir)/src/common/paper.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/paper.cpp
 
+@COND_USE_GUI_1@corelib_pickerbase.o: $(srcdir)/src/common/pickerbase.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/pickerbase.cpp
+
 @COND_USE_GUI_1@corelib_popupcmn.o: $(srcdir)/src/common/popupcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/popupcmn.cpp
 
@@ -26370,12 +26701,18 @@ xrcdll_xh_choic.o: $(srcdir)/src/xrc/xh_choic.cpp $(XRCDLL_ODEP)
 xrcdll_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_choicbk.cpp
 
+xrcdll_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(XRCDLL_ODEP)
+	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+
 xrcdll_xh_combo.o: $(srcdir)/src/xrc/xh_combo.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_combo.cpp
 
 xrcdll_xh_datectrl.o: $(srcdir)/src/xrc/xh_datectrl.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_datectrl.cpp
 
+xrcdll_xh_dirpicker.o: $(srcdir)/src/xrc/xh_dirpicker.cpp $(XRCDLL_ODEP)
+	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_dirpicker.cpp
+
 xrcdll_xh_dlg.o: $(srcdir)/src/xrc/xh_dlg.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_dlg.cpp
 
@@ -26385,6 +26722,12 @@ xrcdll_xh_frame.o: $(srcdir)/src/xrc/xh_frame.cpp $(XRCDLL_ODEP)
 xrcdll_xh_mdi.o: $(srcdir)/src/xrc/xh_mdi.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_mdi.cpp
 
+xrcdll_xh_filepicker.o: $(srcdir)/src/xrc/xh_filepicker.cpp $(XRCDLL_ODEP)
+	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_filepicker.cpp
+
+xrcdll_xh_fontpicker.o: $(srcdir)/src/xrc/xh_fontpicker.cpp $(XRCDLL_ODEP)
+	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_fontpicker.cpp
+
 xrcdll_xh_gauge.o: $(srcdir)/src/xrc/xh_gauge.cpp $(XRCDLL_ODEP)
 	$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_gauge.cpp
 
@@ -26508,12 +26851,18 @@ xrclib_xh_choic.o: $(srcdir)/src/xrc/xh_choic.cpp $(XRCLIB_ODEP)
 xrclib_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_choicbk.cpp
 
+xrclib_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(XRCLIB_ODEP)
+	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+
 xrclib_xh_combo.o: $(srcdir)/src/xrc/xh_combo.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_combo.cpp
 
 xrclib_xh_datectrl.o: $(srcdir)/src/xrc/xh_datectrl.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_datectrl.cpp
 
+xrclib_xh_dirpicker.o: $(srcdir)/src/xrc/xh_dirpicker.cpp $(XRCLIB_ODEP)
+	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_dirpicker.cpp
+
 xrclib_xh_dlg.o: $(srcdir)/src/xrc/xh_dlg.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_dlg.cpp
 
@@ -26523,6 +26872,12 @@ xrclib_xh_frame.o: $(srcdir)/src/xrc/xh_frame.cpp $(XRCLIB_ODEP)
 xrclib_xh_mdi.o: $(srcdir)/src/xrc/xh_mdi.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_mdi.cpp
 
+xrclib_xh_filepicker.o: $(srcdir)/src/xrc/xh_filepicker.cpp $(XRCLIB_ODEP)
+	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_filepicker.cpp
+
+xrclib_xh_fontpicker.o: $(srcdir)/src/xrc/xh_fontpicker.cpp $(XRCLIB_ODEP)
+	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_fontpicker.cpp
+
 xrclib_xh_gauge.o: $(srcdir)/src/xrc/xh_gauge.cpp $(XRCLIB_ODEP)
 	$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_gauge.cpp
 
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index d2b1b67286..0cd7e751eb 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -555,6 +555,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/common/bookctrl.cpp
     src/common/choiccmn.cpp
     src/common/clipcmn.cpp
+    src/common/clrpickercmn.cpp
     src/common/colourcmn.cpp
     src/common/combocmn.cpp
     src/common/cmdproc.cpp
@@ -575,6 +576,8 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/common/effects.cpp
     src/common/evtloopcmn.cpp
     src/common/fddlgcmn.cpp
+    src/common/filepickercmn.cpp
+    src/common/fontpickercmn.cpp
     src/common/fldlgcmn.cpp
     src/common/fontcmn.cpp
     src/common/fontenumcmn.cpp
@@ -605,6 +608,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/common/menucmn.cpp
     src/common/nbkbase.cpp
     src/common/paper.cpp
+    src/common/pickerbase.cpp
     src/common/popupcmn.cpp
     src/common/prntbase.cpp
     src/common/quantize.cpp
@@ -748,6 +752,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/caret.h
     wx/choicebk.h
     wx/clipbrd.h
+    wx/clrpicker.h
     wx/cmdproc.h
     wx/colordlg.h
     wx/colour.h
@@ -765,6 +770,8 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/effects.h
     wx/evtloop.h
     wx/fdrepdlg.h
+    wx/filepicker.h
+    wx/fontpicker.h
     wx/fmappriv.h
     wx/font.h
     wx/fontdlg.h
@@ -925,8 +932,11 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     <!-- Generic implementations used by wxGTK: -->
     src/generic/accel.cpp
     src/generic/colrdlgg.cpp
+    src/generic/clrpickerg.cpp
     src/generic/dirdlgg.cpp
     src/generic/fdrepdlg.cpp
+    src/generic/fontpickerg.cpp
+    src/generic/filepickerg.cpp
     src/generic/filedlgg.cpp
     src/generic/imaglist.cpp
     src/generic/listctrl.cpp
@@ -946,7 +956,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/gtk/colordlg.cpp
     src/gtk/combobox.cpp
     src/gtk/control.cpp
+    src/gtk/clrpicker.cpp
     src/gtk/dialog.cpp
+    src/gtk/fontpicker.cpp
+    src/gtk/filepicker.cpp
     src/gtk/dirdlg.cpp
     src/gtk/filedlg.cpp
     src/gtk/fontdlg.cpp
@@ -978,8 +991,11 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 </set>
 <set var="GTK_HDR" hints="files">
     wx/generic/colrdlgg.h
+    wx/generic/clrpickerg.h
     wx/generic/dirdlgg.h
     wx/generic/fdrepdlg.h
+    wx/generic/fontpickerg.h
+    wx/generic/filepickerg.h
     wx/generic/listctrl.h
     wx/generic/statusbr.h
     wx/generic/tabg.h
@@ -992,9 +1008,12 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/gtk/choice.h
     wx/gtk/combobox.h
     wx/gtk/control.h
+    wx/gtk/clrpicker.h
     wx/gtk/dialog.h
     wx/gtk/dirdlg.h
     wx/gtk/filedlg.h
+    wx/gtk/fontpicker.h
+    wx/gtk/filepicker.h
     wx/gtk/fontdlg.h
     wx/gtk/frame.h
     wx/gtk/gauge.h
@@ -1483,6 +1502,9 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 </set>
 
 <set var="MSW_SRC" hints="files">
+    src/generic/clrpickerg.cpp
+    src/generic/fontpickerg.cpp
+    src/generic/filepickerg.cpp
     src/generic/statusbr.cpp
     src/generic/prntdlgg.cpp
     src/msw/accel.cpp
@@ -1531,6 +1553,9 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/msw/treectrl.cpp
 </set>
 <set var="MSW_HDR" hints="files">
+    wx/generic/clrpicker.h
+    wx/generic/fontpicker.h
+    wx/generic/filepicker.h
     wx/msw/accel.h
     wx/msw/app.h
     wx/msw/bitmap.h
@@ -2797,11 +2822,15 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/xrc/xh_chckl.cpp
     src/xrc/xh_choic.cpp
     src/xrc/xh_choicbk.cpp
+    src/xrc/xh_clrpicker.cpp
     src/xrc/xh_combo.cpp
     src/xrc/xh_datectrl.cpp
+    src/xrc/xh_dirpicker.cpp
     src/xrc/xh_dlg.cpp
     src/xrc/xh_frame.cpp
     src/xrc/xh_mdi.cpp
+    src/xrc/xh_filepicker.cpp
+    src/xrc/xh_fontpicker.cpp
     src/xrc/xh_gauge.cpp
     src/xrc/xh_gdctl.cpp
     src/xrc/xh_grid.cpp
@@ -2846,9 +2875,13 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/xrc/xh_chckl.h
     wx/xrc/xh_choic.h
     wx/xrc/xh_choicbk.h
+    wx/xrc/xh_clrpicker.h
     wx/xrc/xh_combo.h
     wx/xrc/xh_datectrl.h
+    wx/xrc/xh_dirpicker.h
     wx/xrc/xh_dlg.h
+    wx/xrc/xh_filepicker.h
+    wx/xrc/xh_fontpicker.h
     wx/xrc/xh_frame.h
     wx/xrc/xh_mdi.h
     wx/xrc/xh_gauge.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index 379bc8f590..ffd4283232 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -902,11 +902,15 @@ XRCDLL_OBJECTS =  \
 	$(OBJS)\xrcdll_xh_chckl.obj \
 	$(OBJS)\xrcdll_xh_choic.obj \
 	$(OBJS)\xrcdll_xh_choicbk.obj \
+	$(OBJS)\xrcdll_xh_clrpicker.obj \
 	$(OBJS)\xrcdll_xh_combo.obj \
 	$(OBJS)\xrcdll_xh_datectrl.obj \
+	$(OBJS)\xrcdll_xh_dirpicker.obj \
 	$(OBJS)\xrcdll_xh_dlg.obj \
 	$(OBJS)\xrcdll_xh_frame.obj \
 	$(OBJS)\xrcdll_xh_mdi.obj \
+	$(OBJS)\xrcdll_xh_filepicker.obj \
+	$(OBJS)\xrcdll_xh_fontpicker.obj \
 	$(OBJS)\xrcdll_xh_gauge.obj \
 	$(OBJS)\xrcdll_xh_gdctl.obj \
 	$(OBJS)\xrcdll_xh_grid.obj \
@@ -957,11 +961,15 @@ XRCLIB_OBJECTS =  \
 	$(OBJS)\xrclib_xh_chckl.obj \
 	$(OBJS)\xrclib_xh_choic.obj \
 	$(OBJS)\xrclib_xh_choicbk.obj \
+	$(OBJS)\xrclib_xh_clrpicker.obj \
 	$(OBJS)\xrclib_xh_combo.obj \
 	$(OBJS)\xrclib_xh_datectrl.obj \
+	$(OBJS)\xrclib_xh_dirpicker.obj \
 	$(OBJS)\xrclib_xh_dlg.obj \
 	$(OBJS)\xrclib_xh_frame.obj \
 	$(OBJS)\xrclib_xh_mdi.obj \
+	$(OBJS)\xrclib_xh_filepicker.obj \
+	$(OBJS)\xrclib_xh_fontpicker.obj \
 	$(OBJS)\xrclib_xh_gauge.obj \
 	$(OBJS)\xrclib_xh_gdctl.obj \
 	$(OBJS)\xrclib_xh_grid.obj \
@@ -1117,11 +1125,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_xh_chckl.obj \
 	$(OBJS)\monodll_xh_choic.obj \
 	$(OBJS)\monodll_xh_choicbk.obj \
+	$(OBJS)\monodll_xh_clrpicker.obj \
 	$(OBJS)\monodll_xh_combo.obj \
 	$(OBJS)\monodll_xh_datectrl.obj \
+	$(OBJS)\monodll_xh_dirpicker.obj \
 	$(OBJS)\monodll_xh_dlg.obj \
 	$(OBJS)\monodll_xh_frame.obj \
 	$(OBJS)\monodll_xh_mdi.obj \
+	$(OBJS)\monodll_xh_filepicker.obj \
+	$(OBJS)\monodll_xh_fontpicker.obj \
 	$(OBJS)\monodll_xh_gauge.obj \
 	$(OBJS)\monodll_xh_gdctl.obj \
 	$(OBJS)\monodll_xh_grid.obj \
@@ -1206,6 +1218,9 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpwin.obj \
 	$(OBJS)\monodll_automtn.obj \
 	$(OBJS)\monodll_uuid.obj \
+	$(OBJS)\monodll_clrpickerg.obj \
+	$(OBJS)\monodll_fontpickerg.obj \
+	$(OBJS)\monodll_filepickerg.obj \
 	$(OBJS)\monodll_statusbr.obj \
 	$(OBJS)\monodll_prntdlgg.obj \
 	$(OBJS)\monodll_accel.obj \
@@ -1263,6 +1278,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
+	$(OBJS)\monodll_clrpickercmn.obj \
 	$(OBJS)\monodll_colourcmn.obj \
 	$(OBJS)\monodll_combocmn.obj \
 	$(OBJS)\monodll_cmdproc.obj \
@@ -1283,6 +1299,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.obj \
 	$(OBJS)\monodll_evtloopcmn.obj \
 	$(OBJS)\monodll_fddlgcmn.obj \
+	$(OBJS)\monodll_filepickercmn.obj \
+	$(OBJS)\monodll_fontpickercmn.obj \
 	$(OBJS)\monodll_fldlgcmn.obj \
 	$(OBJS)\monodll_fontcmn.obj \
 	$(OBJS)\monodll_fontenumcmn.obj \
@@ -1313,6 +1331,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.obj \
 	$(OBJS)\monodll_nbkbase.obj \
 	$(OBJS)\monodll_paper.obj \
+	$(OBJS)\monodll_pickerbase.obj \
 	$(OBJS)\monodll_popupcmn.obj \
 	$(OBJS)\monodll_prntbase.obj \
 	$(OBJS)\monodll_quantize.obj \
@@ -1468,6 +1487,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
+	$(OBJS)\monodll_clrpickercmn.obj \
 	$(OBJS)\monodll_colourcmn.obj \
 	$(OBJS)\monodll_combocmn.obj \
 	$(OBJS)\monodll_cmdproc.obj \
@@ -1488,6 +1508,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.obj \
 	$(OBJS)\monodll_evtloopcmn.obj \
 	$(OBJS)\monodll_fddlgcmn.obj \
+	$(OBJS)\monodll_filepickercmn.obj \
+	$(OBJS)\monodll_fontpickercmn.obj \
 	$(OBJS)\monodll_fldlgcmn.obj \
 	$(OBJS)\monodll_fontcmn.obj \
 	$(OBJS)\monodll_fontenumcmn.obj \
@@ -1518,6 +1540,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.obj \
 	$(OBJS)\monodll_nbkbase.obj \
 	$(OBJS)\monodll_paper.obj \
+	$(OBJS)\monodll_pickerbase.obj \
 	$(OBJS)\monodll_popupcmn.obj \
 	$(OBJS)\monodll_prntbase.obj \
 	$(OBJS)\monodll_quantize.obj \
@@ -1671,11 +1694,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_xh_chckl.obj \
 	$(OBJS)\monolib_xh_choic.obj \
 	$(OBJS)\monolib_xh_choicbk.obj \
+	$(OBJS)\monolib_xh_clrpicker.obj \
 	$(OBJS)\monolib_xh_combo.obj \
 	$(OBJS)\monolib_xh_datectrl.obj \
+	$(OBJS)\monolib_xh_dirpicker.obj \
 	$(OBJS)\monolib_xh_dlg.obj \
 	$(OBJS)\monolib_xh_frame.obj \
 	$(OBJS)\monolib_xh_mdi.obj \
+	$(OBJS)\monolib_xh_filepicker.obj \
+	$(OBJS)\monolib_xh_fontpicker.obj \
 	$(OBJS)\monolib_xh_gauge.obj \
 	$(OBJS)\monolib_xh_gdctl.obj \
 	$(OBJS)\monolib_xh_grid.obj \
@@ -1760,6 +1787,9 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpwin.obj \
 	$(OBJS)\monolib_automtn.obj \
 	$(OBJS)\monolib_uuid.obj \
+	$(OBJS)\monolib_clrpickerg.obj \
+	$(OBJS)\monolib_fontpickerg.obj \
+	$(OBJS)\monolib_filepickerg.obj \
 	$(OBJS)\monolib_statusbr.obj \
 	$(OBJS)\monolib_prntdlgg.obj \
 	$(OBJS)\monolib_accel.obj \
@@ -1817,6 +1847,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
+	$(OBJS)\monolib_clrpickercmn.obj \
 	$(OBJS)\monolib_colourcmn.obj \
 	$(OBJS)\monolib_combocmn.obj \
 	$(OBJS)\monolib_cmdproc.obj \
@@ -1837,6 +1868,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.obj \
 	$(OBJS)\monolib_evtloopcmn.obj \
 	$(OBJS)\monolib_fddlgcmn.obj \
+	$(OBJS)\monolib_filepickercmn.obj \
+	$(OBJS)\monolib_fontpickercmn.obj \
 	$(OBJS)\monolib_fldlgcmn.obj \
 	$(OBJS)\monolib_fontcmn.obj \
 	$(OBJS)\monolib_fontenumcmn.obj \
@@ -1867,6 +1900,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.obj \
 	$(OBJS)\monolib_nbkbase.obj \
 	$(OBJS)\monolib_paper.obj \
+	$(OBJS)\monolib_pickerbase.obj \
 	$(OBJS)\monolib_popupcmn.obj \
 	$(OBJS)\monolib_prntbase.obj \
 	$(OBJS)\monolib_quantize.obj \
@@ -2022,6 +2056,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
+	$(OBJS)\monolib_clrpickercmn.obj \
 	$(OBJS)\monolib_colourcmn.obj \
 	$(OBJS)\monolib_combocmn.obj \
 	$(OBJS)\monolib_cmdproc.obj \
@@ -2042,6 +2077,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.obj \
 	$(OBJS)\monolib_evtloopcmn.obj \
 	$(OBJS)\monolib_fddlgcmn.obj \
+	$(OBJS)\monolib_filepickercmn.obj \
+	$(OBJS)\monolib_fontpickercmn.obj \
 	$(OBJS)\monolib_fldlgcmn.obj \
 	$(OBJS)\monolib_fontcmn.obj \
 	$(OBJS)\monolib_fontenumcmn.obj \
@@ -2072,6 +2109,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.obj \
 	$(OBJS)\monolib_nbkbase.obj \
 	$(OBJS)\monolib_paper.obj \
+	$(OBJS)\monolib_pickerbase.obj \
 	$(OBJS)\monolib_popupcmn.obj \
 	$(OBJS)\monolib_prntbase.obj \
 	$(OBJS)\monolib_quantize.obj \
@@ -2246,6 +2284,9 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_helpwin.obj \
 	$(OBJS)\coredll_automtn.obj \
 	$(OBJS)\coredll_uuid.obj \
+	$(OBJS)\coredll_clrpickerg.obj \
+	$(OBJS)\coredll_fontpickerg.obj \
+	$(OBJS)\coredll_filepickerg.obj \
 	$(OBJS)\coredll_statusbr.obj \
 	$(OBJS)\coredll_prntdlgg.obj \
 	$(OBJS)\coredll_accel.obj \
@@ -2303,6 +2344,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
+	$(OBJS)\coredll_clrpickercmn.obj \
 	$(OBJS)\coredll_colourcmn.obj \
 	$(OBJS)\coredll_combocmn.obj \
 	$(OBJS)\coredll_cmdproc.obj \
@@ -2323,6 +2365,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.obj \
 	$(OBJS)\coredll_evtloopcmn.obj \
 	$(OBJS)\coredll_fddlgcmn.obj \
+	$(OBJS)\coredll_filepickercmn.obj \
+	$(OBJS)\coredll_fontpickercmn.obj \
 	$(OBJS)\coredll_fldlgcmn.obj \
 	$(OBJS)\coredll_fontcmn.obj \
 	$(OBJS)\coredll_fontenumcmn.obj \
@@ -2353,6 +2397,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.obj \
 	$(OBJS)\coredll_nbkbase.obj \
 	$(OBJS)\coredll_paper.obj \
+	$(OBJS)\coredll_pickerbase.obj \
 	$(OBJS)\coredll_popupcmn.obj \
 	$(OBJS)\coredll_prntbase.obj \
 	$(OBJS)\coredll_quantize.obj \
@@ -2508,6 +2553,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
+	$(OBJS)\coredll_clrpickercmn.obj \
 	$(OBJS)\coredll_colourcmn.obj \
 	$(OBJS)\coredll_combocmn.obj \
 	$(OBJS)\coredll_cmdproc.obj \
@@ -2528,6 +2574,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.obj \
 	$(OBJS)\coredll_evtloopcmn.obj \
 	$(OBJS)\coredll_fddlgcmn.obj \
+	$(OBJS)\coredll_filepickercmn.obj \
+	$(OBJS)\coredll_fontpickercmn.obj \
 	$(OBJS)\coredll_fldlgcmn.obj \
 	$(OBJS)\coredll_fontcmn.obj \
 	$(OBJS)\coredll_fontenumcmn.obj \
@@ -2558,6 +2606,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.obj \
 	$(OBJS)\coredll_nbkbase.obj \
 	$(OBJS)\coredll_paper.obj \
+	$(OBJS)\coredll_pickerbase.obj \
 	$(OBJS)\coredll_popupcmn.obj \
 	$(OBJS)\coredll_prntbase.obj \
 	$(OBJS)\coredll_quantize.obj \
@@ -2659,6 +2708,9 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_helpwin.obj \
 	$(OBJS)\corelib_automtn.obj \
 	$(OBJS)\corelib_uuid.obj \
+	$(OBJS)\corelib_clrpickerg.obj \
+	$(OBJS)\corelib_fontpickerg.obj \
+	$(OBJS)\corelib_filepickerg.obj \
 	$(OBJS)\corelib_statusbr.obj \
 	$(OBJS)\corelib_prntdlgg.obj \
 	$(OBJS)\corelib_accel.obj \
@@ -2716,6 +2768,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
+	$(OBJS)\corelib_clrpickercmn.obj \
 	$(OBJS)\corelib_colourcmn.obj \
 	$(OBJS)\corelib_combocmn.obj \
 	$(OBJS)\corelib_cmdproc.obj \
@@ -2736,6 +2789,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.obj \
 	$(OBJS)\corelib_evtloopcmn.obj \
 	$(OBJS)\corelib_fddlgcmn.obj \
+	$(OBJS)\corelib_filepickercmn.obj \
+	$(OBJS)\corelib_fontpickercmn.obj \
 	$(OBJS)\corelib_fldlgcmn.obj \
 	$(OBJS)\corelib_fontcmn.obj \
 	$(OBJS)\corelib_fontenumcmn.obj \
@@ -2766,6 +2821,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.obj \
 	$(OBJS)\corelib_nbkbase.obj \
 	$(OBJS)\corelib_paper.obj \
+	$(OBJS)\corelib_pickerbase.obj \
 	$(OBJS)\corelib_popupcmn.obj \
 	$(OBJS)\corelib_prntbase.obj \
 	$(OBJS)\corelib_quantize.obj \
@@ -2921,6 +2977,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
+	$(OBJS)\corelib_clrpickercmn.obj \
 	$(OBJS)\corelib_colourcmn.obj \
 	$(OBJS)\corelib_combocmn.obj \
 	$(OBJS)\corelib_cmdproc.obj \
@@ -2941,6 +2998,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.obj \
 	$(OBJS)\corelib_evtloopcmn.obj \
 	$(OBJS)\corelib_fddlgcmn.obj \
+	$(OBJS)\corelib_filepickercmn.obj \
+	$(OBJS)\corelib_fontpickercmn.obj \
 	$(OBJS)\corelib_fldlgcmn.obj \
 	$(OBJS)\corelib_fontcmn.obj \
 	$(OBJS)\corelib_fontenumcmn.obj \
@@ -2971,6 +3030,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.obj \
 	$(OBJS)\corelib_nbkbase.obj \
 	$(OBJS)\corelib_paper.obj \
+	$(OBJS)\corelib_pickerbase.obj \
 	$(OBJS)\corelib_popupcmn.obj \
 	$(OBJS)\corelib_prntbase.obj \
 	$(OBJS)\corelib_quantize.obj \
@@ -4397,6 +4457,15 @@ $(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 $(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
@@ -4658,12 +4727,18 @@ $(OBJS)\monodll_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monodll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
 $(OBJS)\monodll_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
@@ -4673,6 +4748,12 @@ $(OBJS)\monodll_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monodll_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
@@ -5323,6 +5404,11 @@ $(OBJS)\monodll_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -5423,6 +5509,16 @@ $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -5573,6 +5669,11 @@ $(OBJS)\monodll_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -6207,6 +6308,15 @@ $(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 $(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -6468,12 +6578,18 @@ $(OBJS)\monolib_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monolib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
 $(OBJS)\monolib_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -6483,6 +6599,12 @@ $(OBJS)\monolib_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monolib_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -7133,6 +7255,11 @@ $(OBJS)\monolib_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -7233,6 +7360,16 @@ $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -7383,6 +7520,11 @@ $(OBJS)\monolib_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -8335,6 +8477,15 @@ $(OBJS)\coredll_mslu.obj: ..\..\src\msw\mslu.cpp
 $(OBJS)\coredll_volume.obj: ..\..\src\msw\volume.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 
+$(OBJS)\coredll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+
+$(OBJS)\coredll_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+
+$(OBJS)\coredll_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+
 $(OBJS)\coredll_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 
@@ -9015,6 +9166,11 @@ $(OBJS)\coredll_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -9115,6 +9271,16 @@ $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -9265,6 +9431,11 @@ $(OBJS)\coredll_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -9519,6 +9690,15 @@ $(OBJS)\corelib_mslu.obj: ..\..\src\msw\mslu.cpp
 $(OBJS)\corelib_volume.obj: ..\..\src\msw\volume.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 
+$(OBJS)\corelib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+
+$(OBJS)\corelib_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+
+$(OBJS)\corelib_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+
 $(OBJS)\corelib_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 
@@ -10199,6 +10379,11 @@ $(OBJS)\corelib_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -10299,6 +10484,16 @@ $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -10449,6 +10644,11 @@ $(OBJS)\corelib_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -11138,12 +11338,18 @@ $(OBJS)\xrcdll_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrcdll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
 $(OBJS)\xrcdll_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
@@ -11153,6 +11359,12 @@ $(OBJS)\xrcdll_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrcdll_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
+
+$(OBJS)\xrcdll_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) $**
 
@@ -11279,12 +11491,18 @@ $(OBJS)\xrclib_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrclib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
 $(OBJS)\xrclib_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
@@ -11294,6 +11512,12 @@ $(OBJS)\xrclib_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrclib_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
+
+$(OBJS)\xrclib_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) $**
 
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index 828d8ab5eb..2fc0fc2041 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -904,11 +904,15 @@ XRCDLL_OBJECTS =  \
 	$(OBJS)\xrcdll_xh_chckl.o \
 	$(OBJS)\xrcdll_xh_choic.o \
 	$(OBJS)\xrcdll_xh_choicbk.o \
+	$(OBJS)\xrcdll_xh_clrpicker.o \
 	$(OBJS)\xrcdll_xh_combo.o \
 	$(OBJS)\xrcdll_xh_datectrl.o \
+	$(OBJS)\xrcdll_xh_dirpicker.o \
 	$(OBJS)\xrcdll_xh_dlg.o \
 	$(OBJS)\xrcdll_xh_frame.o \
 	$(OBJS)\xrcdll_xh_mdi.o \
+	$(OBJS)\xrcdll_xh_filepicker.o \
+	$(OBJS)\xrcdll_xh_fontpicker.o \
 	$(OBJS)\xrcdll_xh_gauge.o \
 	$(OBJS)\xrcdll_xh_gdctl.o \
 	$(OBJS)\xrcdll_xh_grid.o \
@@ -959,11 +963,15 @@ XRCLIB_OBJECTS =  \
 	$(OBJS)\xrclib_xh_chckl.o \
 	$(OBJS)\xrclib_xh_choic.o \
 	$(OBJS)\xrclib_xh_choicbk.o \
+	$(OBJS)\xrclib_xh_clrpicker.o \
 	$(OBJS)\xrclib_xh_combo.o \
 	$(OBJS)\xrclib_xh_datectrl.o \
+	$(OBJS)\xrclib_xh_dirpicker.o \
 	$(OBJS)\xrclib_xh_dlg.o \
 	$(OBJS)\xrclib_xh_frame.o \
 	$(OBJS)\xrclib_xh_mdi.o \
+	$(OBJS)\xrclib_xh_filepicker.o \
+	$(OBJS)\xrclib_xh_fontpicker.o \
 	$(OBJS)\xrclib_xh_gauge.o \
 	$(OBJS)\xrclib_xh_gdctl.o \
 	$(OBJS)\xrclib_xh_grid.o \
@@ -1127,11 +1135,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_xh_chckl.o \
 	$(OBJS)\monodll_xh_choic.o \
 	$(OBJS)\monodll_xh_choicbk.o \
+	$(OBJS)\monodll_xh_clrpicker.o \
 	$(OBJS)\monodll_xh_combo.o \
 	$(OBJS)\monodll_xh_datectrl.o \
+	$(OBJS)\monodll_xh_dirpicker.o \
 	$(OBJS)\monodll_xh_dlg.o \
 	$(OBJS)\monodll_xh_frame.o \
 	$(OBJS)\monodll_xh_mdi.o \
+	$(OBJS)\monodll_xh_filepicker.o \
+	$(OBJS)\monodll_xh_fontpicker.o \
 	$(OBJS)\monodll_xh_gauge.o \
 	$(OBJS)\monodll_xh_gdctl.o \
 	$(OBJS)\monodll_xh_grid.o \
@@ -1217,6 +1229,9 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpwin.o \
 	$(OBJS)\monodll_automtn.o \
 	$(OBJS)\monodll_uuid.o \
+	$(OBJS)\monodll_clrpickerg.o \
+	$(OBJS)\monodll_fontpickerg.o \
+	$(OBJS)\monodll_filepickerg.o \
 	$(OBJS)\monodll_statusbr.o \
 	$(OBJS)\monodll_prntdlgg.o \
 	$(OBJS)\monodll_accel.o \
@@ -1274,6 +1289,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
+	$(OBJS)\monodll_clrpickercmn.o \
 	$(OBJS)\monodll_colourcmn.o \
 	$(OBJS)\monodll_combocmn.o \
 	$(OBJS)\monodll_cmdproc.o \
@@ -1294,6 +1310,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.o \
 	$(OBJS)\monodll_evtloopcmn.o \
 	$(OBJS)\monodll_fddlgcmn.o \
+	$(OBJS)\monodll_filepickercmn.o \
+	$(OBJS)\monodll_fontpickercmn.o \
 	$(OBJS)\monodll_fldlgcmn.o \
 	$(OBJS)\monodll_fontcmn.o \
 	$(OBJS)\monodll_fontenumcmn.o \
@@ -1324,6 +1342,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.o \
 	$(OBJS)\monodll_nbkbase.o \
 	$(OBJS)\monodll_paper.o \
+	$(OBJS)\monodll_pickerbase.o \
 	$(OBJS)\monodll_popupcmn.o \
 	$(OBJS)\monodll_prntbase.o \
 	$(OBJS)\monodll_quantize.o \
@@ -1481,6 +1500,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
+	$(OBJS)\monodll_clrpickercmn.o \
 	$(OBJS)\monodll_colourcmn.o \
 	$(OBJS)\monodll_combocmn.o \
 	$(OBJS)\monodll_cmdproc.o \
@@ -1501,6 +1521,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.o \
 	$(OBJS)\monodll_evtloopcmn.o \
 	$(OBJS)\monodll_fddlgcmn.o \
+	$(OBJS)\monodll_filepickercmn.o \
+	$(OBJS)\monodll_fontpickercmn.o \
 	$(OBJS)\monodll_fldlgcmn.o \
 	$(OBJS)\monodll_fontcmn.o \
 	$(OBJS)\monodll_fontenumcmn.o \
@@ -1531,6 +1553,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.o \
 	$(OBJS)\monodll_nbkbase.o \
 	$(OBJS)\monodll_paper.o \
+	$(OBJS)\monodll_pickerbase.o \
 	$(OBJS)\monodll_popupcmn.o \
 	$(OBJS)\monodll_prntbase.o \
 	$(OBJS)\monodll_quantize.o \
@@ -1687,11 +1710,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_xh_chckl.o \
 	$(OBJS)\monolib_xh_choic.o \
 	$(OBJS)\monolib_xh_choicbk.o \
+	$(OBJS)\monolib_xh_clrpicker.o \
 	$(OBJS)\monolib_xh_combo.o \
 	$(OBJS)\monolib_xh_datectrl.o \
+	$(OBJS)\monolib_xh_dirpicker.o \
 	$(OBJS)\monolib_xh_dlg.o \
 	$(OBJS)\monolib_xh_frame.o \
 	$(OBJS)\monolib_xh_mdi.o \
+	$(OBJS)\monolib_xh_filepicker.o \
+	$(OBJS)\monolib_xh_fontpicker.o \
 	$(OBJS)\monolib_xh_gauge.o \
 	$(OBJS)\monolib_xh_gdctl.o \
 	$(OBJS)\monolib_xh_grid.o \
@@ -1777,6 +1804,9 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpwin.o \
 	$(OBJS)\monolib_automtn.o \
 	$(OBJS)\monolib_uuid.o \
+	$(OBJS)\monolib_clrpickerg.o \
+	$(OBJS)\monolib_fontpickerg.o \
+	$(OBJS)\monolib_filepickerg.o \
 	$(OBJS)\monolib_statusbr.o \
 	$(OBJS)\monolib_prntdlgg.o \
 	$(OBJS)\monolib_accel.o \
@@ -1834,6 +1864,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
+	$(OBJS)\monolib_clrpickercmn.o \
 	$(OBJS)\monolib_colourcmn.o \
 	$(OBJS)\monolib_combocmn.o \
 	$(OBJS)\monolib_cmdproc.o \
@@ -1854,6 +1885,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.o \
 	$(OBJS)\monolib_evtloopcmn.o \
 	$(OBJS)\monolib_fddlgcmn.o \
+	$(OBJS)\monolib_filepickercmn.o \
+	$(OBJS)\monolib_fontpickercmn.o \
 	$(OBJS)\monolib_fldlgcmn.o \
 	$(OBJS)\monolib_fontcmn.o \
 	$(OBJS)\monolib_fontenumcmn.o \
@@ -1884,6 +1917,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.o \
 	$(OBJS)\monolib_nbkbase.o \
 	$(OBJS)\monolib_paper.o \
+	$(OBJS)\monolib_pickerbase.o \
 	$(OBJS)\monolib_popupcmn.o \
 	$(OBJS)\monolib_prntbase.o \
 	$(OBJS)\monolib_quantize.o \
@@ -2041,6 +2075,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
+	$(OBJS)\monolib_clrpickercmn.o \
 	$(OBJS)\monolib_colourcmn.o \
 	$(OBJS)\monolib_combocmn.o \
 	$(OBJS)\monolib_cmdproc.o \
@@ -2061,6 +2096,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.o \
 	$(OBJS)\monolib_evtloopcmn.o \
 	$(OBJS)\monolib_fddlgcmn.o \
+	$(OBJS)\monolib_filepickercmn.o \
+	$(OBJS)\monolib_fontpickercmn.o \
 	$(OBJS)\monolib_fldlgcmn.o \
 	$(OBJS)\monolib_fontcmn.o \
 	$(OBJS)\monolib_fontenumcmn.o \
@@ -2091,6 +2128,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.o \
 	$(OBJS)\monolib_nbkbase.o \
 	$(OBJS)\monolib_paper.o \
+	$(OBJS)\monolib_pickerbase.o \
 	$(OBJS)\monolib_popupcmn.o \
 	$(OBJS)\monolib_prntbase.o \
 	$(OBJS)\monolib_quantize.o \
@@ -2279,6 +2317,9 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_helpwin.o \
 	$(OBJS)\coredll_automtn.o \
 	$(OBJS)\coredll_uuid.o \
+	$(OBJS)\coredll_clrpickerg.o \
+	$(OBJS)\coredll_fontpickerg.o \
+	$(OBJS)\coredll_filepickerg.o \
 	$(OBJS)\coredll_statusbr.o \
 	$(OBJS)\coredll_prntdlgg.o \
 	$(OBJS)\coredll_accel.o \
@@ -2336,6 +2377,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
+	$(OBJS)\coredll_clrpickercmn.o \
 	$(OBJS)\coredll_colourcmn.o \
 	$(OBJS)\coredll_combocmn.o \
 	$(OBJS)\coredll_cmdproc.o \
@@ -2356,6 +2398,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.o \
 	$(OBJS)\coredll_evtloopcmn.o \
 	$(OBJS)\coredll_fddlgcmn.o \
+	$(OBJS)\coredll_filepickercmn.o \
+	$(OBJS)\coredll_fontpickercmn.o \
 	$(OBJS)\coredll_fldlgcmn.o \
 	$(OBJS)\coredll_fontcmn.o \
 	$(OBJS)\coredll_fontenumcmn.o \
@@ -2386,6 +2430,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.o \
 	$(OBJS)\coredll_nbkbase.o \
 	$(OBJS)\coredll_paper.o \
+	$(OBJS)\coredll_pickerbase.o \
 	$(OBJS)\coredll_popupcmn.o \
 	$(OBJS)\coredll_prntbase.o \
 	$(OBJS)\coredll_quantize.o \
@@ -2543,6 +2588,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
+	$(OBJS)\coredll_clrpickercmn.o \
 	$(OBJS)\coredll_colourcmn.o \
 	$(OBJS)\coredll_combocmn.o \
 	$(OBJS)\coredll_cmdproc.o \
@@ -2563,6 +2609,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.o \
 	$(OBJS)\coredll_evtloopcmn.o \
 	$(OBJS)\coredll_fddlgcmn.o \
+	$(OBJS)\coredll_filepickercmn.o \
+	$(OBJS)\coredll_fontpickercmn.o \
 	$(OBJS)\coredll_fldlgcmn.o \
 	$(OBJS)\coredll_fontcmn.o \
 	$(OBJS)\coredll_fontenumcmn.o \
@@ -2593,6 +2641,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.o \
 	$(OBJS)\coredll_nbkbase.o \
 	$(OBJS)\coredll_paper.o \
+	$(OBJS)\coredll_pickerbase.o \
 	$(OBJS)\coredll_popupcmn.o \
 	$(OBJS)\coredll_prntbase.o \
 	$(OBJS)\coredll_quantize.o \
@@ -2700,6 +2749,9 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_helpwin.o \
 	$(OBJS)\corelib_automtn.o \
 	$(OBJS)\corelib_uuid.o \
+	$(OBJS)\corelib_clrpickerg.o \
+	$(OBJS)\corelib_fontpickerg.o \
+	$(OBJS)\corelib_filepickerg.o \
 	$(OBJS)\corelib_statusbr.o \
 	$(OBJS)\corelib_prntdlgg.o \
 	$(OBJS)\corelib_accel.o \
@@ -2757,6 +2809,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
+	$(OBJS)\corelib_clrpickercmn.o \
 	$(OBJS)\corelib_colourcmn.o \
 	$(OBJS)\corelib_combocmn.o \
 	$(OBJS)\corelib_cmdproc.o \
@@ -2777,6 +2830,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.o \
 	$(OBJS)\corelib_evtloopcmn.o \
 	$(OBJS)\corelib_fddlgcmn.o \
+	$(OBJS)\corelib_filepickercmn.o \
+	$(OBJS)\corelib_fontpickercmn.o \
 	$(OBJS)\corelib_fldlgcmn.o \
 	$(OBJS)\corelib_fontcmn.o \
 	$(OBJS)\corelib_fontenumcmn.o \
@@ -2807,6 +2862,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.o \
 	$(OBJS)\corelib_nbkbase.o \
 	$(OBJS)\corelib_paper.o \
+	$(OBJS)\corelib_pickerbase.o \
 	$(OBJS)\corelib_popupcmn.o \
 	$(OBJS)\corelib_prntbase.o \
 	$(OBJS)\corelib_quantize.o \
@@ -2964,6 +3020,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
+	$(OBJS)\corelib_clrpickercmn.o \
 	$(OBJS)\corelib_colourcmn.o \
 	$(OBJS)\corelib_combocmn.o \
 	$(OBJS)\corelib_cmdproc.o \
@@ -2984,6 +3041,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.o \
 	$(OBJS)\corelib_evtloopcmn.o \
 	$(OBJS)\corelib_fddlgcmn.o \
+	$(OBJS)\corelib_filepickercmn.o \
+	$(OBJS)\corelib_fontpickercmn.o \
 	$(OBJS)\corelib_fldlgcmn.o \
 	$(OBJS)\corelib_fontcmn.o \
 	$(OBJS)\corelib_fontenumcmn.o \
@@ -3014,6 +3073,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.o \
 	$(OBJS)\corelib_nbkbase.o \
 	$(OBJS)\corelib_paper.o \
+	$(OBJS)\corelib_pickerbase.o \
 	$(OBJS)\corelib_popupcmn.o \
 	$(OBJS)\corelib_prntbase.o \
 	$(OBJS)\corelib_quantize.o \
@@ -4501,6 +4561,15 @@ $(OBJS)\monodll_gsocket.o: ../../src/msw/gsocket.cpp
 $(OBJS)\monodll_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_clrpickerg.o: ../../src/generic/clrpickerg.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monodll_fontpickerg.o: ../../src/generic/fontpickerg.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monodll_filepickerg.o: ../../src/generic/filepickerg.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_colordlg.o: ../../src/msw/colordlg.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -4762,12 +4831,18 @@ $(OBJS)\monodll_xh_choic.o: ../../src/xrc/xh_choic.cpp
 $(OBJS)\monodll_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_xh_combo.o: ../../src/xrc/xh_combo.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\monodll_xh_datectrl.o: ../../src/xrc/xh_datectrl.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_xh_dirpicker.o: ../../src/xrc/xh_dirpicker.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_xh_dlg.o: ../../src/xrc/xh_dlg.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -4777,6 +4852,12 @@ $(OBJS)\monodll_xh_frame.o: ../../src/xrc/xh_frame.cpp
 $(OBJS)\monodll_xh_mdi.o: ../../src/xrc/xh_mdi.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_xh_filepicker.o: ../../src/xrc/xh_filepicker.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monodll_xh_fontpicker.o: ../../src/xrc/xh_fontpicker.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_xh_gauge.o: ../../src/xrc/xh_gauge.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -5531,6 +5612,11 @@ $(OBJS)\monodll_clipcmn.o: ../../src/common/clipcmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_clrpickercmn.o: ../../src/common/clrpickercmn.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_colourcmn.o: ../../src/common/colourcmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -5631,6 +5717,16 @@ $(OBJS)\monodll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_filepickercmn.o: ../../src/common/filepickercmn.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_fontpickercmn.o: ../../src/common/fontpickercmn.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_fldlgcmn.o: ../../src/common/fldlgcmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -5781,6 +5877,11 @@ $(OBJS)\monodll_paper.o: ../../src/common/paper.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_pickerbase.o: ../../src/common/pickerbase.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_popupcmn.o: ../../src/common/popupcmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -6415,6 +6516,15 @@ $(OBJS)\monolib_gsocket.o: ../../src/msw/gsocket.cpp
 $(OBJS)\monolib_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_clrpickerg.o: ../../src/generic/clrpickerg.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monolib_fontpickerg.o: ../../src/generic/fontpickerg.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monolib_filepickerg.o: ../../src/generic/filepickerg.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_colordlg.o: ../../src/msw/colordlg.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -6676,12 +6786,18 @@ $(OBJS)\monolib_xh_choic.o: ../../src/xrc/xh_choic.cpp
 $(OBJS)\monolib_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_xh_combo.o: ../../src/xrc/xh_combo.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\monolib_xh_datectrl.o: ../../src/xrc/xh_datectrl.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_xh_dirpicker.o: ../../src/xrc/xh_dirpicker.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_xh_dlg.o: ../../src/xrc/xh_dlg.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -6691,6 +6807,12 @@ $(OBJS)\monolib_xh_frame.o: ../../src/xrc/xh_frame.cpp
 $(OBJS)\monolib_xh_mdi.o: ../../src/xrc/xh_mdi.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_xh_filepicker.o: ../../src/xrc/xh_filepicker.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\monolib_xh_fontpicker.o: ../../src/xrc/xh_fontpicker.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_xh_gauge.o: ../../src/xrc/xh_gauge.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -7445,6 +7567,11 @@ $(OBJS)\monolib_clipcmn.o: ../../src/common/clipcmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_clrpickercmn.o: ../../src/common/clrpickercmn.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_colourcmn.o: ../../src/common/colourcmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -7545,6 +7672,16 @@ $(OBJS)\monolib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_filepickercmn.o: ../../src/common/filepickercmn.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_fontpickercmn.o: ../../src/common/fontpickercmn.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_fldlgcmn.o: ../../src/common/fldlgcmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -7695,6 +7832,11 @@ $(OBJS)\monolib_paper.o: ../../src/common/paper.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_pickerbase.o: ../../src/common/pickerbase.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_popupcmn.o: ../../src/common/popupcmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -8647,6 +8789,15 @@ $(OBJS)\coredll_mslu.o: ../../src/msw/mslu.cpp
 $(OBJS)\coredll_volume.o: ../../src/msw/volume.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\coredll_clrpickerg.o: ../../src/generic/clrpickerg.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\coredll_fontpickerg.o: ../../src/generic/fontpickerg.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\coredll_filepickerg.o: ../../src/generic/filepickerg.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\coredll_colordlg.o: ../../src/msw/colordlg.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -9431,6 +9582,11 @@ $(OBJS)\coredll_clipcmn.o: ../../src/common/clipcmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_clrpickercmn.o: ../../src/common/clrpickercmn.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_colourcmn.o: ../../src/common/colourcmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9531,6 +9687,16 @@ $(OBJS)\coredll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_filepickercmn.o: ../../src/common/filepickercmn.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_fontpickercmn.o: ../../src/common/fontpickercmn.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_fldlgcmn.o: ../../src/common/fldlgcmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9681,6 +9847,11 @@ $(OBJS)\coredll_paper.o: ../../src/common/paper.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_pickerbase.o: ../../src/common/pickerbase.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_popupcmn.o: ../../src/common/popupcmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9935,6 +10106,15 @@ $(OBJS)\corelib_mslu.o: ../../src/msw/mslu.cpp
 $(OBJS)\corelib_volume.o: ../../src/msw/volume.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\corelib_clrpickerg.o: ../../src/generic/clrpickerg.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\corelib_fontpickerg.o: ../../src/generic/fontpickerg.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\corelib_filepickerg.o: ../../src/generic/filepickerg.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\corelib_colordlg.o: ../../src/msw/colordlg.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -10719,6 +10899,11 @@ $(OBJS)\corelib_clipcmn.o: ../../src/common/clipcmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_clrpickercmn.o: ../../src/common/clrpickercmn.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_colourcmn.o: ../../src/common/colourcmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10819,6 +11004,16 @@ $(OBJS)\corelib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_filepickercmn.o: ../../src/common/filepickercmn.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_fontpickercmn.o: ../../src/common/fontpickercmn.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_fldlgcmn.o: ../../src/common/fldlgcmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10969,6 +11164,11 @@ $(OBJS)\corelib_paper.o: ../../src/common/paper.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_pickerbase.o: ../../src/common/pickerbase.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_popupcmn.o: ../../src/common/popupcmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -11658,12 +11858,18 @@ $(OBJS)\xrcdll_xh_choic.o: ../../src/xrc/xh_choic.cpp
 $(OBJS)\xrcdll_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrcdll_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
+	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrcdll_xh_combo.o: ../../src/xrc/xh_combo.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\xrcdll_xh_datectrl.o: ../../src/xrc/xh_datectrl.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrcdll_xh_dirpicker.o: ../../src/xrc/xh_dirpicker.cpp
+	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrcdll_xh_dlg.o: ../../src/xrc/xh_dlg.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -11673,6 +11879,12 @@ $(OBJS)\xrcdll_xh_frame.o: ../../src/xrc/xh_frame.cpp
 $(OBJS)\xrcdll_xh_mdi.o: ../../src/xrc/xh_mdi.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrcdll_xh_filepicker.o: ../../src/xrc/xh_filepicker.cpp
+	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\xrcdll_xh_fontpicker.o: ../../src/xrc/xh_fontpicker.cpp
+	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrcdll_xh_gauge.o: ../../src/xrc/xh_gauge.cpp
 	$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -11799,12 +12011,18 @@ $(OBJS)\xrclib_xh_choic.o: ../../src/xrc/xh_choic.cpp
 $(OBJS)\xrclib_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrclib_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
+	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrclib_xh_combo.o: ../../src/xrc/xh_combo.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\xrclib_xh_datectrl.o: ../../src/xrc/xh_datectrl.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrclib_xh_dirpicker.o: ../../src/xrc/xh_dirpicker.cpp
+	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrclib_xh_dlg.o: ../../src/xrc/xh_dlg.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -11814,6 +12032,12 @@ $(OBJS)\xrclib_xh_frame.o: ../../src/xrc/xh_frame.cpp
 $(OBJS)\xrclib_xh_mdi.o: ../../src/xrc/xh_mdi.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\xrclib_xh_filepicker.o: ../../src/xrc/xh_filepicker.cpp
+	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\xrclib_xh_fontpicker.o: ../../src/xrc/xh_fontpicker.cpp
+	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\xrclib_xh_gauge.o: ../../src/xrc/xh_gauge.cpp
 	$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
 
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index ae3aebebd6..8ba2aad2e4 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -985,11 +985,15 @@ XRCDLL_OBJECTS =  \
 	$(OBJS)\xrcdll_xh_chckl.obj \
 	$(OBJS)\xrcdll_xh_choic.obj \
 	$(OBJS)\xrcdll_xh_choicbk.obj \
+	$(OBJS)\xrcdll_xh_clrpicker.obj \
 	$(OBJS)\xrcdll_xh_combo.obj \
 	$(OBJS)\xrcdll_xh_datectrl.obj \
+	$(OBJS)\xrcdll_xh_dirpicker.obj \
 	$(OBJS)\xrcdll_xh_dlg.obj \
 	$(OBJS)\xrcdll_xh_frame.obj \
 	$(OBJS)\xrcdll_xh_mdi.obj \
+	$(OBJS)\xrcdll_xh_filepicker.obj \
+	$(OBJS)\xrcdll_xh_fontpicker.obj \
 	$(OBJS)\xrcdll_xh_gauge.obj \
 	$(OBJS)\xrcdll_xh_gdctl.obj \
 	$(OBJS)\xrcdll_xh_grid.obj \
@@ -1043,11 +1047,15 @@ XRCLIB_OBJECTS =  \
 	$(OBJS)\xrclib_xh_chckl.obj \
 	$(OBJS)\xrclib_xh_choic.obj \
 	$(OBJS)\xrclib_xh_choicbk.obj \
+	$(OBJS)\xrclib_xh_clrpicker.obj \
 	$(OBJS)\xrclib_xh_combo.obj \
 	$(OBJS)\xrclib_xh_datectrl.obj \
+	$(OBJS)\xrclib_xh_dirpicker.obj \
 	$(OBJS)\xrclib_xh_dlg.obj \
 	$(OBJS)\xrclib_xh_frame.obj \
 	$(OBJS)\xrclib_xh_mdi.obj \
+	$(OBJS)\xrclib_xh_filepicker.obj \
+	$(OBJS)\xrclib_xh_fontpicker.obj \
 	$(OBJS)\xrclib_xh_gauge.obj \
 	$(OBJS)\xrclib_xh_gdctl.obj \
 	$(OBJS)\xrclib_xh_grid.obj \
@@ -1276,11 +1284,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_xh_chckl.obj \
 	$(OBJS)\monodll_xh_choic.obj \
 	$(OBJS)\monodll_xh_choicbk.obj \
+	$(OBJS)\monodll_xh_clrpicker.obj \
 	$(OBJS)\monodll_xh_combo.obj \
 	$(OBJS)\monodll_xh_datectrl.obj \
+	$(OBJS)\monodll_xh_dirpicker.obj \
 	$(OBJS)\monodll_xh_dlg.obj \
 	$(OBJS)\monodll_xh_frame.obj \
 	$(OBJS)\monodll_xh_mdi.obj \
+	$(OBJS)\monodll_xh_filepicker.obj \
+	$(OBJS)\monodll_xh_fontpicker.obj \
 	$(OBJS)\monodll_xh_gauge.obj \
 	$(OBJS)\monodll_xh_gdctl.obj \
 	$(OBJS)\monodll_xh_grid.obj \
@@ -1365,6 +1377,9 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpwin.obj \
 	$(OBJS)\monodll_automtn.obj \
 	$(OBJS)\monodll_uuid.obj \
+	$(OBJS)\monodll_clrpickerg.obj \
+	$(OBJS)\monodll_fontpickerg.obj \
+	$(OBJS)\monodll_filepickerg.obj \
 	$(OBJS)\monodll_statusbr.obj \
 	$(OBJS)\monodll_prntdlgg.obj \
 	$(OBJS)\monodll_accel.obj \
@@ -1422,6 +1437,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
+	$(OBJS)\monodll_clrpickercmn.obj \
 	$(OBJS)\monodll_colourcmn.obj \
 	$(OBJS)\monodll_combocmn.obj \
 	$(OBJS)\monodll_cmdproc.obj \
@@ -1442,6 +1458,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.obj \
 	$(OBJS)\monodll_evtloopcmn.obj \
 	$(OBJS)\monodll_fddlgcmn.obj \
+	$(OBJS)\monodll_filepickercmn.obj \
+	$(OBJS)\monodll_fontpickercmn.obj \
 	$(OBJS)\monodll_fldlgcmn.obj \
 	$(OBJS)\monodll_fontcmn.obj \
 	$(OBJS)\monodll_fontenumcmn.obj \
@@ -1472,6 +1490,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.obj \
 	$(OBJS)\monodll_nbkbase.obj \
 	$(OBJS)\monodll_paper.obj \
+	$(OBJS)\monodll_pickerbase.obj \
 	$(OBJS)\monodll_popupcmn.obj \
 	$(OBJS)\monodll_prntbase.obj \
 	$(OBJS)\monodll_quantize.obj \
@@ -1627,6 +1646,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
+	$(OBJS)\monodll_clrpickercmn.obj \
 	$(OBJS)\monodll_colourcmn.obj \
 	$(OBJS)\monodll_combocmn.obj \
 	$(OBJS)\monodll_cmdproc.obj \
@@ -1647,6 +1667,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_effects.obj \
 	$(OBJS)\monodll_evtloopcmn.obj \
 	$(OBJS)\monodll_fddlgcmn.obj \
+	$(OBJS)\monodll_filepickercmn.obj \
+	$(OBJS)\monodll_fontpickercmn.obj \
 	$(OBJS)\monodll_fldlgcmn.obj \
 	$(OBJS)\monodll_fontcmn.obj \
 	$(OBJS)\monodll_fontenumcmn.obj \
@@ -1677,6 +1699,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_menucmn.obj \
 	$(OBJS)\monodll_nbkbase.obj \
 	$(OBJS)\monodll_paper.obj \
+	$(OBJS)\monodll_pickerbase.obj \
 	$(OBJS)\monodll_popupcmn.obj \
 	$(OBJS)\monodll_prntbase.obj \
 	$(OBJS)\monodll_quantize.obj \
@@ -1836,11 +1859,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_xh_chckl.obj \
 	$(OBJS)\monolib_xh_choic.obj \
 	$(OBJS)\monolib_xh_choicbk.obj \
+	$(OBJS)\monolib_xh_clrpicker.obj \
 	$(OBJS)\monolib_xh_combo.obj \
 	$(OBJS)\monolib_xh_datectrl.obj \
+	$(OBJS)\monolib_xh_dirpicker.obj \
 	$(OBJS)\monolib_xh_dlg.obj \
 	$(OBJS)\monolib_xh_frame.obj \
 	$(OBJS)\monolib_xh_mdi.obj \
+	$(OBJS)\monolib_xh_filepicker.obj \
+	$(OBJS)\monolib_xh_fontpicker.obj \
 	$(OBJS)\monolib_xh_gauge.obj \
 	$(OBJS)\monolib_xh_gdctl.obj \
 	$(OBJS)\monolib_xh_grid.obj \
@@ -1925,6 +1952,9 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpwin.obj \
 	$(OBJS)\monolib_automtn.obj \
 	$(OBJS)\monolib_uuid.obj \
+	$(OBJS)\monolib_clrpickerg.obj \
+	$(OBJS)\monolib_fontpickerg.obj \
+	$(OBJS)\monolib_filepickerg.obj \
 	$(OBJS)\monolib_statusbr.obj \
 	$(OBJS)\monolib_prntdlgg.obj \
 	$(OBJS)\monolib_accel.obj \
@@ -1982,6 +2012,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
+	$(OBJS)\monolib_clrpickercmn.obj \
 	$(OBJS)\monolib_colourcmn.obj \
 	$(OBJS)\monolib_combocmn.obj \
 	$(OBJS)\monolib_cmdproc.obj \
@@ -2002,6 +2033,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.obj \
 	$(OBJS)\monolib_evtloopcmn.obj \
 	$(OBJS)\monolib_fddlgcmn.obj \
+	$(OBJS)\monolib_filepickercmn.obj \
+	$(OBJS)\monolib_fontpickercmn.obj \
 	$(OBJS)\monolib_fldlgcmn.obj \
 	$(OBJS)\monolib_fontcmn.obj \
 	$(OBJS)\monolib_fontenumcmn.obj \
@@ -2032,6 +2065,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.obj \
 	$(OBJS)\monolib_nbkbase.obj \
 	$(OBJS)\monolib_paper.obj \
+	$(OBJS)\monolib_pickerbase.obj \
 	$(OBJS)\monolib_popupcmn.obj \
 	$(OBJS)\monolib_prntbase.obj \
 	$(OBJS)\monolib_quantize.obj \
@@ -2187,6 +2221,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
+	$(OBJS)\monolib_clrpickercmn.obj \
 	$(OBJS)\monolib_colourcmn.obj \
 	$(OBJS)\monolib_combocmn.obj \
 	$(OBJS)\monolib_cmdproc.obj \
@@ -2207,6 +2242,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_effects.obj \
 	$(OBJS)\monolib_evtloopcmn.obj \
 	$(OBJS)\monolib_fddlgcmn.obj \
+	$(OBJS)\monolib_filepickercmn.obj \
+	$(OBJS)\monolib_fontpickercmn.obj \
 	$(OBJS)\monolib_fldlgcmn.obj \
 	$(OBJS)\monolib_fontcmn.obj \
 	$(OBJS)\monolib_fontenumcmn.obj \
@@ -2237,6 +2274,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_menucmn.obj \
 	$(OBJS)\monolib_nbkbase.obj \
 	$(OBJS)\monolib_paper.obj \
+	$(OBJS)\monolib_pickerbase.obj \
 	$(OBJS)\monolib_popupcmn.obj \
 	$(OBJS)\monolib_prntbase.obj \
 	$(OBJS)\monolib_quantize.obj \
@@ -2441,6 +2479,9 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_helpwin.obj \
 	$(OBJS)\coredll_automtn.obj \
 	$(OBJS)\coredll_uuid.obj \
+	$(OBJS)\coredll_clrpickerg.obj \
+	$(OBJS)\coredll_fontpickerg.obj \
+	$(OBJS)\coredll_filepickerg.obj \
 	$(OBJS)\coredll_statusbr.obj \
 	$(OBJS)\coredll_prntdlgg.obj \
 	$(OBJS)\coredll_accel.obj \
@@ -2498,6 +2539,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
+	$(OBJS)\coredll_clrpickercmn.obj \
 	$(OBJS)\coredll_colourcmn.obj \
 	$(OBJS)\coredll_combocmn.obj \
 	$(OBJS)\coredll_cmdproc.obj \
@@ -2518,6 +2560,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.obj \
 	$(OBJS)\coredll_evtloopcmn.obj \
 	$(OBJS)\coredll_fddlgcmn.obj \
+	$(OBJS)\coredll_filepickercmn.obj \
+	$(OBJS)\coredll_fontpickercmn.obj \
 	$(OBJS)\coredll_fldlgcmn.obj \
 	$(OBJS)\coredll_fontcmn.obj \
 	$(OBJS)\coredll_fontenumcmn.obj \
@@ -2548,6 +2592,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.obj \
 	$(OBJS)\coredll_nbkbase.obj \
 	$(OBJS)\coredll_paper.obj \
+	$(OBJS)\coredll_pickerbase.obj \
 	$(OBJS)\coredll_popupcmn.obj \
 	$(OBJS)\coredll_prntbase.obj \
 	$(OBJS)\coredll_quantize.obj \
@@ -2703,6 +2748,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
+	$(OBJS)\coredll_clrpickercmn.obj \
 	$(OBJS)\coredll_colourcmn.obj \
 	$(OBJS)\coredll_combocmn.obj \
 	$(OBJS)\coredll_cmdproc.obj \
@@ -2723,6 +2769,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_effects.obj \
 	$(OBJS)\coredll_evtloopcmn.obj \
 	$(OBJS)\coredll_fddlgcmn.obj \
+	$(OBJS)\coredll_filepickercmn.obj \
+	$(OBJS)\coredll_fontpickercmn.obj \
 	$(OBJS)\coredll_fldlgcmn.obj \
 	$(OBJS)\coredll_fontcmn.obj \
 	$(OBJS)\coredll_fontenumcmn.obj \
@@ -2753,6 +2801,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_menucmn.obj \
 	$(OBJS)\coredll_nbkbase.obj \
 	$(OBJS)\coredll_paper.obj \
+	$(OBJS)\coredll_pickerbase.obj \
 	$(OBJS)\coredll_popupcmn.obj \
 	$(OBJS)\coredll_prntbase.obj \
 	$(OBJS)\coredll_quantize.obj \
@@ -2860,6 +2909,9 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_helpwin.obj \
 	$(OBJS)\corelib_automtn.obj \
 	$(OBJS)\corelib_uuid.obj \
+	$(OBJS)\corelib_clrpickerg.obj \
+	$(OBJS)\corelib_fontpickerg.obj \
+	$(OBJS)\corelib_filepickerg.obj \
 	$(OBJS)\corelib_statusbr.obj \
 	$(OBJS)\corelib_prntdlgg.obj \
 	$(OBJS)\corelib_accel.obj \
@@ -2917,6 +2969,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
+	$(OBJS)\corelib_clrpickercmn.obj \
 	$(OBJS)\corelib_colourcmn.obj \
 	$(OBJS)\corelib_combocmn.obj \
 	$(OBJS)\corelib_cmdproc.obj \
@@ -2937,6 +2990,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.obj \
 	$(OBJS)\corelib_evtloopcmn.obj \
 	$(OBJS)\corelib_fddlgcmn.obj \
+	$(OBJS)\corelib_filepickercmn.obj \
+	$(OBJS)\corelib_fontpickercmn.obj \
 	$(OBJS)\corelib_fldlgcmn.obj \
 	$(OBJS)\corelib_fontcmn.obj \
 	$(OBJS)\corelib_fontenumcmn.obj \
@@ -2967,6 +3022,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.obj \
 	$(OBJS)\corelib_nbkbase.obj \
 	$(OBJS)\corelib_paper.obj \
+	$(OBJS)\corelib_pickerbase.obj \
 	$(OBJS)\corelib_popupcmn.obj \
 	$(OBJS)\corelib_prntbase.obj \
 	$(OBJS)\corelib_quantize.obj \
@@ -3122,6 +3178,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
+	$(OBJS)\corelib_clrpickercmn.obj \
 	$(OBJS)\corelib_colourcmn.obj \
 	$(OBJS)\corelib_combocmn.obj \
 	$(OBJS)\corelib_cmdproc.obj \
@@ -3142,6 +3199,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_effects.obj \
 	$(OBJS)\corelib_evtloopcmn.obj \
 	$(OBJS)\corelib_fddlgcmn.obj \
+	$(OBJS)\corelib_filepickercmn.obj \
+	$(OBJS)\corelib_fontpickercmn.obj \
 	$(OBJS)\corelib_fldlgcmn.obj \
 	$(OBJS)\corelib_fontcmn.obj \
 	$(OBJS)\corelib_fontenumcmn.obj \
@@ -3172,6 +3231,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_menucmn.obj \
 	$(OBJS)\corelib_nbkbase.obj \
 	$(OBJS)\corelib_paper.obj \
+	$(OBJS)\corelib_pickerbase.obj \
 	$(OBJS)\corelib_popupcmn.obj \
 	$(OBJS)\corelib_prntbase.obj \
 	$(OBJS)\corelib_quantize.obj \
@@ -4706,6 +4766,15 @@ $(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 $(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
@@ -4967,12 +5036,18 @@ $(OBJS)\monodll_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monodll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
 $(OBJS)\monodll_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
@@ -4982,6 +5057,12 @@ $(OBJS)\monodll_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monodll_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
+$(OBJS)\monodll_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
@@ -5632,6 +5713,11 @@ $(OBJS)\monodll_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -5732,6 +5818,16 @@ $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -5882,6 +5978,11 @@ $(OBJS)\monodll_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -6516,6 +6617,15 @@ $(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 $(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -6777,12 +6887,18 @@ $(OBJS)\monolib_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monolib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
 $(OBJS)\monolib_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -6792,6 +6908,12 @@ $(OBJS)\monolib_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monolib_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
+$(OBJS)\monolib_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -7442,6 +7564,11 @@ $(OBJS)\monolib_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -7542,6 +7669,16 @@ $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -7692,6 +7829,11 @@ $(OBJS)\monolib_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -8644,6 +8786,15 @@ $(OBJS)\coredll_mslu.obj: ..\..\src\msw\mslu.cpp
 $(OBJS)\coredll_volume.obj: ..\..\src\msw\volume.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 
+$(OBJS)\coredll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+
+$(OBJS)\coredll_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+
+$(OBJS)\coredll_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+
 $(OBJS)\coredll_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 
@@ -9324,6 +9475,11 @@ $(OBJS)\coredll_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -9424,6 +9580,16 @@ $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -9574,6 +9740,11 @@ $(OBJS)\coredll_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -9828,6 +9999,15 @@ $(OBJS)\corelib_mslu.obj: ..\..\src\msw\mslu.cpp
 $(OBJS)\corelib_volume.obj: ..\..\src\msw\volume.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 
+$(OBJS)\corelib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+
+$(OBJS)\corelib_fontpickerg.obj: ..\..\src\generic\fontpickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+
+$(OBJS)\corelib_filepickerg.obj: ..\..\src\generic\filepickerg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+
 $(OBJS)\corelib_colordlg.obj: ..\..\src\msw\colordlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 
@@ -10508,6 +10688,11 @@ $(OBJS)\corelib_clipcmn.obj: ..\..\src\common\clipcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_clrpickercmn.obj: ..\..\src\common\clrpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_colourcmn.obj: ..\..\src\common\colourcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -10608,6 +10793,16 @@ $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_filepickercmn.obj: ..\..\src\common\filepickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_fontpickercmn.obj: ..\..\src\common\fontpickercmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_fldlgcmn.obj: ..\..\src\common\fldlgcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -10758,6 +10953,11 @@ $(OBJS)\corelib_paper.obj: ..\..\src\common\paper.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_pickerbase.obj: ..\..\src\common\pickerbase.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_popupcmn.obj: ..\..\src\common\popupcmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -11447,12 +11647,18 @@ $(OBJS)\xrcdll_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrcdll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
 $(OBJS)\xrcdll_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
@@ -11462,6 +11668,12 @@ $(OBJS)\xrcdll_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrcdll_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
+$(OBJS)\xrcdll_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
+
+$(OBJS)\xrcdll_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
+
 $(OBJS)\xrcdll_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) $**
 
@@ -11588,12 +11800,18 @@ $(OBJS)\xrclib_xh_choic.obj: ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrclib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_combo.obj: ..\..\src\xrc\xh_combo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
 $(OBJS)\xrclib_xh_datectrl.obj: ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_dirpicker.obj: ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_dlg.obj: ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
@@ -11603,6 +11821,12 @@ $(OBJS)\xrclib_xh_frame.obj: ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrclib_xh_mdi.obj: ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
+$(OBJS)\xrclib_xh_filepicker.obj: ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
+
+$(OBJS)\xrclib_xh_fontpicker.obj: ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
+
 $(OBJS)\xrclib_xh_gauge.obj: ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) $**
 
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index 4a58d6cf10..4cf9c594fe 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -141,11 +141,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_xh_chckl.obj &
 	$(OBJS)\monodll_xh_choic.obj &
 	$(OBJS)\monodll_xh_choicbk.obj &
+	$(OBJS)\monodll_xh_clrpicker.obj &
 	$(OBJS)\monodll_xh_combo.obj &
 	$(OBJS)\monodll_xh_datectrl.obj &
+	$(OBJS)\monodll_xh_dirpicker.obj &
 	$(OBJS)\monodll_xh_dlg.obj &
 	$(OBJS)\monodll_xh_frame.obj &
 	$(OBJS)\monodll_xh_mdi.obj &
+	$(OBJS)\monodll_xh_filepicker.obj &
+	$(OBJS)\monodll_xh_fontpicker.obj &
 	$(OBJS)\monodll_xh_gauge.obj &
 	$(OBJS)\monodll_xh_gdctl.obj &
 	$(OBJS)\monodll_xh_grid.obj &
@@ -232,6 +236,9 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_helpwin.obj &
 	$(OBJS)\monodll_automtn.obj &
 	$(OBJS)\monodll_uuid.obj &
+	$(OBJS)\monodll_clrpickerg.obj &
+	$(OBJS)\monodll_fontpickerg.obj &
+	$(OBJS)\monodll_filepickerg.obj &
 	$(OBJS)\monodll_statusbr.obj &
 	$(OBJS)\monodll_prntdlgg.obj &
 	$(OBJS)\monodll_accel.obj &
@@ -289,6 +296,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
+	$(OBJS)\monodll_clrpickercmn.obj &
 	$(OBJS)\monodll_colourcmn.obj &
 	$(OBJS)\monodll_combocmn.obj &
 	$(OBJS)\monodll_cmdproc.obj &
@@ -309,6 +317,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_effects.obj &
 	$(OBJS)\monodll_evtloopcmn.obj &
 	$(OBJS)\monodll_fddlgcmn.obj &
+	$(OBJS)\monodll_filepickercmn.obj &
+	$(OBJS)\monodll_fontpickercmn.obj &
 	$(OBJS)\monodll_fldlgcmn.obj &
 	$(OBJS)\monodll_fontcmn.obj &
 	$(OBJS)\monodll_fontenumcmn.obj &
@@ -339,6 +349,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_menucmn.obj &
 	$(OBJS)\monodll_nbkbase.obj &
 	$(OBJS)\monodll_paper.obj &
+	$(OBJS)\monodll_pickerbase.obj &
 	$(OBJS)\monodll_popupcmn.obj &
 	$(OBJS)\monodll_prntbase.obj &
 	$(OBJS)\monodll_quantize.obj &
@@ -496,6 +507,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
+	$(OBJS)\monodll_clrpickercmn.obj &
 	$(OBJS)\monodll_colourcmn.obj &
 	$(OBJS)\monodll_combocmn.obj &
 	$(OBJS)\monodll_cmdproc.obj &
@@ -516,6 +528,8 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_effects.obj &
 	$(OBJS)\monodll_evtloopcmn.obj &
 	$(OBJS)\monodll_fddlgcmn.obj &
+	$(OBJS)\monodll_filepickercmn.obj &
+	$(OBJS)\monodll_fontpickercmn.obj &
 	$(OBJS)\monodll_fldlgcmn.obj &
 	$(OBJS)\monodll_fontcmn.obj &
 	$(OBJS)\monodll_fontenumcmn.obj &
@@ -546,6 +560,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_menucmn.obj &
 	$(OBJS)\monodll_nbkbase.obj &
 	$(OBJS)\monodll_paper.obj &
+	$(OBJS)\monodll_pickerbase.obj &
 	$(OBJS)\monodll_popupcmn.obj &
 	$(OBJS)\monodll_prntbase.obj &
 	$(OBJS)\monodll_quantize.obj &
@@ -705,11 +720,15 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_xh_chckl.obj &
 	$(OBJS)\monolib_xh_choic.obj &
 	$(OBJS)\monolib_xh_choicbk.obj &
+	$(OBJS)\monolib_xh_clrpicker.obj &
 	$(OBJS)\monolib_xh_combo.obj &
 	$(OBJS)\monolib_xh_datectrl.obj &
+	$(OBJS)\monolib_xh_dirpicker.obj &
 	$(OBJS)\monolib_xh_dlg.obj &
 	$(OBJS)\monolib_xh_frame.obj &
 	$(OBJS)\monolib_xh_mdi.obj &
+	$(OBJS)\monolib_xh_filepicker.obj &
+	$(OBJS)\monolib_xh_fontpicker.obj &
 	$(OBJS)\monolib_xh_gauge.obj &
 	$(OBJS)\monolib_xh_gdctl.obj &
 	$(OBJS)\monolib_xh_grid.obj &
@@ -796,6 +815,9 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_helpwin.obj &
 	$(OBJS)\monolib_automtn.obj &
 	$(OBJS)\monolib_uuid.obj &
+	$(OBJS)\monolib_clrpickerg.obj &
+	$(OBJS)\monolib_fontpickerg.obj &
+	$(OBJS)\monolib_filepickerg.obj &
 	$(OBJS)\monolib_statusbr.obj &
 	$(OBJS)\monolib_prntdlgg.obj &
 	$(OBJS)\monolib_accel.obj &
@@ -853,6 +875,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
+	$(OBJS)\monolib_clrpickercmn.obj &
 	$(OBJS)\monolib_colourcmn.obj &
 	$(OBJS)\monolib_combocmn.obj &
 	$(OBJS)\monolib_cmdproc.obj &
@@ -873,6 +896,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_effects.obj &
 	$(OBJS)\monolib_evtloopcmn.obj &
 	$(OBJS)\monolib_fddlgcmn.obj &
+	$(OBJS)\monolib_filepickercmn.obj &
+	$(OBJS)\monolib_fontpickercmn.obj &
 	$(OBJS)\monolib_fldlgcmn.obj &
 	$(OBJS)\monolib_fontcmn.obj &
 	$(OBJS)\monolib_fontenumcmn.obj &
@@ -903,6 +928,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_menucmn.obj &
 	$(OBJS)\monolib_nbkbase.obj &
 	$(OBJS)\monolib_paper.obj &
+	$(OBJS)\monolib_pickerbase.obj &
 	$(OBJS)\monolib_popupcmn.obj &
 	$(OBJS)\monolib_prntbase.obj &
 	$(OBJS)\monolib_quantize.obj &
@@ -1060,6 +1086,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
+	$(OBJS)\monolib_clrpickercmn.obj &
 	$(OBJS)\monolib_colourcmn.obj &
 	$(OBJS)\monolib_combocmn.obj &
 	$(OBJS)\monolib_cmdproc.obj &
@@ -1080,6 +1107,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_effects.obj &
 	$(OBJS)\monolib_evtloopcmn.obj &
 	$(OBJS)\monolib_fddlgcmn.obj &
+	$(OBJS)\monolib_filepickercmn.obj &
+	$(OBJS)\monolib_fontpickercmn.obj &
 	$(OBJS)\monolib_fldlgcmn.obj &
 	$(OBJS)\monolib_fontcmn.obj &
 	$(OBJS)\monolib_fontenumcmn.obj &
@@ -1110,6 +1139,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_menucmn.obj &
 	$(OBJS)\monolib_nbkbase.obj &
 	$(OBJS)\monolib_paper.obj &
+	$(OBJS)\monolib_pickerbase.obj &
 	$(OBJS)\monolib_popupcmn.obj &
 	$(OBJS)\monolib_prntbase.obj &
 	$(OBJS)\monolib_quantize.obj &
@@ -1305,6 +1335,9 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_helpwin.obj &
 	$(OBJS)\coredll_automtn.obj &
 	$(OBJS)\coredll_uuid.obj &
+	$(OBJS)\coredll_clrpickerg.obj &
+	$(OBJS)\coredll_fontpickerg.obj &
+	$(OBJS)\coredll_filepickerg.obj &
 	$(OBJS)\coredll_statusbr.obj &
 	$(OBJS)\coredll_prntdlgg.obj &
 	$(OBJS)\coredll_accel.obj &
@@ -1362,6 +1395,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
+	$(OBJS)\coredll_clrpickercmn.obj &
 	$(OBJS)\coredll_colourcmn.obj &
 	$(OBJS)\coredll_combocmn.obj &
 	$(OBJS)\coredll_cmdproc.obj &
@@ -1382,6 +1416,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_effects.obj &
 	$(OBJS)\coredll_evtloopcmn.obj &
 	$(OBJS)\coredll_fddlgcmn.obj &
+	$(OBJS)\coredll_filepickercmn.obj &
+	$(OBJS)\coredll_fontpickercmn.obj &
 	$(OBJS)\coredll_fldlgcmn.obj &
 	$(OBJS)\coredll_fontcmn.obj &
 	$(OBJS)\coredll_fontenumcmn.obj &
@@ -1412,6 +1448,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_menucmn.obj &
 	$(OBJS)\coredll_nbkbase.obj &
 	$(OBJS)\coredll_paper.obj &
+	$(OBJS)\coredll_pickerbase.obj &
 	$(OBJS)\coredll_popupcmn.obj &
 	$(OBJS)\coredll_prntbase.obj &
 	$(OBJS)\coredll_quantize.obj &
@@ -1569,6 +1606,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
+	$(OBJS)\coredll_clrpickercmn.obj &
 	$(OBJS)\coredll_colourcmn.obj &
 	$(OBJS)\coredll_combocmn.obj &
 	$(OBJS)\coredll_cmdproc.obj &
@@ -1589,6 +1627,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_effects.obj &
 	$(OBJS)\coredll_evtloopcmn.obj &
 	$(OBJS)\coredll_fddlgcmn.obj &
+	$(OBJS)\coredll_filepickercmn.obj &
+	$(OBJS)\coredll_fontpickercmn.obj &
 	$(OBJS)\coredll_fldlgcmn.obj &
 	$(OBJS)\coredll_fontcmn.obj &
 	$(OBJS)\coredll_fontenumcmn.obj &
@@ -1619,6 +1659,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_menucmn.obj &
 	$(OBJS)\coredll_nbkbase.obj &
 	$(OBJS)\coredll_paper.obj &
+	$(OBJS)\coredll_pickerbase.obj &
 	$(OBJS)\coredll_popupcmn.obj &
 	$(OBJS)\coredll_prntbase.obj &
 	$(OBJS)\coredll_quantize.obj &
@@ -1728,6 +1769,9 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_helpwin.obj &
 	$(OBJS)\corelib_automtn.obj &
 	$(OBJS)\corelib_uuid.obj &
+	$(OBJS)\corelib_clrpickerg.obj &
+	$(OBJS)\corelib_fontpickerg.obj &
+	$(OBJS)\corelib_filepickerg.obj &
 	$(OBJS)\corelib_statusbr.obj &
 	$(OBJS)\corelib_prntdlgg.obj &
 	$(OBJS)\corelib_accel.obj &
@@ -1785,6 +1829,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
+	$(OBJS)\corelib_clrpickercmn.obj &
 	$(OBJS)\corelib_colourcmn.obj &
 	$(OBJS)\corelib_combocmn.obj &
 	$(OBJS)\corelib_cmdproc.obj &
@@ -1805,6 +1850,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_effects.obj &
 	$(OBJS)\corelib_evtloopcmn.obj &
 	$(OBJS)\corelib_fddlgcmn.obj &
+	$(OBJS)\corelib_filepickercmn.obj &
+	$(OBJS)\corelib_fontpickercmn.obj &
 	$(OBJS)\corelib_fldlgcmn.obj &
 	$(OBJS)\corelib_fontcmn.obj &
 	$(OBJS)\corelib_fontenumcmn.obj &
@@ -1835,6 +1882,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_menucmn.obj &
 	$(OBJS)\corelib_nbkbase.obj &
 	$(OBJS)\corelib_paper.obj &
+	$(OBJS)\corelib_pickerbase.obj &
 	$(OBJS)\corelib_popupcmn.obj &
 	$(OBJS)\corelib_prntbase.obj &
 	$(OBJS)\corelib_quantize.obj &
@@ -1992,6 +2040,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
+	$(OBJS)\corelib_clrpickercmn.obj &
 	$(OBJS)\corelib_colourcmn.obj &
 	$(OBJS)\corelib_combocmn.obj &
 	$(OBJS)\corelib_cmdproc.obj &
@@ -2012,6 +2061,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_effects.obj &
 	$(OBJS)\corelib_evtloopcmn.obj &
 	$(OBJS)\corelib_fddlgcmn.obj &
+	$(OBJS)\corelib_filepickercmn.obj &
+	$(OBJS)\corelib_fontpickercmn.obj &
 	$(OBJS)\corelib_fldlgcmn.obj &
 	$(OBJS)\corelib_fontcmn.obj &
 	$(OBJS)\corelib_fontenumcmn.obj &
@@ -2042,6 +2093,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_menucmn.obj &
 	$(OBJS)\corelib_nbkbase.obj &
 	$(OBJS)\corelib_paper.obj &
+	$(OBJS)\corelib_pickerbase.obj &
 	$(OBJS)\corelib_popupcmn.obj &
 	$(OBJS)\corelib_prntbase.obj &
 	$(OBJS)\corelib_quantize.obj &
@@ -3400,11 +3452,15 @@ XRCDLL_OBJECTS =  &
 	$(OBJS)\xrcdll_xh_chckl.obj &
 	$(OBJS)\xrcdll_xh_choic.obj &
 	$(OBJS)\xrcdll_xh_choicbk.obj &
+	$(OBJS)\xrcdll_xh_clrpicker.obj &
 	$(OBJS)\xrcdll_xh_combo.obj &
 	$(OBJS)\xrcdll_xh_datectrl.obj &
+	$(OBJS)\xrcdll_xh_dirpicker.obj &
 	$(OBJS)\xrcdll_xh_dlg.obj &
 	$(OBJS)\xrcdll_xh_frame.obj &
 	$(OBJS)\xrcdll_xh_mdi.obj &
+	$(OBJS)\xrcdll_xh_filepicker.obj &
+	$(OBJS)\xrcdll_xh_fontpicker.obj &
 	$(OBJS)\xrcdll_xh_gauge.obj &
 	$(OBJS)\xrcdll_xh_gdctl.obj &
 	$(OBJS)\xrcdll_xh_grid.obj &
@@ -3456,11 +3512,15 @@ XRCLIB_OBJECTS =  &
 	$(OBJS)\xrclib_xh_chckl.obj &
 	$(OBJS)\xrclib_xh_choic.obj &
 	$(OBJS)\xrclib_xh_choicbk.obj &
+	$(OBJS)\xrclib_xh_clrpicker.obj &
 	$(OBJS)\xrclib_xh_combo.obj &
 	$(OBJS)\xrclib_xh_datectrl.obj &
+	$(OBJS)\xrclib_xh_dirpicker.obj &
 	$(OBJS)\xrclib_xh_dlg.obj &
 	$(OBJS)\xrclib_xh_frame.obj &
 	$(OBJS)\xrclib_xh_mdi.obj &
+	$(OBJS)\xrclib_xh_filepicker.obj &
+	$(OBJS)\xrclib_xh_fontpicker.obj &
 	$(OBJS)\xrclib_xh_gauge.obj &
 	$(OBJS)\xrclib_xh_gdctl.obj &
 	$(OBJS)\xrclib_xh_grid.obj &
@@ -4701,6 +4761,15 @@ $(OBJS)\monodll_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 $(OBJS)\monodll_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_clrpickerg.obj :  .AUTODEPEND ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
+$(OBJS)\monodll_fontpickerg.obj :  .AUTODEPEND ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
+$(OBJS)\monodll_filepickerg.obj :  .AUTODEPEND ..\..\src\generic\filepickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_colordlg.obj :  .AUTODEPEND ..\..\src\msw\colordlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
@@ -4962,12 +5031,18 @@ $(OBJS)\monodll_xh_choic.obj :  .AUTODEPEND ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monodll_xh_choicbk.obj :  .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_xh_clrpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_xh_combo.obj :  .AUTODEPEND ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
 $(OBJS)\monodll_xh_datectrl.obj :  .AUTODEPEND ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_xh_dirpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_xh_dlg.obj :  .AUTODEPEND ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
@@ -4977,6 +5052,12 @@ $(OBJS)\monodll_xh_frame.obj :  .AUTODEPEND ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monodll_xh_mdi.obj :  .AUTODEPEND ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_xh_filepicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
+$(OBJS)\monodll_xh_fontpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_xh_gauge.obj :  .AUTODEPEND ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
@@ -5731,6 +5812,11 @@ $(OBJS)\monodll_clipcmn.obj :  .AUTODEPEND ..\..\src\common\clipcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_clrpickercmn.obj :  .AUTODEPEND ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_colourcmn.obj :  .AUTODEPEND ..\..\src\common\colourcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -5831,6 +5917,16 @@ $(OBJS)\monodll_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_filepickercmn.obj :  .AUTODEPEND ..\..\src\common\filepickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
+$(OBJS)\monodll_fontpickercmn.obj :  .AUTODEPEND ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_fldlgcmn.obj :  .AUTODEPEND ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -5981,6 +6077,11 @@ $(OBJS)\monodll_paper.obj :  .AUTODEPEND ..\..\src\common\paper.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_pickerbase.obj :  .AUTODEPEND ..\..\src\common\pickerbase.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_popupcmn.obj :  .AUTODEPEND ..\..\src\common\popupcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -6615,6 +6716,15 @@ $(OBJS)\monolib_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 $(OBJS)\monolib_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_clrpickerg.obj :  .AUTODEPEND ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
+$(OBJS)\monolib_fontpickerg.obj :  .AUTODEPEND ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
+$(OBJS)\monolib_filepickerg.obj :  .AUTODEPEND ..\..\src\generic\filepickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_colordlg.obj :  .AUTODEPEND ..\..\src\msw\colordlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
@@ -6876,12 +6986,18 @@ $(OBJS)\monolib_xh_choic.obj :  .AUTODEPEND ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\monolib_xh_choicbk.obj :  .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_xh_clrpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_xh_combo.obj :  .AUTODEPEND ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
 $(OBJS)\monolib_xh_datectrl.obj :  .AUTODEPEND ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_xh_dirpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_xh_dlg.obj :  .AUTODEPEND ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
@@ -6891,6 +7007,12 @@ $(OBJS)\monolib_xh_frame.obj :  .AUTODEPEND ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\monolib_xh_mdi.obj :  .AUTODEPEND ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_xh_filepicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
+$(OBJS)\monolib_xh_fontpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_xh_gauge.obj :  .AUTODEPEND ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
@@ -7645,6 +7767,11 @@ $(OBJS)\monolib_clipcmn.obj :  .AUTODEPEND ..\..\src\common\clipcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_clrpickercmn.obj :  .AUTODEPEND ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_colourcmn.obj :  .AUTODEPEND ..\..\src\common\colourcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -7745,6 +7872,16 @@ $(OBJS)\monolib_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_filepickercmn.obj :  .AUTODEPEND ..\..\src\common\filepickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
+$(OBJS)\monolib_fontpickercmn.obj :  .AUTODEPEND ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_fldlgcmn.obj :  .AUTODEPEND ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -7895,6 +8032,11 @@ $(OBJS)\monolib_paper.obj :  .AUTODEPEND ..\..\src\common\paper.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_pickerbase.obj :  .AUTODEPEND ..\..\src\common\pickerbase.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_popupcmn.obj :  .AUTODEPEND ..\..\src\common\popupcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -8847,6 +8989,15 @@ $(OBJS)\coredll_mslu.obj :  .AUTODEPEND ..\..\src\msw\mslu.cpp
 $(OBJS)\coredll_volume.obj :  .AUTODEPEND ..\..\src\msw\volume.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 
+$(OBJS)\coredll_clrpickerg.obj :  .AUTODEPEND ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+
+$(OBJS)\coredll_fontpickerg.obj :  .AUTODEPEND ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+
+$(OBJS)\coredll_filepickerg.obj :  .AUTODEPEND ..\..\src\generic\filepickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+
 $(OBJS)\coredll_colordlg.obj :  .AUTODEPEND ..\..\src\msw\colordlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 
@@ -9631,6 +9782,11 @@ $(OBJS)\coredll_clipcmn.obj :  .AUTODEPEND ..\..\src\common\clipcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_clrpickercmn.obj :  .AUTODEPEND ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_colourcmn.obj :  .AUTODEPEND ..\..\src\common\colourcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -9731,6 +9887,16 @@ $(OBJS)\coredll_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_filepickercmn.obj :  .AUTODEPEND ..\..\src\common\filepickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
+$(OBJS)\coredll_fontpickercmn.obj :  .AUTODEPEND ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_fldlgcmn.obj :  .AUTODEPEND ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -9881,6 +10047,11 @@ $(OBJS)\coredll_paper.obj :  .AUTODEPEND ..\..\src\common\paper.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_pickerbase.obj :  .AUTODEPEND ..\..\src\common\pickerbase.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_popupcmn.obj :  .AUTODEPEND ..\..\src\common\popupcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -10135,6 +10306,15 @@ $(OBJS)\corelib_mslu.obj :  .AUTODEPEND ..\..\src\msw\mslu.cpp
 $(OBJS)\corelib_volume.obj :  .AUTODEPEND ..\..\src\msw\volume.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 
+$(OBJS)\corelib_clrpickerg.obj :  .AUTODEPEND ..\..\src\generic\clrpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+
+$(OBJS)\corelib_fontpickerg.obj :  .AUTODEPEND ..\..\src\generic\fontpickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+
+$(OBJS)\corelib_filepickerg.obj :  .AUTODEPEND ..\..\src\generic\filepickerg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+
 $(OBJS)\corelib_colordlg.obj :  .AUTODEPEND ..\..\src\msw\colordlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 
@@ -10919,6 +11099,11 @@ $(OBJS)\corelib_clipcmn.obj :  .AUTODEPEND ..\..\src\common\clipcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_clrpickercmn.obj :  .AUTODEPEND ..\..\src\common\clrpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_colourcmn.obj :  .AUTODEPEND ..\..\src\common\colourcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -11019,6 +11204,16 @@ $(OBJS)\corelib_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_filepickercmn.obj :  .AUTODEPEND ..\..\src\common\filepickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
+$(OBJS)\corelib_fontpickercmn.obj :  .AUTODEPEND ..\..\src\common\fontpickercmn.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_fldlgcmn.obj :  .AUTODEPEND ..\..\src\common\fldlgcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -11169,6 +11364,11 @@ $(OBJS)\corelib_paper.obj :  .AUTODEPEND ..\..\src\common\paper.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_pickerbase.obj :  .AUTODEPEND ..\..\src\common\pickerbase.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_popupcmn.obj :  .AUTODEPEND ..\..\src\common\popupcmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -11858,12 +12058,18 @@ $(OBJS)\xrcdll_xh_choic.obj :  .AUTODEPEND ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrcdll_xh_choicbk.obj :  .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
+$(OBJS)\xrcdll_xh_clrpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+
 $(OBJS)\xrcdll_xh_combo.obj :  .AUTODEPEND ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
 $(OBJS)\xrcdll_xh_datectrl.obj :  .AUTODEPEND ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
+$(OBJS)\xrcdll_xh_dirpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+
 $(OBJS)\xrcdll_xh_dlg.obj :  .AUTODEPEND ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
@@ -11873,6 +12079,12 @@ $(OBJS)\xrcdll_xh_frame.obj :  .AUTODEPEND ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrcdll_xh_mdi.obj :  .AUTODEPEND ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
+$(OBJS)\xrcdll_xh_filepicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+
+$(OBJS)\xrcdll_xh_fontpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+
 $(OBJS)\xrcdll_xh_gauge.obj :  .AUTODEPEND ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
 
@@ -11999,12 +12211,18 @@ $(OBJS)\xrclib_xh_choic.obj :  .AUTODEPEND ..\..\src\xrc\xh_choic.cpp
 $(OBJS)\xrclib_xh_choicbk.obj :  .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
+$(OBJS)\xrclib_xh_clrpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+
 $(OBJS)\xrclib_xh_combo.obj :  .AUTODEPEND ..\..\src\xrc\xh_combo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
 $(OBJS)\xrclib_xh_datectrl.obj :  .AUTODEPEND ..\..\src\xrc\xh_datectrl.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
+$(OBJS)\xrclib_xh_dirpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_dirpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+
 $(OBJS)\xrclib_xh_dlg.obj :  .AUTODEPEND ..\..\src\xrc\xh_dlg.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
@@ -12014,6 +12232,12 @@ $(OBJS)\xrclib_xh_frame.obj :  .AUTODEPEND ..\..\src\xrc\xh_frame.cpp
 $(OBJS)\xrclib_xh_mdi.obj :  .AUTODEPEND ..\..\src\xrc\xh_mdi.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
+$(OBJS)\xrclib_xh_filepicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_filepicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+
+$(OBJS)\xrclib_xh_fontpicker.obj :  .AUTODEPEND ..\..\src\xrc\xh_fontpicker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+
 $(OBJS)\xrclib_xh_gauge.obj :  .AUTODEPEND ..\..\src\xrc\xh_gauge.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
 
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index 07b6fe48d7..ade18463c9 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -484,6 +484,10 @@ SOURCE=..\..\src\common\clipcmn.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\clrpickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\cmdproc.cpp
 # End Source File
 # Begin Source File
@@ -574,6 +578,10 @@ SOURCE=..\..\src\common\fddlgcmn.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\filepickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\fldlgcmn.cpp
 # End Source File
 # Begin Source File
@@ -590,6 +598,10 @@ SOURCE=..\..\src\common\fontmap.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\fontpickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\framecmn.cpp
 # End Source File
 # Begin Source File
@@ -702,6 +714,10 @@ SOURCE=..\..\src\common\paper.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\pickerbase.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\popupcmn.cpp
 # End Source File
 # Begin Source File
@@ -4101,6 +4117,69 @@ SOURCE=..\..\src\generic\choicdgg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\generic\clrpickerg.cpp
+
+!IF  "$(CFG)" == "core - Win32 DLL Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Debug"
+
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\generic\colrdlgg.cpp
 
 !IF  "$(CFG)" == "core - Win32 DLL Universal Unicode Release"
@@ -4364,6 +4443,69 @@ SOURCE=..\..\src\generic\filedlgg.cpp
 
 # PROP Exclude_From_Build 1
 
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\generic\filepickerg.cpp
+
+!IF  "$(CFG)" == "core - Win32 DLL Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Debug"
+
+
 !ENDIF
 
 # End Source File
@@ -4427,6 +4569,69 @@ SOURCE=..\..\src\generic\fontdlgg.cpp
 
 # PROP Exclude_From_Build 1
 
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\generic\fontpickerg.cpp
+
+!IF  "$(CFG)" == "core - Win32 DLL Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 DLL Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Unicode Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Release"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Universal Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Unicode Debug"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Release"
+
+
+!ELSEIF  "$(CFG)" == "core - Win32 Debug"
+
+
 !ENDIF
 
 # End Source File
@@ -8129,6 +8334,10 @@ SOURCE=..\..\include\wx\generic\choicdgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\colrdlgg.h
 # End Source File
 # Begin Source File
@@ -8169,10 +8378,18 @@ SOURCE=..\..\include\wx\generic\filedlgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\filepicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\fontdlgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\grid.h
 # End Source File
 # Begin Source File
@@ -8573,6 +8790,10 @@ SOURCE=..\..\include\wx\clipbrd.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\cmdproc.h
 # End Source File
 # Begin Source File
@@ -8729,6 +8950,10 @@ SOURCE=..\..\include\wx\filedlg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\filepicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\fmappriv.h
 # End Source File
 # Begin Source File
@@ -8745,6 +8970,10 @@ SOURCE=..\..\include\wx\fontenum.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\fontutil.h
 # End Source File
 # Begin Source File
@@ -9241,6 +9470,10 @@ SOURCE=..\..\include\wx\xrc\xh_choicbk.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_combo.h
 # End Source File
 # Begin Source File
@@ -9249,10 +9482,22 @@ SOURCE=..\..\include\wx\xrc\xh_datectrl.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_dirpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_dlg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_filepicker.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\wx\xrc\xh_fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_frame.h
 # End Source File
 # Begin Source File
diff --git a/build/msw/wx_xrc.dsp b/build/msw/wx_xrc.dsp
index 7455c2a702..0c46997f55 100644
--- a/build/msw/wx_xrc.dsp
+++ b/build/msw/wx_xrc.dsp
@@ -994,6 +994,10 @@ SOURCE=..\..\include\wx\xrc\xh_choicbk.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_combo.h
 # End Source File
 # Begin Source File
@@ -1002,10 +1006,22 @@ SOURCE=..\..\include\wx\xrc\xh_datectrl.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_dirpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_dlg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\xrc\xh_filepicker.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\wx\xrc\xh_fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\xrc\xh_frame.h
 # End Source File
 # Begin Source File
@@ -1178,6 +1194,10 @@ SOURCE=..\..\src\xrc\xh_choicbk.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\xrc\xh_clrpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\xrc\xh_combo.cpp
 # End Source File
 # Begin Source File
@@ -1186,10 +1206,22 @@ SOURCE=..\..\src\xrc\xh_datectrl.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\xrc\xh_dirpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\xrc\xh_dlg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\xrc\xh_filepicker.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\xrc\xh_fontpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\xrc\xh_frame.cpp
 # End Source File
 # Begin Source File
diff --git a/configure.in b/configure.in
index 0c6aa6bdc1..bff76dc4e9 100644
--- a/configure.in
+++ b/configure.in
@@ -508,10 +508,14 @@ if test $DEBUG_CONFIGURE = 1; then
   DEFAULT_wxUSE_CHECKLST=no
   DEFAULT_wxUSE_CHOICE=no
   DEFAULT_wxUSE_CHOICEBOOK=no
+  DEFAULT_wxUSE_COLOURPICKERCTRL=no
   DEFAULT_wxUSE_COMBOBOX=no
   DEFAULT_wxUSE_COMBOCTRL=no
   DEFAULT_wxUSE_DATEPICKCTRL=no
   DEFAULT_wxUSE_DISPLAY=no
+  DEFAULT_wxUSE_DIRPICKERCTRL=no
+  DEFAULT_wxUSE_FILEPICKERCTRL=no
+  DEFAULT_wxUSE_FONTPICKERCTRL=no
   DEFAULT_wxUSE_GAUGE=no
   DEFAULT_wxUSE_GRID=no
   DEFAULT_wxUSE_HYPERLINKCTRL=no
@@ -715,10 +719,14 @@ else
   DEFAULT_wxUSE_CHECKLST=yes
   DEFAULT_wxUSE_CHOICE=yes
   DEFAULT_wxUSE_CHOICEBOOK=yes
+  DEFAULT_wxUSE_COLOURPICKERCTRL=yes
   DEFAULT_wxUSE_COMBOBOX=yes
   DEFAULT_wxUSE_COMBOCTRL=yes
   DEFAULT_wxUSE_DATEPICKCTRL=yes
   DEFAULT_wxUSE_DISPLAY=yes
+  DEFAULT_wxUSE_DIRPICKERCTRL=yes
+  DEFAULT_wxUSE_FILEPICKERCTRL=yes
+  DEFAULT_wxUSE_FONTPICKERCTRL=yes
   DEFAULT_wxUSE_GAUGE=yes
   DEFAULT_wxUSE_GRID=yes
   DEFAULT_wxUSE_HYPERLINKCTRL=yes
@@ -1031,7 +1039,13 @@ if test "$wxUSE_CONTROLS" = "yes"; then
   DEFAULT_wxUSE_CHECKLISTBOX=yes
   DEFAULT_wxUSE_CHOICE=yes
   DEFAULT_wxUSE_CHOICEBOOK=yes
+  DEFAULT_wxUSE_COLOURPICKERCTRL=yes
+  DEFAULT_wxUSE_COMBOBOX=yes
   DEFAULT_wxUSE_DATEPICKCTRL=yes
+  DEFAULT_wxUSE_DISPLAY=yes
+  DEFAULT_wxUSE_DIRPICKERCTRL=yes
+  DEFAULT_wxUSE_FILEPICKERCTRL=yes
+  DEFAULT_wxUSE_FONTPICKERCTRL=yes
   DEFAULT_wxUSE_GAUGE=yes
   DEFAULT_wxUSE_GRID=yes
   DEFAULT_wxUSE_HYPERLINKCTRL=yes
@@ -1075,7 +1089,13 @@ elif test "$wxUSE_CONTROLS" = "no"; then
   DEFAULT_wxUSE_CHECKLISTBOX=no
   DEFAULT_wxUSE_CHOICE=no
   DEFAULT_wxUSE_CHOICEBOOK=no
+  DEFAULT_wxUSE_COLOURPICKERCTRL=no
+  DEFAULT_wxUSE_COMBOBOX=no
   DEFAULT_wxUSE_DATEPICKCTRL=no
+  DEFAULT_wxUSE_DISPLAY=no
+  DEFAULT_wxUSE_DIRPICKERCTRL=no
+  DEFAULT_wxUSE_FILEPICKERCTRL=no
+  DEFAULT_wxUSE_FONTPICKERCTRL=no
   DEFAULT_wxUSE_GAUGE=no
   DEFAULT_wxUSE_GRID=no
   DEFAULT_wxUSE_HYPERLINKCTRL=no
@@ -1119,10 +1139,14 @@ WX_ARG_ENABLE(checkbox,    [  --enable-checkbox       use wxCheckBox class], wxU
 WX_ARG_ENABLE(checklst,    [  --enable-checklst       use wxCheckListBox (listbox with checkboxes) class], wxUSE_CHECKLST)
 WX_ARG_ENABLE(choice,      [  --enable-choice         use wxChoice class], wxUSE_CHOICE)
 WX_ARG_ENABLE(choicebook,  [  --enable-choicebook     use wxChoicebook class], wxUSE_CHOICEBOOK)
+WX_ARG_ENABLE(colourpicker,[  --enable-colourpicker   use wxColourPickerCtrl class], wxUSE_COLOURPICKERCTRL)
 WX_ARG_ENABLE(combobox,    [  --enable-combobox       use wxComboBox class], wxUSE_COMBOBOX)
 WX_ARG_ENABLE(comboctrl,   [  --enable-comboctrl      use wxComboCtrl class], wxUSE_COMBOCTRL)
 WX_ARG_ENABLE(datepick,    [  --enable-datepick       use wxDatePickerCtrl class], wxUSE_DATEPICKCTRL)
+WX_ARG_ENABLE(dirpicker,   [  --enable-dirpicker      use wxDirPickerCtrl class], wxUSE_DIRPICKERCTRL)
 WX_ARG_ENABLE(display,     [  --enable-display        use wxDisplay class], wxUSE_DISPLAY)
+WX_ARG_ENABLE(filepicker,  [  --enable-filepicker     use wxFilePickerCtrl class], wxUSE_FILEPICKERCTRL)
+WX_ARG_ENABLE(fontpicker,  [  --enable-fontpicker     use wxFontPickerCtrl class], wxUSE_FONTPICKERCTRL)
 WX_ARG_ENABLE(gauge,       [  --enable-gauge          use wxGauge class], wxUSE_GAUGE)
 WX_ARG_ENABLE(grid,        [  --enable-grid           use wxGrid class], wxUSE_GRID)
 WX_ARG_ENABLE(dataviewctrl,[  --enable-dataviewctrl,  use wxDataViewCtrl class], wxUSE_DATAVIEWCTRL)
@@ -2957,6 +2981,28 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                             AC_MSG_RESULT([yes])
                            ])
 
+            dnl test if we have at least GTK+ 2.6:
+            AC_MSG_CHECKING([if GTK+ is version >= 2.6])
+            AC_TRY_COMPILE([
+                            #include <gtk/gtk.h>
+                           ],
+                           [
+                            #if !GTK_CHECK_VERSION(2,6,0)
+                            Not GTK+ 2.6
+                            #endif
+                           ],
+                           [
+                            AC_DEFINE(__WXGTK26__)
+                            AC_DEFINE(__WXGTK24__)
+                            AC_MSG_RESULT([yes])
+                            ac_wxgtk26=1
+                           ],
+                           [
+                            AC_MSG_RESULT([no])
+                            ac_wxgtk26=0
+                           ])
+
+            if test "$ac_wxgtk26" = 0; then
             dnl test if we have at least GTK+ 2.4:
             AC_MSG_CHECKING([if GTK+ is version >= 2.4])
             AC_TRY_COMPILE([
@@ -2974,6 +3020,7 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                            [
                             AC_MSG_RESULT([no])
                            ])
+            fi
 
             CFLAGS="$save_CFLAGS"
             LIBS="$save_LIBS"
@@ -6312,11 +6359,31 @@ if test "$wxUSE_CHECKLST" = "yes"; then
   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS checklst"
 fi
 
+if test "$wxUSE_COLOURPICKERCTRL" = "yes"; then
+  AC_DEFINE(wxUSE_COLOURPICKERCTRL)
+  USES_CONTROLS=1
+fi
+
 if test "$wxUSE_DATEPICKCTRL" = "yes"; then
   AC_DEFINE(wxUSE_DATEPICKCTRL)
   USES_CONTROLS=1
 fi
 
+if test "$wxUSE_DIRPICKERCTRL" = "yes"; then
+  AC_DEFINE(wxUSE_DIRPICKERCTRL)
+  USES_CONTROLS=1
+fi
+
+if test "$wxUSE_FILEPICKERCTRL" = "yes"; then
+  AC_DEFINE(wxUSE_FILEPICKERCTRL)
+  USES_CONTROLS=1
+fi
+
+if test "$wxUSE_FONTPICKERCTRL" = "yes"; then
+  AC_DEFINE(wxUSE_FONTPICKERCTRL)
+  USES_CONTROLS=1
+fi
+
 if test "$wxUSE_DISPLAY" = "yes"; then
     AC_DEFINE(wxUSE_DISPLAY)
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS display multimon"
diff --git a/docs/changes.txt b/docs/changes.txt
index cf6dd623de..4853c73dd9 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -87,6 +87,7 @@ All (GUI):
 
 - Added wxComboCtrl and wxOwnerDrawnComboBox (Jaakko Salli)
 - Added wxTreebook (uses a wxTreeCtrl to control pages).
+- Added wxColour/Dir/File/Font/PickerCtrls (Francesco Montorsi)
 - Added wxDC::GradientFillLinear/Concentric()
 - Added wxHyperlinkCtrl (Francesco Montorsi)
 - Added clipboard events (wxEVT_COMMAND_TEXT_COPY/CUT/PASTE)
diff --git a/docs/latex/wx/category.tex b/docs/latex/wx/category.tex
index 96bb9525bf..aaaa0be5d1 100644
--- a/docs/latex/wx/category.tex
+++ b/docs/latex/wx/category.tex
@@ -94,7 +94,6 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t
 \twocolitem{\helpref{wxCheckListBox}{wxchecklistbox}}{A listbox with a checkbox to the left of each item}
 \twocolitem{\helpref{wxChoice}{wxchoice}}{Choice control (a combobox without the editable area)}
 \twocolitem{\helpref{wxComboBox}{wxcombobox}}{A choice with an editable area}
-\twocolitem{\helpref{wxDatePickerCtrl}{wxdatepickerctrl}}{Small date picker control}
 \twocolitem{\helpref{wxGauge}{wxgauge}}{A control to represent a varying quantity, such as time remaining}
 \twocolitem{\helpref{wxGenericDirCtrl}{wxgenericdirctrl}}{A control for displaying a directory tree}
 \twocolitem{\helpref{wxHtmlListBox}{wxhtmllistbox}}{A listbox showing HTML content}
@@ -116,6 +115,21 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t
 \twocolitem{\helpref{wxVListBox}{wxvlistbox}}{A listbox supporting variable height rows}
 \end{twocollist}
 
+
+{\large {\bf Miscellaneous pickers}}
+
+A picker control is a control whose appearance and behaviour is highly platform-dependent.
+
+\twocolwidtha{6cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{wxColourPickerCtrl}{wxcolourpickerctrl}}{A control which allows the user to choose a colour}
+\twocolitem{\helpref{wxDirPickerCtrl}{wxdirpickerctrl}}{A control which allows the user to choose a directory}
+\twocolitem{\helpref{wxFilePickerCtrl}{wxfilepickerctrl}}{A control which allows the user to choose a file}
+\twocolitem{\helpref{wxFontPickerCtrl}{wxfontpickerctrl}}{A control which allows the user to choose a font}
+\twocolitem{\helpref{wxDatePickerCtrl}{wxdatepickerctrl}}{Small date picker control}
+\end{twocollist}
+
+
 {\large {\bf Menus}}
 
 \twocolwidtha{6cm}
diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex
index 14d1f8866c..7f70ee8475 100644
--- a/docs/latex/wx/classes.tex
+++ b/docs/latex/wx/classes.tex
@@ -35,6 +35,7 @@
 \input choice.tex
 \input choicebk.tex
 \input clasinfo.tex
+\input clrpicker.tex
 \input ipcclint.tex
 \input clientdc.tex
 \input clientdat.tex
@@ -89,6 +90,7 @@
 \input dialup.tex
 \input dir.tex
 \input dirdlg.tex
+\input dirpicker.tex
 \input dirtrav.tex
 \input display.tex
 \input dllload.tex
@@ -119,6 +121,7 @@
 \input fileistr.tex
 \input filename.tex
 \input fileostr.tex
+\input filepicker.tex
 \input filestrm.tex
 \input filesys.tex
 \input filesysh.tex
@@ -133,6 +136,7 @@
 \input fontenum.tex
 \input fontlist.tex
 \input fontmap.tex
+\input fontpicker.tex
 \input frame.tex
 \input fsfile.tex
 \input ftp.tex
@@ -253,6 +257,7 @@
 \input passdlg.tex
 \input pathlist.tex
 \input pen.tex
+\input pickerbase.tex
 \input point.tex
 \input postscpt.tex
 \input powerevt.tex
diff --git a/docs/latex/wx/clrpicker.tex b/docs/latex/wx/clrpicker.tex
new file mode 100644
index 0000000000..cb95378b2e
--- /dev/null
+++ b/docs/latex/wx/clrpicker.tex
@@ -0,0 +1,187 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        clrpicker.tex
+%% Purpose:     wxColourPickerCtrl and wxColourPickerEvent documentation
+%% Author:      Francesco Montorsi
+%% Created:     2006-04-17
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Francesco Montorsi
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxColourPickerCtrl}}\label{wxcolourpickerctrl}
+
+This control allows the user to select a colour. The generic implementation is
+a button which brings up a \helpref{wxColourDialog}{wxcolourdialog} when clicked. Native implementation
+may differ but this is usually a (small) widget which give access to the colour-chooser
+dialog.
+It is only available if \texttt{wxUSE\_COLOURPICKERCTRL} is set to $1$ (the default).
+
+\wxheading{Derived from}
+
+\helpref{wxPickerBase}{wxpickerbase}\\
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/clrpicker.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxCLRP\_DEFAULT}}{Default style.}
+\twocolitem{\windowstyle{wxCLRP\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker button which is completely managed by the \helpref{wxColourPickerCtrl}{wxcolourpickerctrl}
+and which can be used by the user to specify a colour (see \helpref{SetColour}{wxcolourpickerctrlsetcolour}).
+The text control is automatically synchronized with button's value. Use functions defined in \helpref{wxPickerBase}{wxpickerbase} to modify the text control.}
+\twocolitem{\windowstyle{wxCLRP\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker button which is completely managed by the \helpref{wxColourPickerCtrl}{wxcolourpickerctrl}
+and which can be used by the user to specify a colour (see \helpref{SetColour}{wxcolourpickerctrlsetcolour}).
+The text control is automatically synchronized with button's value. Use functions defined in \helpref{wxPickerBase}{wxpickerbase} to modify the text control.}
+\twocolitem{\windowstyle{wxCLRP\_SHOW\_LABEL}}{Shows the colour in HTML form (#AABBCC) as colour button label
+(instead of no label at all).}
+\end{twocollist}
+
+\wxheading{Event handling}
+
+\twocolwidtha{7cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_COLOURPICKER\_CHANGED(id, func)}}{The user changed the
+colour selected in the control either using the button or using text control
+(see wxCLRP\_USE\_TEXTCTRL; note that in this case the event is fired only if
+the user's input is valid, i.e. recognizable). }
+\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxColourDialog}{wxcolourdialog},\\
+\helpref{wxColourPickerEvent}{wxcolourpickerevent}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxColourPickerCtrl::wxColourPickerCtrl}\label{wxcolourpickerctrl}
+
+\func{}{wxColourPickerCtrl}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxColour\& }{colour = *wxBLACK},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxCP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``colourpickerctrl"}}
+
+Initializes the object and calls \helpref{Create}{wxcolourpickerctrlcreate} with
+all the parameters.
+
+
+\membersection{wxColourPickerCtrl::Create}\label{wxcolourpickerctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxColour\& }{colour = *wxBLACK},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxCP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``colourpickerctrl"}}
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
+
+\docparam{id}{The identifier for the control.}
+
+\docparam{colour}{The initial colour shown in the control.}
+
+\docparam{pos}{Initial position.}
+
+\docparam{size}{Initial size.}
+
+\docparam{style}{The window style, see wxCRLP\_* flags.}
+
+\docparam{validator}{Validator which can be used for additional date checks.}
+
+\docparam{name}{Control name.}
+
+\wxheading{Return value}
+
+\true if the control was successfully created or \false if creation failed.
+
+
+\membersection{wxColourPickerCtrl::GetColour}\label{wxcolourpickerctrlgetcolour}
+
+\constfunc{wxColour}{GetColour}{\void}
+
+Returns the currently selected colour.
+
+
+\membersection{wxColourPickerCtrl::SetColour}\label{wxcolourpickerctrlsetcolour}
+
+\func{void}{SetColour}{\param{const wxColour \&}{col}}
+
+\func{void}{SetColour}{\param{const wxString \&}{colname}}
+
+Sets the currently selected colour. See \helpref{wxColour::Set}{wxcolourset}.
+
+
+
+
+%% wxColourPickerEvent documentation
+
+\section{\class{wxColourPickerEvent}}\label{wxcolourpickerevent}
+
+This event class is used for the events generated by
+\helpref{wxColourPickerCtrl}{wxcolourpickerctrl}.
+
+\wxheading{Derived from}
+
+\helpref{wxCommandEvent}{wxcommandevent}\\
+\helpref{wxEvent}{wxevent}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/clrpicker.h>
+
+\wxheading{Event handling}
+
+To process input from a wxColourPickerCtrl, use one of these event handler macros to
+direct input to member function that take a
+\helpref{wxColourPickerEvent}{wxcolourpickerevent} argument:
+
+\twocolwidtha{7cm}
+\begin{twocollist}
+\twocolitem{{\bf EVT\_COLOURPICKER\_CHANGED(id, func)}}{Generated whenever the selected colour changes.}
+\end{twocollist}%
+
+
+\wxheading{See also}
+
+\helpref{wxColourPickerCtrl}{wxcolourpickerctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxColourPickerEvent::wxColourPickerEvent}\label{wxcolourpickereventctor}
+
+\func{}{wxColourPickerEvent}{\param{wxObject *}{ generator}, \param{int}{ id}, \param{const wxColour\&}{ colour}}
+
+The constructor is not normally used by the user code.
+
+
+\membersection{wxColourPickerEvent::GetColour}\label{wxcolourpickereventgetcolour}
+
+\constfunc{wxColour}{GetColour}{\void}
+
+Retrieve the colour the user has just selected.
+
+
+\membersection{wxColourPickerEvent::SetColour}\label{wxcolourpickereventsetcolour}
+
+\func{void}{SetColour}{\param{const wxColour \&}{pos}}
+
+Set the colour associated with the event.
+
diff --git a/docs/latex/wx/dirpicker.tex b/docs/latex/wx/dirpicker.tex
new file mode 100644
index 0000000000..8c366d1918
--- /dev/null
+++ b/docs/latex/wx/dirpicker.tex
@@ -0,0 +1,127 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        dirpicker.tex
+%% Purpose:     wxDirPickerCtrl documentation
+%% Author:      Francesco Montorsi
+%% Created:     2006-05-12
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Francesco Montorsi
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxDirPickerCtrl}}\label{wxdirpickerctrl}
+
+This control allows the user to select a directory. The generic implementation is
+a button which brings up a \helpref{wxDirDialog}{wxdirdialog} when clicked. Native implementation
+may differ but this is usually a (small) widget which give access to the dir-chooser
+dialog.
+It is only available if \texttt{wxUSE\_DIRPICKERCTRL} is set to $1$ (the default).
+
+\wxheading{Derived from}
+
+\helpref{wxPickerBase}{wxpickerbase}\\
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/filepicker.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxDIRP\_DEFAULT\_STYLE}}{Default style.}
+\twocolitem{\windowstyle{wxDIRP\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker button which is completely managed by the \helpref{wxDirPickerCtrl}{wxdirpickerctrl}
+and which can be used by the user to specify a path (see \helpref{SetPath}{wxdirpickerctrlsetpath}).
+The text control is automatically synchronized with button's value. Use functions defined in \helpref{wxPickerBase}{wxpickerbase} to modify the text control.}
+
+\twocolitem{\windowstyle{wxDIRP\_DIR\_MUST\_EXIST}}{Creates a picker which allows to select only existing directories. wxGTK control always adds this flag internally as it does not support its absence.}
+\twocolitem{\windowstyle{wxDIRP\_CHANGE\_DIR}}{Change current working directory on each user directory selection change.}
+
+\end{twocollist}
+
+\wxheading{Event handling}
+
+\twocolwidtha{7cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_DIRPICKER\_CHANGED(id, func)}}{The user changed the directory selected in the control either using the button or using text control (see wxDIRP_USE_TEXTCTRL; note that in this case the event is fired only if the user's input is valid, e.g. an existing directory path).}
+\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxDirDialog}{wxdirdialog},\\
+\helpref{wxFileDirPickerEvent}{wxfiledirpickerevent}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxDirPickerCtrl::wxDirPickerCtrl}\label{wxdirpickerctrl}
+
+\func{}{wxdirpickerctrl}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxString\& }{path = wxEmptyString},\rtfsp
+\param{const wxString\& }{message = ``Select a folder"},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxDIRP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``dirpickerctrl"}}
+
+Initializes the object and calls \helpref{Create}{wxdirpickerctrlcreate} with
+all the parameters.
+
+
+\membersection{wxDirPickerCtrl::Create}\label{wxdirpickerctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxString\& }{path = wxEmptyString},\rtfsp
+\param{const wxString\& }{message = ``Select a folder"},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxDIRP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``dirpickerctrl"}}
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
+
+\docparam{id}{The identifier for the control.}
+
+\docparam{path}{The initial directory shown in the control. Must be a valid path to a directory or the empty string.}
+
+\docparam{message}{The message shown to the user in the \helpref{wxFileDialog}{wxfiledialog} shown by the control.}
+
+\docparam{pos}{Initial position.}
+
+\docparam{size}{Initial size.}
+
+\docparam{style}{The window style, see wxDIRP\_* flags.}
+
+\docparam{validator}{Validator which can be used for additional date checks.}
+
+\docparam{name}{Control name.}
+
+\wxheading{Return value}
+
+\true if the control was successfully created or \false if creation failed.
+
+
+\membersection{wxDirPickerCtrl::GetPath}\label{wxdirpickerctrlgetpath}
+
+\constfunc{wxString}{GetPath}{\void}
+
+Returns the currently selected directory.
+
+
+\membersection{wxDirPickerCtrl::SetPath}\label{wxdirpickerctrlsetpath}
+
+\func{void}{SetPath}{\param{const wxString \&}{dirname}}
+
+Sets the currently selected directory. This must be a valid directory.
+
+
diff --git a/docs/latex/wx/filepicker.tex b/docs/latex/wx/filepicker.tex
new file mode 100644
index 0000000000..855a22d6b2
--- /dev/null
+++ b/docs/latex/wx/filepicker.tex
@@ -0,0 +1,195 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        filepicker.tex
+%% Purpose:     wxFilePickerCtrl and wxFileDirPickerEvent documentation
+%% Author:      Francesco Montorsi
+%% Created:     2006-05-12
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Francesco Montorsi
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxFilePickerCtrl}}\label{wxfilepickerctrl}
+
+This control allows the user to select a file. The generic implementation is
+a button which brings up a \helpref{wxFileDialog}{wxfiledialog} when clicked. Native implementation
+may differ but this is usually a (small) widget which give access to the file-chooser
+dialog.
+It is only available if \texttt{wxUSE\_FILEPICKERCTRL} is set to $1$ (the default).
+
+\wxheading{Derived from}
+
+\helpref{wxPickerBase}{wxpickerbase}\\
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/filepicker.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxFLP\_DEFAULT\_STYLE}}{Default style.}
+\twocolitem{\windowstyle{wxFLP\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker button which is completely managed by the \helpref{wxFilePickerCtrl}{wxfilepickerctrl}
+and which can be used by the user to specify a path (see \helpref{SetPath}{wxfilepickerctrlsetpath}).
+The text control is automatically synchronized with button's value. Use functions defined in \helpref{wxPickerBase}{wxpickerbase} to modify the text control.}
+\twocolitem{\windowstyle{wxFLP\_OPEN}}{Creates a picker which allows the user to select a file to open.}
+\twocolitem{\windowstyle{wxFLP\_SAVE}}{Creates a picker which allows the user to select a file to save.}
+\twocolitem{\windowstyle{wxFLP\_OVERWRITE\_PROMPT}}{Can be combined with wxFLP\_SAVE only: ask confirmation to the user before selecting a file.}
+\twocolitem{\windowstyle{wxFLP\_FILE\_MUST\_EXIST}}{Can be combined with wxFLP\_OPEN only: the selected file must be an existing file.}
+\twocolitem{\windowstyle{wxFLP\_CHANGE\_DIR}}{Change current working directory on each user file selection change.}
+
+NB: the wxFD\_MULTIPLE style of wxFileDialog is not supported!
+
+\end{twocollist}
+
+\wxheading{Event handling}
+
+\twocolwidtha{7cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_FILEPICKER\_CHANGED(id, func)}}{The user changed the file
+selected in the control either using the button or using text control (see
+wxFILEP\_USE\_TEXTCTRL; note that in this case the event is fired only if the
+user's input is valid, e.g. an existing file path if wxFILEP\_FILE\_MUST\_EXIST
+was given).}
+\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxFileDialog}{wxfiledialog},\\
+\helpref{wxFileDirPickerEvent}{wxfiledirpickerevent}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxFilePickerCtrl::wxFilePickerCtrl}\label{wxfilepickerctrl}
+
+\func{}{wxfilepickerctrl}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxString\& }{path = wxEmptyString},\rtfsp
+\param{const wxString\& }{message = ``Select a file"},\rtfsp
+\param{const wxString\& }{wildcard = ``*.*"},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxFILEP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``filepickerctrl"}}
+
+Initializes the object and calls \helpref{Create}{wxfilepickerctrlcreate} with
+all the parameters.
+
+
+\membersection{wxFilePickerCtrl::Create}\label{wxfilepickerctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxString\& }{path = wxEmptyString},\rtfsp
+\param{const wxString\& }{message = ``Select a file"},\rtfsp
+\param{const wxString\& }{wildcard = ``*.*"},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxFILEP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``filepickerctrl"}}
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
+
+\docparam{id}{The identifier for the control.}
+
+\docparam{path}{The initial file shown in the control. Must be a valid path to a file or the empty string.}
+
+\docparam{message}{The message shown to the user in the \helpref{wxFileDialog}{wxfiledialog} shown by the control.}
+
+\docparam{wildcard}{A wildcard which defines user-selectable files (use the same syntax as for \helpref{wxFileDialog}{wxfiledialog}'s wildcards.}
+
+\docparam{pos}{Initial position.}
+
+\docparam{size}{Initial size.}
+
+\docparam{style}{The window style, see wxFILEP\_* flags.}
+
+\docparam{validator}{Validator which can be used for additional date checks.}
+
+\docparam{name}{Control name.}
+
+\wxheading{Return value}
+
+\true if the control was successfully created or \false if creation failed.
+
+
+\membersection{wxFilePickerCtrl::GetPath}\label{wxfilepickerctrlgetpath}
+
+\constfunc{wxString}{GetPath}{\void}
+
+Returns the currently selected file.
+
+
+\membersection{wxFilePickerCtrl::SetPath}\label{wxfilepickerctrlsetpath}
+
+\func{void}{SetPath}{\param{const wxString \&}{filename}}
+
+Sets the currently selected file. This must be a valid file if
+wxFILEP\_FILE\_MUST\_EXIST style was given.
+
+
+
+%% wxFileDirPickerEvent documentation
+
+\section{\class{wxFileDirPickerEvent}}\label{wxfiledirpickerevent}
+
+This event class is used for the events generated by
+\helpref{wxFilePickerCtrl}{wxfilepickerctrl} and by \helpref{wxDirPickerCtrl}{wxdirpickerctrl}.
+
+\wxheading{Derived from}
+
+\helpref{wxCommandEvent}{wxcommandevent}\\
+\helpref{wxEvent}{wxevent}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/filepicker.h>
+
+\wxheading{Event handling}
+
+To process input from a wxFilePickerCtrl or from a wxDirPickerCtrl, use one of these event handler macros to
+direct input to member function that take a \helpref{wxFileDirPickerEvent}{wxfiledirpickerevent} argument:
+
+\twocolwidtha{7cm}
+\begin{twocollist}
+\twocolitem{{\bf EVT\_FILEPICKER\_CHANGED(id, func)}}{Generated whenever the selected file changes.}
+\twocolitem{{\bf EVT\_DIRPICKER\_CHANGED(id, func)}}{Generated whenever the selected directory changes.}
+\end{twocollist}%
+
+
+\wxheading{See also}
+
+\helpref{wxfilepickerctrl}{wxfilepickerctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxFileDirPickerEvent::wxFileDirPickerEvent}\label{wxfiledirpickereventctor}
+
+\func{}{wxFileDirPickerEvent}{\param{wxEventType}{ type}, \param{wxObject *}{ generator}, \param{int}{ id}, \param{const wxString&}{ path}}
+
+The constructor is not normally used by the user code.
+
+
+\membersection{wxFileDirPickerEvent::GetPath}\label{wxfiledirpickereventgetpath}
+
+\constfunc{wxString}{GetPath}{\void}
+
+Retrieve the file/directory the user has just selected.
+
+
+\membersection{wxFileDirPickerEvent::SetPath}\label{wxfiledirpickereventsetpath}
+
+\func{void}{SetPath}{\param{const wxString \&}{path}}
+
+Set the file/directory associated with the event.
diff --git a/docs/latex/wx/fontpicker.tex b/docs/latex/wx/fontpicker.tex
new file mode 100644
index 0000000000..4e66d8e2b6
--- /dev/null
+++ b/docs/latex/wx/fontpicker.tex
@@ -0,0 +1,200 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        fontpicker.tex
+%% Purpose:     wxFontPickerCtrl and wxFontPickerEvent documentation
+%% Author:      Francesco Montorsi
+%% Created:     2006-04-17
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Francesco Montorsi
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxFontPickerCtrl}}\label{wxfontpickerctrl}
+
+This control allows the user to select a font. The generic implementation is
+a button which brings up a \helpref{wxFontDialog}{wxfontdialog} when clicked. Native implementation
+may differ but this is usually a (small) widget which give access to the font-chooser
+dialog.
+It is only available if \texttt{wxUSE\_FONTPICKERCTRL} is set to $1$ (the default).
+
+\wxheading{Derived from}
+
+\helpref{wxPickerBase}{wxpickerbase}\\
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/fontpicker.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxFONTP\_DEFAULT}}{Default style.}
+\twocolitem{\windowstyle{wxFONTP\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker button which is completely managed by the \helpref{wxFontPickerCtrl}{wxfontpickerctrl}
+and which can be used by the user to specify a font (see \helpref{SetSelectedFont}{wxfontpickerctrlsetselectedfont}).
+The text control is automatically synchronized with button's value. Use functions defined in \helpref{wxPickerBase}{wxpickerbase} to modify the text control.}
+\twocolitem{\windowstyle{wxFONTP\_FONTDESC\_AS\_LABEL}}{Keeps the label of the button updated with the fontface name and the font size. E.g. choosing "Times New Roman bold, italic with size 10" from the fontdialog, will update the label (overwriting any previous label) with the "Times New Roman, 10" text.}
+\twocolitem{\windowstyle{wxFONTP\_USEFONT\_FOR\_LABEL}}{Uses the currently selected font to draw the label of the button.}
+\end{twocollist}
+
+\wxheading{Event handling}
+
+\twocolwidtha{7cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_FONTPICKER\_CHANGED(id, func)}}{The user changed the font
+selected in the control either using the button or using text control (see
+wxFONTP\_USE\_TEXTCTRL; note that in this case the event is fired only if the
+user's input is valid, i.e. recognizable). }
+\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxFontDialog}{wxfontdialog},\\
+\helpref{wxFontPickerEvent}{wxfontpickerevent}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxFontPickerCtrl::wxFontPickerCtrl}\label{wxfontpickerctrl}
+
+\func{}{wxFontPickerCtrl}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxFont\& }{font = *wxNORMAL\_FONT},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxFONTP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``fontpickerctrl"}}
+
+Initializes the object and calls \helpref{Create}{wxfontpickerctrlcreate} with
+all the parameters.
+
+
+\membersection{wxFontPickerCtrl::Create}\label{wxfontpickerctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxFont\& }{font = *wxNORMAL\_FONT},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxFONTP\_DEFAULT\_STYLE},\rtfsp
+\param{const wxValidator\& }{validator = wxDefaultValidator},
+\param{const wxString\& }{name = ``fontpickerctrl"}}
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
+
+\docparam{id}{The identifier for the control.}
+
+\docparam{font}{The initial font shown in the control.}
+
+\docparam{pos}{Initial position.}
+
+\docparam{size}{Initial size.}
+
+\docparam{style}{The window style, see wxCRLP\_* flags.}
+
+\docparam{validator}{Validator which can be used for additional date checks.}
+
+\docparam{name}{Control name.}
+
+\wxheading{Return value}
+
+\true if the control was successfully created or \false if creation failed.
+
+
+\membersection{wxFontPickerCtrl::GetSelectedFont}\label{wxfontpickerctrlgetselectedfont}
+
+\constfunc{wxFont}{GetSelectedFont}{\void}
+
+Returns the currently selected font.
+Note that this function is completely different from \helpref{wxWindow::GetFont}{wxwindowgetfont}.
+
+
+\membersection{wxFontPickerCtrl::SetSelectedFont}\label{wxfontpickerctrlsetselectedfont}
+
+\func{void}{SetSelectedFont}{\param{const wxFont \&}{font}}
+
+Sets the currently selected font.
+Note that this function is completely different from \helpref{wxWindow::SetFont}{wxwindowsetfont}.
+
+
+\membersection{wxFontPickerCtrl::GetMaxPointSize}\label{wxfontpickerctrlgetmaxpointsize}
+
+\constfunc{unsigned int}{GetMaxPointSize}{\void}
+
+Returns the maximum point size value allowed for the user-chosen font.
+
+
+\membersection{wxFontPickerCtrl::SetMaxPointSize}\label{wxfontpickerctrlsetmaxpointsize}
+
+\func{void}{GetMaxPointSize}{\param{unsigned int}{ max}}
+
+Sets the maximum point size value allowed for the user-chosen font.
+The default value is 100. Note that big fonts can require a lot of memory and CPU time
+both for creation and for rendering; thus, specially because the user has the option to specify
+the fontsize through a text control (see wxFONTP\_USE\_TEXTCTRL), it's a good idea to put a limit
+to the maximum font size when huge fonts do not make much sense.
+
+
+
+
+%% wxFontPickerEvent documentation
+
+\section{\class{wxFontPickerEvent}}\label{wxfontpickerevent}
+
+This event class is used for the events generated by
+\helpref{wxFontPickerCtrl}{wxfontpickerctrl}.
+
+\wxheading{Derived from}
+
+\helpref{wxCommandEvent}{wxcommandevent}\\
+\helpref{wxEvent}{wxevent}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/clrpicker.h>
+
+\wxheading{Event handling}
+
+To process input from a wxFontPickerCtrl, use one of these event handler macros to
+direct input to member function that take a
+\helpref{wxFontPickerEvent}{wxfontpickerevent} argument:
+
+\twocolwidtha{7cm}
+\begin{twocollist}
+\twocolitem{{\bf EVT\_FONTPICKER\_CHANGED(id, func)}}{Generated whenever the selected font changes.}
+\end{twocollist}%
+
+
+\wxheading{See also}
+
+\helpref{wxFontPickerCtrl}{wxfontpickerctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxFontPickerEvent::wxFontPickerEvent}\label{wxfontpickereventctor}
+
+\func{}{wxFontPickerEvent}{\param{wxObject *}{ generator}, \param{int}{ id}, \param{const wxFont\&}{ font}}
+
+The constructor is not normally used by the user code.
+
+
+\membersection{wxFontPickerEvent::GetFont}\label{wxfontpickereventgetfont}
+
+\constfunc{wxFont}{GetFont}{\void}
+
+Retrieve the font the user has just selected.
+
+
+\membersection{wxFontPickerEvent::SetFont}\label{wxfontpickereventsetfont}
+
+\func{void}{SetFont}{\param{const wxFont \&}{ f}}
+
+Set the font associated with the event.
diff --git a/docs/latex/wx/pickerbase.tex b/docs/latex/wx/pickerbase.tex
new file mode 100644
index 0000000000..123c7bcd50
--- /dev/null
+++ b/docs/latex/wx/pickerbase.tex
@@ -0,0 +1,87 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        pickerbase.tex
+%% Purpose:     wxPickerBase documentation
+%% Author:      Francesco Montorsi
+%% Created:     2006-04-18
+%% RCS-ID:      $Id$
+%% Copyright:   (c) 2006 Francesco Montorsi
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxPickerBase}}\label{wxpickerbase}
+
+Base abstract class for all pickers which support an auxiliary text control.
+This class handles all positioning and sizing of the text control like a
+an horizontal \helpref{wxBoxSizer}{wxboxsizer} would do, with the text control on
+the left of the picker button and the proportion of the picker fixed to value 1.
+
+\wxheading{Derived from}
+
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/pickerbase.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxPB\_USE\_TEXTCTRL}}{Creates a text control to the left of the
+picker which is completely managed by this \helpref{wxPickerBase}{wxpickerbase}
+class.}
+\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxColourPickerCtrl}{wxcolourpickerctrl}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPickerBase::SetInternalMargin}\label{wxpickerbasesetinternalmargin}
+
+\func{void}{SetInternalMargin}{\param{int}{margin}}
+
+Sets the margin (in pixel) between the picker and the text control.
+
+
+\membersection{wxPickerBase::GetInternalMargin}\label{wxpickerbasegetinternalmargin}
+
+\constfunc{int}{GetInternalMargin}{}
+
+Returns the margin (in pixel) between the picker and the text control.
+
+
+\membersection{wxPickerBase::SetTextCtrlProportion}\label{wxpickerbasesettextctrlproportion}
+
+\func{void}{SetTextCtrlProportion}{\param{int}{prop}}
+
+Sets the proportion between the text control and the picker.
+Look at the overview of wxPickerBase for more details about this.
+
+
+\membersection{wxPickerBase::GetTextCtrlProportion}\label{wxpickerbasesgettextctrlproportion}
+
+\constfunc{int}{GetTextCtrlProportion}{}
+
+Returns the proportion between the text control and the picker.
+
+
+\membersection{wxPickerBase::HasTextCtrl}\label{wxpickerbaseshastextctrl}
+
+\constfunc{bool}{HasTextCtrl}{}
+
+Returns true if this class has a valid text control (i.e. if the \windowstyle{wxPB\_USE\_TEXTCTRL} style was
+given when creating this control).
+
+
+\membersection{wxPickerBase::GetTextCtrl}\label{wxpickerbasesgetextctrl}
+
+\func{wxTextCtrl *}{GetTextCtrl}{}
+
+Returns a pointer to the text control handled by this class or \texttt{NULL} if the \windowstyle{wxPB\_USE\_TEXTCTRL} style was not specified when this control was created.
+Very important: the contents of the text control could be containing an invalid representation of the entity which can be chosen through the picker (e.g. the user entered an invalid colour syntax because of a typo). Thus you should never parse the content of the textctrl to get the user's input; rather use the derived-class getter (e.g. \helpref{wxColourPickerCtrl::GetColour}{wxcolourpickerctrlgetcolour}, \helpref{wxFilePickerCtrl::GetPath}{wxfilepickerctrlgetpath}, etc).
diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h
index e0ed14ff41..13998ff414 100644
--- a/include/wx/chkconf.h
+++ b/include/wx/chkconf.h
@@ -392,6 +392,14 @@
 #   endif
 #endif /* !defined(wxUSE_COLOURDLG) */
 
+#ifndef wxUSE_COLOURPICKERCTRL
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_COLOURPICKERCTRL must be defined."
+#   else
+#       define wxUSE_COLOURPICKERCTRL 0
+#   endif
+#endif /* !defined(wxUSE_COLOURPICKERCTRL) */
+
 #ifndef wxUSE_COMBOBOX
 #   ifdef wxABORT_ON_CONFIG_ERROR
 #       error "wxUSE_COMBOBOX must be defined."
@@ -432,6 +440,14 @@
 #   endif
 #endif /* !defined(wxUSE_DATEPICKCTRL) */
 
+#ifndef wxUSE_DIRPICKERCTRL
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_DIRPICKERCTRL must be defined."
+#   else
+#       define wxUSE_DIRPICKERCTRL 0
+#   endif
+#endif /* !defined(wxUSE_DIRPICKERCTRL) */
+
 #ifndef wxUSE_DISPLAY
 #   ifdef wxABORT_ON_CONFIG_ERROR
 #       error "wxUSE_DISPLAY must be defined."
@@ -456,6 +472,14 @@
 #   endif
 #endif /* !defined(wxUSE_FILEDLG) */
 
+#ifndef wxUSE_FILEPICKERCTRL
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_FILEPICKERCTRL must be defined."
+#   else
+#       define wxUSE_FILEPICKERCTRL 0
+#   endif
+#endif /* !defined(wxUSE_FILEPICKERCTRL) */
+
 #ifndef wxUSE_FONTDLG
 #   ifdef wxABORT_ON_CONFIG_ERROR
 #       error "wxUSE_FONTDLG must be defined."
@@ -472,6 +496,14 @@
 #   endif
 #endif /* !defined(wxUSE_FONTMAP) */
 
+#ifndef wxUSE_FONTPICKERCTRL
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_FONTPICKERCTRL must be defined."
+#   else
+#       define wxUSE_FONTPICKERCTRL 0
+#   endif
+#endif /* !defined(wxUSE_FONTPICKERCTRL) */
+
 #ifndef wxUSE_GAUGE
 #   ifdef wxABORT_ON_CONFIG_ERROR
 #       error "wxUSE_GAUGE must be defined."
diff --git a/include/wx/clrpicker.h b/include/wx/clrpicker.h
new file mode 100644
index 0000000000..fdd10bd80e
--- /dev/null
+++ b/include/wx/clrpicker.h
@@ -0,0 +1,204 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/clrpicker.h
+// Purpose:     wxColourPickerCtrl base header
+// Author:      Francesco Montorsi (based on Vadim Zeitlin's code)
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_CLRPICKER_H_BASE_
+#define _WX_CLRPICKER_H_BASE_
+
+#include "wx/defs.h"
+
+
+#if wxUSE_COLOURPICKERCTRL
+
+#include "wx/control.h"
+#include "wx/pickerbase.h"
+
+
+class WXDLLIMPEXP_CORE wxColourPickerEvent;
+
+extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerCtrlNameStr[];
+
+
+// ----------------------------------------------------------------------------
+// wxColourPickerWidgetBase: a generic abstract interface which must be
+//                           implemented by controls used by wxColourPickerCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxColourPickerWidgetBase
+{
+public:
+    wxColourPickerWidgetBase() { m_colour = *wxBLACK; }
+    virtual ~wxColourPickerWidgetBase() {}
+
+    wxColour GetColour() const
+        { return m_colour; }
+    virtual void SetColour(const wxColour &col)
+        { m_colour = col; UpdateColour(); }
+    virtual void SetColour(const wxString &col)
+        { m_colour.Set(col); UpdateColour(); }
+
+protected:
+
+    virtual void UpdateColour() = 0;
+
+    // the current colour (may be invalid if none)
+    wxColour m_colour;
+};
+
+
+// Styles which must be supported by all controls implementing wxColourPickerWidgetBase
+// NB: these styles must be defined to carefully-chosen values to
+//     avoid conflicts with wxButton's styles
+
+// show the colour in HTML form (#AABBCC) as colour button label
+// (instead of no label at all)
+// NOTE: this style is supported just by wxColourButtonGeneric and
+//       thus is not exposed in wxColourPickerCtrl
+#define wxCLRP_SHOW_LABEL             0x0008
+
+// map platform-dependent controls which implement the wxColourPickerWidgetBase
+// under the name "wxColourPickerWidget".
+// NOTE: wxColourPickerCtrl allocates a wxColourPickerWidget and relies on the
+//       fact that all classes being mapped as wxColourPickerWidget have the
+//       same prototype for their contructor (and also explains why we use
+//       define instead of a typedef)
+#if defined(__WXGTK24__)        // since GTK > 2.4, there is GtkColorButton
+    #include "wx/gtk/clrpicker.h"
+    #define wxColourPickerWidget      wxColourButton
+#else
+    #include "wx/generic/clrpickerg.h"
+    #define wxColourPickerWidget      wxGenericColourButton
+#endif
+
+
+// ----------------------------------------------------------------------------
+// wxColourPickerCtrl: platform-independent class which embeds a
+// platform-dependent wxColourPickerWidget and, if wxCLRP_USE_TEXTCTRL style is
+// used, a textctrl next to it.
+// ----------------------------------------------------------------------------
+
+#define wxCLRP_USE_TEXTCTRL       wxPB_USE_TEXTCTRL
+#define wxCLRP_DEFAULT_STYLE      0
+
+class WXDLLIMPEXP_CORE wxColourPickerCtrl : public wxPickerBase
+{
+public:
+    wxColourPickerCtrl() : m_bIgnoreNextTextCtrlUpdate(false) {}
+    virtual ~wxColourPickerCtrl() {}
+
+
+    wxColourPickerCtrl(wxWindow *parent, wxWindowID id,
+        const wxColour& col = *wxBLACK, const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxCLRP_DEFAULT_STYLE,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxColourPickerCtrlNameStr)
+        : m_bIgnoreNextTextCtrlUpdate(false)
+        { Create(parent, id, col, pos, size, style, validator, name); }
+
+    bool Create(wxWindow *parent, wxWindowID id,
+           const wxColour& col = *wxBLACK,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = wxCLRP_DEFAULT_STYLE,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxColourPickerCtrlNameStr);
+
+
+public:         // public API
+
+    // get the colour chosen
+    wxColour GetColour() const
+        { return ((wxColourPickerWidget *)m_picker)->GetColour(); }
+
+    // set currently displayed color
+    void SetColour(const wxColour& col);
+
+    // set colour using RGB(r,g,b) syntax or considering given text as a colour name;
+    // returns true if the given text was successfully recognized.
+    bool SetColour(const wxString& text);
+
+
+public:        // internal functions
+
+    // update the button colour to match the text control contents
+    void UpdatePickerFromTextCtrl();
+
+    // update the text control to match the button's colour
+    void UpdateTextCtrlFromPicker();
+
+    // event handler for our picker
+    void OnColourChange(wxColourPickerEvent &);
+
+    virtual long GetPickerStyle(long style) const
+        { return (style & wxCLRP_SHOW_LABEL); }
+
+protected:
+
+    // true if the next UpdateTextCtrl() call is to ignore
+    bool m_bIgnoreNextTextCtrlUpdate;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxColourPickerCtrl)
+};
+
+
+// ----------------------------------------------------------------------------
+// wxColourPickerEvent: used by wxColourPickerCtrl only
+// ----------------------------------------------------------------------------
+
+BEGIN_DECLARE_EVENT_TYPES()
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_COLOURPICKER_CHANGED, 1102)
+END_DECLARE_EVENT_TYPES()
+
+class WXDLLIMPEXP_CORE wxColourPickerEvent : public wxCommandEvent
+{
+public:
+    wxColourPickerEvent() {}
+    wxColourPickerEvent(wxObject *generator, int id, const wxColour &col)
+        : wxCommandEvent(wxEVT_COMMAND_COLOURPICKER_CHANGED, id),
+          m_colour(col)
+    {
+        SetEventObject(generator);
+    }
+
+    wxColour GetColour() const { return m_colour; }
+    void SetColour(const wxColour &c) { m_colour = c; }
+
+private:
+    wxColour m_colour;
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxColourPickerEvent)
+};
+
+// ----------------------------------------------------------------------------
+// event types and macros
+// ----------------------------------------------------------------------------
+
+typedef void (wxEvtHandler::*wxColourPickerEventFunction)(wxColourPickerEvent&);
+
+#define wxColourPickerEventHandler(func) \
+    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxColourPickerEventFunction, &func)
+
+#define EVT_COLOURPICKER_CHANGED(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_COLOURPICKER_CHANGED, id, wxColourPickerEventHandler(fn))
+
+#ifdef _WX_DEFINE_DATE_EVENTS_
+    DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLOURPICKER_CHANGED)
+
+    IMPLEMENT_DYNAMIC_CLASS(wxColourPickerEvent, wxCommandEvent)
+#endif
+
+
+
+#endif // wxUSE_COLOURPICKERCTRL
+
+#endif // _WX_CLRPICKER_H_BASE_
+
diff --git a/include/wx/defs.h b/include/wx/defs.h
index fb71c72c9f..9739fbf260 100644
--- a/include/wx/defs.h
+++ b/include/wx/defs.h
@@ -1465,6 +1465,13 @@ enum wxBorder
 /*  window is resized (currently, makes sense for wxMSW only) */
 #define wxNO_FULL_REPAINT_ON_RESIZE 0
 
+/* A mask which can be used to filter (out) all wxWindow-specific styles.
+ */
+#define wxWINDOW_STYLE_MASK     \
+    (wxVSCROLL|wxHSCROLL|wxBORDER_MASK|wxALWAYS_SHOW_SB|wxCLIP_CHILDREN| \
+     wxCLIP_SIBLINGS|wxTRANSPARENT_WINDOW|wxTAB_TRAVERSAL|wxWANTS_CHARS| \
+     wxRETAINED|wxPOPUP_WINDOW|wxFULL_REPAINT_ON_RESIZE)
+
 /*
  * Extra window style flags (use wxWS_EX prefix to make it clear that they
  * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
diff --git a/include/wx/filepicker.h b/include/wx/filepicker.h
new file mode 100644
index 0000000000..218bda654c
--- /dev/null
+++ b/include/wx/filepicker.h
@@ -0,0 +1,378 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/filepicker.h
+// Purpose:     wxFilePickerCtrl, wxDirPickerCtrl base header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_FILEDIRPICKER_H_BASE_
+#define _WX_FILEDIRPICKER_H_BASE_
+
+#include "wx/defs.h"
+
+
+#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+#include "wx/control.h"
+#include "wx/pickerbase.h"
+#include "wx/filedlg.h"
+#include "wx/filename.h"
+
+
+class WXDLLIMPEXP_CORE wxFileDirPickerEvent;
+
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetLabel[];
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerCtrlNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorPromptStr[];
+
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetLabel[];
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerCtrlNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxDirSelectorPromptStr[];
+
+
+// ----------------------------------------------------------------------------
+// wxFileDirPickerWidgetBase: a generic abstract interface which must be
+//                           implemented by controls used by wxFileDirPickerCtrlBase
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase
+{
+public:
+    wxFileDirPickerWidgetBase() {  }
+    virtual ~wxFileDirPickerWidgetBase() {  }
+
+    wxString GetPath() const { return m_path; }
+    void SetPath(const wxString &str) { m_path=str; UpdateDialogPath(); }
+
+protected:
+    virtual void UpdateDialogPath() = 0;
+    virtual void UpdatePathFromDialog() = 0;
+
+    wxString m_path;
+};
+
+// Styles which must be supported by all controls implementing wxFileDirPickerWidgetBase
+// NB: these styles must be defined to carefully-chosen values to
+//     avoid conflicts with wxButton's styles
+
+#define wxFLP_OPEN                    0x0200
+#define wxFLP_SAVE                    0x0400
+#define wxFLP_OVERWRITE_PROMPT        0x0800
+#define wxFLP_FILE_MUST_EXIST         0x1000
+#define wxFLP_CHANGE_DIR              0x2000
+
+// NOTE: wxMULTIPLE is not supported !
+
+
+#define wxDIRP_DIR_MUST_EXIST         0x0008
+#define wxDIRP_CHANGE_DIR             0x0010
+
+
+// map platform-dependent controls which implement the wxFileDirPickerWidgetBase
+// under the name "wxFilePickerWidget" and "wxDirPickerWidget".
+// NOTE: wxFileDirPickerCtrlBase will allocate a wx{File|Dir}PickerWidget and this
+//       requires that all classes being mapped as wx{File|Dir}PickerWidget have the
+//       same prototype for the contructor...
+#if defined(__WXGTK24__)        // since GTK > 2.4, there is GtkColorButton
+    #include "wx/gtk/filepicker.h"
+    #define wxFilePickerWidget      wxFileButton
+    #define wxDirPickerWidget       wxDirButton
+#else
+    #include "wx/generic/filepickerg.h"
+    #define wxFilePickerWidget      wxGenericFileButton
+    #define wxDirPickerWidget       wxGenericDirButton
+#endif
+
+
+
+// ----------------------------------------------------------------------------
+// wxFileDirPickerWidgetBase
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFileDirPickerCtrlBase : public wxPickerBase
+{
+public:
+    wxFileDirPickerCtrlBase() : m_bIgnoreNextTextCtrlUpdate(false) {}
+    virtual ~wxFileDirPickerCtrlBase() {}
+
+    // NB: no default values since this function will never be used
+    //     directly by the user and derived classes wouldn't use them
+    bool CreateBase(wxWindow *parent,
+                    wxWindowID id,
+                    const wxString& path,
+                    const wxString &message,
+                    const wxString &wildcard,
+                    const wxPoint& pos,
+                    const wxSize& size,
+                    long style,
+                    const wxValidator& validator,
+                    const wxString& name);
+
+public:         // public API
+
+    wxString GetPath() const
+        { return ((wxFileDirPickerWidgetBase*)m_picker)->GetPath(); }
+    void SetPath(const wxString &str);
+
+public:        // internal functions
+
+    void UpdatePickerFromTextCtrl();
+    void UpdateTextCtrlFromPicker();
+
+    // event handler for our picker
+    void OnFileDirChange(wxFileDirPickerEvent &);
+
+    virtual bool CreatePicker(wxWindow *parent, const wxString& path,
+                      const wxString& message, const wxString& wildcard) = 0;
+
+    // Returns TRUE if the current path is a valid one
+    // (i.e. a valid file for a wxFilePickerWidget or a valid
+    //  folder for a wxDirPickerWidget).
+    virtual bool CheckPath(const wxString &str) const = 0;
+
+    // TRUE if any textctrl change should update the current working directory
+    virtual bool IsCwdToUpdate() const = 0;
+
+    // Returns the event type sent by this picker
+    virtual wxEventType GetEventType() const = 0;
+
+protected:
+
+    // true if the next UpdateTextCtrl() call is to ignore
+    bool m_bIgnoreNextTextCtrlUpdate;
+};
+
+#endif  // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+
+#if wxUSE_FILEPICKERCTRL
+
+// ----------------------------------------------------------------------------
+// wxFilePickerCtrl: platform-independent class which embeds the
+// platform-dependent wxFilePickerWidget and, if wxFLP_USE_TEXTCTRL style is
+// used, a textctrl next to it.
+// ----------------------------------------------------------------------------
+
+#define wxFLP_USE_TEXTCTRL            wxPB_USE_TEXTCTRL
+
+#ifdef __WXGTK__
+    // GTK apps usually don't have a textctrl next to the picker
+    #define wxFLP_DEFAULT_STYLE       wxFLP_OPEN
+#else
+    #define wxFLP_DEFAULT_STYLE       wxFLP_USE_TEXTCTRL|wxFLP_OPEN
+#endif
+
+class WXDLLIMPEXP_CORE wxFilePickerCtrl : public wxFileDirPickerCtrlBase
+{
+public:
+    wxFilePickerCtrl() {}
+    virtual ~wxFilePickerCtrl() {}
+
+    wxFilePickerCtrl(wxWindow *parent,
+                     wxWindowID id,
+                     const wxString& path = wxEmptyString,
+                     const wxString& message = wxFileSelectorPromptStr,
+                     const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
+                     const wxPoint& pos = wxDefaultPosition,
+                     const wxSize& size = wxDefaultSize,
+                     long style = wxFLP_DEFAULT_STYLE,
+                     const wxValidator& validator = wxDefaultValidator,
+                     const wxString& name = wxFilePickerCtrlNameStr)
+    {
+        Create(parent, id, path, message, wildcard, pos, size, style,
+               validator, name);
+    }
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxString& path = wxEmptyString,
+                const wxString& message = wxFileSelectorPromptStr,
+                const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxFLP_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFilePickerCtrlNameStr)
+    {
+        return wxFileDirPickerCtrlBase::CreateBase(parent, id, path,
+                                                   message, wildcard,
+                                                   pos, size, style,
+                                                   validator, name);
+    }
+
+
+public:     // overrides
+
+    bool CreatePicker(wxWindow *parent, const wxString& path,
+                      const wxString& message, const wxString& wildcard)
+    {
+        m_picker = new wxFilePickerWidget(parent, wxID_ANY,
+                                          wxFilePickerWidgetLabel,
+                                          path, message, wildcard,
+                                          wxDefaultPosition, wxDefaultSize,
+                                          GetPickerStyle(GetWindowStyle()));
+        return true;
+    }
+
+    // extracts the style for our picker from wxFileDirPickerCtrlBase's style
+    long GetPickerStyle(long style) const
+    {
+        return (style & (wxFLP_OPEN|wxFLP_SAVE|wxFLP_OVERWRITE_PROMPT|
+                            wxFLP_FILE_MUST_EXIST|wxFLP_CHANGE_DIR));
+    }
+
+    bool CheckPath(const wxString &path) const
+    {
+        return HasFlag(wxFLP_SAVE) || wxFileName::FileExists(path);
+    }
+
+    bool IsCwdToUpdate() const
+        { return HasFlag(wxFLP_CHANGE_DIR); }
+
+    wxEventType GetEventType() const
+        { return wxEVT_COMMAND_FILEPICKER_CHANGED; }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxFilePickerCtrl)
+};
+
+#endif      // wxUSE_FILEPICKERCTRL
+
+
+#if wxUSE_DIRPICKERCTRL
+
+// ----------------------------------------------------------------------------
+// wxDirPickerCtrl: platform-independent class which embeds the
+// platform-dependent wxDirPickerWidget and eventually a textctrl
+// (see wxDIRP_USE_TEXTCTRL) next to it.
+// ----------------------------------------------------------------------------
+
+#define wxDIRP_USE_TEXTCTRL            wxPB_USE_TEXTCTRL
+
+#ifdef __WXGTK__
+    // GTK apps usually don't have a textctrl next to the picker
+    #define wxDIRP_DEFAULT_STYLE       0
+#else
+    #define wxDIRP_DEFAULT_STYLE       wxDIRP_USE_TEXTCTRL
+#endif
+
+class WXDLLIMPEXP_CORE wxDirPickerCtrl : public wxFileDirPickerCtrlBase
+{
+public:
+    wxDirPickerCtrl() {}
+    virtual ~wxDirPickerCtrl() {}
+
+    wxDirPickerCtrl(wxWindow *parent, wxWindowID id,
+        const wxString& path = wxEmptyString,
+        const wxString& message = wxDirSelectorPromptStr,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxDIRP_DEFAULT_STYLE,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxDirPickerCtrlNameStr)
+    { Create(parent, id, path, message, pos, size, style, validator, name); }
+
+    bool Create(wxWindow *parent, wxWindowID id,
+        const wxString& path = wxEmptyString,
+        const wxString& message = wxDirSelectorPromptStr,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxDIRP_DEFAULT_STYLE,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxDirPickerCtrlNameStr)
+    { return wxFileDirPickerCtrlBase::CreateBase(parent, id, path, message, wxEmptyString,
+                                                 pos, size, style, validator, name); }
+
+
+public:     // overrides
+
+    bool CreatePicker(wxWindow *parent, const wxString& path,
+                      const wxString& message, const wxString& WXUNUSED(wildcard))
+    {
+        m_picker = new wxDirPickerWidget(parent, wxID_ANY, wxDirPickerWidgetLabel,
+                                         path, message, wxDefaultPosition, wxDefaultSize,
+                                         GetPickerStyle(GetWindowStyle()));
+        return true;
+    }
+
+    // extracts the style for our picker from wxFileDirPickerCtrlBase's style
+    long GetPickerStyle(long style) const
+        { return (style & (wxDIRP_DIR_MUST_EXIST|wxDIRP_CHANGE_DIR)); }
+
+    bool CheckPath(const wxString &path) const
+        { if (HasFlag(wxDIRP_DIR_MUST_EXIST)) return wxFileName::DirExists(path); else return true; }
+
+    bool IsCwdToUpdate() const
+        { return HasFlag(wxDIRP_CHANGE_DIR); }
+
+    wxEventType GetEventType() const
+        { return wxEVT_COMMAND_DIRPICKER_CHANGED; }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxDirPickerCtrl)
+};
+
+#endif      // wxUSE_DIRPICKERCTRL
+
+
+#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+// ----------------------------------------------------------------------------
+// wxFileDirPickerEvent: used by wxFilePickerCtrl and wxDirPickerCtrl only
+// ----------------------------------------------------------------------------
+
+BEGIN_DECLARE_EVENT_TYPES()
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_FILEPICKER_CHANGED, 1102)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_DIRPICKER_CHANGED, 1103)
+END_DECLARE_EVENT_TYPES()
+
+class WXDLLIMPEXP_CORE wxFileDirPickerEvent : public wxCommandEvent
+{
+public:
+    wxFileDirPickerEvent() {}
+    wxFileDirPickerEvent(wxEventType type, wxObject *generator, int id, const wxString &path)
+        : wxCommandEvent(type, id),
+          m_path(path)
+    {
+        SetEventObject(generator);
+    }
+
+    wxString GetPath() const { return m_path; }
+    void SetPath(const wxString &p) { m_path = p; }
+
+private:
+    wxString m_path;
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFileDirPickerEvent)
+};
+
+// ----------------------------------------------------------------------------
+// event types and macros
+// ----------------------------------------------------------------------------
+
+typedef void (wxEvtHandler::*wxFileDirPickerEventFunction)(wxFileDirPickerEvent&);
+
+#define wxFileDirPickerEventHandler(func) \
+    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxFileDirPickerEventFunction, &func)
+
+#define EVT_FILEPICKER_CHANGED(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FILEPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
+#define EVT_DIRPICKER_CHANGED(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_DIRPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
+
+#ifdef _WX_DEFINE_DATE_EVENTS_
+    DEFINE_EVENT_TYPE(wxEVT_COMMAND_FILEPICKER_CHANGED)
+    DEFINE_EVENT_TYPE(wxEVT_COMMAND_DIRPICKER_CHANGED)
+
+    IMPLEMENT_DYNAMIC_CLASS(wxFileDirPickerEvent, wxCommandEvent)
+#endif
+
+
+#endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+#endif // _WX_FILEDIRPICKER_H_BASE_
+
diff --git a/include/wx/fontpicker.h b/include/wx/fontpicker.h
new file mode 100644
index 0000000000..88a29d4b55
--- /dev/null
+++ b/include/wx/fontpicker.h
@@ -0,0 +1,227 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/fontpicker.h
+// Purpose:     wxFontPickerCtrl base header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_FONTPICKER_H_BASE_
+#define _WX_FONTPICKER_H_BASE_
+
+#include "wx/defs.h"
+
+
+#if wxUSE_FONTPICKERCTRL
+
+#include "wx/control.h"
+#include "wx/pickerbase.h"
+
+
+class WXDLLIMPEXP_CORE wxFontPickerEvent;
+
+extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerCtrlNameStr[];
+
+
+// ----------------------------------------------------------------------------
+// wxFontPickerWidgetBase: a generic abstract interface which must be
+//                         implemented by controls used by wxFontPickerCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFontPickerWidgetBase
+{
+public:
+    wxFontPickerWidgetBase() { m_selectedFont = *wxNORMAL_FONT; }
+    virtual ~wxFontPickerWidgetBase() {}
+
+    wxFont GetSelectedFont() const
+        { return m_selectedFont; }
+    virtual void SetSelectedFont(const wxFont &f)
+        { m_selectedFont = f; UpdateFont(); }
+
+protected:
+
+    virtual void UpdateFont() = 0;
+
+    // the current font (may be invalid if none)
+    // NOTE: don't call this m_font as wxWindow::m_font already exists
+    wxFont m_selectedFont;
+};
+
+// Styles which must be supported by all controls implementing wxFontPickerWidgetBase
+// NB: these styles must be defined to carefully-chosen values to
+//     avoid conflicts with wxButton's styles
+
+
+// keeps the label of the button updated with the fontface name + font size
+// E.g. choosing "Times New Roman bold, italic with size 10" from the fontdialog,
+//      updates the wxFontButtonGeneric's label (overwriting any previous label)
+//      with the "Times New Roman, 10" text (only fontface + fontsize is displayed
+//      to avoid extralong labels).
+#define wxFNTP_FONTDESC_AS_LABEL      0x0008
+
+// uses the currently selected font to draw the label of the button
+#define wxFNTP_USEFONT_FOR_LABEL      0x0010
+
+#if defined(__WXGTK24__)        // since GTK > 2.4, there is GtkFontButton
+    #include "wx/gtk/fontpicker.h"
+    #define wxFontPickerWidget      wxFontButton
+#else
+    #include "wx/generic/fontpickerg.h"
+    #define wxFontPickerWidget      wxGenericFontButton
+#endif
+
+
+// ----------------------------------------------------------------------------
+// wxFontPickerCtrl specific flags
+// ----------------------------------------------------------------------------
+
+#define wxFNTP_USE_TEXTCTRL       wxPB_USE_TEXTCTRL
+#define wxFNTP_DEFAULT_STYLE      wxFNTP_FONTDESC_AS_LABEL|wxFNTP_USEFONT_FOR_LABEL
+
+// not a style but rather the default value of the maximum pointsize allowed
+#define wxFNTP_MAXPOINT_SIZE      100
+
+
+// ----------------------------------------------------------------------------
+// wxFontPickerCtrl: platform-independent class which embeds the
+// platform-dependent wxFontPickerWidget andm if wxFNTP_USE_TEXTCTRL style is
+// used, a textctrl next to it.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFontPickerCtrl : public wxPickerBase
+{
+public:
+    wxFontPickerCtrl()
+        : m_bIgnoreNextTextCtrlUpdate(false),
+        m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
+    {
+    }
+
+    virtual ~wxFontPickerCtrl() {}
+
+
+    wxFontPickerCtrl(wxWindow *parent,
+                     wxWindowID id,
+                     const wxFont& initial = *wxNORMAL_FONT,
+                     const wxPoint& pos = wxDefaultPosition,
+                     const wxSize& size = wxDefaultSize,
+                     long style = wxFNTP_DEFAULT_STYLE,
+                     const wxValidator& validator = wxDefaultValidator,
+                     const wxString& name = wxFontPickerCtrlNameStr)
+        : m_bIgnoreNextTextCtrlUpdate(false),
+          m_nMaxPointSize(wxFNTP_MAXPOINT_SIZE)
+    {
+        Create(parent, id, initial, pos, size, style, validator, name);
+    }
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxFont& initial = *wxNORMAL_FONT,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxFNTP_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFontPickerCtrlNameStr);
+
+
+public:         // public API
+
+    // get the font chosen
+    wxFont GetSelectedFont() const
+        { return ((wxFontPickerWidget *)m_picker)->GetSelectedFont(); }
+
+    // sets currently displayed font
+    void SetSelectedFont(const wxFont& f);
+
+    // set/get the max pointsize
+    void SetMaxPointSize(unsigned int max)
+        { m_nMaxPointSize=max; }
+    unsigned int GetMaxPointSize() const
+        { return m_nMaxPointSize; }
+
+public:        // internal functions
+
+    void UpdatePickerFromTextCtrl();
+    void UpdateTextCtrlFromPicker();
+
+    // event handler for our picker
+    void OnFontChange(wxFontPickerEvent &);
+
+    // used to convert wxString <-> wxFont
+    virtual wxString Font2String(const wxFont &font);
+    virtual wxFont String2Font(const wxString &font);
+
+    // extracts the style for our picker from wxFontPickerCtrl's style
+    long GetPickerStyle(long style) const
+        { return (style & (wxFNTP_FONTDESC_AS_LABEL|wxFNTP_USEFONT_FOR_LABEL)); }
+
+protected:
+
+    // true if the next UpdateTextCtrl() call is to ignore
+    bool m_bIgnoreNextTextCtrlUpdate;
+
+    // the maximum pointsize allowed to the user
+    unsigned int m_nMaxPointSize;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxFontPickerCtrl)
+};
+
+
+// ----------------------------------------------------------------------------
+// wxFontPickerEvent: used by wxFontPickerCtrl only
+// ----------------------------------------------------------------------------
+
+BEGIN_DECLARE_EVENT_TYPES()
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_FONTPICKER_CHANGED, 1102)
+END_DECLARE_EVENT_TYPES()
+
+class WXDLLIMPEXP_CORE wxFontPickerEvent : public wxCommandEvent
+{
+public:
+    wxFontPickerEvent() {}
+    wxFontPickerEvent(wxObject *generator, int id, const wxFont &f)
+        : wxCommandEvent(wxEVT_COMMAND_FONTPICKER_CHANGED, id),
+          m_font(f)
+    {
+        SetEventObject(generator);
+    }
+
+    wxFont GetFont() const { return m_font; }
+    void SetFont(const wxFont &c) { m_font = c; }
+
+private:
+    wxFont m_font;
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFontPickerEvent)
+};
+
+// ----------------------------------------------------------------------------
+// event types and macros
+// ----------------------------------------------------------------------------
+
+typedef void (wxEvtHandler::*wxFontPickerEventFunction)(wxFontPickerEvent&);
+
+#define wxFontPickerEventHandler(func) \
+    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxFontPickerEventFunction, &func)
+
+#define EVT_FONTPICKER_CHANGED(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FONTPICKER_CHANGED, id, wxFontPickerEventHandler(fn))
+
+#ifdef _WX_DEFINE_DATE_EVENTS_
+    DEFINE_EVENT_TYPE(wxEVT_COMMAND_FONTPICKER_CHANGED)
+
+    IMPLEMENT_DYNAMIC_CLASS(wxFontPickerEvent, wxCommandEvent)
+#endif
+
+
+
+#endif // wxUSE_FONTPICKERCTRL
+
+#endif
+    // _WX_FONTPICKER_H_BASE_
diff --git a/include/wx/generic/clrpickerg.h b/include/wx/generic/clrpickerg.h
new file mode 100644
index 0000000000..5ec73c7fe1
--- /dev/null
+++ b/include/wx/generic/clrpickerg.h
@@ -0,0 +1,85 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/generic/clrpickerg.h
+// Purpose:     wxGenericColourButton header
+// Author:      Francesco Montorsi (based on Vadim Zeitlin's code)
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_CLRPICKER_H_
+#define _WX_CLRPICKER_H_
+
+class WXDLLIMPEXP_CORE wxColourData;
+
+//-----------------------------------------------------------------------------
+// wxGenericColourButton: a button which brings up a wxColourDialog
+//-----------------------------------------------------------------------------
+
+// show the colour in HTML form (#AABBCC) as colour button label
+#define wxCLRBTN_SHOW_LABEL     100
+
+// the default style
+#define wxCLRBTN_DEFAULT_STYLE  wxCLRBTN_SHOW_LABEL
+
+
+class WXDLLIMPEXP_CORE wxGenericColourButton : public wxButton,
+                                               public wxColourPickerWidgetBase
+{
+public:
+    wxGenericColourButton() {}
+    wxGenericColourButton(wxWindow *parent,
+                          wxWindowID id,
+                          const wxColour& col = *wxBLACK,
+                          const wxPoint& pos = wxDefaultPosition,
+                          const wxSize& size = wxDefaultSize,
+                          long style = wxCLRBTN_DEFAULT_STYLE,
+                          const wxValidator& validator = wxDefaultValidator,
+                          const wxString& name = wxColourPickerWidgetNameStr)
+    {
+        Create(parent, id, col, pos, size, style, validator, name);
+    }
+
+    virtual ~wxGenericColourButton() {}
+
+
+public:     // API extensions specific for wxGenericColourButton
+
+    // user can override this to init colour data in a different way
+    virtual void InitColourData();
+
+    // returns the colour data shown in wxColourDialog
+    wxColourData *GetColourData() { return &ms_data; }
+
+
+public:
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxColour& col = *wxBLACK,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxCLRBTN_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxColourPickerWidgetNameStr);
+
+    void OnButtonClick(wxCommandEvent &);
+
+
+protected:
+
+    void UpdateColour();
+
+    // the colour data shown in wxColourPickerCtrlGeneric
+    // controls. This member is static so that all colour pickers
+    // in the program share the same set of custom colours.
+    static wxColourData ms_data;
+
+private:
+   DECLARE_DYNAMIC_CLASS(wxGenericColourButton)
+};
+
+
+#endif // _WX_CLRPICKER_H_
diff --git a/include/wx/generic/filepickerg.h b/include/wx/generic/filepickerg.h
new file mode 100644
index 0000000000..b4ddc900c9
--- /dev/null
+++ b/include/wx/generic/filepickerg.h
@@ -0,0 +1,221 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/generic/filepickerg.h
+// Purpose:     wxGenericFileDirButton, wxGenericFileButton, wxGenericDirButton
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_FILEDIRPICKER_H_
+#define _WX_FILEDIRPICKER_H_
+
+#include "wx/filename.h"
+#include "wx/filedlg.h"
+#include "wx/dirdlg.h"
+
+
+extern const wxEventType wxEVT_COMMAND_DIRPICKER_CHANGED;
+extern const wxEventType wxEVT_COMMAND_FILEPICKER_CHANGED;
+
+
+//-----------------------------------------------------------------------------
+// wxGenericFileDirButton: a button which brings up a wx{File|Dir}Dialog
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton,
+                                                public wxFileDirPickerWidgetBase
+{
+public:
+    wxGenericFileDirButton() { m_dialog = NULL; }
+    wxGenericFileDirButton(wxWindow *parent,
+                           wxWindowID id,
+                           const wxString& label = wxFilePickerWidgetLabel,
+                           const wxString& path = wxEmptyString,
+                           const wxString &message = wxFileSelectorPromptStr,
+                           const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+                           const wxPoint& pos = wxDefaultPosition,
+                           const wxSize& size = wxDefaultSize,
+                           long style = 0,
+                           const wxValidator& validator = wxDefaultValidator,
+                           const wxString& name = wxFilePickerWidgetNameStr)
+    {
+        m_dialog = NULL;
+        Create(parent, id, label, path, message, wildcard,
+               pos, size, style, validator, name);
+    }
+
+    virtual ~wxGenericFileDirButton() {}
+
+public:     // overrideable
+
+    virtual bool CreateDialog(const wxString &message,
+                              const wxString &wildcard) = 0;
+
+    // NULL is because of a problem with destruction order in both generic & GTK code
+    virtual wxWindow *GetDialogParent()
+        { return NULL; }
+
+    virtual wxEventType GetEventType() const = 0;
+
+public:
+
+    bool Destroy()
+    {
+        m_dialog->Destroy();
+        return wxButton::Destroy();
+    }
+
+    bool Create(wxWindow *parent, wxWindowID id,
+           const wxString& label = wxFilePickerWidgetLabel,
+           const wxString& path = wxEmptyString,
+           const wxString &message = wxFileSelectorPromptStr,
+           const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxFilePickerWidgetNameStr);
+
+    // event handler for the click
+    void OnButtonClick(wxCommandEvent &);
+
+    wxDialog *m_dialog;
+};
+
+
+//-----------------------------------------------------------------------------
+// wxGenericFileButton: a button which brings up a wxFileDialog
+//-----------------------------------------------------------------------------
+
+#define wxFILEBTN_DEFAULT_STYLE                     wxFLP_OPEN
+
+class WXDLLIMPEXP_CORE wxGenericFileButton : public wxGenericFileDirButton
+{
+public:
+    wxGenericFileButton() {}
+    wxGenericFileButton(wxWindow *parent,
+                        wxWindowID id,
+                        const wxString& label = wxFilePickerWidgetLabel,
+                        const wxString& path = wxEmptyString,
+                        const wxString &message = wxFileSelectorPromptStr,
+                        const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+                        const wxPoint& pos = wxDefaultPosition,
+                        const wxSize& size = wxDefaultSize,
+                        long style = wxFILEBTN_DEFAULT_STYLE,
+                        const wxValidator& validator = wxDefaultValidator,
+                        const wxString& name = wxFilePickerWidgetNameStr)
+    {
+        Create(parent, id, label, path, message, wildcard,
+               pos, size, style, validator, name);
+    }
+
+public:     // overrideable
+
+    virtual long GetDialogStyle() const
+    {
+        long filedlgstyle = 0;
+
+        if (this->HasFlag(wxFLP_OPEN))
+            filedlgstyle |= wxFD_OPEN;
+        if (this->HasFlag(wxFLP_SAVE))
+            filedlgstyle |= wxFD_SAVE;
+        if (this->HasFlag(wxFLP_OVERWRITE_PROMPT))
+            filedlgstyle |= wxFD_OVERWRITE_PROMPT;
+        if (this->HasFlag(wxFLP_FILE_MUST_EXIST))
+            filedlgstyle |= wxFD_FILE_MUST_EXIST;
+        if (this->HasFlag(wxFLP_CHANGE_DIR))
+            filedlgstyle |= wxFD_CHANGE_DIR;
+
+        return filedlgstyle;
+    }
+
+    virtual bool CreateDialog(const wxString &message, const wxString &wildcard)
+    {
+        m_dialog = new wxFileDialog(GetDialogParent(), message,
+                                    wxEmptyString, wxEmptyString,
+                                    wildcard, GetDialogStyle());
+
+        // this sets both the default folder and the default file of the dialog
+        GetDialog()->SetPath(m_path);
+
+        return true;
+    }
+
+    wxFileDialog *GetDialog()
+        { return wxStaticCast(m_dialog, wxFileDialog); }
+    void UpdateDialogPath()
+        { GetDialog()->SetPath(m_path); }
+    void UpdatePathFromDialog()
+        { m_path = GetDialog()->GetPath(); }
+    wxEventType GetEventType() const
+        { return wxEVT_COMMAND_FILEPICKER_CHANGED; }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxGenericFileButton)
+};
+
+
+//-----------------------------------------------------------------------------
+// wxGenericDirButton: a button which brings up a wxDirDialog
+//-----------------------------------------------------------------------------
+
+#define wxDIRBTN_DEFAULT_STYLE                     0
+
+class WXDLLIMPEXP_CORE wxGenericDirButton : public wxGenericFileDirButton
+{
+public:
+    wxGenericDirButton() {}
+    wxGenericDirButton(wxWindow *parent,
+                       wxWindowID id,
+                       const wxString& label = wxDirPickerWidgetLabel,
+                       const wxString& path = wxEmptyString,
+                       const wxString &message = wxDirSelectorPromptStr,
+                       const wxPoint& pos = wxDefaultPosition,
+                       const wxSize& size = wxDefaultSize,
+                       long style = wxDIRBTN_DEFAULT_STYLE,
+                       const wxValidator& validator = wxDefaultValidator,
+                       const wxString& name = wxDirPickerWidgetNameStr)
+    {
+        Create(parent, id, label, path, message, wxEmptyString,
+               pos, size, style, validator, name);
+    }
+
+public:     // overrideable
+
+    virtual long GetDialogStyle() const
+    {
+        long dirdlgstyle = 0;
+
+        if (this->HasFlag(wxDIRP_DIR_MUST_EXIST))
+            dirdlgstyle |= wxDD_DIR_MUST_EXIST;
+        if (this->HasFlag(wxDIRP_CHANGE_DIR))
+            dirdlgstyle |= wxDD_CHANGE_DIR;
+
+        return dirdlgstyle;
+    }
+
+    virtual bool CreateDialog(const wxString &message, const wxString &WXUNUSED(wildcard))
+    {
+        m_dialog = new wxDirDialog(GetDialogParent(), message, m_path,
+                                   GetDialogStyle());
+        return true;
+    }
+
+    wxDirDialog *GetDialog()
+        { return wxStaticCast(m_dialog, wxDirDialog); }
+    void UpdateDialogPath()
+        { GetDialog()->SetPath(m_path); }
+    void UpdatePathFromDialog()
+        { m_path = GetDialog()->GetPath(); }
+    wxEventType GetEventType() const
+        { return wxEVT_COMMAND_DIRPICKER_CHANGED; }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxGenericDirButton)
+};
+
+
+#endif // _WX_FILEDIRPICKER_H_
diff --git a/include/wx/generic/fontpickerg.h b/include/wx/generic/fontpickerg.h
new file mode 100644
index 0000000000..6127ff049b
--- /dev/null
+++ b/include/wx/generic/fontpickerg.h
@@ -0,0 +1,81 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/generic/fontpickerg.h
+// Purpose:     wxGenericFontButton header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_FONTPICKER_H_
+#define _WX_FONTPICKER_H_
+
+class WXDLLIMPEXP_CORE wxFontData;
+
+//-----------------------------------------------------------------------------
+// wxGenericFontButton: a button which brings up a wxColourDialog
+//-----------------------------------------------------------------------------
+
+#define wxFONTBTN_DEFAULT_STYLE \
+    (wxFNTP_FONTDESC_AS_LABEL | wxFNTP_USEFONT_FOR_LABEL)
+
+class WXDLLIMPEXP_CORE wxGenericFontButton : public wxButton,
+                                             public wxFontPickerWidgetBase
+{
+public:
+    wxGenericFontButton() {}
+    wxGenericFontButton(wxWindow *parent,
+                        wxWindowID id,
+                        const wxFont &initial = *wxNORMAL_FONT,
+                        const wxPoint& pos = wxDefaultPosition,
+                        const wxSize& size = wxDefaultSize,
+                        long style = wxFONTBTN_DEFAULT_STYLE,
+                        const wxValidator& validator = wxDefaultValidator,
+                        const wxString& name = wxFontPickerWidgetNameStr)
+    {
+        Create(parent, id, initial, pos, size, style, validator, name);
+    }
+
+    virtual ~wxGenericFontButton() {}
+
+
+public:     // API extensions specific for wxGenericFontButton
+
+    // user can override this to init font data in a different way
+    virtual void InitFontData();
+
+    // returns the font data shown in wxColourDialog
+    wxFontData *GetFontData() { return &ms_data; }
+
+
+public:
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxFont &initial = *wxNORMAL_FONT,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxFONTBTN_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFontPickerWidgetNameStr);
+
+    void OnButtonClick(wxCommandEvent &);
+
+
+protected:
+
+    void UpdateFont();
+
+    // the colour data shown in wxColourPickerCtrlGeneric
+    // controls. This member is static so that all colour pickers
+    // in the program share the same set of custom colours.
+    static wxFontData ms_data;
+
+private:
+   DECLARE_DYNAMIC_CLASS(wxGenericFontButton)
+};
+
+
+#endif // _WX_FONTPICKER_H_
diff --git a/include/wx/gtk/clrpicker.h b/include/wx/gtk/clrpicker.h
new file mode 100644
index 0000000000..5e54c4c298
--- /dev/null
+++ b/include/wx/gtk/clrpicker.h
@@ -0,0 +1,70 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/clrpicker.h
+// Purpose:     wxColourButton header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_CLRPICKER_H_
+#define _WX_GTK_CLRPICKER_H_
+
+// since GtkColorButton is available only for GTK+ >= 2.4,
+// we need to use generic version if we detect (at runtime)
+// that GTK+ < 2.4
+#include "wx/generic/clrpickerg.h"
+
+//-----------------------------------------------------------------------------
+// wxColourButton
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxColourButton : public wxGenericColourButton
+{
+public:
+    wxColourButton() : m_topParent(NULL) {}
+    wxColourButton(wxWindow *parent,
+                   wxWindowID id,
+                   const wxColour& initial = *wxBLACK,
+                   const wxPoint& pos = wxDefaultPosition,
+                   const wxSize& size = wxDefaultSize,
+                   long style = wxCLRBTN_DEFAULT_STYLE,
+                   const wxValidator& validator = wxDefaultValidator,
+                   const wxString& name = wxColourPickerWidgetNameStr)
+        : m_topParent(NULL)
+    {
+        Create(parent, id, initial, pos, size, style, validator, name);
+    }
+
+    virtual ~wxColourButton();
+
+
+public:     // overrides
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxColour& initial = *wxBLACK,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxCLRBTN_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxColourPickerWidgetNameStr);
+
+    void UpdateColour();
+
+
+public:     // used by the GTK callback only
+
+    GdkColor *GetGdkColor() const
+        { return m_colour.GetColor(); }
+
+    wxWindow *m_topParent;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxColourButton)
+};
+
+#endif // _WX_GTK_CLRPICKER_H_
+
diff --git a/include/wx/gtk/filepicker.h b/include/wx/gtk/filepicker.h
new file mode 100644
index 0000000000..f9dab6e247
--- /dev/null
+++ b/include/wx/gtk/filepicker.h
@@ -0,0 +1,134 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/filedirpicker.h
+// Purpose:     wxFileButton, wxDirButton header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_FILEPICKER_H_
+#define _WX_GTK_FILEPICKER_H_
+
+// since GtkColorButton is available only for GTK+ >= 2.4,
+// we need to use generic versions if we detect (at runtime)
+// that GTK+ < 2.4
+#include "wx/generic/filepickerg.h"
+
+//-----------------------------------------------------------------------------
+// wxFileButton
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFileButton : public wxGenericFileButton
+{
+public:
+    wxFileButton() {}
+    wxFileButton(wxWindow *parent,
+                 wxWindowID id,
+                 const wxString& label = wxFilePickerWidgetLabel,
+                 const wxString &path = wxEmptyString,
+                 const wxString &message = wxFileSelectorPromptStr,
+                 const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = wxFILEBTN_DEFAULT_STYLE,
+                 const wxValidator& validator = wxDefaultValidator,
+                 const wxString& name = wxFilePickerWidgetNameStr)
+    {
+        Create(parent, id, label, path, message, wildcard,
+               pos, size, style, validator, name);
+    }
+
+    virtual ~wxFileButton() ;
+
+
+public:     // overrides
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxString& label = wxFilePickerWidgetLabel,
+                const wxString &path = wxEmptyString,
+                const wxString &message = wxFileSelectorPromptStr,
+                const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFilePickerWidgetNameStr);
+
+    // event handler for the click
+    void OnDialogOK(wxCommandEvent &);
+
+
+    // GtkFileChooserButton does not support GTK_FILE_CHOOSER_ACTION_SAVE
+    // so we replace it with GTK_FILE_CHOOSER_ACTION_OPEN
+    long GetDialogStyle() const
+    {
+        return (wxGenericFileButton::GetDialogStyle() & ~wxFD_SAVE) | wxFD_OPEN;
+    }
+
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxFileButton)
+};
+
+
+//-----------------------------------------------------------------------------
+// wxDirButton
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxDirButton : public wxGenericDirButton
+{
+public:
+    wxDirButton() {}
+    wxDirButton(wxWindow *parent,
+                wxWindowID id,
+                const wxString& label = wxFilePickerWidgetLabel,
+                const wxString &path = wxEmptyString,
+                const wxString &message = wxFileSelectorPromptStr,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxDIRBTN_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFilePickerWidgetNameStr)
+    {
+        Create(parent, id, label, path, message, wxEmptyString,
+                pos, size, style, validator, name);
+    }
+
+    virtual ~wxDirButton();
+
+
+public:     // overrides
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxString& label = wxFilePickerWidgetLabel,
+                const wxString &path = wxEmptyString,
+                const wxString &message = wxFileSelectorPromptStr,
+                const wxString &wildcard = wxFileSelectorDefaultWildcardStr,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFilePickerWidgetNameStr);
+
+    // used by the GTK callback only
+    void UpdatePath(char *gtkpath)
+        { m_path = wxString::FromAscii(gtkpath); }
+
+    // GtkFileChooserButton does not support GTK_FILE_CHOOSER_CREATE_FOLDER
+    // thus we must ensure that the wxDD_DIR_MUST_EXIST style was given
+    long GetDialogStyle() const
+    {
+        return (wxGenericDirButton::GetDialogStyle() | wxDD_DIR_MUST_EXIST);
+    }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxDirButton)
+};
+
+#endif // _WX_GTK_FILEPICKER_H_
+
diff --git a/include/wx/gtk/fontpicker.h b/include/wx/gtk/fontpicker.h
new file mode 100644
index 0000000000..8c97e936be
--- /dev/null
+++ b/include/wx/gtk/fontpicker.h
@@ -0,0 +1,69 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/fontpicker.h
+// Purpose:     wxFontButton header
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_FONTPICKER_H_
+#define _WX_GTK_FONTPICKER_H_
+
+// since GtkFontButton is available only for GTK+ >= 2.4,
+// we need to use generic version if we detect (at runtime)
+// that GTK+ < 2.4
+#include "wx/generic/fontpickerg.h"
+
+//-----------------------------------------------------------------------------
+// wxFontButton
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxFontButton : public wxGenericFontButton
+{
+public:
+    wxFontButton() {}
+    wxFontButton(wxWindow *parent,
+                 wxWindowID id,
+                 const wxFont& initial = *wxNORMAL_FONT,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = wxFONTBTN_DEFAULT_STYLE,
+                 const wxValidator& validator = wxDefaultValidator,
+                 const wxString& name = wxFontPickerWidgetNameStr)
+    {
+       Create(parent, id, initial, pos, size, style, validator, name);
+    }
+
+    virtual ~wxFontButton();
+
+
+public:     // overrides
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxFont& initial = *wxNORMAL_FONT,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxFONTBTN_DEFAULT_STYLE,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxFontPickerWidgetNameStr);
+
+    void UpdateFont();
+
+
+public:     // used by the GTK callback only
+
+    void SetNativeFontInfo(const gchar *gtkdescription)
+        { m_selectedFont.SetNativeFontInfo(wxString::FromAscii(gtkdescription)); }
+
+    wxWindow *m_topParent;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxFontButton)
+};
+
+#endif // _WX_GTK_FONTPICKER_H_
+
diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h
index 207602f783..d0d22ba802 100644
--- a/include/wx/mac/setup0.h
+++ b/include/wx/mac/setup0.h
@@ -576,9 +576,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index eb9a6a88dd..cbaa364b7c 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -575,9 +575,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index bdc82da1cb..23f4125aa6 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -575,9 +575,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index 56d77b8169..c2ed4b1591 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -575,9 +575,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h
index 7b0b6a2114..8b14cb246e 100644
--- a/include/wx/os2/setup0.h
+++ b/include/wx/os2/setup0.h
@@ -575,9 +575,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h
index 140b3f9562..f773ed6280 100644
--- a/include/wx/palmos/setup0.h
+++ b/include/wx/palmos/setup0.h
@@ -575,9 +575,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/pickerbase.h b/include/wx/pickerbase.h
new file mode 100644
index 0000000000..fb6ad746a0
--- /dev/null
+++ b/include/wx/pickerbase.h
@@ -0,0 +1,116 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/pickerbase.h
+// Purpose:     wxPickerBase definition
+// Author:      Francesco Montorsi (based on Vadim Zeitlin's code)
+// Modified by:
+// Created:     14/4/2006
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// RCS-ID:      $Id$
+// Licence:     wxWindows Licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PICKERBASE_H_BASE_
+#define _WX_PICKERBASE_H_BASE_
+
+#include "wx/defs.h"
+#include "wx/control.h"
+#include "wx/textctrl.h"
+
+// ----------------------------------------------------------------------------
+// wxPickerBase is the base class for the picker controls which support
+// a wxPB_USE_TEXTCTRL style; i.e. for those pickers which can use an auxiliary
+// text control next to the 'real' picker.
+//
+// The wxTextPickerHelper class manages enabled/disabled state of the text control,
+// its sizing and positioning.
+// ----------------------------------------------------------------------------
+
+#define wxPB_USE_TEXTCTRL           0x0002
+
+class WXDLLIMPEXP_CORE wxPickerBase : public wxControl
+{
+public:
+    // ctor: text is the associated text control
+    wxPickerBase() : m_text(NULL), m_picker(NULL),
+                     m_margin(5), m_textProportion(2) {}
+    virtual ~wxPickerBase();
+
+
+    // if present, intercepts wxPB_USE_TEXTCTRL style and creates the text control
+    // The 3rd argument is the initial wxString to display in the text control
+    bool CreateBase(wxWindow *parent, wxWindowID id,
+        const wxString& text = wxEmptyString,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = 0,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxButtonNameStr);
+
+
+public:     // public API
+
+    // margin between the text control and the picker
+    void SetInternalMargin(int newmargin);
+    int GetInternalMargin() const { return m_margin; }
+
+    // proportion of the text control respect the picker
+    // (which has a fixed proportion value of 1)
+    void SetTextCtrlProportion(int prop) { wxASSERT(prop>=1); m_textProportion=prop; }
+    int GetTextCtrlProportion() const { return m_textProportion; }
+
+    bool HasTextCtrl() const
+        { return m_text != NULL; }
+    wxTextCtrl *GetTextCtrl()
+        { return m_text; }
+    wxControl *GetPickerCtrl()
+        { return m_picker; }
+
+public:     // wxWindow overrides
+
+    void DoSetSizeHints(int minW, int minH,
+                        int maxW = wxDefaultCoord, int maxH = wxDefaultCoord,
+                        int incW = wxDefaultCoord, int incH = wxDefaultCoord );
+
+    void DoSetSize(int x, int y,
+                   int width, int height,
+                   int sizeFlags = wxSIZE_AUTO);
+
+    wxSize DoGetBestSize() const;
+
+
+public:     // methods that derived class must/may override
+
+    virtual void UpdatePickerFromTextCtrl() = 0;
+    virtual void UpdateTextCtrlFromPicker() = 0;
+
+protected:        // utility functions
+
+    inline int GetTextCtrlWidth(int given);
+
+    // event handlers
+    void OnTextCtrlDelete(wxWindowDestroyEvent &);
+    void OnTextCtrlUpdate(wxCommandEvent &);
+    void OnTextCtrlKillFocus(wxFocusEvent &);
+
+    // returns the set of styles for the attached wxTextCtrl
+    // from given wxPickerBase's styles
+    virtual long GetTextCtrlStyle(long style) const
+        { return (style & wxWINDOW_STYLE_MASK); }
+
+    // returns the set of styles for the m_picker
+    virtual long GetPickerStyle(long style) const
+        { return (style & wxWINDOW_STYLE_MASK); }
+
+protected:
+    wxTextCtrl *m_text;     // can be NULL
+    wxControl *m_picker;
+
+    int m_margin;           // distance between subcontrols
+    int m_textProportion;   // proportion between textctrl and other item
+
+private:
+    DECLARE_ABSTRACT_CLASS(wxPickerBase)
+};
+
+
+#endif
+    // _WX_PICKERBASE_H_BASE_
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 3a5b04ca8a..dc4385b8bd 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -571,9 +571,13 @@
 #define wxUSE_CHECKBOX      1   // wxCheckBox
 #define wxUSE_CHECKLISTBOX  1   // wxCheckListBox (requires wxUSE_OWNER_DRAWN)
 #define wxUSE_CHOICE        1   // wxChoice
+#define wxUSE_COLOURPICKERCTRL 1    // wxColourPickerCtrl
 #define wxUSE_COMBOBOX      1   // wxComboBox
 #define wxUSE_DATAVIEWCTRL  1   // wxDataViewCtrl
 #define wxUSE_DATEPICKCTRL  1   // wxDatePickerCtrl
+#define wxUSE_DIRPICKERCTRL 1   // wxDirPickerCtrl
+#define wxUSE_FILEPICKERCTRL 1  // wxFilePickerCtrl
+#define wxUSE_FONTPICKERCTRL 1  // wxFontPickerCtrl
 #define wxUSE_GAUGE         1   // wxGauge
 #define wxUSE_HYPERLINKCTRL 1   // wxHyperlinkCtrl
 #define wxUSE_LISTBOX       1   // wxListBox
diff --git a/include/wx/xrc/xh_all.h b/include/wx/xrc/xh_all.h
index 9e9f0c3984..7c70ee1b65 100644
--- a/include/wx/xrc/xh_all.h
+++ b/include/wx/xrc/xh_all.h
@@ -57,6 +57,10 @@
 #include "wx/xrc/xh_statbar.h"
 #include "wx/xrc/xh_mdi.h"
 #include "wx/xrc/xh_grid.h"
+#include "wx/xrc/xh_clrpicker.h"
+#include "wx/xrc/xh_filepicker.h"
+#include "wx/xrc/xh_fontpicker.h"
+#include "wx/xrc/xh_dirpicker.h"
 #include "wx/xrc/xh_hyperlink.h"
 
 #endif // _WX_XH_ALL_H_
diff --git a/include/wx/xrc/xh_clrpicker.h b/include/wx/xrc/xh_clrpicker.h
new file mode 100644
index 0000000000..c41fe4a3bb
--- /dev/null
+++ b/include/wx/xrc/xh_clrpicker.h
@@ -0,0 +1,29 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_CLRPICKERCTRL_H_
+#define _WX_XH_CLRPICKERCTRL_H_
+
+#include "wx/xrc/xmlres.h"
+
+#if wxUSE_COLOURPICKERCTRL
+
+class WXDLLIMPEXP_XRC wxColourPickerCtrlXmlHandler : public wxXmlResourceHandler
+{
+DECLARE_DYNAMIC_CLASS(wxColourPickerCtrlXmlHandler)
+public:
+    wxColourPickerCtrlXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // wxUSE_COLOURPICKERCTRL
+
+#endif // _WX_XH_CLRPICKERCTRL_H_
diff --git a/include/wx/xrc/xh_dirpicker.h b/include/wx/xrc/xh_dirpicker.h
new file mode 100644
index 0000000000..65f52ff2b9
--- /dev/null
+++ b/include/wx/xrc/xh_dirpicker.h
@@ -0,0 +1,29 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_DIRPICKERCTRL_H_
+#define _WX_XH_DIRPICKERCTRL_H_
+
+#include "wx/xrc/xmlres.h"
+
+#if wxUSE_DIRPICKERCTRL
+
+class WXDLLIMPEXP_XRC wxDirPickerCtrlXmlHandler : public wxXmlResourceHandler
+{
+DECLARE_DYNAMIC_CLASS(wxDirPickerCtrlXmlHandler)
+public:
+    wxDirPickerCtrlXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // wxUSE_DIRPICKERCTRL
+
+#endif // _WX_XH_DIRPICKERCTRL_H_
diff --git a/include/wx/xrc/xh_filepicker.h b/include/wx/xrc/xh_filepicker.h
new file mode 100644
index 0000000000..cd5e77293a
--- /dev/null
+++ b/include/wx/xrc/xh_filepicker.h
@@ -0,0 +1,29 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_FILEPICKERCTRL_H_
+#define _WX_XH_FILEPICKERCTRL_H_
+
+#include "wx/xrc/xmlres.h"
+
+#if wxUSE_FILEPICKERCTRL
+
+class WXDLLIMPEXP_XRC wxFilePickerCtrlXmlHandler : public wxXmlResourceHandler
+{
+DECLARE_DYNAMIC_CLASS(wxFilePickerCtrlXmlHandler)
+public:
+    wxFilePickerCtrlXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // wxUSE_FILEPICKERCTRL
+
+#endif // _WX_XH_FILEPICKERCTRL_H_
diff --git a/include/wx/xrc/xh_fontpicker.h b/include/wx/xrc/xh_fontpicker.h
new file mode 100644
index 0000000000..a6d165971f
--- /dev/null
+++ b/include/wx/xrc/xh_fontpicker.h
@@ -0,0 +1,29 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_FONTPICKERCTRL_H_
+#define _WX_XH_FONTPICKERCTRL_H_
+
+#include "wx/xrc/xmlres.h"
+
+#if wxUSE_FONTPICKERCTRL
+
+class WXDLLIMPEXP_XRC wxFontPickerCtrlXmlHandler : public wxXmlResourceHandler
+{
+DECLARE_DYNAMIC_CLASS(wxFontPickerCtrlXmlHandler)
+public:
+    wxFontPickerCtrlXmlHandler();
+    virtual wxObject *DoCreateResource();
+    virtual bool CanHandle(wxXmlNode *node);
+};
+
+#endif // wxUSE_FONTPICKERCTRL
+
+#endif // _WX_XH_FONTPICKERCTRL_H_
diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in
index 336f16422f..b080ed13a2 100644
--- a/samples/widgets/Makefile.in
+++ b/samples/widgets/Makefile.in
@@ -52,8 +52,10 @@ WIDGETS_OBJECTS =  \
 	widgets_combobox.o \
 	widgets_datepick.o \
 	widgets_gauge.o \
+	widgets_hyperlnk.o \
 	widgets_listbox.o \
 	widgets_notebook.o \
+	widgets_picker.o \
 	widgets_radiobox.o \
 	widgets_slider.o \
 	widgets_spinbtn.o \
@@ -215,12 +217,18 @@ widgets_datepick.o: $(srcdir)/datepick.cpp
 widgets_gauge.o: $(srcdir)/gauge.cpp
 	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/gauge.cpp
 
+widgets_hyperlnk.o: $(srcdir)/hyperlnk.cpp
+	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/hyperlnk.cpp
+
 widgets_listbox.o: $(srcdir)/listbox.cpp
 	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/listbox.cpp
 
 widgets_notebook.o: $(srcdir)/notebook.cpp
 	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/notebook.cpp
 
+widgets_picker.o: $(srcdir)/picker.cpp
+	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/picker.cpp
+
 widgets_radiobox.o: $(srcdir)/radiobox.cpp
 	$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/radiobox.cpp
 
diff --git a/samples/widgets/icons/picker.xpm b/samples/widgets/icons/picker.xpm
new file mode 100644
index 0000000000..79310ba9d0
--- /dev/null
+++ b/samples/widgets/icons/picker.xpm
@@ -0,0 +1,183 @@
+/* XPM */
+static char *picker_xpm[]={
+"32 32 148 2",
+"Qt c None",
+".P c #00a900",
+".q c #00aa01",
+".y c #00ab01",
+".r c #00ac01",
+".G c #00ad01",
+".j c #018700",
+".C c #018901",
+".L c #018d00",
+".Q c #01a901",
+".D c #029902",
+".O c #029b02",
+".F c #03ab03",
+".Y c #059a05",
+".u c #067706",
+".Z c #069905",
+".E c #06ab06",
+".W c #0d7e09",
+"#s c #0d8109",
+".T c #0f750e",
+".3 c #117611",
+"#b c #167616",
+".z c #16b116",
+".0 c #179716",
+".b c #198219",
+".9 c #1a7a16",
+".A c #1a7a19",
+".V c #1a8719",
+"#j c #1f821a",
+"#l c #217d1f",
+".f c #218b20",
+".x c #22b422",
+"#t c #267c23",
+".c c #278427",
+".s c #288428",
+".7 c #2a8e29",
+"#B c #2b712a",
+".m c #319231",
+"#. c #31a130",
+".M c #32bc32",
+".X c #349632",
+".H c #37bb37",
+"#h c #389635",
+".p c #3ebd3e",
+".8 c #3f923c",
+".I c #40ab40",
+".i c #52c152",
+".R c #52c353",
+".v c #5cc15c",
+"#A c #5e795f",
+".a c #5fa25f",
+".6 c #639064",
+"#u c #659a65",
+".B c #68a868",
+"an c #69696a",
+".w c #6bcb6c",
+"af c #6e6e6f",
+"#9 c #6e6e70",
+"#5 c #6f6f70",
+".K c #70ab70",
+"#0 c #717172",
+"#W c #727273",
+"aq c #737373",
+"#S c #737374",
+"#G c #747475",
+"## c #75bc74",
+".J c #77a876",
+"ao c #797979",
+".S c #7ece7e",
+".1 c #7fd27f",
+".k c #80b080",
+"ag c #818181",
+"ak c #838384",
+"aa c #878788",
+".d c #8ab88a",
+"#r c #8dbc8d",
+"#2 c #8e8e90",
+"#O c #8f8f90",
+"#J c #909091",
+"#D c #909092",
+"#e c #919192",
+".t c #92bd92",
+"al c #939395",
+".N c #93d893",
+"#C c #95b795",
+"#6 c #989899",
+"#m c #9abc9a",
+"#a c #9ecb9e",
+".e c #a5c8a5",
+".2 c #a5daa5",
+".o c #a9e0a9",
+"#k c #aad4a9",
+".g c #abddab",
+"#i c #accaab",
+"#H c #afafaf",
+"#M c #b0b0b0",
+"am c #b0b0b2",
+"a. c #b1b1b1",
+".n c #b4e3b4",
+".l c #b7d1b7",
+"aj c #bababc",
+"#g c #bbc9bc",
+"#d c #bcbcbc",
+"#v c #bdbdbd",
+".5 c #bebebe",
+"#I c #bfbfbf",
+".4 c #bfd2bf",
+"#N c #c0c0c0",
+"ai c #c0c0c3",
+"#T c #c1c1c1",
+"ah c #c5c5c8",
+"ar c #c8c8c8",
+"ac c #c8c8cb",
+"#c c #c8d8c8",
+"a# c #cbcbcb",
+".# c #cbdccb",
+"#1 c #cccccc",
+"ae c #cececf",
+"#8 c #cfcfd1",
+"#4 c #d0d0d2",
+"#f c #d0d0d3",
+"#Z c #d1d1d2",
+"#n c #d1d1d3",
+"#V c #d2d2d3",
+"#w c #d2d2d4",
+"#K c #d3d3d4",
+"#p c #d3d3d5",
+"#P c #d3d3d6",
+"#F c #d4d4d5",
+"#z c #d4d4d6",
+"#X c #d4d4d7",
+"#3 c #d5d5d8",
+"#U c #d8d8da",
+"#Q c #d9d9db",
+"#E c #d9d9dc",
+"ap c #dadada",
+"ad c #dadadb",
+"#x c #dadadc",
+"#q c #dadeda",
+"#o c #dbdbdd",
+"ab c #dddddf",
+".h c #ddf3dd",
+"#y c #e2e2e3",
+"#L c #e3e3e3",
+"#R c #e3e3e4",
+".U c #e3e8e3",
+"#Y c #e4e4e4",
+"#7 c #e5e5e5",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e.f.g.h.i.j.kQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.l.m.n.o.p.q.r.sQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.t.u.v.w.x.y.r.z.AQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.B.C.D.E.F.G.y.H.I.JQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.K.L.M.N.O.P.Q.R.S.T.UQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.V.W.X.Y.Z.0.1.2.3.4QtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5.6.7.8.9#.###a#b#cQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#d#e#f#g#h#i#j#k#l#mQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt#d#e#n#o#p#q#r#s#t#uQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt#v#e#w#x#p#y#z#A#B#CQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.5#D#w#E#p#y#F#G#HQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt#I#J#p#E#K#L#K#G#MQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt#N#O#P#Q#K#R#K#S#MQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt#T#e#P#U#K#R#V#W#MQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt#T#e#X#U#K#Y#Z#0#MQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt#1#2#3#U#V#Y#4#5#MQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt#6#X#n#K#7#8#9a.QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQta#aaabacadaeaf#HQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtagahacaiajaf#HQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtakalamanaoapQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt#v#5aqarQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
diff --git a/samples/widgets/makefile.bcc b/samples/widgets/makefile.bcc
index 1f1e7db121..e8d0accc26 100644
--- a/samples/widgets/makefile.bcc
+++ b/samples/widgets/makefile.bcc
@@ -42,6 +42,7 @@ WIDGETS_OBJECTS =  \
 	$(OBJS)\widgets_hyperlnk.obj \
 	$(OBJS)\widgets_listbox.obj \
 	$(OBJS)\widgets_notebook.obj \
+	$(OBJS)\widgets_picker.obj \
 	$(OBJS)\widgets_radiobox.obj \
 	$(OBJS)\widgets_slider.obj \
 	$(OBJS)\widgets_spinbtn.obj \
@@ -263,6 +264,9 @@ $(OBJS)\widgets_listbox.obj: .\listbox.cpp
 $(OBJS)\widgets_notebook.obj: .\notebook.cpp
 	$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
 
+$(OBJS)\widgets_picker.obj: .\picker.cpp
+	$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
+
 $(OBJS)\widgets_radiobox.obj: .\radiobox.cpp
 	$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
 
diff --git a/samples/widgets/makefile.gcc b/samples/widgets/makefile.gcc
index fe219c4656..015d5a0eeb 100644
--- a/samples/widgets/makefile.gcc
+++ b/samples/widgets/makefile.gcc
@@ -35,6 +35,7 @@ WIDGETS_OBJECTS =  \
 	$(OBJS)\widgets_hyperlnk.o \
 	$(OBJS)\widgets_listbox.o \
 	$(OBJS)\widgets_notebook.o \
+	$(OBJS)\widgets_picker.o \
 	$(OBJS)\widgets_radiobox.o \
 	$(OBJS)\widgets_slider.o \
 	$(OBJS)\widgets_spinbtn.o \
@@ -256,6 +257,9 @@ $(OBJS)\widgets_listbox.o: ./listbox.cpp
 $(OBJS)\widgets_notebook.o: ./notebook.cpp
 	$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\widgets_picker.o: ./picker.cpp
+	$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\widgets_radiobox.o: ./radiobox.cpp
 	$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
 
diff --git a/samples/widgets/makefile.vc b/samples/widgets/makefile.vc
index 49a91e9ec4..c4027d8255 100644
--- a/samples/widgets/makefile.vc
+++ b/samples/widgets/makefile.vc
@@ -35,6 +35,7 @@ WIDGETS_OBJECTS =  \
 	$(OBJS)\widgets_hyperlnk.obj \
 	$(OBJS)\widgets_listbox.obj \
 	$(OBJS)\widgets_notebook.obj \
+	$(OBJS)\widgets_picker.obj \
 	$(OBJS)\widgets_radiobox.obj \
 	$(OBJS)\widgets_slider.obj \
 	$(OBJS)\widgets_spinbtn.obj \
@@ -338,6 +339,9 @@ $(OBJS)\widgets_listbox.obj: .\listbox.cpp
 $(OBJS)\widgets_notebook.obj: .\notebook.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
 
+$(OBJS)\widgets_picker.obj: .\picker.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
+
 $(OBJS)\widgets_radiobox.obj: .\radiobox.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
 
diff --git a/samples/widgets/makefile.wat b/samples/widgets/makefile.wat
index dd433e2716..45ecc11571 100644
--- a/samples/widgets/makefile.wat
+++ b/samples/widgets/makefile.wat
@@ -232,6 +232,7 @@ WIDGETS_OBJECTS =  &
 	$(OBJS)\widgets_hyperlnk.obj &
 	$(OBJS)\widgets_listbox.obj &
 	$(OBJS)\widgets_notebook.obj &
+	$(OBJS)\widgets_picker.obj &
 	$(OBJS)\widgets_radiobox.obj &
 	$(OBJS)\widgets_slider.obj &
 	$(OBJS)\widgets_spinbtn.obj &
@@ -293,6 +294,9 @@ $(OBJS)\widgets_listbox.obj :  .AUTODEPEND .\listbox.cpp
 $(OBJS)\widgets_notebook.obj :  .AUTODEPEND .\notebook.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
 
+$(OBJS)\widgets_picker.obj :  .AUTODEPEND .\picker.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
+
 $(OBJS)\widgets_radiobox.obj :  .AUTODEPEND .\radiobox.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
 
diff --git a/samples/widgets/picker.cpp b/samples/widgets/picker.cpp
new file mode 100644
index 0000000000..4569a620d0
--- /dev/null
+++ b/samples/widgets/picker.cpp
@@ -0,0 +1,577 @@
+/////////////////////////////////////////////////////////////////////////////
+// Program:     wxWidgets Widgets Sample
+// Name:        picker.cpp
+// Purpose:     Part of the widgets sample showing wx*PickerCtrl
+// Author:      Francesco Montorsi
+// Created:     22/4/2006
+// Id:          $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// License:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_COLOURPICKERCTRL || wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL || wxUSE_FONTPICKERCTRL
+
+// for all others, include the necessary headers
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+    #include "wx/log.h"
+#endif
+
+#include "wx/artprov.h"
+#include "wx/sizer.h"
+#include "wx/stattext.h"
+#include "wx/checkbox.h"
+#include "wx/imaglist.h"
+
+#include "wx/clrpicker.h"
+#include "wx/filepicker.h"
+#include "wx/fontpicker.h"
+
+#include "widgets.h"
+
+#include "icons/picker.xpm"
+
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+// control ids
+enum
+{
+    PickerPage_Reset = wxID_HIGHEST,
+
+#if wxUSE_COLOURPICKERCTRL
+    PickerPage_Colour,
+#endif
+#if wxUSE_FILEPICKERCTRL
+    PickerPage_File,
+#endif
+#if wxUSE_DIRPICKERCTRL
+    PickerPage_Dir,
+#endif
+#if wxUSE_FONTPICKERCTRL
+    PickerPage_Font
+#endif
+};
+
+
+// ----------------------------------------------------------------------------
+// PickerWidgetsPage
+// ----------------------------------------------------------------------------
+
+class PickerWidgetsPage : public WidgetsPage
+{
+public:
+    PickerWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist);
+    virtual ~PickerWidgetsPage(){};
+
+    virtual wxControl *GetWidget() const { /*return m_fontPicker;*/ return NULL; }
+    virtual void RecreateWidget() { RecreateAllPickers(); }
+
+protected:
+    enum PickerKind
+    {
+        Picker_None = -1,
+        Picker_Colour,
+        Picker_File,
+        Picker_Dir,
+        Picker_Font
+    };
+
+    // called only once at first construction
+    void CreatePickers(PickerKind picker);
+
+    // called to recreate an existing control
+    void RecreatePicker(PickerKind picker);
+
+    // recreate all existing picker controls
+    void RecreateAllPickers();
+
+    // restore the checkboxes state to the initial values
+    void Reset();
+
+    // get the initial style for the picker of the given kind
+    long GetPickerStyle(PickerKind kind);
+
+
+    // the pickers and the relative event handlers
+#if wxUSE_COLOURPICKERCTRL
+    wxColourPickerCtrl *m_clrPicker;
+    void OnColourChange(wxColourPickerEvent &ev);
+#endif
+#if wxUSE_FILEPICKERCTRL
+    wxFilePickerCtrl *m_filePicker;
+    void OnFileChange(wxFileDirPickerEvent &ev);
+#endif
+#if wxUSE_DIRPICKERCTRL
+    wxDirPickerCtrl *m_dirPicker;
+    void OnDirChange(wxFileDirPickerEvent &ev);
+#endif
+#if wxUSE_FONTPICKERCTRL
+    wxFontPickerCtrl *m_fontPicker;
+    void OnFontChange(wxFontPickerEvent &ev);
+#endif
+    void OnCheckBox(wxCommandEvent &ev);
+    void OnButtonReset(wxCommandEvent &ev);
+
+
+    // other controls
+    // --------------
+
+    wxCheckBox *m_chkColourTextCtrl,
+               *m_chkColourShowLabel;
+
+    wxCheckBox *m_chkFileTextCtrl,
+               *m_chkFileOverwritePrompt,
+               *m_chkFileMustExist,
+               *m_chkFileChangeDir;
+
+    wxCheckBox *m_chkDirTextCtrl,
+               *m_chkDirChangeDir,
+               *m_chkDirMustExist;
+
+    wxCheckBox *m_chkFontTextCtrl,
+               *m_chkFontDescAsLabel,
+               *m_chkFontUseFontForLabel;
+
+    wxFlexGridSizer *m_sizerPicker;
+
+private:
+    DECLARE_EVENT_TABLE()
+    DECLARE_WIDGETS_PAGE(PickerWidgetsPage)
+};
+
+// ----------------------------------------------------------------------------
+// event tables
+// ----------------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(PickerWidgetsPage, WidgetsPage)
+    EVT_BUTTON(PickerPage_Reset, PickerWidgetsPage::OnButtonReset)
+
+#if wxUSE_COLOURPICKERCTRL
+    EVT_COLOURPICKER_CHANGED(PickerPage_Colour, PickerWidgetsPage::OnColourChange)
+#endif
+#if wxUSE_FILEPICKERCTRL
+    EVT_FILEPICKER_CHANGED(PickerPage_File, PickerWidgetsPage::OnFileChange)
+#endif
+#if wxUSE_DIRPICKERCTRL
+    EVT_DIRPICKER_CHANGED(PickerPage_Dir, PickerWidgetsPage::OnDirChange)
+#endif
+#if wxUSE_FONTPICKERCTRL
+    EVT_FONTPICKER_CHANGED(PickerPage_Font, PickerWidgetsPage::OnFontChange)
+#endif
+
+    EVT_CHECKBOX(wxID_ANY, PickerWidgetsPage::OnCheckBox)
+END_EVENT_TABLE()
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+IMPLEMENT_WIDGETS_PAGE(PickerWidgetsPage, _T("Pickers"), PICKER_CTRLS);
+
+PickerWidgetsPage::PickerWidgetsPage(WidgetsBookCtrl *book,
+                                     wxImageList *imaglist)
+                  : WidgetsPage(book, imaglist, picker_xpm)
+{
+    imaglist->Add(wxBitmap(picker_xpm));
+
+    // left pane
+    wxSizer *boxleft = new wxBoxSizer(wxVERTICAL);
+
+#if wxUSE_COLOURPICKERCTRL
+    wxStaticBoxSizer *clrbox = new wxStaticBoxSizer(wxVERTICAL, this, _T("&ColourPicker style"));
+    m_chkColourTextCtrl = CreateCheckBoxAndAddToSizer(clrbox, _T("With textctrl"), false);
+    m_chkColourShowLabel = CreateCheckBoxAndAddToSizer(clrbox, _T("With label"), false);
+    boxleft->Add(clrbox, 0, wxALL|wxGROW, 5);
+    boxleft->Add(1, 1, 1, wxGROW | wxALL, 5); // spacer
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+    wxStaticBoxSizer *filebox = new wxStaticBoxSizer(wxVERTICAL, this, _T("&FilePicker style"));
+    m_chkFileTextCtrl = CreateCheckBoxAndAddToSizer(filebox, _T("With textctrl"), false);
+    m_chkFileOverwritePrompt = CreateCheckBoxAndAddToSizer(filebox, _T("Overwrite prompt"), false);
+    m_chkFileMustExist = CreateCheckBoxAndAddToSizer(filebox, _T("File must exist"), false);
+    m_chkFileChangeDir = CreateCheckBoxAndAddToSizer(filebox, _T("Change working dir"), false);
+    boxleft->Add(filebox, 0, wxALL|wxGROW, 5);
+    boxleft->Add(1, 1, 1, wxGROW | wxALL, 5); // spacer
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+    wxStaticBoxSizer *dirbox = new wxStaticBoxSizer(wxVERTICAL, this, _T("&DirPicker style"));
+    m_chkDirTextCtrl = CreateCheckBoxAndAddToSizer(dirbox, _T("With textctrl"), false);
+    m_chkDirMustExist = CreateCheckBoxAndAddToSizer(dirbox, _T("Dir must exist"), false);
+    m_chkDirChangeDir = CreateCheckBoxAndAddToSizer(dirbox, _T("Change working dir"), false);
+    boxleft->Add(dirbox, 0, wxALL|wxGROW, 5);
+    boxleft->Add(1, 1, 1, wxGROW | wxALL, 5); // spacer
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+    wxStaticBoxSizer *fontbox = new wxStaticBoxSizer(wxVERTICAL, this, _T("&FontPicker style"));
+    m_chkFontTextCtrl = CreateCheckBoxAndAddToSizer(fontbox, _T("With textctrl"));
+    m_chkFontDescAsLabel = CreateCheckBoxAndAddToSizer(fontbox, _T("Font desc as btn label"));
+    m_chkFontUseFontForLabel = CreateCheckBoxAndAddToSizer(fontbox, _T("Use font for label"), false);
+    boxleft->Add(fontbox, 0, wxALL|wxGROW, 5);
+#endif // wxUSE_FONTPICKERCTRL
+
+    boxleft->Add(new wxButton(this, PickerPage_Reset, _T("&Reset")),
+                 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
+
+    Reset();    // set checkboxes state
+
+    // create pickers
+    m_clrPicker = NULL;
+    m_filePicker = NULL;
+    m_fontPicker = NULL;
+    m_dirPicker = NULL;
+
+    int nrows = 0;
+#if wxUSE_COLOURPICKERCTRL
+    CreatePickers(Picker_Colour);
+    nrows++;
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+    CreatePickers(Picker_File);
+    nrows++;
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+    CreatePickers(Picker_Dir);
+    nrows++;
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+    CreatePickers(Picker_Font);
+    nrows++;
+#endif // wxUSE_FONTPICKERCTRL
+
+    m_sizerPicker = new wxFlexGridSizer(nrows, 2, 0, 0);  // 4 rows x 2 columns
+#if wxUSE_COLOURPICKERCTRL
+    m_sizerPicker->Add(new wxStaticText(this, wxID_ANY, wxT("wxColourPickerCtrl:")),
+                       0, wxALIGN_CENTER | wxALL, 5);
+    m_sizerPicker->Add(m_clrPicker, 1, wxGROW | wxALL, 5);
+#endif
+#if wxUSE_FILEPICKERCTRL
+    m_sizerPicker->Add(new wxStaticText(this, wxID_ANY, wxT("wxFilePickerCtrl:")),
+                       0, wxALIGN_CENTER | wxALL, 5);
+    m_sizerPicker->Add(m_filePicker, 1, wxGROW | wxALL, 5);
+#endif
+#if wxUSE_DIRPICKERCTRL
+    m_sizerPicker->Add(new wxStaticText(this, wxID_ANY, wxT("wxDirPickerCtrl:")),
+                       0, wxALIGN_CENTER | wxALL, 5);
+    m_sizerPicker->Add(m_dirPicker, 1, wxGROW | wxALL, 5);
+#endif
+#if wxUSE_FONTPICKERCTRL
+    m_sizerPicker->Add(new wxStaticText(this, wxID_ANY, wxT("wxFontPickerCtrl:")),
+                       0, wxALIGN_CENTER | wxALL, 5);
+    m_sizerPicker->Add(m_fontPicker, 1, wxGROW | wxALL, 5);
+#endif
+
+    m_sizerPicker->AddGrowableCol(1, 3);
+
+    // right pane
+    wxStaticBoxSizer *
+        boxright = new wxStaticBoxSizer(wxVERTICAL, this, _T("Pickers"));
+    boxright->Add(m_sizerPicker, 1, wxGROW | wxALL, 5);
+
+    // global pane
+    wxSizer *sz = new wxBoxSizer(wxHORIZONTAL);
+    sz->Add(boxleft, 0, wxGROW|wxALL, 5);
+    sz->Add(boxright, 1, wxGROW|wxALL, 5);
+
+    SetSizerAndFit(sz);
+}
+
+void PickerWidgetsPage::CreatePickers(PickerKind picker)
+{
+    switch ( picker )
+    {
+#if wxUSE_COLOURPICKERCTRL
+        case Picker_Colour:
+            delete m_clrPicker;
+
+            m_clrPicker = new wxColourPickerCtrl(this, PickerPage_Colour, *wxRED,
+                                                 wxDefaultPosition, wxDefaultSize,
+                                                 GetPickerStyle(Picker_Colour));
+            break;
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+        case Picker_File:
+            delete m_filePicker;
+
+            // pass an empty string as initial file
+            m_filePicker = new wxFilePickerCtrl(this, PickerPage_File,
+                                                wxEmptyString,
+                                                wxT("Hello!"), wxT("*"),
+                                                wxDefaultPosition, wxDefaultSize,
+                                                GetPickerStyle(Picker_File));
+            break;
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+        case Picker_Dir:
+            delete m_dirPicker;
+
+            m_dirPicker = new wxDirPickerCtrl(this, PickerPage_Dir,
+                                              wxGetHomeDir(), wxT("Hello!"),
+                                              wxDefaultPosition, wxDefaultSize,
+                                              GetPickerStyle(Picker_Dir));
+            break;
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+        case Picker_Font:
+            delete m_fontPicker;
+
+            m_fontPicker = new wxFontPickerCtrl(this, PickerPage_Font,
+                                                *wxSWISS_FONT,
+                                                wxDefaultPosition, wxDefaultSize,
+                                                GetPickerStyle(Picker_Font));
+            break;
+#endif // wxUSE_FONTPICKERCTRL
+
+        default:
+            wxFAIL_MSG( _T("unknown picker kind") );
+    }
+}
+
+long PickerWidgetsPage::GetPickerStyle(PickerKind picker)
+{
+    long style = 0;
+
+    switch (picker)
+    {
+#if wxUSE_COLOURPICKERCTRL
+        case Picker_Colour:
+            if ( m_chkColourTextCtrl->GetValue() )
+                style |= wxCLRP_USE_TEXTCTRL;
+
+            if ( m_chkColourShowLabel->GetValue() )
+                style |= wxCLRP_SHOW_LABEL;
+
+            break;
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+        case Picker_File:
+            if ( m_chkFileTextCtrl->GetValue() )
+                style |= wxFLP_USE_TEXTCTRL;
+
+            if ( m_chkFileOverwritePrompt->GetValue() )
+                style |= wxFLP_OVERWRITE_PROMPT;
+
+            if ( m_chkFileMustExist->GetValue() )
+                style |= wxFLP_FILE_MUST_EXIST;
+
+            if ( m_chkFileChangeDir->GetValue() )
+                style |= wxFLP_CHANGE_DIR;
+
+            break;
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+        case Picker_Dir:
+            if ( m_chkDirTextCtrl->GetValue() )
+                style |= wxDIRP_USE_TEXTCTRL;
+
+            if ( m_chkDirMustExist->GetValue() )
+                style |= wxDIRP_DIR_MUST_EXIST;
+
+            if ( m_chkDirChangeDir->GetValue() )
+                style |= wxDIRP_CHANGE_DIR;
+
+            break;
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+        case Picker_Font:
+            if ( m_chkFontTextCtrl->GetValue() )
+                style |= wxFNTP_USE_TEXTCTRL;
+
+            if ( m_chkFontUseFontForLabel->GetValue() )
+                style |= wxFNTP_USEFONT_FOR_LABEL;
+
+            if ( m_chkFontDescAsLabel->GetValue() )
+                 style |= wxFNTP_FONTDESC_AS_LABEL;
+
+            break;
+#endif // wxUSE_FONTPICKERCTRL
+
+        default:
+            wxFAIL_MSG( _T("unknown picker kind") );
+    }
+
+    return style;
+}
+
+void PickerWidgetsPage::RecreatePicker(PickerKind picker)
+{
+    switch ( picker )
+    {
+#if wxUSE_COLOURPICKERCTRL
+        case Picker_Colour:
+            m_sizerPicker->Remove(1);
+            CreatePickers(Picker_Colour);
+            m_sizerPicker->Insert(1, m_clrPicker, 1, wxGROW|wxALL, 5);
+            break;
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+        case Picker_File:
+            m_sizerPicker->Remove(3);
+            CreatePickers(Picker_File);
+            m_sizerPicker->Insert(3, m_filePicker, 1, wxGROW|wxALL, 5);
+            break;
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+        case Picker_Dir:
+            m_sizerPicker->Remove(5);
+            CreatePickers(Picker_Dir);
+            m_sizerPicker->Insert(5, m_dirPicker, 1, wxGROW|wxALL, 5);
+            break;
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+        case Picker_Font:
+            wxASSERT(m_sizerPicker->Remove(7));
+            CreatePickers(Picker_Font);
+            m_sizerPicker->Insert(7, m_fontPicker, 1, wxGROW|wxALL, 5);
+            break;
+#endif // wxUSE_FONTPICKERCTRL
+
+        default:
+            wxFAIL_MSG( _T("unknown picker kind") );
+    }
+
+    m_sizerPicker->Layout();
+}
+
+void PickerWidgetsPage::RecreateAllPickers()
+{
+#if wxUSE_COLOURPICKERCTRL
+    RecreatePicker(Picker_Colour);
+#endif // wxUSE_COLOURPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+    RecreatePicker(Picker_File);
+#endif // wxUSE_FILEPICKERCTRL
+
+#if wxUSE_DIRPICKERCTRL
+    RecreatePicker(Picker_Dir);
+#endif // wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FONTPICKERCTRL
+    RecreatePicker(Picker_Font);
+#endif // wxUSE_FONTPICKERCTRL
+}
+
+void PickerWidgetsPage::Reset()
+{
+#if wxUSE_COLOURPICKERCTRL
+    m_chkColourTextCtrl->SetValue((wxCLRP_DEFAULT_STYLE & wxCLRP_USE_TEXTCTRL) != 0);
+    m_chkColourShowLabel->SetValue((wxCLRP_DEFAULT_STYLE & wxCLRP_SHOW_LABEL) != 0);
+#endif
+
+#if wxUSE_FILEPICKERCTRL
+    m_chkFileTextCtrl->SetValue((wxFLP_DEFAULT_STYLE & wxFLP_USE_TEXTCTRL) != 0);
+    m_chkFileOverwritePrompt->SetValue((wxFLP_DEFAULT_STYLE & wxFLP_OVERWRITE_PROMPT) != 0);
+    m_chkFileMustExist->SetValue((wxFLP_DEFAULT_STYLE & wxFLP_FILE_MUST_EXIST) != 0);
+    m_chkFileChangeDir->SetValue((wxFLP_DEFAULT_STYLE & wxFLP_CHANGE_DIR) != 0);
+#endif
+
+#if wxUSE_DIRPICKERCTRL
+    m_chkDirTextCtrl->SetValue((wxDIRP_DEFAULT_STYLE & wxDIRP_USE_TEXTCTRL) != 0);
+    m_chkDirMustExist->SetValue((wxDIRP_DEFAULT_STYLE & wxDIRP_DIR_MUST_EXIST) != 0);
+    m_chkDirChangeDir->SetValue((wxDIRP_DEFAULT_STYLE & wxDIRP_CHANGE_DIR) != 0);
+#endif
+
+#if wxUSE_FONTPICKERCTRL
+    m_chkFontTextCtrl->SetValue((wxFNTP_DEFAULT_STYLE & wxFNTP_USE_TEXTCTRL) != 0);
+    m_chkFontUseFontForLabel->SetValue((wxFNTP_DEFAULT_STYLE & wxFNTP_USEFONT_FOR_LABEL) != 0);
+    m_chkFontDescAsLabel->SetValue((wxFNTP_DEFAULT_STYLE & wxFNTP_FONTDESC_AS_LABEL) != 0);
+#endif
+}
+
+
+// ----------------------------------------------------------------------------
+// event handlers
+// ----------------------------------------------------------------------------
+
+void PickerWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event))
+{
+    Reset();
+
+    RecreateAllPickers();
+}
+
+#if wxUSE_COLOURPICKERCTRL
+void PickerWidgetsPage::OnColourChange(wxColourPickerEvent& event)
+{
+    wxLogMessage(wxT("The colour changed to '%s' !"),
+                 event.GetColour().GetAsString(wxC2S_CSS_SYNTAX).c_str());
+}
+#endif
+#if wxUSE_FILEPICKERCTRL
+void PickerWidgetsPage::OnFileChange(wxFileDirPickerEvent& event)
+{
+    wxLogMessage(wxT("The file changed to '%s' ! The current working directory is '%s'"),
+                 event.GetPath().c_str(), wxGetCwd().c_str());
+}
+#endif
+#if wxUSE_DIRPICKERCTRL
+void PickerWidgetsPage::OnDirChange(wxFileDirPickerEvent& event)
+{
+    wxLogMessage(wxT("The directory changed to '%s' ! The current working directory is '%s'"),
+                 event.GetPath().c_str(), wxGetCwd().c_str());
+}
+#endif
+#if wxUSE_FONTPICKERCTRL
+void PickerWidgetsPage::OnFontChange(wxFontPickerEvent& event)
+{
+    wxLogMessage(wxT("The font changed to '%s' with size %d !"),
+                 event.GetFont().GetFaceName().c_str(), event.GetFont().GetPointSize());
+}
+#endif
+
+void PickerWidgetsPage::OnCheckBox(wxCommandEvent &event)
+{
+    if (event.GetEventObject() == m_chkColourTextCtrl ||
+        event.GetEventObject() == m_chkColourShowLabel)
+        RecreatePicker(Picker_Colour);
+
+    if (event.GetEventObject() == m_chkFileTextCtrl ||
+        event.GetEventObject() == m_chkFileOverwritePrompt ||
+        event.GetEventObject() == m_chkFileMustExist ||
+        event.GetEventObject() == m_chkFileChangeDir)
+        RecreatePicker(Picker_File);
+
+    if (event.GetEventObject() == m_chkDirTextCtrl ||
+        event.GetEventObject() == m_chkDirChangeDir ||
+        event.GetEventObject() == m_chkDirMustExist)
+        RecreatePicker(Picker_Dir);
+
+    if (event.GetEventObject() == m_chkFontTextCtrl ||
+        event.GetEventObject() == m_chkFontDescAsLabel ||
+        event.GetEventObject() == m_chkFontUseFontForLabel)
+        RecreatePicker(Picker_Font);
+}
+
+#endif  // wxUSE_COLOURPICKERCTRL || wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL || wxUSE_FONTPICKERCTRL
diff --git a/samples/widgets/widgets.bkl b/samples/widgets/widgets.bkl
index ff0ff4ce77..d28f764131 100644
--- a/samples/widgets/widgets.bkl
+++ b/samples/widgets/widgets.bkl
@@ -13,6 +13,7 @@
             hyperlnk.cpp
             listbox.cpp
             notebook.cpp
+            picker.cpp
             radiobox.cpp
             slider.cpp
             spinbtn.cpp
diff --git a/samples/widgets/widgets.dsp b/samples/widgets/widgets.dsp
index a39c576c3b..bd2ab7a6d7 100644
--- a/samples/widgets/widgets.dsp
+++ b/samples/widgets/widgets.dsp
@@ -500,6 +500,10 @@ SOURCE=.\notebook.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\picker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\radiobox.cpp
 # End Source File
 # Begin Source File
diff --git a/samples/xrc/rc/controls.xrc b/samples/xrc/rc/controls.xrc
index 59c5b35374..ed706c7857 100644
--- a/samples/xrc/rc/controls.xrc
+++ b/samples/xrc/rc/controls.xrc
@@ -930,6 +930,91 @@
                         </object>
                     </object>
                 </object>
+
+                <object class="notebookpage">
+                    <label>wx*PickerCtrl</label>
+                    <object class="wxPanel" name="pickers">
+                        <object class="wxFlexGridSizer">
+                            <cols>2</cols>
+                            <rows>0</rows>
+                            <vgap>10</vgap>
+                            <hgap>10</hgap>
+                            <growablecols>0,1</growablecols>
+                            <growablerows>0,1,2,3</growablerows>
+                            <object class="sizeritem">
+                                <flag>wxALIGN_CENTRE|wxALL</flag>
+                                <border>5</border>
+                                <object class="wxStaticText" name="controls_pickers_statictext">
+                                    <label>wxColourPickerCtrl:</label>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxGROW|wxALL</flag>
+                                <option>1</option>
+                                <border>5</border>
+                                <object class="wxColourPickerCtrl" name="controls_colourpicker">
+                                    <colour>#00ff00</colour>
+                                    <style>wxCLRP_SHOW_LABEL</style>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxALIGN_CENTRE|wxALL</flag>
+                                <border>5</border>
+                                <object class="wxStaticText" name="controls_pickers_statictext2">
+                                    <label>wxFilePickerCtrl:</label>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxGROW|wxALL</flag>
+                                <option>1</option>
+                                <border>5</border>
+                                <object class="wxFilePickerCtrl" name="controls_filepicker">
+                                    <message>Here goes a message</message>
+                                    <style>wxFLP_OPEN</style>
+                                    <wildcard>*.png</wildcard>
+                                    <default-path/>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxALIGN_CENTRE|wxALL</flag>
+                                <border>5</border>
+                                <object class="wxStaticText" name="controls_pickers_statictext3">
+                                    <label>wxDirPickerCtrl:</label>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxGROW|wxALL</flag>
+                                <option>1</option>
+                                <border>5</border>
+                                <object class="wxDirPickerCtrl" name="controls_dirpicker">
+                                    <default-path/>
+                                    <style>wxDIRP_CHANGE_DIR</style>
+                                    <message>Here goes a message</message>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxALIGN_CENTRE|wxALL</flag>
+                                <border>5</border>
+                                <object class="wxStaticText" name="controls_pickers_statictext4">
+                                    <label>wxFontPickerCtrl:</label>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxGROW|wxALL</flag>
+                                <option>1</option>
+                                <border>5</border>
+                                <object class="wxFontPickerCtrl" name="controls_fontpicker">
+                                    <style>wxFNTP_USEFONT_FOR_LABEL</style>
+                                    <default-font>
+                                        <size>20</size>
+                                        <sysfont>wxSYS_DEFAULT_GUI_FONT</sysfont>
+                                    </default-font>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+
                 <object class="notebookpage">
                     <label>The Rest</label>
                     <object class="wxPanel" name="Rest">
diff --git a/setup.h.in b/setup.h.in
index 0e9057241d..e5187bf6cd 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -65,6 +65,9 @@
 /* Define this if your version of GTK+ is greater than 2.4 */
 #undef __WXGTK24__
 
+/* Define this if your version of GTK+ is greater than 2.6 */
+#undef __WXGTK26__
+
 /* Define this if you want to use GPE features */
 #undef __WXGPE__
 
@@ -299,9 +302,13 @@
 #define wxUSE_CHECKBOX      0
 #define wxUSE_CHECKLISTBOX  0
 #define wxUSE_CHOICE        0
+#define wxUSE_COLOURPICKERCTRL 0
 #define wxUSE_COMBOBOX      0
 #define wxUSE_DATAVIEWCTRL  0
 #define wxUSE_DATEPICKCTRL  0
+#define wxUSE_DIRPICKERCTRL 0
+#define wxUSE_FILEPICKERCTRL 0
+#define wxUSE_FONTPICKERCTRL 0
 #define wxUSE_GAUGE         0
 #define wxUSE_HYPERLINKCTRL 0
 #define wxUSE_LISTBOX       0
diff --git a/src/common/clrpickercmn.cpp b/src/common/clrpickercmn.cpp
new file mode 100644
index 0000000000..5f208643e5
--- /dev/null
+++ b/src/common/clrpickercmn.cpp
@@ -0,0 +1,139 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/clrpickercmn.cpp
+// Purpose:     wxColourPickerCtrl class implementation
+// Author:      Francesco Montorsi (readapted code written by Vadim Zeitlin)
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/clrpicker.h"
+
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_COLOURPICKERCTRL
+
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLOURPICKER_CHANGED)
+IMPLEMENT_DYNAMIC_CLASS(wxColourPickerCtrl, wxPickerBase)
+IMPLEMENT_DYNAMIC_CLASS(wxColourPickerEvent, wxEvent)
+
+// ----------------------------------------------------------------------------
+// wxColourPickerCtrl
+// ----------------------------------------------------------------------------
+
+#define M_PICKER     ((wxColourPickerWidget*)m_picker)
+
+bool wxColourPickerCtrl::Create( wxWindow *parent, wxWindowID id,
+                        const wxColour &col,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    if (!wxPickerBase::CreateBase(parent, id, col.GetAsString(), pos, size,
+                                  style, validator, name))
+        return false;
+
+    // we are not interested to the ID of our picker as we connect
+    // to its "changed" event dynamically...
+    m_picker = new wxColourPickerWidget(this, wxID_ANY, col, wxPoint(40,0), wxSize(30,-1),
+                                        GetPickerStyle(style));
+    m_picker->Connect(wxEVT_COMMAND_COLOURPICKER_CHANGED,
+            wxColourPickerEventHandler(wxColourPickerCtrl::OnColourChange),
+            NULL, this);
+
+    return true;
+}
+
+void wxColourPickerCtrl::SetColour(const wxColour &col)
+{
+    M_PICKER->SetColour(col);
+    UpdateTextCtrlFromPicker();
+}
+
+bool wxColourPickerCtrl::SetColour(const wxString &text)
+{
+    wxColour col(text);     // smart wxString->wxColour conversion
+    if ( !col.Ok() )
+        return false;
+    M_PICKER->SetColour(col);
+    UpdateTextCtrlFromPicker();
+
+    return true;
+}
+
+void wxColourPickerCtrl::UpdatePickerFromTextCtrl()
+{
+    wxASSERT(m_text);
+
+    if (m_bIgnoreNextTextCtrlUpdate)
+    {
+        // ignore this update
+        m_bIgnoreNextTextCtrlUpdate = false;
+        return;
+    }
+
+    // wxString -> wxColour conversion
+    wxColour col(m_text->GetValue());
+    if ( !col.Ok() )
+        return;     // invalid user input
+
+    if (M_PICKER->GetColour() != col)
+    {
+        M_PICKER->SetColour(col);
+
+        // fire an event
+        wxColourPickerEvent event(this, GetId(), col);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+void wxColourPickerCtrl::UpdateTextCtrlFromPicker()
+{
+    if (!m_text)
+        return;     // no textctrl to update
+
+    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
+    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
+    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
+    m_bIgnoreNextTextCtrlUpdate = true;
+    m_text->SetValue(M_PICKER->GetColour().GetAsString());
+}
+
+
+
+// ----------------------------------------------------------------------------
+// wxColourPickerCtrl - event handlers
+// ----------------------------------------------------------------------------
+
+void wxColourPickerCtrl::OnColourChange(wxColourPickerEvent &ev)
+{
+    UpdateTextCtrlFromPicker();
+
+    // the wxColourPickerWidget sent us a colour-change notification.
+    // forward this event to our parent
+    wxColourPickerEvent event(this, GetId(), ev.GetColour());
+    GetEventHandler()->ProcessEvent(event);
+}
+
+#endif  // wxUSE_COLOURPICKERCTRL
diff --git a/src/common/datacmn.cpp b/src/common/datacmn.cpp
index 05f2fc8ff8..15667bb34c 100644
--- a/src/common/datacmn.cpp
+++ b/src/common/datacmn.cpp
@@ -82,3 +82,14 @@ extern WXDLLEXPORT_DATA(const wxChar) wxFileDialogNameStr[] = wxT("filedlg");
 WXDLLEXPORT_DATA(const wxChar *) wxUserResourceStr = wxT("TEXT");
 #endif
 extern WXDLLEXPORT_DATA(const wxChar) wxHyperlinkCtrlNameStr[] = wxT("hyperlink");
+extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerCtrlNameStr[] = wxT("colourpicker");
+extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerWidgetNameStr[] = wxT("colourpickerwidget");
+extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerCtrlNameStr[] = wxT("fontpicker");
+extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerWidgetNameStr[] = wxT("fontpickerwidget");
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerCtrlNameStr[] = wxT("filepicker");
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetNameStr[] = wxT("filepickerwidget");
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerCtrlNameStr[] = wxT("dirpicker");
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetNameStr[] = wxT("dirpickerwidget");
+extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetLabel[] = wxT("Browse");
+extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetLabel[] = wxT("Browse");
+
diff --git a/src/common/filepickercmn.cpp b/src/common/filepickercmn.cpp
new file mode 100644
index 0000000000..949ee2c8c3
--- /dev/null
+++ b/src/common/filepickercmn.cpp
@@ -0,0 +1,151 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/filepickercmn.cpp
+// Purpose:     wxFilePickerCtrl class implementation
+// Author:      Francesco Montorsi (readapted code written by Vadim Zeitlin)
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/filepicker.h"
+
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_FILEPICKER_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_DIRPICKER_CHANGED)
+IMPLEMENT_DYNAMIC_CLASS(wxFileDirPickerEvent, wxCommandEvent)
+
+// ----------------------------------------------------------------------------
+// wxFileDirPickerCtrlBase
+// ----------------------------------------------------------------------------
+
+#define M_PICKER     ((wxFilePickerWidget*)m_picker)
+
+bool wxFileDirPickerCtrlBase::CreateBase( wxWindow *parent, wxWindowID id,
+                        const wxString &path, const wxString &message,
+                        const wxString &wildcard,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    wxASSERT_MSG(path.IsEmpty() || CheckPath(path), wxT("Invalid initial path !"));
+
+    if (!wxPickerBase::CreateBase(parent, id, path, pos, size,
+                                   style, validator, name))
+        return false;
+
+    // create a wxFilePickerWidget or a wxDirPickerWidget...
+    if (!CreatePicker(this, path, message, wildcard))
+        return false;
+    m_picker->Connect(GetEventType(),
+            wxFileDirPickerEventHandler(wxFileDirPickerCtrlBase::OnFileDirChange),
+            NULL, this);
+
+    // default's wxPickerBase textctrl limit is too small for this control:
+    // make it bigger
+    if (m_text) m_text->SetMaxLength(512);
+
+    return true;
+}
+
+void wxFileDirPickerCtrlBase::SetPath(const wxString &path)
+{
+    M_PICKER->SetPath(path);
+    UpdateTextCtrlFromPicker();
+}
+
+void wxFileDirPickerCtrlBase::UpdatePickerFromTextCtrl()
+{
+    wxASSERT(m_text);
+
+    if (m_bIgnoreNextTextCtrlUpdate)
+    {
+        // ignore this update
+        m_bIgnoreNextTextCtrlUpdate = false;
+        return;
+    }
+
+    // remove the eventually present path-separator from the end of the textctrl
+    // string otherwise we would generate a wxFileDirPickerEvent when changing
+    // from e.g. /home/user to /home/user/ and we want to avoid it !
+    wxString newpath(m_text->GetValue());
+    if (!newpath.empty() && wxFileName::IsPathSeparator(newpath.Last()))
+        newpath.RemoveLast();
+    if (!CheckPath(newpath))
+        return;       // invalid user input
+
+    if (M_PICKER->GetPath() != newpath)
+    {
+        M_PICKER->SetPath(newpath);
+
+        // update current working directory, if necessary
+        // NOTE: the path separator is required because if newpath is "C:"
+        //       then no change would happen
+        if (IsCwdToUpdate())
+            wxSetWorkingDirectory(newpath + wxFileName::GetPathSeparator());
+
+        // fire an event
+        wxFileDirPickerEvent event(GetEventType(), this, GetId(), newpath);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+void wxFileDirPickerCtrlBase::UpdateTextCtrlFromPicker()
+{
+    if (!m_text)
+        return;     // no textctrl to update
+
+    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
+    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
+    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
+    m_bIgnoreNextTextCtrlUpdate = true;
+    m_text->SetValue(M_PICKER->GetPath());
+}
+
+
+
+// ----------------------------------------------------------------------------
+// wxFileDirPickerCtrlBase - event handlers
+// ----------------------------------------------------------------------------
+
+void wxFileDirPickerCtrlBase::OnFileDirChange(wxFileDirPickerEvent &ev)
+{
+    UpdateTextCtrlFromPicker();
+
+    // the wxFilePickerWidget sent us a colour-change notification.
+    // forward this event to our parent
+    wxFileDirPickerEvent event(GetEventType(), this, GetId(), ev.GetPath());
+    GetEventHandler()->ProcessEvent(event);
+}
+
+#endif  // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+#if wxUSE_FILEPICKERCTRL
+IMPLEMENT_DYNAMIC_CLASS(wxFilePickerCtrl, wxPickerBase)
+#endif
+#if wxUSE_DIRPICKERCTRL
+IMPLEMENT_DYNAMIC_CLASS(wxDirPickerCtrl, wxPickerBase)
+#endif
diff --git a/src/common/fontpickercmn.cpp b/src/common/fontpickercmn.cpp
new file mode 100644
index 0000000000..6b2b4daba0
--- /dev/null
+++ b/src/common/fontpickercmn.cpp
@@ -0,0 +1,172 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/fontpickercmn.cpp
+// Purpose:     wxFontPickerCtrl class implementation
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/fontpicker.h"
+#include "wx/fontenum.h"
+#include "wx/tokenzr.h"
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FONTPICKERCTRL
+
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_FONTPICKER_CHANGED)
+IMPLEMENT_DYNAMIC_CLASS(wxFontPickerCtrl, wxPickerBase)
+IMPLEMENT_DYNAMIC_CLASS(wxFontPickerEvent, wxCommandEvent)
+
+// ----------------------------------------------------------------------------
+// wxFontPickerCtrl
+// ----------------------------------------------------------------------------
+
+#define M_PICKER     ((wxFontPickerWidget*)m_picker)
+
+bool wxFontPickerCtrl::Create( wxWindow *parent, wxWindowID id,
+                        const wxFont &initial,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    // by default, the textctrl is, if present, as big as the picker, for wxFontPickerCtrl
+    SetTextCtrlProportion(1);
+
+    if (!wxPickerBase::CreateBase(parent, id, Font2String(initial),
+                                  pos, size, style, validator, name))
+        return false;
+
+    // the picker of a wxFontPickerCtrl is a wxFontPickerWidget
+    m_picker = new wxFontPickerWidget(this, wxID_ANY, initial,
+                                      wxDefaultPosition, wxDefaultSize,
+                                      GetPickerStyle(style));
+    m_picker->Connect(wxEVT_COMMAND_FONTPICKER_CHANGED,
+            wxFontPickerEventHandler(wxFontPickerCtrl::OnFontChange),
+            NULL, this);
+
+    return true;
+}
+
+wxString wxFontPickerCtrl::Font2String(const wxFont &f)
+{
+    wxString ret = f.GetNativeFontInfoUserDesc();
+#ifdef __WXMSW__
+    // on wxMSW the encoding of the font is appended at the end of the string;
+    // since encoding is not very user-friendly we remove it.
+    wxFontEncoding enc = f.GetEncoding();
+    if ( enc != wxFONTENCODING_DEFAULT && enc != wxFONTENCODING_SYSTEM )
+        ret = ret.BeforeLast(wxT(' '));
+#endif
+    return ret;
+}
+
+wxFont wxFontPickerCtrl::String2Font(const wxString &s)
+{
+    wxString str(s);
+    wxFont ret;
+    double n;
+
+    // put a limit on the maximum point size which the user can enter
+    // NOTE: we suppose the last word of given string is the pointsize
+    wxString size = str.AfterLast(wxT(' '));
+    if (size.ToDouble(&n))
+    {
+        if (n < 1)
+            str = str.Left(str.Len() - size.Len()) + wxT("1");
+        else if (n >= m_nMaxPointSize)
+            str = str.Left(str.Len() - size.Len()) +
+                  wxString::Format(wxT("%d"), m_nMaxPointSize);
+    }
+
+    if (!ret.SetNativeFontInfoUserDesc(str))
+        return wxNullFont;
+
+    return ret;
+}
+
+void wxFontPickerCtrl::SetSelectedFont(const wxFont &f)
+{
+    M_PICKER->SetSelectedFont(f);
+    UpdateTextCtrlFromPicker();
+}
+
+void wxFontPickerCtrl::UpdatePickerFromTextCtrl()
+{
+    wxASSERT(m_text);
+
+    if (m_bIgnoreNextTextCtrlUpdate)
+    {
+        // ignore this update
+        m_bIgnoreNextTextCtrlUpdate = false;
+        return;
+    }
+
+    // NB: we don't use the wxFont::wxFont(const wxString &) constructor
+    //     since that constructor expects the native font description
+    //     string returned by wxFont::GetNativeFontInfoDesc() and not
+    //     the user-friendly one returned by wxFont::GetNativeFontInfoUserDesc()
+    wxFont f = String2Font(m_text->GetValue());
+    if (!f.Ok())
+        return;     // invalid user input
+
+    if (M_PICKER->GetSelectedFont() != f)
+    {
+        M_PICKER->SetSelectedFont(f);
+
+        // fire an event
+        wxFontPickerEvent event(this, GetId(), f);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+void wxFontPickerCtrl::UpdateTextCtrlFromPicker()
+{
+    if (!m_text)
+        return;     // no textctrl to update
+
+    // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
+    //       which will trigger a unneeded UpdateFromTextCtrl(); thus before using
+    //       SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
+    m_bIgnoreNextTextCtrlUpdate = true;
+    m_text->SetValue(Font2String(M_PICKER->GetSelectedFont()));
+}
+
+
+
+// ----------------------------------------------------------------------------
+// wxFontPickerCtrl - event handlers
+// ----------------------------------------------------------------------------
+
+void wxFontPickerCtrl::OnFontChange(wxFontPickerEvent &ev)
+{
+    UpdateTextCtrlFromPicker();
+
+    // the wxFontPickerWidget sent us a colour-change notification.
+    // forward this event to our parent
+    wxFontPickerEvent event(this, GetId(), ev.GetFont());
+    GetEventHandler()->ProcessEvent(event);
+}
+
+#endif  // wxUSE_FONTPICKERCTRL
diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp
new file mode 100644
index 0000000000..68ff4a88ee
--- /dev/null
+++ b/src/common/pickerbase.cpp
@@ -0,0 +1,194 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        common/pickerbase.cpp
+// Purpose:     wxPickerBase class implementation
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/pickerbase.h"
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+IMPLEMENT_ABSTRACT_CLASS(wxPickerBase, wxWindow)
+
+// ----------------------------------------------------------------------------
+// wxPickerBase
+// ----------------------------------------------------------------------------
+
+wxPickerBase::~wxPickerBase()
+{
+    // destroy the windows we are managing: these are not automatically
+    // destroyed by wxWindow because they are not built as our children
+    // but rather as children of the parent of the wxPickerBase class
+    // (since wxPickerBase does not represent a real window)
+    if (m_text) m_text->Destroy();
+    if (m_picker) m_picker->Destroy();
+}
+
+bool wxPickerBase::CreateBase(wxWindow *parent,
+                         wxWindowID id,
+                         const wxString &text,
+                         const wxPoint& pos,
+                         const wxSize& size,
+                         long style,
+                         const wxValidator& validator,
+                         const wxString& name)
+{
+    // remove any border style from our style as wxPickerBase's window must be
+    // invisible (user styles must be set on the textctrl or the platform-dependent picker)
+    style &= ~wxBORDER_MASK;
+    if (!wxControl::Create(parent, id, pos, size, style | wxNO_BORDER | wxTAB_TRAVERSAL, 
+                            validator, name))
+        return false;
+
+    if (HasFlag(wxPB_USE_TEXTCTRL))
+    {
+        // NOTE: the style of this class (wxPickerBase) and the style of the
+        //       attached text control are different: GetTextCtrlStyle() extracts
+        //       the styles related to the textctrl from the styles passed here
+        m_text = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxPoint(0, 0),
+                                wxSize(40, size.GetHeight()), GetTextCtrlStyle(style));
+        if (!m_text)
+        {
+            wxFAIL_MSG( wxT("wxPickerBase's textctrl creation failed") );
+            return false;
+        }
+
+        // set the maximum lenght allowed for this textctrl.
+        // This is very important since any change to it will trigger an update in
+        // the m_picker; for very long strings, this real-time synchronization could
+        // become a CPU-blocker and thus should be avoided.
+        // 32 characters will be more than enough for all common uses.
+        m_text->SetMaxLength(32);
+
+        // set the initial contents of the textctrl
+        m_text->SetValue(text);
+
+        m_text->Connect(wxEVT_COMMAND_TEXT_UPDATED,
+                wxCommandEventHandler(wxPickerBase::OnTextCtrlUpdate),
+                NULL, this);
+        m_text->Connect(wxEVT_KILL_FOCUS,
+                wxFocusEventHandler(wxPickerBase::OnTextCtrlKillFocus),
+                NULL, this);
+
+        m_text->Connect(wxEVT_DESTROY,
+                wxWindowDestroyEventHandler(wxPickerBase::OnTextCtrlDelete),
+                NULL, this);
+    }
+
+    return true;
+}
+
+void wxPickerBase::OnTextCtrlKillFocus(wxFocusEvent &)
+{
+    wxASSERT(m_text);
+
+    // don't leave the textctrl empty
+    if (m_text->GetValue().IsEmpty())
+        UpdateTextCtrlFromPicker();
+}
+
+void wxPickerBase::OnTextCtrlDelete(wxWindowDestroyEvent &)
+{
+    // the textctrl has been deleted; our pointer is invalid!
+    m_text = NULL;
+}
+
+void wxPickerBase::OnTextCtrlUpdate(wxCommandEvent &)
+{
+    // for each text-change, update the picker
+    UpdatePickerFromTextCtrl();
+}
+
+int wxPickerBase::GetTextCtrlWidth(int given)
+{
+    // compute the width of m_text like a wxBoxSizer(wxHORIZONTAL) would do
+    // NOTE: the proportion of m_picker is fixed to 1
+    return ((given - m_margin) / (m_textProportion + 1)) * m_textProportion;
+}
+
+void wxPickerBase::DoSetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
+{
+    wxControl::DoSetSizeHints(minW, minH, maxW, maxH, incW, incH);
+
+    if (m_text)
+    {
+        // compute minWidth and maxWidth of the ausiliary textctrl
+        int textCtrlMinW = -1, textCtrlMaxW = -1;
+        if (minW != -1)
+        {
+            textCtrlMinW = GetTextCtrlWidth(minW);
+            minW -= textCtrlMinW + m_margin;
+        }
+
+        if (maxW != -1)
+        {
+            textCtrlMaxW = GetTextCtrlWidth(maxW);
+            maxW -= textCtrlMaxW + m_margin;
+        }
+
+        m_text->SetSizeHints(textCtrlMinW, minH, textCtrlMaxW, maxH, incW, incH);
+    }
+
+    if (m_picker)
+        m_picker->SetSizeHints(minW, minH, maxW, maxH, incW, incH);
+}
+
+void wxPickerBase::DoSetSize(int x, int y, int width, int height, int sizeFlags)
+{
+    wxControl::DoSetSize(x, y, width, height, sizeFlags);
+
+    int pickerx = 0;
+    if (m_text)
+    {
+        // compute width of the ausiliary textctrl
+        int textCtrlW = GetTextCtrlWidth(width);
+
+        // set the m_text's position relatively to this window
+        m_text->SetSize(0, 0, textCtrlW, height, sizeFlags);
+
+        // change position of the real picker
+        pickerx += textCtrlW + m_margin;
+        width -= textCtrlW + m_margin;
+    }
+
+    if (m_picker)
+        m_picker->SetSize(pickerx, 0, width, height, sizeFlags);
+}
+
+wxSize wxPickerBase::DoGetBestSize() const
+{
+    wxSize ret = m_picker->GetBestSize();
+
+    if (m_text)
+    {
+        wxSize sz = m_text->GetBestSize();
+
+        ret.SetWidth( ret.GetWidth() + sz.GetWidth() + m_margin );
+        ret.SetHeight( wxMax(ret.GetHeight(), sz.GetHeight()) );
+    }
+
+    return ret;
+}
diff --git a/src/generic/clrpickerg.cpp b/src/generic/clrpickerg.cpp
new file mode 100644
index 0000000000..c6fc40bb4b
--- /dev/null
+++ b/src/generic/clrpickerg.cpp
@@ -0,0 +1,122 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/clrpickerg.cpp
+// Purpose:     wxGenericColourButton class implementation
+// Author:      Francesco Montorsi (readapted code written by Vadim Zeitlin)
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/window.h"
+#endif //WX_PRECOMP
+
+#include "wx/clrpicker.h"
+#include "wx/colordlg.h"
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_COLOURPICKERCTRL
+
+wxColourData wxGenericColourButton::ms_data;
+IMPLEMENT_DYNAMIC_CLASS(wxGenericColourButton, wxButton)
+
+// ----------------------------------------------------------------------------
+// wxGenericColourButton
+// ----------------------------------------------------------------------------
+
+bool wxGenericColourButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxColour &col, const wxPoint &pos,
+                        const wxSize &size, long style,
+                        const wxValidator& validator, const wxString &name)
+{
+    // create this button
+    if (!wxButton::Create( parent, id, wxEmptyString, pos,
+                           size, style, validator, name ))
+    {
+        wxFAIL_MSG( wxT("wxGenericColourButton creation failed") );
+        return false;
+    }
+
+    // and handle user clicks on it
+    Connect(wxEVT_COMMAND_BUTTON_CLICKED,
+            wxCommandEventHandler(wxGenericColourButton::OnButtonClick),
+            NULL, this);
+
+    m_colour = col;
+    UpdateColour();
+    InitColourData();
+
+    return true;
+}
+
+void wxGenericColourButton::InitColourData()
+{
+    ms_data.SetChooseFull(true);
+    for (int i = 0; i < 16; i++)
+    {
+        // fill with grey tones the custom colors palette
+        wxColour colour(i*16, i*16, i*16);
+        ms_data.SetCustomColour(i, colour);
+    }
+}
+
+void wxGenericColourButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
+{
+    // update the wxColouData to be shown in the the dialog
+    ms_data.SetColour(m_colour);
+
+    // create the colour dialog and display it
+    wxColourDialog dlg(this, &ms_data);
+    if (dlg.ShowModal() == wxID_OK)
+    {
+        ms_data = dlg.GetColourData();
+        SetColour(ms_data.GetColour());
+
+        // fire an event
+        wxColourPickerEvent event(this, GetId(), m_colour);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+void wxGenericColourButton::UpdateColour()
+{
+    if ( !m_colour.Ok() )
+    {
+        if ( HasFlag(wxCLRP_SHOW_LABEL) )
+            SetLabel(wxEmptyString);
+        return;
+    }
+
+    // some combinations of the fg/bg colours may be unreadable, so we invert
+    // the colour to make sure fg colour is different enough from m_colour
+    wxColour colFg(~m_colour.Red(), ~m_colour.Green(), ~m_colour.Blue());
+
+    SetForegroundColour(colFg);
+    SetBackgroundColour(m_colour);
+
+    if ( HasFlag(wxCLRP_SHOW_LABEL) )
+        SetLabel(m_colour.GetAsString(wxC2S_HTML_SYNTAX));
+}
+
+#endif      // wxUSE_COLOURPICKERCTRL
diff --git a/src/generic/filepickerg.cpp b/src/generic/filepickerg.cpp
new file mode 100644
index 0000000000..32f76b8633
--- /dev/null
+++ b/src/generic/filepickerg.cpp
@@ -0,0 +1,85 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/filepickerg.cpp
+// Purpose:     wxGenericFileDirButton class implementation
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/window.h"
+#endif //WX_PRECOMP
+
+#include "wx/filepicker.h"
+#include "wx/filedlg.h"
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
+
+IMPLEMENT_DYNAMIC_CLASS(wxGenericFileButton, wxButton)
+IMPLEMENT_DYNAMIC_CLASS(wxGenericDirButton, wxButton)
+
+// ----------------------------------------------------------------------------
+// wxGenericFileButton
+// ----------------------------------------------------------------------------
+
+bool wxGenericFileDirButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxString &label, const wxString &path,
+                        const wxString &message, const wxString &wildcard,
+                        const wxPoint &pos, const wxSize &size, long style,
+                        const wxValidator& validator, const wxString &name)
+{
+    // create this button
+    if (!wxButton::Create(parent, id, label, pos, size, style,
+                          validator, name))
+    {
+        wxFAIL_MSG( wxT("wxGenericFileButton creation failed") );
+        return false;
+    }
+
+    // and handle user clicks on it
+    Connect(wxEVT_COMMAND_BUTTON_CLICKED,
+            wxCommandEventHandler(wxGenericFileDirButton::OnButtonClick),
+            NULL, this);
+
+    // create the dialog associated with this button
+    m_path = path;
+    return CreateDialog(message, wildcard);
+}
+
+void wxGenericFileDirButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
+{
+    if (m_dialog->ShowModal() == wxID_OK)
+    {
+        // save the path
+        UpdatePathFromDialog();
+
+        // fire an event
+        wxFileDirPickerEvent event(GetEventType(), this, GetId(), m_path);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+#endif      // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
diff --git a/src/generic/fontpickerg.cpp b/src/generic/fontpickerg.cpp
new file mode 100644
index 0000000000..1a67f07b85
--- /dev/null
+++ b/src/generic/fontpickerg.cpp
@@ -0,0 +1,123 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/fontpickerg.cpp
+// Purpose:     wxGenericFontButton class implementation
+// Author:      Francesco Montorsi
+// Modified by:
+// Created:     15/04/2006
+// RCS-ID:      $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/window.h"
+#endif //WX_PRECOMP
+
+#include "wx/fontpicker.h"
+#include "wx/fontdlg.h"
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FONTPICKERCTRL
+
+wxFontData wxGenericFontButton::ms_data;
+IMPLEMENT_DYNAMIC_CLASS(wxGenericFontButton, wxButton)
+
+// ----------------------------------------------------------------------------
+// wxGenericFontButton
+// ----------------------------------------------------------------------------
+
+bool wxGenericFontButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxFont &initial, const wxPoint &pos,
+                        const wxSize &size, long style,
+                        const wxValidator& validator, const wxString &name)
+{
+    wxString label = (style & wxFNTP_FONTDESC_AS_LABEL) ?
+                        wxEmptyString : // label will be updated by UpdateFont
+                        wxT("Choose font");
+
+    // create this button
+    if (!wxButton::Create( parent, id, label, pos,
+                           size, style, validator, name ))
+    {
+        wxFAIL_MSG( wxT("wxGenericFontButton creation failed") );
+        return false;
+    }
+
+    // and handle user clicks on it
+    Connect(wxEVT_COMMAND_BUTTON_CLICKED,
+            wxCommandEventHandler(wxGenericFontButton::OnButtonClick),
+            NULL, this);
+
+    m_selectedFont = initial;
+    UpdateFont();
+    InitFontData();
+
+    return true;
+}
+
+void wxGenericFontButton::InitFontData()
+{
+    ms_data.SetAllowSymbols(true);
+    ms_data.SetColour(*wxBLACK);
+    ms_data.EnableEffects(true);
+}
+
+void wxGenericFontButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
+{
+    // update the wxFontData to be shown in the the dialog
+    ms_data.SetInitialFont(m_selectedFont);
+
+    // create the font dialog and display it
+    wxFontDialog dlg(this, ms_data);
+    if (dlg.ShowModal() == wxID_OK)
+    {
+        ms_data = dlg.GetFontData();
+        SetSelectedFont(ms_data.GetChosenFont());
+
+        // fire an event
+        wxFontPickerEvent event(this, GetId(), m_selectedFont);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+void wxGenericFontButton::UpdateFont()
+{
+    if ( !m_selectedFont.Ok() )
+        return;
+
+    SetForegroundColour(ms_data.GetColour());
+
+    if (HasFlag(wxFNTP_USEFONT_FOR_LABEL))
+    {
+        // use currently selected font for the label...
+        wxButton::SetFont(m_selectedFont);
+    }
+
+    if (HasFlag(wxFNTP_FONTDESC_AS_LABEL))
+    {
+        SetLabel(wxString::Format(wxT("%s, %d"),
+                 m_selectedFont.GetFaceName().c_str(),
+                 m_selectedFont.GetPointSize()));
+    }
+}
+
+#endif      // wxUSE_FONTPICKERCTRL
diff --git a/src/gtk/clrpicker.cpp b/src/gtk/clrpicker.cpp
new file mode 100644
index 0000000000..f331fe7794
--- /dev/null
+++ b/src/gtk/clrpicker.cpp
@@ -0,0 +1,107 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/gtk/clrpicker.cpp
+// Purpose:     implementation of wxColourButton
+// Author:      Francesco Montorsi
+// Modified By:
+// Created:     15/04/2006
+// Id:          $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/gtk/private.h"
+#include "wx/clrpicker.h"
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_COLOURPICKERCTRL && defined(__WXGTK24__)
+
+//-----------------------------------------------------------------------------
+// "color-set"
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void gtk_clrbutton_setcolor_callback(GtkColorButton *widget,
+                                            wxColourButton *p)
+{
+    // update the m_colour member of the wxColourButton
+    wxASSERT(p);
+    gtk_color_button_get_color(widget, p->GetGdkColor());
+
+    // fire the colour-changed event
+    wxColourPickerEvent event(p, p->GetId(), p->GetColour());
+    p->GetEventHandler()->ProcessEvent(event);
+}
+}
+
+//-----------------------------------------------------------------------------
+// wxColourButton
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxColourButton, wxGenericColourButton)
+
+bool wxColourButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxColour &col,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    if (!gtk_check_version(2,4,0))
+    {
+        m_needParent = true;
+
+        if (!PreCreation( parent, pos, size ) ||
+            !wxControl::CreateBase(parent, id, pos, size, style, validator, name))
+        {
+            wxFAIL_MSG( wxT("wxColourButton creation failed") );
+            return false;
+        }
+
+        m_colour = col;
+        m_widget = gtk_color_button_new_with_color( m_colour.GetColor() );
+        gtk_widget_show( GTK_WIDGET(m_widget) );
+
+        // GtkColourButton signals
+        g_signal_connect(m_widget, "color-set",
+                        G_CALLBACK(gtk_clrbutton_setcolor_callback), this);
+
+
+        m_parent->DoAddChild( this );
+
+        PostCreation(size);
+        SetBestSize(size);
+    }
+    else
+        return wxGenericColourButton::Create(parent, id, col, pos, size,
+                                             style, validator, name);
+    return true;
+}
+
+wxColourButton::~wxColourButton()
+{
+}
+
+void wxColourButton::UpdateColour()
+{
+    if (!gtk_check_version(2,4,0))
+        gtk_color_button_set_color(GTK_COLOR_BUTTON(m_widget), m_colour.GetColor());
+    else
+        wxGenericColourButton::UpdateColour();
+}
+
+#endif      // wxUSE_COLOURPICKERCTRL && defined(__WXGTK24__)
diff --git a/src/gtk/filepicker.cpp b/src/gtk/filepicker.cpp
new file mode 100644
index 0000000000..4370de3f9b
--- /dev/null
+++ b/src/gtk/filepicker.cpp
@@ -0,0 +1,249 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/gtk/filepicker.cpp
+// Purpose:     implementation of wxFileButton and wxDirButton
+// Author:      Francesco Montorsi
+// Modified By:
+// Created:     15/04/2006
+// Id:          $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/gtk/private.h"
+#include "wx/filepicker.h"
+
+
+#if wxUSE_TOOLTIPS
+#include "wx/tooltip.h"
+#endif
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+#include <unistd.h> // chdir
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FILEPICKERCTRL && defined(__WXGTK26__)
+
+//-----------------------------------------------------------------------------
+// wxFileButton
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxFileButton, wxButton)
+
+bool wxFileButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxString &label, const wxString &path,
+                        const wxString &message, const wxString &wildcard,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    if (!gtk_check_version(2,6,0))
+    {
+        // VERY IMPORTANT: this code is identic to relative code in wxFileButton;
+        //                 if you find a problem here, fix it also in wxFileButton !
+
+        m_needParent = true;
+
+        if (!PreCreation( parent, pos, size ) ||
+            !wxControl::CreateBase(parent, id, pos, size, style & wxWINDOW_STYLE_MASK,
+                                    validator, name))
+        {
+            wxFAIL_MSG( wxT("wxFileButton creation failed") );
+            return false;
+        }
+
+        // create the dialog associated with this button
+        SetWindowStyle(style);
+        m_path = path;
+        if (!CreateDialog(message, wildcard))
+            return false;
+
+        // little trick used to avoid problems when there are other GTK windows 'grabbed':
+        // GtkFileChooserDialog won't be responsive to user events if there is another
+        // window which called gtk_grab_add (and this happens if e.g. a wxDialog is running
+        // in modal mode in the application - see wxDialogGTK::ShowModal).
+        // An idea could be to put the grab on the m_dialog->m_widget when the GtkFileChooserButton
+        // is clicked and then remove it as soon as the user closes the dialog itself.
+        // Unfortunately there's no way to hook in the 'clicked' event of the GtkFileChooserButton,
+        // thus we add grab on m_dialog->m_widget when it's shown and remove it when it's
+        // hidden simply using its "show" and "hide" events - clean & simple :)
+        g_signal_connect(m_dialog->m_widget, "show", G_CALLBACK(gtk_grab_add), NULL);
+        g_signal_connect(m_dialog->m_widget, "hide", G_CALLBACK(gtk_grab_remove), NULL);
+
+        // NOTE: we deliberately ignore the given label as GtkFileChooserButton
+        //       use as label the currently selected file
+        m_widget = gtk_file_chooser_button_new_with_dialog( m_dialog->m_widget );
+        gtk_widget_show( GTK_WIDGET(m_widget) );
+
+        // we need to know when the dialog has been dismissed clicking OK...
+        // NOTE: the "clicked" signal is not available for a GtkFileChooserButton
+        //       thus we are forced to use wxFileDialog's event
+        m_dialog->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
+                wxCommandEventHandler(wxFileButton::OnDialogOK),
+                NULL, this);
+
+        m_parent->DoAddChild( this );
+
+        PostCreation(size);
+        SetBestSize(size);
+    }
+    else
+        return wxGenericFileButton::Create(parent, id, label, path, message, wildcard,
+                                           pos, size, style, validator, name);
+    return true;
+}
+
+wxFileButton::~wxFileButton()
+{
+    // GtkFileChooserButton will automatically destroy the
+    // GtkFileChooserDialog associated with m_dialog.
+    // Thus we have to set its m_widget to NULL to avoid
+    // double destruction on same widget
+    m_dialog->m_widget = NULL;
+}
+
+void wxFileButton::OnDialogOK(wxCommandEvent& ev)
+{
+    // the wxFileDialog associated with the GtkFileChooserButton has been closed
+    // using the OK button, thus the selected file has changed...
+    if (ev.GetId() == wxID_OK)
+    {
+        // ...update our path
+        UpdatePathFromDialog();
+
+        // ...and fire an event
+        wxFileDirPickerEvent event(wxEVT_COMMAND_FILEPICKER_CHANGED, this, GetId(), m_path);
+        GetEventHandler()->ProcessEvent(event);
+    }
+}
+
+#endif      // wxUSE_FILEPICKERCTRL && defined(__WXGTK26__)
+
+
+
+
+#if wxUSE_DIRPICKERCTRL && defined(__WXGTK26__)
+
+//-----------------------------------------------------------------------------
+// "current-folder-changed"
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void gtk_dirbutton_currentfolderchanged_callback(GtkFileChooserButton *widget,
+                                                        wxDirButton *p)
+{
+    // update the m_path member of the wxDirButtonGTK
+    wxASSERT(p);
+
+    // NB: it's important to use gtk_file_chooser_get_filename instead of
+    //     gtk_file_chooser_get_current_folder (see GTK docs) !
+    gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
+    p->UpdatePath(filename);
+
+    // since GtkFileChooserButton when used to pick directories also uses a combobox,
+    // maybe that the current folder has been changed but not through the GtkFileChooserDialog
+    // and thus the 'gtk_filedialog_ok_callback' could have not been called...
+    // thus we need to make sure the current working directory is updated if wxDIRP_CHANGE_DIR
+    // style was given.
+    if (p->HasFlag(wxDIRP_CHANGE_DIR))
+        chdir(filename);
+    g_free(filename);
+
+    // ...and fire an event
+    wxFileDirPickerEvent event(wxEVT_COMMAND_DIRPICKER_CHANGED, p, p->GetId(), p->GetPath());
+    p->GetEventHandler()->ProcessEvent(event);
+}
+}
+
+
+//-----------------------------------------------------------------------------
+// wxDirButtonGTK
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxDirButton, wxButton)
+
+bool wxDirButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxString &label, const wxString &path,
+                        const wxString &message, const wxString &wildcard,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    if (!gtk_check_version(2,6,0))
+    {
+        // VERY IMPORTANT: this code is identic to relative code in wxFileButton;
+        //                 if you find a problem here, fix it also in wxFileButton !
+
+        m_needParent = true;
+
+        if (!PreCreation( parent, pos, size ) ||
+            !wxControl::CreateBase(parent, id, pos, size, style & wxWINDOW_STYLE_MASK,
+                                    validator, name))
+        {
+            wxFAIL_MSG( wxT("wxDirButtonGTK creation failed") );
+            return false;
+        }
+
+        // create the dialog associated with this button
+        SetWindowStyle(style);
+        m_path = path;
+        if (!CreateDialog(message, wildcard))
+            return false;
+
+        // little trick used to avoid problems when there are other GTK windows 'grabbed':
+        // GtkFileChooserDialog won't be responsive to user events if there is another
+        // window which called gtk_grab_add (and this happens if e.g. a wxDialog is running
+        // in modal mode in the application - see wxDialogGTK::ShowModal).
+        // An idea could be to put the grab on the m_dialog->m_widget when the GtkFileChooserButton
+        // is clicked and then remove it as soon as the user closes the dialog itself.
+        // Unfortunately there's no way to hook in the 'clicked' event of the GtkFileChooserButton,
+        // thus we add grab on m_dialog->m_widget when it's shown and remove it when it's
+        // hidden simply using its "show" and "hide" events - clean & simple :)
+        g_signal_connect(m_dialog->m_widget, "show", G_CALLBACK(gtk_grab_add), NULL);
+        g_signal_connect(m_dialog->m_widget, "hide", G_CALLBACK(gtk_grab_remove), NULL);
+
+
+        // NOTE: we deliberately ignore the given label as GtkFileChooserButton
+        //       use as label the currently selected file
+        m_widget = gtk_file_chooser_button_new_with_dialog( m_dialog->m_widget );
+
+        gtk_widget_show( GTK_WIDGET(m_widget) );
+
+        // GtkFileChooserButton signals
+        g_signal_connect(m_widget, "current-folder-changed",
+                         G_CALLBACK(gtk_dirbutton_currentfolderchanged_callback), this);
+
+        m_parent->DoAddChild( this );
+
+        PostCreation(size);
+        SetBestSize(size);
+    }
+    else
+        return wxGenericDirButton::Create(parent, id, label, path, message, wildcard,
+                                          pos, size, style, validator, name);
+    return true;
+}
+
+wxDirButton::~wxDirButton()
+{
+    // GtkFileChooserButton will automatically destroy the
+    // GtkFileChooserDialog associated with m_dialog.
+    // Thus we have to set its m_widget to NULL to avoid
+    // double destruction on same widget
+    m_dialog->m_widget = NULL;
+}
+
+#endif      // wxUSE_DIRPICKERCTRL && defined(__WXGTK26__)
diff --git a/src/gtk/fontpicker.cpp b/src/gtk/fontpicker.cpp
new file mode 100644
index 0000000000..8934897134
--- /dev/null
+++ b/src/gtk/fontpicker.cpp
@@ -0,0 +1,129 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/gtk/fontpicker.cpp
+// Purpose:     implementation of wxFontButton
+// Author:      Francesco Montorsi
+// Modified By:
+// Created:     15/04/2006
+// Id:          $Id$
+// Copyright:   (c) Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/gtk/private.h"
+#include "wx/fontpicker.h"
+
+#include "wx/fontutil.h"        // for wxNativeFontInfo
+#include "wx/gtk/private.h"
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+#if wxUSE_FONTPICKERCTRL && defined(__WXGTK24__)
+
+//-----------------------------------------------------------------------------
+// "font-set"
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void gtk_fontbutton_setfont_callback(GtkFontButton *widget,
+                                            wxFontButton *p)
+{
+    // update the m_selectedFont member of the wxFontButton
+    wxASSERT(p);
+    p->SetNativeFontInfo(gtk_font_button_get_font_name(widget));
+
+    // fire the colour-changed event
+    wxFontPickerEvent event(p, p->GetId(), p->GetSelectedFont());
+    p->GetEventHandler()->ProcessEvent(event);
+}
+}
+
+//-----------------------------------------------------------------------------
+// wxFontButton
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxFontButton, wxGenericFontButton)
+
+bool wxFontButton::Create( wxWindow *parent, wxWindowID id,
+                        const wxFont &initial,
+                        const wxPoint &pos, const wxSize &size,
+                        long style, const wxValidator& validator,
+                        const wxString &name )
+{
+    if (!gtk_check_version(2,4,0))
+    {
+        m_needParent = true;
+
+        if (!PreCreation( parent, pos, size ) ||
+            !wxControl::CreateBase(parent, id, pos, size, style, validator, name))
+        {
+            wxFAIL_MSG( wxT("wxFontButton creation failed") );
+            return false;
+        }
+
+        m_widget = gtk_font_button_new();
+
+        // set initial font
+        m_selectedFont = initial;
+        UpdateFont();
+
+        // honour the fontbutton styles
+        bool showall = (style & wxFNTP_FONTDESC_AS_LABEL) != 0,
+             usefont = (style & wxFNTP_USEFONT_FOR_LABEL) != 0;
+        gtk_font_button_set_show_style(GTK_FONT_BUTTON(m_widget), showall);
+        gtk_font_button_set_show_size(GTK_FONT_BUTTON(m_widget), showall);
+
+        gtk_font_button_set_use_size(GTK_FONT_BUTTON(m_widget), usefont);
+        gtk_font_button_set_use_font(GTK_FONT_BUTTON(m_widget), usefont);
+
+        gtk_widget_show( GTK_WIDGET(m_widget) );
+
+        // GtkFontButton signals
+        g_signal_connect(m_widget, "font-set",
+                        G_CALLBACK(gtk_fontbutton_setfont_callback), this);
+
+
+        m_parent->DoAddChild( this );
+
+        PostCreation(size);
+        SetBestSize(size);
+    }
+    else
+        return wxGenericFontButton::Create(parent, id, initial, pos, size,
+                                           style, validator, name);
+    return true;
+}
+
+wxFontButton::~wxFontButton()
+{
+}
+
+void wxFontButton::UpdateFont()
+{
+    if (!gtk_check_version(2,4,0))
+    {
+        const wxNativeFontInfo *info = m_selectedFont.GetNativeFontInfo();
+        wxASSERT_MSG( info, wxT("The fontbutton's internal font is not valid ?") );
+
+        const wxString& fontname = info->ToString();
+        gtk_font_button_set_font_name(GTK_FONT_BUTTON(m_widget), wxGTK_CONV(fontname));
+    }
+    else
+        wxGenericFontButton::UpdateFont();
+}
+
+#endif      // wxUSE_FONTPICKERCTRL
diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp
index 28786da797..c5883bd346 100644
--- a/src/gtk/window.cpp
+++ b/src/gtk/window.cpp
@@ -2746,6 +2746,10 @@ void wxWindowGTK::PostCreation()
                           G_CALLBACK (wxgtk_combo_size_request_callback),
                           this);
     }
+    else if (GTK_IS_FILE_CHOOSER_BUTTON(m_widget))
+    {
+        // FIXME: what should be done here ?
+    }
     else
     {
         // This is needed if we want to add our windows into native
diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp
index 6ebca5902a..44851caed6 100644
--- a/src/wxWindows.dsp
+++ b/src/wxWindows.dsp
@@ -341,6 +341,10 @@ SOURCE=.\common\clntdata.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\clrpickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\cmdline.cpp
 # End Source File
 # Begin Source File
@@ -515,6 +519,10 @@ SOURCE=.\common\filename.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\filepickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\filesys.cpp
 # End Source File
 # Begin Source File
@@ -539,6 +547,10 @@ SOURCE=.\common\fontmap.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\fontpickercmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\framecmn.cpp
 # End Source File
 # Begin Source File
@@ -723,6 +735,10 @@ SOURCE=.\common\paper.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\pickerbase.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\popupcmn.cpp
 # End Source File
 # Begin Source File
@@ -955,6 +971,10 @@ SOURCE=.\generic\choicdgg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\generic\clrpickerg.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\generic\combog.cpp
 # End Source File
 # Begin Source File
@@ -983,6 +1003,14 @@ SOURCE=.\generic\dragimgg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\generic\filepickerg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\generic\fontpickerg.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\generic\grid.cpp
 # End Source File
 # Begin Source File
@@ -1771,6 +1799,10 @@ SOURCE=.\xrc\xh_choicbk.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\xrc\xh_clrpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\xrc\xh_combo.cpp
 # End Source File
 # Begin Source File
@@ -1779,10 +1811,22 @@ SOURCE=.\xrc\xh_datectrl.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\xrc\xh_dirpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\xrc\xh_dlg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\xrc\xh_filepicker.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\xrc\xh_fontpicker.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\xrc\xh_frame.cpp
 # End Source File
 # Begin Source File
@@ -2139,6 +2183,10 @@ SOURCE=..\include\wx\clntdata.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\cmdline.h
 # End Source File
 # Begin Source File
@@ -2407,6 +2455,10 @@ SOURCE=..\include\wx\filename.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\filepicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\filesys.h
 # End Source File
 # Begin Source File
@@ -2435,6 +2487,10 @@ SOURCE=..\include\wx\fontmap.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\fontutil.h
 # End Source File
 # Begin Source File
@@ -3239,6 +3295,10 @@ SOURCE=..\include\wx\xrc\xh_choicbk.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\xrc\xh_clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\xrc\xh_combo.h
 # End Source File
 # Begin Source File
@@ -3247,10 +3307,22 @@ SOURCE=..\include\wx\xrc\xh_datectrl.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\xrc\xh_dirpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\xrc\xh_dlg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\xrc\xh_filepicker.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\wx\xrc\xh_fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\xrc\xh_frame.h
 # End Source File
 # Begin Source File
@@ -3911,6 +3983,10 @@ SOURCE=..\include\wx\generic\choicdgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\generic\clrpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\generic\colrdlgg.h
 # End Source File
 # Begin Source File
@@ -3943,10 +4019,18 @@ SOURCE=..\include\wx\generic\filedlgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\generic\filepicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\generic\fontdlgg.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\generic\fontpicker.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\generic\grid.h
 # End Source File
 # Begin Source File
diff --git a/src/xrc/xh_clrpicker.cpp b/src/xrc/xh_clrpicker.cpp
new file mode 100644
index 0000000000..2d71b823bb
--- /dev/null
+++ b/src/xrc/xh_clrpicker.cpp
@@ -0,0 +1,55 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_XRC && wxUSE_COLOURPICKERCTRL
+
+#include "wx/xrc/xh_clrpicker.h"
+#include "wx/clrpicker.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxColourPickerCtrlXmlHandler, wxXmlResourceHandler)
+
+wxColourPickerCtrlXmlHandler::wxColourPickerCtrlXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxCLRP_USE_TEXTCTRL);
+    XRC_ADD_STYLE(wxCLRP_SHOW_LABEL);
+    XRC_ADD_STYLE(wxCLRP_DEFAULT_STYLE);
+    AddWindowStyles();
+}
+
+wxObject *wxColourPickerCtrlXmlHandler::DoCreateResource()
+{
+   XRC_MAKE_INSTANCE(picker, wxColourPickerCtrl)
+
+   picker->Create(m_parentAsWindow,
+                  GetID(),
+                  GetColour(wxT("colour")),
+                  GetPosition(), GetSize(),
+                  GetStyle(_T("style"), wxCLRP_DEFAULT_STYLE),
+                  wxDefaultValidator,
+                  GetName());
+
+    SetupWindow(picker);
+
+    return picker;
+}
+
+bool wxColourPickerCtrlXmlHandler::CanHandle(wxXmlNode *node)
+{
+    return IsOfClass(node, wxT("wxColourPickerCtrl"));
+}
+
+#endif // wxUSE_XRC && wxUSE_COLOURPICKERCTRL
diff --git a/src/xrc/xh_dirpicker.cpp b/src/xrc/xh_dirpicker.cpp
new file mode 100644
index 0000000000..510094a54d
--- /dev/null
+++ b/src/xrc/xh_dirpicker.cpp
@@ -0,0 +1,57 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_XRC && wxUSE_DIRPICKERCTRL
+
+#include "wx/xrc/xh_dirpicker.h"
+#include "wx/filepicker.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxDirPickerCtrlXmlHandler, wxXmlResourceHandler)
+
+wxDirPickerCtrlXmlHandler::wxDirPickerCtrlXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxDIRP_USE_TEXTCTRL);
+    XRC_ADD_STYLE(wxDIRP_DIR_MUST_EXIST);
+    XRC_ADD_STYLE(wxDIRP_CHANGE_DIR);
+    XRC_ADD_STYLE(wxDIRP_DEFAULT_STYLE);
+    AddWindowStyles();
+}
+
+wxObject *wxDirPickerCtrlXmlHandler::DoCreateResource()
+{
+   XRC_MAKE_INSTANCE(picker, wxDirPickerCtrl)
+
+   picker->Create(m_parentAsWindow,
+                  GetID(),
+                  GetParamValue(wxT("default-path")),
+                  GetParamValue(wxT("message")),
+                  GetPosition(), GetSize(),
+                  GetStyle(_T("style"), wxDIRP_DEFAULT_STYLE),
+                  wxDefaultValidator,
+                  GetName());
+
+    SetupWindow(picker);
+
+    return picker;
+}
+
+bool wxDirPickerCtrlXmlHandler::CanHandle(wxXmlNode *node)
+{
+    return IsOfClass(node, wxT("wxDirPickerCtrl"));
+}
+
+#endif // wxUSE_XRC && wxUSE_DIRPICKERCTRL
diff --git a/src/xrc/xh_filepicker.cpp b/src/xrc/xh_filepicker.cpp
new file mode 100644
index 0000000000..e617aebb2d
--- /dev/null
+++ b/src/xrc/xh_filepicker.cpp
@@ -0,0 +1,59 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_XRC && wxUSE_FILEPICKERCTRL
+
+#include "wx/xrc/xh_filepicker.h"
+#include "wx/filepicker.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxFilePickerCtrlXmlHandler, wxXmlResourceHandler)
+
+wxFilePickerCtrlXmlHandler::wxFilePickerCtrlXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxFLP_OPEN);
+    XRC_ADD_STYLE(wxFLP_SAVE);
+    XRC_ADD_STYLE(wxFLP_OVERWRITE_PROMPT);
+    XRC_ADD_STYLE(wxFLP_FILE_MUST_EXIST);
+    XRC_ADD_STYLE(wxFLP_CHANGE_DIR);
+    XRC_ADD_STYLE(wxFLP_DEFAULT_STYLE);
+    AddWindowStyles();
+}
+
+wxObject *wxFilePickerCtrlXmlHandler::DoCreateResource()
+{
+    XRC_MAKE_INSTANCE(picker, wxFilePickerCtrl)
+
+    picker->Create(m_parentAsWindow,
+                  GetID(),
+                  GetParamValue(wxT("default-path")),
+                  GetParamValue(wxT("message")),
+                  GetParamValue(wxT("wildcard")),
+                  GetPosition(), GetSize(),
+                  GetStyle(_T("style"), wxFLP_DEFAULT_STYLE),
+                  wxDefaultValidator,
+                  GetName());
+
+    SetupWindow(picker);
+    return picker;
+}
+
+bool wxFilePickerCtrlXmlHandler::CanHandle(wxXmlNode *node)
+{
+    return IsOfClass(node, wxT("wxFilePickerCtrl"));
+}
+
+#endif // wxUSE_XRC && wxUSE_FILEPICKERCTRL
diff --git a/src/xrc/xh_fontpicker.cpp b/src/xrc/xh_fontpicker.cpp
new file mode 100644
index 0000000000..1470369e64
--- /dev/null
+++ b/src/xrc/xh_fontpicker.cpp
@@ -0,0 +1,60 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        xh_clrpicker.cpp
+// Purpose:     XML resource handler for wxColourPickerCtrl
+// Author:      Francesco Montorsi
+// Created:     2006-04-17
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_XRC && wxUSE_FONTPICKERCTRL
+
+#include "wx/xrc/xh_fontpicker.h"
+#include "wx/fontpicker.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxFontPickerCtrlXmlHandler, wxXmlResourceHandler)
+
+wxFontPickerCtrlXmlHandler::wxFontPickerCtrlXmlHandler() : wxXmlResourceHandler()
+{
+    XRC_ADD_STYLE(wxFNTP_USE_TEXTCTRL);
+    XRC_ADD_STYLE(wxFNTP_FONTDESC_AS_LABEL);
+    XRC_ADD_STYLE(wxFNTP_USEFONT_FOR_LABEL);
+    XRC_ADD_STYLE(wxFNTP_DEFAULT_STYLE);
+    AddWindowStyles();
+}
+
+wxObject *wxFontPickerCtrlXmlHandler::DoCreateResource()
+{
+   XRC_MAKE_INSTANCE(picker, wxFontPickerCtrl)
+
+    wxFont f = *wxNORMAL_FONT;
+    if (HasParam(wxT("default-font")))
+        f = GetFont(wxT("default-font"));
+
+   picker->Create(m_parentAsWindow,
+                  GetID(),
+                  f,
+                  GetPosition(), GetSize(),
+                  GetStyle(_T("style"), wxFNTP_DEFAULT_STYLE),
+                  wxDefaultValidator,
+                  GetName());
+
+    SetupWindow(picker);
+
+    return picker;
+}
+
+bool wxFontPickerCtrlXmlHandler::CanHandle(wxXmlNode *node)
+{
+    return IsOfClass(node, wxT("wxFontPickerCtrl"));
+}
+
+#endif // wxUSE_XRC && wxUSE_FONTPICKERCTRL
diff --git a/src/xrc/xmlrsall.cpp b/src/xrc/xmlrsall.cpp
index eb73722734..a1c027447f 100644
--- a/src/xrc/xmlrsall.cpp
+++ b/src/xrc/xmlrsall.cpp
@@ -115,6 +115,18 @@ void wxXmlResource::InitAllHandlers()
 #if wxUSE_DATEPICKCTRL
     AddHandler(new wxDateCtrlXmlHandler);
 #endif
+#if wxUSE_COLOURPICKERCTRL
+    AddHandler(new wxColourPickerCtrlXmlHandler);
+#endif
+#if wxUSE_FILEPICKERCTRL
+    AddHandler(new wxFilePickerCtrlXmlHandler);
+#endif
+#if wxUSE_DIRPICKERCTRL
+    AddHandler(new wxDirPickerCtrlXmlHandler);
+#endif
+#if wxUSE_FONTPICKERCTRL
+    AddHandler(new wxFontPickerCtrlXmlHandler);
+#endif
 #if wxUSE_MDI
     AddHandler(new wxMdiXmlHandler);
 #endif
-- 
2.50.0

