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"
22 #define wxSYS_COLOUR_SCROLLBAR 0
23 #define wxSYS_COLOUR_BACKGROUND 1
24 #define wxSYS_COLOUR_ACTIVECAPTION 2
25 #define wxSYS_COLOUR_INACTIVECAPTION 3
26 #define wxSYS_COLOUR_MENU 4
27 #define wxSYS_COLOUR_WINDOW 5
28 #define wxSYS_COLOUR_WINDOWFRAME 6
29 #define wxSYS_COLOUR_MENUTEXT 7
30 #define wxSYS_COLOUR_WINDOWTEXT 8
31 #define wxSYS_COLOUR_CAPTIONTEXT 9
32 #define wxSYS_COLOUR_ACTIVEBORDER 10
33 #define wxSYS_COLOUR_INACTIVEBORDER 11
34 #define wxSYS_COLOUR_APPWORKSPACE 12
35 #define wxSYS_COLOUR_HIGHLIGHT 13
36 #define wxSYS_COLOUR_HIGHLIGHTTEXT 14
37 #define wxSYS_COLOUR_BTNFACE 15
38 #define wxSYS_COLOUR_BTNSHADOW 16
39 #define wxSYS_COLOUR_GRAYTEXT 17
40 #define wxSYS_COLOUR_BTNTEXT 18
41 #define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19
42 #define wxSYS_COLOUR_BTNHIGHLIGHT 20
44 #define wxSYS_COLOUR_3DDKSHADOW 21
45 #define wxSYS_COLOUR_3DLIGHT 22
46 #define wxSYS_COLOUR_INFOTEXT 23
47 #define wxSYS_COLOUR_INFOBK 24
49 #define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND
50 #define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE
51 #define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW
52 #define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT
53 #define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT
54 #define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT
57 #define SHIFT (8*(sizeof(short int)-sizeof(char)))
59 wxColour
*g_systemBtnFaceColour
= (wxColour
*) NULL
;
60 wxColour
*g_systemBtnShadowColour
= (wxColour
*) NULL
;
61 wxColour
*g_systemBtnHighlightColour
= (wxColour
*) NULL
;
62 wxColour
*g_systemHighlightColour
= (wxColour
*) NULL
;
64 wxFont
*g_systemFont
= (wxFont
*) NULL
;
66 void wxSystemSettings::Done()
68 wxDELETE(g_systemBtnFaceColour
);
69 wxDELETE(g_systemBtnShadowColour
);
70 wxDELETE(g_systemBtnHighlightColour
);
71 wxDELETE(g_systemHighlightColour
);
72 wxDELETE(g_systemFont
);
75 wxColour
wxSystemSettings::GetSystemColour( int index
)
79 case wxSYS_COLOUR_SCROLLBAR
:
80 case wxSYS_COLOUR_BACKGROUND
:
81 case wxSYS_COLOUR_ACTIVECAPTION
:
82 case wxSYS_COLOUR_INACTIVECAPTION
:
83 case wxSYS_COLOUR_MENU
:
84 case wxSYS_COLOUR_WINDOW
:
85 case wxSYS_COLOUR_WINDOWFRAME
:
86 case wxSYS_COLOUR_ACTIVEBORDER
:
87 case wxSYS_COLOUR_INACTIVEBORDER
:
88 case wxSYS_COLOUR_BTNFACE
:
90 GtkStyle
*style
= gtk_widget_get_default_style();
91 if (!g_systemBtnFaceColour
)
93 g_systemBtnFaceColour
=
94 new wxColour( style
->bg
[0].red
>> SHIFT
,
95 style
->bg
[0].green
>> SHIFT
,
96 style
->bg
[0].blue
>> SHIFT
);
98 return *g_systemBtnFaceColour
;
100 case wxSYS_COLOUR_GRAYTEXT
:
101 case wxSYS_COLOUR_BTNSHADOW
:
103 GtkStyle
*style
= gtk_widget_get_default_style();
104 if (!g_systemBtnShadowColour
)
106 g_systemBtnShadowColour
=
107 new wxColour( style
->dark
[0].red
>> SHIFT
,
108 style
->dark
[0].green
>> SHIFT
,
109 style
->dark
[0].blue
>> SHIFT
);
111 return *g_systemBtnShadowColour
;
113 case wxSYS_COLOUR_BTNHIGHLIGHT
:
115 GtkStyle
*style
= gtk_widget_get_default_style();
116 if (!g_systemBtnHighlightColour
)
118 g_systemBtnHighlightColour
=
119 new wxColour( style
->light
[0].red
>> SHIFT
,
120 style
->light
[0].green
>> SHIFT
,
121 style
->light
[0].blue
>> SHIFT
);
123 return *g_systemBtnHighlightColour
;
125 case wxSYS_COLOUR_HIGHLIGHT
:
127 GtkStyle
*style
= gtk_widget_get_default_style();
128 if (!g_systemHighlightColour
)
130 g_systemHighlightColour
=
131 new wxColour( style
->bg
[GTK_STATE_SELECTED
].red
>> SHIFT
,
132 style
->bg
[GTK_STATE_SELECTED
].green
>> SHIFT
,
133 style
->bg
[GTK_STATE_SELECTED
].blue
>> SHIFT
);
135 return *g_systemHighlightColour
;
137 case wxSYS_COLOUR_MENUTEXT
:
138 case wxSYS_COLOUR_WINDOWTEXT
:
139 case wxSYS_COLOUR_CAPTIONTEXT
:
140 case wxSYS_COLOUR_INACTIVECAPTIONTEXT
:
141 case wxSYS_COLOUR_BTNTEXT
:
142 case wxSYS_COLOUR_INFOTEXT
:
146 case wxSYS_COLOUR_HIGHLIGHTTEXT
:
150 case wxSYS_COLOUR_INFOBK
:
151 case wxSYS_COLOUR_APPWORKSPACE
:
153 return *wxWHITE
; // ?
159 wxFont
wxSystemSettings::GetSystemFont( int index
)
163 case wxSYS_OEM_FIXED_FONT
:
164 case wxSYS_ANSI_FIXED_FONT
:
165 case wxSYS_SYSTEM_FIXED_FONT
:
167 return *wxNORMAL_FONT
;
169 case wxSYS_ANSI_VAR_FONT
:
170 case wxSYS_SYSTEM_FONT
:
171 case wxSYS_DEVICE_DEFAULT_FONT
:
172 case wxSYS_DEFAULT_GUI_FONT
:
175 g_systemFont
= new wxFont( 12, wxSWISS
, wxNORMAL
, wxNORMAL
);
176 return *g_systemFont
;
183 int wxSystemSettings::GetSystemMetric( int index
)
187 case wxSYS_SCREEN_X
: return gdk_screen_width();
188 case wxSYS_SCREEN_Y
: return gdk_screen_height();
189 case wxSYS_HSCROLL_Y
: return 15;
190 case wxSYS_VSCROLL_X
: return 15;
193 wxCHECK_MSG( index
, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );