1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
12 #pragma implementation "settings.h"
15 #include "wx/settings.h"
19 #define wxSYS_COLOUR_SCROLLBAR 0
20 #define wxSYS_COLOUR_BACKGROUND 1
21 #define wxSYS_COLOUR_ACTIVECAPTION 2
22 #define wxSYS_COLOUR_INACTIVECAPTION 3
23 #define wxSYS_COLOUR_MENU 4
24 #define wxSYS_COLOUR_WINDOW 5
25 #define wxSYS_COLOUR_WINDOWFRAME 6
26 #define wxSYS_COLOUR_MENUTEXT 7
27 #define wxSYS_COLOUR_WINDOWTEXT 8
28 #define wxSYS_COLOUR_CAPTIONTEXT 9
29 #define wxSYS_COLOUR_ACTIVEBORDER 10
30 #define wxSYS_COLOUR_INACTIVEBORDER 11
31 #define wxSYS_COLOUR_APPWORKSPACE 12
32 #define wxSYS_COLOUR_HIGHLIGHT 13
33 #define wxSYS_COLOUR_HIGHLIGHTTEXT 14
34 #define wxSYS_COLOUR_BTNFACE 15
35 #define wxSYS_COLOUR_BTNSHADOW 16
36 #define wxSYS_COLOUR_GRAYTEXT 17
37 #define wxSYS_COLOUR_BTNTEXT 18
38 #define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19
39 #define wxSYS_COLOUR_BTNHIGHLIGHT 20
41 #define wxSYS_COLOUR_3DDKSHADOW 21
42 #define wxSYS_COLOUR_3DLIGHT 22
43 #define wxSYS_COLOUR_INFOTEXT 23
44 #define wxSYS_COLOUR_INFOBK 24
46 #define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND
47 #define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE
48 #define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW
49 #define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT
50 #define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT
51 #define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT
54 #define SHIFT (8*(sizeof(short int)-sizeof(char)))
56 wxColour
*g_systemBtnFaceColour
= (wxColour
*) NULL
;
57 wxColour
*g_systemBtnShadowColour
= (wxColour
*) NULL
;
58 wxColour
*g_systemBtnHighlightColour
= (wxColour
*) NULL
;
59 wxColour
*g_systemHighlightColour
= (wxColour
*) NULL
;
61 wxFont
*g_systemFont
= (wxFont
*) NULL
;
63 void wxSystemSettings::Done()
65 wxDELETE(g_systemBtnFaceColour
);
66 wxDELETE(g_systemBtnShadowColour
);
67 wxDELETE(g_systemBtnHighlightColour
);
68 wxDELETE(g_systemHighlightColour
);
69 wxDELETE(g_systemFont
);
72 wxColour
wxSystemSettings::GetSystemColour( int index
)
76 case wxSYS_COLOUR_SCROLLBAR
:
77 case wxSYS_COLOUR_BACKGROUND
:
78 case wxSYS_COLOUR_ACTIVECAPTION
:
79 case wxSYS_COLOUR_INACTIVECAPTION
:
80 case wxSYS_COLOUR_MENU
:
81 case wxSYS_COLOUR_WINDOW
:
82 case wxSYS_COLOUR_WINDOWFRAME
:
83 case wxSYS_COLOUR_ACTIVEBORDER
:
84 case wxSYS_COLOUR_INACTIVEBORDER
:
85 case wxSYS_COLOUR_BTNFACE
:
87 GtkStyle
*style
= gtk_widget_get_default_style();
88 if (!g_systemBtnFaceColour
)
90 g_systemBtnFaceColour
=
91 new wxColour( style
->bg
[0].red
>> SHIFT
,
92 style
->bg
[0].green
>> SHIFT
,
93 style
->bg
[0].blue
>> SHIFT
);
95 return *g_systemBtnFaceColour
;
97 case wxSYS_COLOUR_BTNSHADOW
:
99 GtkStyle
*style
= gtk_widget_get_default_style();
100 if (!g_systemBtnShadowColour
)
102 g_systemBtnShadowColour
=
103 new wxColour( style
->dark
[0].red
>> SHIFT
,
104 style
->dark
[0].green
>> SHIFT
,
105 style
->dark
[0].blue
>> SHIFT
);
107 return *g_systemBtnShadowColour
;
109 case wxSYS_COLOUR_GRAYTEXT
:
110 case wxSYS_COLOUR_BTNHIGHLIGHT
:
112 GtkStyle
*style
= gtk_widget_get_default_style();
113 if (!g_systemBtnHighlightColour
)
115 g_systemBtnHighlightColour
=
116 new wxColour( style
->light
[0].red
>> SHIFT
,
117 style
->light
[0].green
>> SHIFT
,
118 style
->light
[0].blue
>> SHIFT
);
120 return *g_systemBtnHighlightColour
;
122 case wxSYS_COLOUR_HIGHLIGHT
:
124 GtkStyle
*style
= gtk_widget_get_default_style();
125 if (!g_systemHighlightColour
)
127 g_systemHighlightColour
=
128 new wxColour( style
->bg
[GTK_STATE_SELECTED
].red
>> SHIFT
,
129 style
->bg
[GTK_STATE_SELECTED
].green
>> SHIFT
,
130 style
->bg
[GTK_STATE_SELECTED
].blue
>> SHIFT
);
132 return *g_systemHighlightColour
;
134 case wxSYS_COLOUR_MENUTEXT
:
135 case wxSYS_COLOUR_WINDOWTEXT
:
136 case wxSYS_COLOUR_CAPTIONTEXT
:
137 case wxSYS_COLOUR_INACTIVECAPTIONTEXT
:
138 case wxSYS_COLOUR_INFOTEXT
:
142 case wxSYS_COLOUR_HIGHLIGHTTEXT
:
146 case wxSYS_COLOUR_INFOBK
:
147 case wxSYS_COLOUR_APPWORKSPACE
:
149 return *wxWHITE
; // ?
155 wxFont
wxSystemSettings::GetSystemFont( int index
)
159 case wxSYS_OEM_FIXED_FONT
:
160 case wxSYS_ANSI_FIXED_FONT
:
161 case wxSYS_SYSTEM_FIXED_FONT
:
163 return *wxNORMAL_FONT
;
165 case wxSYS_ANSI_VAR_FONT
:
166 case wxSYS_SYSTEM_FONT
:
167 case wxSYS_DEVICE_DEFAULT_FONT
:
168 case wxSYS_DEFAULT_GUI_FONT
:
171 g_systemFont
= new wxFont( 12, wxSWISS
, wxNORMAL
, wxNORMAL
);
172 return *g_systemFont
;
179 int wxSystemSettings::GetSystemMetric( int index
)
183 case wxSYS_SCREEN_X
: return gdk_screen_width();
184 case wxSYS_SCREEN_Y
: return gdk_screen_height();
185 case wxSYS_HSCROLL_Y
: return 15;
186 case wxSYS_VSCROLL_X
: return 15;
189 wxCHECK_MSG( index
, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );