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 
18 class 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!
24 enum 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!
43 enum 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
92 enum 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
134 enum 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
142 enum 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 
163 class WXDLLEXPORT wxSystemSettingsNative
164 {
165 public:
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 
183 class WXDLLEXPORT wxSystemSettings : public wxSystemSettingsNative
184 {
185 public:
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