1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/settings.h
3// Purpose:     wxSystemSettings class
4// Author:      Julian Smart
5// Modified by:
6// Created:     01/02/97
7// RCS-ID:      $Id: settings.h 67017 2011-02-25 09:37:28Z JS $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_SETTINGS_H_BASE_
13#define _WX_SETTINGS_H_BASE_
14
15#include "wx/colour.h"
16#include "wx/font.h"
17
18class WXDLLIMPEXP_FWD_CORE wxWindow;
19
20// possible values for wxSystemSettings::GetFont() parameter
21//
22// NB: wxMSW assumes that they have the same values as the parameters of
23//     Windows GetStockObject() API, don't change the values!
24enum wxSystemFont
25{
26    wxSYS_OEM_FIXED_FONT = 10,
27    wxSYS_ANSI_FIXED_FONT,
28    wxSYS_ANSI_VAR_FONT,
29    wxSYS_SYSTEM_FONT,
30    wxSYS_DEVICE_DEFAULT_FONT,
31    wxSYS_DEFAULT_PALETTE,
32    wxSYS_SYSTEM_FIXED_FONT,
33    wxSYS_DEFAULT_GUI_FONT,
34
35    // this was just a temporary aberration, do not use it any more
36    wxSYS_ICONTITLE_FONT = wxSYS_DEFAULT_GUI_FONT
37};
38
39// possible values for wxSystemSettings::GetColour() parameter
40//
41// NB: wxMSW assumes that they have the same values as the parameters of
42//     Windows GetSysColor() API, don't change the values!
43enum wxSystemColour
44{
45    wxSYS_COLOUR_SCROLLBAR,
46    wxSYS_COLOUR_BACKGROUND,
47    wxSYS_COLOUR_DESKTOP = wxSYS_COLOUR_BACKGROUND,
48    wxSYS_COLOUR_ACTIVECAPTION,
49    wxSYS_COLOUR_INACTIVECAPTION,
50    wxSYS_COLOUR_MENU,
51    wxSYS_COLOUR_WINDOW,
52    wxSYS_COLOUR_WINDOWFRAME,
53    wxSYS_COLOUR_MENUTEXT,
54    wxSYS_COLOUR_WINDOWTEXT,
55    wxSYS_COLOUR_CAPTIONTEXT,
56    wxSYS_COLOUR_ACTIVEBORDER,
57    wxSYS_COLOUR_INACTIVEBORDER,
58    wxSYS_COLOUR_APPWORKSPACE,
59    wxSYS_COLOUR_HIGHLIGHT,
60    wxSYS_COLOUR_HIGHLIGHTTEXT,
61    wxSYS_COLOUR_BTNFACE,
62    wxSYS_COLOUR_3DFACE = wxSYS_COLOUR_BTNFACE,
63    wxSYS_COLOUR_BTNSHADOW,
64    wxSYS_COLOUR_3DSHADOW = wxSYS_COLOUR_BTNSHADOW,
65    wxSYS_COLOUR_GRAYTEXT,
66    wxSYS_COLOUR_BTNTEXT,
67    wxSYS_COLOUR_INACTIVECAPTIONTEXT,
68    wxSYS_COLOUR_BTNHIGHLIGHT,
69    wxSYS_COLOUR_BTNHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
70    wxSYS_COLOUR_3DHIGHLIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
71    wxSYS_COLOUR_3DHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
72    wxSYS_COLOUR_3DDKSHADOW,
73    wxSYS_COLOUR_3DLIGHT,
74    wxSYS_COLOUR_INFOTEXT,
75    wxSYS_COLOUR_INFOBK,
76    wxSYS_COLOUR_LISTBOX,
77    wxSYS_COLOUR_HOTLIGHT,
78    wxSYS_COLOUR_GRADIENTACTIVECAPTION,
79    wxSYS_COLOUR_GRADIENTINACTIVECAPTION,
80    wxSYS_COLOUR_MENUHILIGHT,
81    wxSYS_COLOUR_MENUBAR,
82    wxSYS_COLOUR_LISTBOXTEXT,
83    wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT,
84
85    wxSYS_COLOUR_MAX
86};
87
88// possible values for wxSystemSettings::GetMetric() index parameter
89//
90// NB: update the conversion table in msw/settings.cpp if you change the values
91//     of the elements of this enum
92enum wxSystemMetric
93{
94    wxSYS_MOUSE_BUTTONS = 1,
95    wxSYS_BORDER_X,
96    wxSYS_BORDER_Y,
97    wxSYS_CURSOR_X,
98    wxSYS_CURSOR_Y,
99    wxSYS_DCLICK_X,
100    wxSYS_DCLICK_Y,
101    wxSYS_DRAG_X,
102    wxSYS_DRAG_Y,
103    wxSYS_EDGE_X,
104    wxSYS_EDGE_Y,
105    wxSYS_HSCROLL_ARROW_X,
106    wxSYS_HSCROLL_ARROW_Y,
107    wxSYS_HTHUMB_X,
108    wxSYS_ICON_X,
109    wxSYS_ICON_Y,
110    wxSYS_ICONSPACING_X,
111    wxSYS_ICONSPACING_Y,
112    wxSYS_WINDOWMIN_X,
113    wxSYS_WINDOWMIN_Y,
114    wxSYS_SCREEN_X,
115    wxSYS_SCREEN_Y,
116    wxSYS_FRAMESIZE_X,
117    wxSYS_FRAMESIZE_Y,
118    wxSYS_SMALLICON_X,
119    wxSYS_SMALLICON_Y,
120    wxSYS_HSCROLL_Y,
121    wxSYS_VSCROLL_X,
122    wxSYS_VSCROLL_ARROW_X,
123    wxSYS_VSCROLL_ARROW_Y,
124    wxSYS_VTHUMB_Y,
125    wxSYS_CAPTION_Y,
126    wxSYS_MENU_Y,
127    wxSYS_NETWORK_PRESENT,
128    wxSYS_PENWINDOWS_PRESENT,
129    wxSYS_SHOW_SOUNDS,
130    wxSYS_SWAP_BUTTONS
131};
132
133// possible values for wxSystemSettings::HasFeature() parameter
134enum wxSystemFeature
135{
136    wxSYS_CAN_DRAW_FRAME_DECORATIONS = 1,
137    wxSYS_CAN_ICONIZE_FRAME,
138    wxSYS_TABLET_PRESENT
139};
140
141// values for different screen designs
142enum wxSystemScreenType
143{
144    wxSYS_SCREEN_NONE = 0,  //   not yet defined
145
146    wxSYS_SCREEN_TINY,      //   <
147    wxSYS_SCREEN_PDA,       //   >= 320x240
148    wxSYS_SCREEN_SMALL,     //   >= 640x480
149    wxSYS_SCREEN_DESKTOP    //   >= 800x600
150};
151
152// ----------------------------------------------------------------------------
153// wxSystemSettingsNative: defines the API for wxSystemSettings class
154// ----------------------------------------------------------------------------
155
156// this is a namespace rather than a class: it has only non virtual static
157// functions
158//
159// also note that the methods are implemented in the platform-specific source
160// files (i.e. this is not a real base class as we can't override its virtual
161// functions because it doesn't have any)
162
163class WXDLLEXPORT wxSystemSettingsNative
164{
165public:
166    // get a standard system colour
167    static wxColour GetColour(wxSystemColour index);
168
169    // get a standard system font
170    static wxFont GetFont(wxSystemFont index);
171
172    // get a system-dependent metric
173    static int GetMetric(wxSystemMetric index, wxWindow * win = NULL);
174
175    // return true if the port has certain feature
176    static bool HasFeature(wxSystemFeature index);
177};
178
179// ----------------------------------------------------------------------------
180// include the declaration of the real platform-dependent class
181// ----------------------------------------------------------------------------
182
183class WXDLLEXPORT wxSystemSettings : public wxSystemSettingsNative
184{
185public:
186#ifdef __WXUNIVERSAL__
187    // in wxUniversal we want to use the theme standard colours instead of the
188    // system ones, otherwise wxSystemSettings is just the same as
189    // wxSystemSettingsNative
190    static wxColour GetColour(wxSystemColour index);
191#endif // __WXUNIVERSAL__
192
193    // Get system screen design (desktop, pda, ..) used for
194    // laying out various dialogs.
195    static wxSystemScreenType GetScreenType();
196
197    // Override default.
198    static void SetScreenType( wxSystemScreenType screen );
199
200    // Value
201    static wxSystemScreenType ms_screen;
202
203#if WXWIN_COMPATIBILITY_2_4
204    // the backwards compatible versions of wxSystemSettingsNative functions,
205    // don't use these methods in the new code!
206    wxDEPRECATED(static wxColour GetSystemColour(int index));
207    wxDEPRECATED(static wxFont GetSystemFont(int index));
208    wxDEPRECATED(static int GetSystemMetric(int index));
209#endif
210};
211
212#endif
213    // _WX_SETTINGS_H_BASE_
214
215