1///////////////////////////////////////////////////////////////////////////// 2// Name: src/mac/carbon/settings.cpp 3// Purpose: wxSettings 4// Author: Stefan Csomor 5// Modified by: 6// Created: 1998-01-01 7// RCS-ID: $Id: settings.cpp 67017 2011-02-25 09:37:28Z JS $ 8// Copyright: (c) Stefan Csomor 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#include "wx/wxprec.h" 13 14#include "wx/settings.h" 15 16#ifndef WX_PRECOMP 17 #include "wx/utils.h" 18 #include "wx/gdicmn.h" 19#endif 20 21#include "wx/mac/uma.h" 22 23// ---------------------------------------------------------------------------- 24// wxSystemSettingsNative 25// ---------------------------------------------------------------------------- 26 27// ---------------------------------------------------------------------------- 28// colours 29// ---------------------------------------------------------------------------- 30 31wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) 32{ 33 int major, minor; 34 wxColour resultColor; 35 RGBColor macRGB; 36 ThemeBrush colorBrushID; 37 38 wxGetOsVersion( &major, &minor ); 39 40 switch ( index ) 41 { 42 case wxSYS_COLOUR_WINDOW: 43 resultColor = *wxWHITE ; 44 break ; 45 case wxSYS_COLOUR_SCROLLBAR : 46 case wxSYS_COLOUR_BACKGROUND: 47 case wxSYS_COLOUR_ACTIVECAPTION: 48 case wxSYS_COLOUR_INACTIVECAPTION: 49 case wxSYS_COLOUR_MENU: 50 case wxSYS_COLOUR_WINDOWFRAME: 51 case wxSYS_COLOUR_ACTIVEBORDER: 52 case wxSYS_COLOUR_INACTIVEBORDER: 53 case wxSYS_COLOUR_BTNFACE: 54 case wxSYS_COLOUR_MENUBAR: 55 resultColor = wxColor( 0xDD, 0xDD, 0xDD ); 56 break ; 57 58 case wxSYS_COLOUR_LISTBOX : 59 if (major >= 10) 60 resultColor = *wxWHITE ; 61 else 62 resultColor = wxColor( 0xEE, 0xEE, 0xEE ); 63 break ; 64 65 case wxSYS_COLOUR_BTNSHADOW: 66 if (major >= 10) 67 resultColor = wxColor( 0xBE, 0xBE, 0xBE ); 68 else 69 resultColor = wxColor( 0x44, 0x44, 0x44 ); 70 break ; 71 72 case wxSYS_COLOUR_BTNTEXT: 73 case wxSYS_COLOUR_MENUTEXT: 74 case wxSYS_COLOUR_WINDOWTEXT: 75 case wxSYS_COLOUR_CAPTIONTEXT: 76 case wxSYS_COLOUR_INFOTEXT: 77 case wxSYS_COLOUR_INACTIVECAPTIONTEXT: 78 case wxSYS_COLOUR_LISTBOXTEXT: 79 resultColor = *wxBLACK; 80 break ; 81 82 case wxSYS_COLOUR_HIGHLIGHT: 83 84#if 0 && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3) 85 // NB: enable this case as desired 86 colorBrushID = kThemeBrushAlternatePrimaryHighlightColor; 87#else 88 colorBrushID = kThemeBrushPrimaryHighlightColor; 89#endif 90 91 GetThemeBrushAsColor( colorBrushID, 32, true, &macRGB ); 92 resultColor = wxColor( macRGB.red >> 8, macRGB.green >> 8, macRGB.blue >> 8 ); 93 break ; 94 95 case wxSYS_COLOUR_BTNHIGHLIGHT: 96 case wxSYS_COLOUR_GRAYTEXT: 97 resultColor = wxColor( 0xCC, 0xCC, 0xCC ); 98 break ; 99 100 case wxSYS_COLOUR_3DDKSHADOW: 101 resultColor = wxColor( 0x44, 0x44, 0x44 ); 102 break ; 103 104 case wxSYS_COLOUR_3DLIGHT: 105 resultColor = wxColor( 0xCC, 0xCC, 0xCC ); 106 break ; 107 108 case wxSYS_COLOUR_HIGHLIGHTTEXT : 109 case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT : 110#if 0 && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3) 111 // NB: enable this case as desired 112 resultColor = *wxWHITE ; 113#else 114 GetThemeBrushAsColor( kThemeBrushPrimaryHighlightColor, 32, true, &macRGB ); 115 if ((macRGB.red + macRGB.green + macRGB.blue) == 0) 116 resultColor = *wxWHITE ; 117 else 118 resultColor = *wxBLACK ; 119#endif 120 break ; 121 122 case wxSYS_COLOUR_INFOBK : 123 // we don't have a way to detect tooltip color, so use the 124 // standard value used at least on 10.4: 125 resultColor = wxColour( 0xFF, 0xFF, 0xD3 ) ; 126 break ; 127 case wxSYS_COLOUR_APPWORKSPACE: 128 resultColor = wxColor( 0x80, 0x80, 0x80 ); ; 129 break ; 130 131 case wxSYS_COLOUR_HOTLIGHT: 132 case wxSYS_COLOUR_GRADIENTACTIVECAPTION: 133 case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: 134 case wxSYS_COLOUR_MENUHILIGHT: 135 // TODO: 136 resultColor = *wxBLACK; 137 break ; 138 139 // case wxSYS_COLOUR_MAX: 140 default: 141 resultColor = *wxWHITE; 142 // wxCHECK_MSG( index >= wxSYS_COLOUR_MAX, false, _T("unknown system colour index") ); 143 break ; 144 } 145 146 return resultColor; 147} 148 149// ---------------------------------------------------------------------------- 150// fonts 151// ---------------------------------------------------------------------------- 152 153wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) 154{ 155 switch (index) 156 { 157 case wxSYS_ANSI_VAR_FONT : 158 case wxSYS_SYSTEM_FONT : 159 case wxSYS_DEVICE_DEFAULT_FONT : 160 case wxSYS_DEFAULT_GUI_FONT : 161 return *wxSMALL_FONT ; 162 break ; 163 164 default : 165 break ; 166 } 167 168 return *wxNORMAL_FONT; 169} 170 171// ---------------------------------------------------------------------------- 172// system metrics/features 173// ---------------------------------------------------------------------------- 174 175// Get a system metric, e.g. scrollbar size 176int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win)) 177{ 178 int value; 179 180 switch ( index ) 181 { 182 case wxSYS_MOUSE_BUTTONS: 183 // we emulate a two button mouse (ctrl + click = right button) 184 return 2; 185 186 // TODO case wxSYS_BORDER_X: 187 // TODO case wxSYS_BORDER_Y: 188 // TODO case wxSYS_CURSOR_X: 189 // TODO case wxSYS_CURSOR_Y: 190 // TODO case wxSYS_DCLICK_X: 191 // TODO case wxSYS_DCLICK_Y: 192 // TODO case wxSYS_DRAG_X: 193 // TODO case wxSYS_DRAG_Y: 194 // TODO case wxSYS_EDGE_X: 195 // TODO case wxSYS_EDGE_Y: 196 197 case wxSYS_HSCROLL_ARROW_X: 198 case wxSYS_HSCROLL_ARROW_Y: 199 case wxSYS_HTHUMB_X: 200 return 16; 201 202 // TODO case wxSYS_ICON_X: 203 // TODO case wxSYS_ICON_Y: 204 // TODO case wxSYS_ICONSPACING_X: 205 // TODO case wxSYS_ICONSPACING_Y: 206 // TODO case wxSYS_WINDOWMIN_X: 207 // TODO case wxSYS_WINDOWMIN_Y: 208 209 case wxSYS_SCREEN_X: 210 wxDisplaySize( &value, NULL ); 211 return value; 212 213 case wxSYS_SCREEN_Y: 214 wxDisplaySize( NULL, &value ); 215 return value; 216 217 // TODO case wxSYS_FRAMESIZE_X: 218 // TODO case wxSYS_FRAMESIZE_Y: 219 // TODO case wxSYS_SMALLICON_X: 220 // TODO case wxSYS_SMALLICON_Y: 221 222 case wxSYS_HSCROLL_Y: 223 case wxSYS_VSCROLL_X: 224 case wxSYS_VSCROLL_ARROW_X: 225 case wxSYS_VSCROLL_ARROW_Y: 226 case wxSYS_VTHUMB_Y: 227 return 16; 228 229 case wxSYS_PENWINDOWS_PRESENT: 230 return 0; 231 232 case wxSYS_SWAP_BUTTONS: 233 return 0; 234 235 // TODO: case wxSYS_CAPTION_Y: 236 // TODO: case wxSYS_MENU_Y: 237 // TODO: case wxSYS_NETWORK_PRESENT: 238 // TODO: case wxSYS_SHOW_SOUNDS: 239 240 default: 241 // unsupported metric 242 break; 243 } 244 245 return -1; 246} 247 248bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) 249{ 250 switch (index) 251 { 252 case wxSYS_CAN_ICONIZE_FRAME: 253 case wxSYS_CAN_DRAW_FRAME_DECORATIONS: 254 return true; 255 256 default: 257 return false; 258 } 259} 260