Correct deafult GUI font is now found when querying
[wxWidgets.git] / src / gtk1 / settings.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: settings.cpp
3 // Purpose:
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10
11 #ifdef __GNUG__
12 #pragma implementation "settings.h"
13 #endif
14
15 #include "wx/settings.h"
16 #include "wx/debug.h"
17
18 #include <gdk/gdk.h>
19 #include <gtk/gtk.h>
20
21 /*
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
43
44 #define wxSYS_COLOUR_3DDKSHADOW 21
45 #define wxSYS_COLOUR_3DLIGHT 22
46 #define wxSYS_COLOUR_INFOTEXT 23
47 #define wxSYS_COLOUR_INFOBK 24
48
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
55 */
56
57 #define SHIFT (8*(sizeof(short int)-sizeof(char)))
58
59 //wxColour *g_systemWinColour = (wxColour *) NULL;
60 wxColour *g_systemBtnFaceColour = (wxColour *) NULL;
61 wxColour *g_systemBtnShadowColour = (wxColour *) NULL;
62 wxColour *g_systemBtnHighlightColour = (wxColour *) NULL;
63 wxColour *g_systemHighlightColour = (wxColour *) NULL;
64
65 wxFont *g_systemFont = (wxFont *) NULL;
66
67 void wxSystemSettings::Done()
68 {
69 // delete g_systemWinColour;
70 delete g_systemBtnFaceColour;
71 delete g_systemBtnShadowColour;
72 delete g_systemBtnHighlightColour;
73 delete g_systemHighlightColour;
74 delete g_systemFont;
75 }
76
77 wxColour wxSystemSettings::GetSystemColour( int index )
78 {
79 switch (index)
80 {
81 case wxSYS_COLOUR_SCROLLBAR:
82 case wxSYS_COLOUR_BACKGROUND:
83 case wxSYS_COLOUR_ACTIVECAPTION:
84 case wxSYS_COLOUR_INACTIVECAPTION:
85 case wxSYS_COLOUR_MENU:
86 case wxSYS_COLOUR_WINDOWFRAME:
87 case wxSYS_COLOUR_ACTIVEBORDER:
88 case wxSYS_COLOUR_INACTIVEBORDER:
89 case wxSYS_COLOUR_BTNFACE:
90 {
91 if (!g_systemBtnFaceColour)
92 {
93 g_systemBtnFaceColour =
94 new wxColour( 0xd6d6 >> SHIFT,
95 0xd6d6 >> SHIFT,
96 0xd6d6 >> SHIFT );
97 }
98 return *g_systemBtnFaceColour;
99 }
100 case wxSYS_COLOUR_WINDOW:
101 {
102 return *wxWHITE;
103 }
104 case wxSYS_COLOUR_GRAYTEXT:
105 case wxSYS_COLOUR_BTNSHADOW:
106 {
107 if (!g_systemBtnShadowColour)
108 {
109 g_systemBtnShadowColour =
110 new wxColour( 0x7530 >> SHIFT,
111 0x7530 >> SHIFT,
112 0x7530 >> SHIFT );
113 }
114 return *g_systemBtnShadowColour;
115 }
116 case wxSYS_COLOUR_BTNHIGHLIGHT:
117 {
118 if (!g_systemBtnHighlightColour)
119 {
120 g_systemBtnHighlightColour =
121 new wxColour( 0xea60 >> SHIFT,
122 0xea60 >> SHIFT,
123 0xea60 >> SHIFT );
124 }
125 return *g_systemBtnHighlightColour;
126 }
127 case wxSYS_COLOUR_HIGHLIGHT:
128 {
129 if (!g_systemHighlightColour)
130 {
131 /*
132 g_systemHighlightColour =
133 new wxColour( 0 >> SHIFT,
134 0 >> SHIFT,
135 0x9c40 >> SHIFT );
136 */
137 GtkWidget *widget = gtk_button_new();
138 GtkStyle *def = gtk_rc_get_style( widget );
139 int red = def->bg[GTK_STATE_SELECTED].red;
140 int green = def->bg[GTK_STATE_SELECTED].green;
141 int blue = def->bg[GTK_STATE_SELECTED].blue;
142 gtk_widget_destroy( widget );
143
144 g_systemHighlightColour =
145 new wxColour( red >> SHIFT,
146 green >> SHIFT,
147 blue >> SHIFT );
148 }
149 return *g_systemHighlightColour;
150 }
151 case wxSYS_COLOUR_MENUTEXT:
152 case wxSYS_COLOUR_WINDOWTEXT:
153 case wxSYS_COLOUR_CAPTIONTEXT:
154 case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
155 case wxSYS_COLOUR_BTNTEXT:
156 case wxSYS_COLOUR_INFOTEXT:
157 {
158 return *wxBLACK;
159 }
160 case wxSYS_COLOUR_HIGHLIGHTTEXT:
161 {
162 return *wxWHITE;
163 }
164 case wxSYS_COLOUR_INFOBK:
165 case wxSYS_COLOUR_APPWORKSPACE:
166 {
167 return *wxWHITE; // ?
168 }
169 }
170 return *wxWHITE;
171 }
172
173 wxFont wxSystemSettings::GetSystemFont( int index )
174 {
175 switch (index)
176 {
177 case wxSYS_OEM_FIXED_FONT:
178 case wxSYS_ANSI_FIXED_FONT:
179 case wxSYS_SYSTEM_FIXED_FONT:
180 {
181 return *wxNORMAL_FONT;
182 }
183 case wxSYS_ANSI_VAR_FONT:
184 case wxSYS_SYSTEM_FONT:
185 case wxSYS_DEVICE_DEFAULT_FONT:
186 case wxSYS_DEFAULT_GUI_FONT:
187 {
188 if (!g_systemFont)
189 g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
190 return *g_systemFont;
191 }
192 }
193
194 return wxNullFont;
195 }
196
197 int wxSystemSettings::GetSystemMetric( int index )
198 {
199 switch (index)
200 {
201 case wxSYS_SCREEN_X: return gdk_screen_width();
202 case wxSYS_SCREEN_Y: return gdk_screen_height();
203 case wxSYS_HSCROLL_Y: return 15;
204 case wxSYS_VSCROLL_X: return 15;
205 }
206
207 wxCHECK_MSG( index, 0, wxT("wxSystemSettings::GetSystemMetric not fully implemented") );
208
209 return 0;
210 }