1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
7 // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
13 #pragma implementation "settings.h"
16 #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() {
64 wxDELETE(g_systemBtnFaceColour
);
65 wxDELETE(g_systemBtnShadowColour
);
66 wxDELETE(g_systemBtnHighlightColour
);
67 wxDELETE(g_systemHighlightColour
);
68 wxDELETE(g_systemFont
);
71 wxColour
wxSystemSettings::GetSystemColour( int index
)
75 case wxSYS_COLOUR_SCROLLBAR
:
76 case wxSYS_COLOUR_BACKGROUND
:
77 case wxSYS_COLOUR_ACTIVECAPTION
:
78 case wxSYS_COLOUR_INACTIVECAPTION
:
79 case wxSYS_COLOUR_MENU
:
80 case wxSYS_COLOUR_WINDOW
:
81 case wxSYS_COLOUR_WINDOWFRAME
:
82 case wxSYS_COLOUR_ACTIVEBORDER
:
83 case wxSYS_COLOUR_INACTIVEBORDER
:
84 case wxSYS_COLOUR_BTNFACE
:
86 GtkStyle
*style
= gtk_widget_get_default_style();
87 if (!g_systemBtnFaceColour
)
89 g_systemBtnFaceColour
=
90 new wxColour( style
->bg
[0].red
>> SHIFT
,
91 style
->bg
[0].green
>> SHIFT
,
92 style
->bg
[0].blue
>> SHIFT
);
94 return *g_systemBtnFaceColour
;
96 case wxSYS_COLOUR_BTNSHADOW
:
98 GtkStyle
*style
= gtk_widget_get_default_style();
99 if (!g_systemBtnShadowColour
)
101 g_systemBtnShadowColour
=
102 new wxColour( style
->dark
[0].red
>> SHIFT
,
103 style
->dark
[0].green
>> SHIFT
,
104 style
->dark
[0].blue
>> SHIFT
);
106 return *g_systemBtnShadowColour
;
108 case wxSYS_COLOUR_GRAYTEXT
:
109 case wxSYS_COLOUR_BTNHIGHLIGHT
:
111 GtkStyle
*style
= gtk_widget_get_default_style();
112 if (!g_systemBtnHighlightColour
)
114 g_systemBtnHighlightColour
=
115 new wxColour( style
->light
[0].red
>> SHIFT
,
116 style
->light
[0].green
>> SHIFT
,
117 style
->light
[0].blue
>> SHIFT
);
119 return *g_systemBtnHighlightColour
;
121 case wxSYS_COLOUR_HIGHLIGHT
:
123 GtkStyle
*style
= gtk_widget_get_default_style();
124 if (!g_systemHighlightColour
)
126 g_systemHighlightColour
=
127 new wxColour( style
->bg
[GTK_STATE_SELECTED
].red
>> SHIFT
,
128 style
->bg
[GTK_STATE_SELECTED
].green
>> SHIFT
,
129 style
->bg
[GTK_STATE_SELECTED
].blue
>> SHIFT
);
131 return *g_systemHighlightColour
;
133 case wxSYS_COLOUR_MENUTEXT
:
134 case wxSYS_COLOUR_WINDOWTEXT
:
135 case wxSYS_COLOUR_CAPTIONTEXT
:
136 case wxSYS_COLOUR_INACTIVECAPTIONTEXT
:
137 case wxSYS_COLOUR_INFOTEXT
:
141 case wxSYS_COLOUR_HIGHLIGHTTEXT
:
145 case wxSYS_COLOUR_INFOBK
:
146 case wxSYS_COLOUR_APPWORKSPACE
:
148 return *wxWHITE
; // ?
154 wxFont
wxSystemSettings::GetSystemFont( int index
)
158 case wxSYS_OEM_FIXED_FONT
:
159 case wxSYS_ANSI_FIXED_FONT
:
160 case wxSYS_SYSTEM_FIXED_FONT
:
162 return *wxNORMAL_FONT
;
164 case wxSYS_ANSI_VAR_FONT
:
165 case wxSYS_SYSTEM_FONT
:
166 case wxSYS_DEVICE_DEFAULT_FONT
:
167 case wxSYS_DEFAULT_GUI_FONT
:
170 g_systemFont
= new wxFont( "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" );
171 return *g_systemFont
;
178 int wxSystemSettings::GetSystemMetric( int index
)
183 return gdk_screen_width();
185 return gdk_screen_height();