]> git.saurik.com Git - wxWidgets.git/blob - src/gtk/settings.cpp
This is the way to go (well, close enough).
[wxWidgets.git] / src / gtk / 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_systemBtnFaceColour = (wxColour *) NULL;
60 wxColour *g_systemBtnShadowColour = (wxColour *) NULL;
61 wxColour *g_systemBtnHighlightColour = (wxColour *) NULL;
62 wxColour *g_systemHighlightColour = (wxColour *) NULL;
63
64 wxFont *g_systemFont = (wxFont *) NULL;
65
66 void wxSystemSettings::Done()
67 {
68 wxDELETE(g_systemBtnFaceColour);
69 wxDELETE(g_systemBtnShadowColour);
70 wxDELETE(g_systemBtnHighlightColour);
71 wxDELETE(g_systemHighlightColour);
72 wxDELETE(g_systemFont);
73 }
74
75 wxColour wxSystemSettings::GetSystemColour( int index )
76 {
77 switch (index)
78 {
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:
89 {
90 GtkStyle *style = gtk_widget_get_default_style();
91 if (!g_systemBtnFaceColour)
92 {
93 g_systemBtnFaceColour =
94 new wxColour( style->bg[0].red >> SHIFT,
95 style->bg[0].green >> SHIFT,
96 style->bg[0].blue >> SHIFT );
97 }
98 return *g_systemBtnFaceColour;
99 }
100 case wxSYS_COLOUR_GRAYTEXT:
101 case wxSYS_COLOUR_BTNSHADOW:
102 {
103 GtkStyle *style = gtk_widget_get_default_style();
104 if (!g_systemBtnShadowColour)
105 {
106 g_systemBtnShadowColour =
107 new wxColour( style->dark[0].red >> SHIFT,
108 style->dark[0].green >> SHIFT,
109 style->dark[0].blue >> SHIFT );
110 }
111 return *g_systemBtnShadowColour;
112 }
113 case wxSYS_COLOUR_BTNHIGHLIGHT:
114 {
115 GtkStyle *style = gtk_widget_get_default_style();
116 if (!g_systemBtnHighlightColour)
117 {
118 g_systemBtnHighlightColour =
119 new wxColour( style->light[0].red >> SHIFT,
120 style->light[0].green >> SHIFT,
121 style->light[0].blue >> SHIFT );
122 }
123 return *g_systemBtnHighlightColour;
124 }
125 case wxSYS_COLOUR_HIGHLIGHT:
126 {
127 GtkStyle *style = gtk_widget_get_default_style();
128 if (!g_systemHighlightColour)
129 {
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 );
134 }
135 return *g_systemHighlightColour;
136 }
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:
143 {
144 return *wxBLACK;
145 }
146 case wxSYS_COLOUR_HIGHLIGHTTEXT:
147 {
148 return *wxWHITE;
149 }
150 case wxSYS_COLOUR_INFOBK:
151 case wxSYS_COLOUR_APPWORKSPACE:
152 {
153 return *wxWHITE; // ?
154 }
155 }
156 return *wxWHITE;
157 }
158
159 wxFont wxSystemSettings::GetSystemFont( int index )
160 {
161 switch (index)
162 {
163 case wxSYS_OEM_FIXED_FONT:
164 case wxSYS_ANSI_FIXED_FONT:
165 case wxSYS_SYSTEM_FIXED_FONT:
166 {
167 return *wxNORMAL_FONT;
168 }
169 case wxSYS_ANSI_VAR_FONT:
170 case wxSYS_SYSTEM_FONT:
171 case wxSYS_DEVICE_DEFAULT_FONT:
172 case wxSYS_DEFAULT_GUI_FONT:
173 {
174 if (!g_systemFont)
175 g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
176 return *g_systemFont;
177 }
178 }
179
180 return wxNullFont;
181 }
182
183 int wxSystemSettings::GetSystemMetric( int index )
184 {
185 switch (index)
186 {
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;
191 }
192
193 wxCHECK_MSG( index, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );
194
195 return 0;
196 }