]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/settings.h
Added wxPGProperty::Enable() for conveniency. Refactored related code and improved...
[wxWidgets.git] / interface / wx / settings.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: settings.h
e54c96f1 3// Purpose: interface of wxSystemSettings
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
4876436a
FM
9
10/**
11 Possible values for wxSystemSettings::GetFont() parameter.
d6e329cf 12
a4d291f0
FM
13 These values map 1:1 the native values supported by the Windows' @c GetStockObject
14 function. Note that other ports (other than wxMSW) will try to provide meaningful
15 fonts but they usually map the same font to various @c wxSYS_*_FONT values.
4876436a
FM
16*/
17enum wxSystemFont
18{
a4d291f0
FM
19 /// Original equipment manufacturer dependent fixed-pitch font.
20 wxSYS_OEM_FIXED_FONT = 10,
d6e329cf 21
a4d291f0
FM
22 /// Windows fixed-pitch (monospaced) font.
23 wxSYS_ANSI_FIXED_FONT,
d6e329cf 24
a4d291f0
FM
25 /// Windows variable-pitch (proportional) font.
26 wxSYS_ANSI_VAR_FONT,
27
d6e329cf 28 /// System font. By default, the system uses the system font to draw menus,
a4d291f0
FM
29 /// dialog box controls, and text.
30 wxSYS_SYSTEM_FONT,
d6e329cf 31
a4d291f0
FM
32 /// Device-dependent font (Windows NT and later only).
33 wxSYS_DEVICE_DEFAULT_FONT,
4876436a
FM
34
35 /**
36 Default font for user interface objects such as menus and dialog boxes.
37 Note that with modern GUIs nothing guarantees that the same font is used
38 for all GUI elements, so some controls might use a different font by default.
39 */
40 wxSYS_DEFAULT_GUI_FONT
41};
42
43
44/**
45 Possible values for wxSystemSettings::GetColour() parameter.
d6e329cf 46
a4d291f0
FM
47 These values map 1:1 the native values supported by the Windows' @c GetSysColor
48 function. Note that other ports (other than wxMSW) will try to provide meaningful
49 colours but they usually map the same colour to various @c wxSYS_COLOUR_* values.
4876436a
FM
50*/
51enum wxSystemColour
52{
53 wxSYS_COLOUR_SCROLLBAR, //!< The scrollbar grey area.
a4d291f0
FM
54 wxSYS_COLOUR_DESKTOP, //!< The desktop colour.
55 wxSYS_COLOUR_ACTIVECAPTION, //!< Active window caption colour.
56 wxSYS_COLOUR_INACTIVECAPTION, //!< Inactive window caption colour.
57 wxSYS_COLOUR_MENU, //!< Menu background colour.
58 wxSYS_COLOUR_WINDOW, //!< Window background colour.
59 wxSYS_COLOUR_WINDOWFRAME, //!< Window frame colour.
60 wxSYS_COLOUR_MENUTEXT, //!< Colour of the text used in the menus.
61 wxSYS_COLOUR_WINDOWTEXT, //!< Colour of the text used in generic windows.
62 wxSYS_COLOUR_CAPTIONTEXT, //!< Colour of the text used in captions, size boxes and scrollbar arrow boxes.
63 wxSYS_COLOUR_ACTIVEBORDER, //!< Active window border colour.
64 wxSYS_COLOUR_INACTIVEBORDER, //!< Inactive window border colour.
65 wxSYS_COLOUR_APPWORKSPACE, //!< Background colour for MDI applications.
66 wxSYS_COLOUR_HIGHLIGHT, //!< Colour of item(s) selected in a control.
67 wxSYS_COLOUR_HIGHLIGHTTEXT, //!< Colour of the text of item(s) selected in a control.
68 wxSYS_COLOUR_BTNFACE, //!< Face shading colour on push buttons.
69 wxSYS_COLOUR_BTNSHADOW, //!< Edge shading colour on push buttons.
70 wxSYS_COLOUR_GRAYTEXT, //!< Colour of greyed (disabled) text.
71 wxSYS_COLOUR_BTNTEXT, //!< Colour of the text on push buttons.
72 wxSYS_COLOUR_INACTIVECAPTIONTEXT, //!< Colour of the text in active captions.
73 wxSYS_COLOUR_BTNHIGHLIGHT, //!< Highlight colour for buttons.
74 wxSYS_COLOUR_3DDKSHADOW, //!< Dark shadow colour for three-dimensional display elements.
4876436a
FM
75 wxSYS_COLOUR_3DLIGHT, //!< Light colour for three-dimensional display elements.
76 wxSYS_COLOUR_INFOTEXT, //!< Text colour for tooltip controls.
77 wxSYS_COLOUR_INFOBK, //!< Background colour for tooltip controls.
a4d291f0
FM
78 wxSYS_COLOUR_LISTBOX, //!< Background colour for list-like contols.
79 wxSYS_COLOUR_HOTLIGHT, //!< Colour for a hyperlink or hot-tracked item.
d6e329cf 80
a4d291f0 81 /**
d6e329cf 82 Right side colour in the color gradient of an active window's title bar.
a4d291f0
FM
83 @c wxSYS_COLOUR_ACTIVECAPTION specifies the left side color.
84 */
4876436a 85 wxSYS_COLOUR_GRADIENTACTIVECAPTION,
d6e329cf 86
a4d291f0 87 /**
d6e329cf 88 Right side colour in the color gradient of an inactive window's title bar.
a4d291f0
FM
89 @c wxSYS_COLOUR_INACTIVECAPTION specifies the left side color.
90 */
4876436a 91 wxSYS_COLOUR_GRADIENTINACTIVECAPTION,
d6e329cf 92
a4d291f0 93 /**
d6e329cf 94 The colour used to highlight menu items when the menu appears as a flat menu.
a4d291f0
FM
95 The highlighted menu item is outlined with @c wxSYS_COLOUR_HIGHLIGHT.
96 */
4876436a 97 wxSYS_COLOUR_MENUHILIGHT,
d6e329cf 98
a4d291f0 99 /**
d6e329cf 100 The background colour for the menu bar when menus appear as flat menus.
a4d291f0
FM
101 However, @c wxSYS_COLOUR_MENU continues to specify the background color of the menu popup.
102 */
4876436a 103 wxSYS_COLOUR_MENUBAR,
d6e329cf 104
9f2968ad
VZ
105 /**
106 Text colour for list-like controls.
d6e329cf 107
9f2968ad
VZ
108 @since 2.9.0
109 */
110 wxSYS_COLOUR_LISTBOXTEXT,
4876436a 111
d6e329cf
FM
112 wxSYS_COLOUR_MAX
113
114
115
a4d291f0 116 // synonyms:
d6e329cf 117
a4d291f0
FM
118 wxSYS_COLOUR_BACKGROUND = wxSYS_COLOUR_DESKTOP,
119 //!< Synonym for @c wxSYS_COLOUR_DESKTOP.
120 wxSYS_COLOUR_3DFACE = wxSYS_COLOUR_BTNFACE,
121 //!< Synonym for @c wxSYS_COLOUR_BTNFACE.
122 wxSYS_COLOUR_3DSHADOW = wxSYS_COLOUR_BTNSHADOW,
123 //!< Synonym for @c wxSYS_COLOUR_BTNSHADOW.
124 wxSYS_COLOUR_BTNHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
125 //!< Synonym for @c wxSYS_COLOUR_BTNHIGHLIGHT.
126 wxSYS_COLOUR_3DHIGHLIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
127 //!< Synonym for @c wxSYS_COLOUR_BTNHIGHLIGHT.
128 wxSYS_COLOUR_3DHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
129 //!< Synonym for @c wxSYS_COLOUR_BTNHIGHLIGHT.
d6e329cf 130
a4d291f0
FM
131 /**
132 Synonim for @c wxSYS_COLOUR_BTNFACE.
d6e329cf 133
a4d291f0
FM
134 On wxMSW this colour should be used as the background colour of
135 wxFrames which are used as containers of controls; this is in fact the
d6e329cf
FM
136 same colour used for the borders of controls like e.g. wxNotebook or
137 for the background of e.g. wxPanel.
138
a4d291f0
FM
139 @since 2.9.0
140 */
d6e329cf 141 wxSYS_COLOUR_FRAMEBK = wxSYS_COLOUR_BTNFACE
4876436a
FM
142};
143
144/**
145 Possible values for wxSystemSettings::GetMetric() index parameter.
146*/
147enum wxSystemMetric
148{
149 wxSYS_MOUSE_BUTTONS, //!< Number of buttons on mouse, or zero if no mouse was installed.
150 wxSYS_BORDER_X, //!< Width of single border.
151 wxSYS_BORDER_Y, //!< Height of single border.
152 wxSYS_CURSOR_X, //!< Width of cursor.
153 wxSYS_CURSOR_Y, //!< Height of cursor.
154 wxSYS_DCLICK_X, //!< Width in pixels of rectangle within which two successive mouse clicks must fall to generate a double-click.
155 wxSYS_DCLICK_Y, //!< Height in pixels of rectangle within which two successive mouse clicks must fall to generate a double-click.
156 wxSYS_DCLICK_MSEC, //!< Maximal time, in milliseconds, which may pass between subsequent clicks for a double click to be generated.
157 wxSYS_DRAG_X, //!< Width in pixels of a rectangle centered on a drag point to allow for limited movement of the mouse pointer before a drag operation begins.
158 wxSYS_DRAG_Y, //!< Height in pixels of a rectangle centered on a drag point to allow for limited movement of the mouse pointer before a drag operation begins.
159 wxSYS_EDGE_X, //!< Width of a 3D border, in pixels.
160 wxSYS_EDGE_Y, //!< Height of a 3D border, in pixels.
161 wxSYS_HSCROLL_ARROW_X, //!< Width of arrow bitmap on horizontal scrollbar.
162 wxSYS_HSCROLL_ARROW_Y, //!< Height of arrow bitmap on horizontal scrollbar.
163 wxSYS_HTHUMB_X, //!< Width of horizontal scrollbar thumb.
164 wxSYS_ICON_X, //!< The default width of an icon.
165 wxSYS_ICON_Y, //!< The default height of an icon.
166 wxSYS_ICONSPACING_X, //!< Width of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of this size when arranged.
167 wxSYS_ICONSPACING_Y, //!< Height of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of this size when arranged.
168 wxSYS_WINDOWMIN_X, //!< Minimum width of a window.
169 wxSYS_WINDOWMIN_Y, //!< Minimum height of a window.
170 wxSYS_SCREEN_X, //!< Width of the screen in pixels.
171 wxSYS_SCREEN_Y, //!< Height of the screen in pixels.
172 wxSYS_FRAMESIZE_X, //!< Width of the window frame for a wxTHICK_FRAME window.
173 wxSYS_FRAMESIZE_Y, //!< Height of the window frame for a wxTHICK_FRAME window.
174 wxSYS_SMALLICON_X, //!< Recommended width of a small icon (in window captions, and small icon view).
175 wxSYS_SMALLICON_Y, //!< Recommended height of a small icon (in window captions, and small icon view).
176 wxSYS_HSCROLL_Y, //!< Height of horizontal scrollbar in pixels.
177 wxSYS_VSCROLL_X, //!< Width of vertical scrollbar in pixels.
178 wxSYS_VSCROLL_ARROW_X, //!< Width of arrow bitmap on a vertical scrollbar.
179 wxSYS_VSCROLL_ARROW_Y, //!< Height of arrow bitmap on a vertical scrollbar.
180 wxSYS_VTHUMB_Y, //!< Height of vertical scrollbar thumb.
181 wxSYS_CAPTION_Y, //!< Height of normal caption area.
182 wxSYS_MENU_Y, //!< Height of single-line menu bar.
183 wxSYS_NETWORK_PRESENT, //!< 1 if there is a network present, 0 otherwise.
184 wxSYS_PENWINDOWS_PRESENT, //!< 1 if PenWindows is installed, 0 otherwise.
185 wxSYS_SHOW_SOUNDS, //!< Non-zero if the user requires an application to present information
186 //!< visually in situations where it would otherwise present the information
187 //!< only in audible form; zero otherwise.
188 wxSYS_SWAP_BUTTONS, //!< Non-zero if the meanings of the left and right mouse buttons are swapped; zero otherwise.
189 wxSYS_DCLICK_MSEC
190};
191
192/**
193 Possible values for wxSystemSettings::HasFeature() parameter.
194*/
195enum wxSystemFeature
196{
197 wxSYS_CAN_DRAW_FRAME_DECORATIONS = 1,
198 wxSYS_CAN_ICONIZE_FRAME,
199 wxSYS_TABLET_PRESENT
200};
201
202/**
d6e329cf 203 Values for different screen designs. See wxSystemSettings::GetScreenType().
4876436a
FM
204*/
205enum wxSystemScreenType
206{
207 wxSYS_SCREEN_NONE = 0, //!< Undefined screen type.
208
209 wxSYS_SCREEN_TINY, //!< Tiny screen, less than 320x240
210 wxSYS_SCREEN_PDA, //!< PDA screen, 320x240 or more but less than 640x480
211 wxSYS_SCREEN_SMALL, //!< Small screen, 640x480 or more but less than 800x600
212 wxSYS_SCREEN_DESKTOP //!< Desktop screen, 800x600 or more
213};
214
215
23324ae1
FM
216/**
217 @class wxSystemSettings
7c913512 218
4876436a 219 wxSystemSettings allows the application to ask for details about the system.
e3527f7b
FM
220
221 This can include settings such as standard colours, fonts, and user interface
222 element sizes.
7c913512 223
23324ae1 224 @library{wxcore}
3c99e2fd 225 @category{cfg}
7c913512 226
d6e329cf 227 @see wxFont, wxColour, wxSystemOptions
23324ae1
FM
228*/
229class wxSystemSettings : public wxObject
230{
231public:
232 /**
4876436a
FM
233 Default constructor.
234
235 You don't need to create an instance of wxSystemSettings
23324ae1
FM
236 since all of its functions are static.
237 */
238 wxSystemSettings();
239
240 /**
241 Returns a system colour.
e3527f7b
FM
242
243 @param index
244 Can be one of the ::wxSystemColour enum values.
245
246 @return
247 The returned colour is always valid.
23324ae1
FM
248 */
249 static wxColour GetColour(wxSystemColour index);
250
251 /**
252 Returns a system font.
e3527f7b
FM
253
254 @param index
255 Can be one of the ::wxSystemFont enum values.
256
257 @return
258 The returned font is always valid.
23324ae1
FM
259 */
260 static wxFont GetFont(wxSystemFont index);
261
262 /**
263 Returns the value of a system metric, or -1 if the metric is not supported on
264 the current system.
4876436a 265
4cc4bfaf 266 The value of @a win determines if the metric returned is a global value or
23324ae1
FM
267 a wxWindow based value, in which case it might determine the widget, the
268 display the window is on, or something similar. The window given should be as
4876436a
FM
269 close to the metric as possible (e.g a wxTopLevelWindow in case of the
270 wxSYS_CAPTION_Y metric).
3c4f71cc 271
4876436a 272 @a index can be one of the ::wxSystemMetric enum values.
3c4f71cc 273
4cc4bfaf
FM
274 @a win is a pointer to the window for which the metric is requested.
275 Specifying the @a win parameter is encouraged, because some metrics on some
4876436a
FM
276 ports are not supported without one,or they might be capable of reporting
277 better values if given one. If a window does not make sense for a metric,
23324ae1 278 one should still be given, as for example it might determine which displays
4876436a 279 cursor width is requested with wxSYS_CURSOR_X.
23324ae1 280 */
4cc4bfaf 281 static int GetMetric(wxSystemMetric index, wxWindow* win = NULL);
23324ae1
FM
282
283 /**
4876436a
FM
284 Returns the screen type.
285 The return value is one of the ::wxSystemScreenType enum values.
23324ae1
FM
286 */
287 static wxSystemScreenType GetScreenType();
d6e329cf
FM
288
289 /**
290 Returns @true if the port has certain feature.
291 See the ::wxSystemFeature enum values.
292 */
293 static bool HasFeature(wxSystemFeature index);
23324ae1 294};
e54c96f1 295