1///////////////////////////////////////////////////////////////////////////// 2// Name: src/mac/classic/settings.cpp 3// Purpose: wxSettings 4// Author: Stefan Csomor 5// Modified by: 6// Created: 1998-01-01 7// RCS-ID: $Id: settings.cpp 57542 2008-12-25 13:03:24Z VZ $ 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 wxGetOsVersion( &major, &minor ); 35 36 switch( index ) 37 { 38 case wxSYS_COLOUR_SCROLLBAR : 39 case wxSYS_COLOUR_BACKGROUND: 40 case wxSYS_COLOUR_ACTIVECAPTION: 41 case wxSYS_COLOUR_INACTIVECAPTION: 42 case wxSYS_COLOUR_MENU: 43 case wxSYS_COLOUR_WINDOW: 44 case wxSYS_COLOUR_WINDOWFRAME: 45 case wxSYS_COLOUR_ACTIVEBORDER: 46 case wxSYS_COLOUR_INACTIVEBORDER: 47 case wxSYS_COLOUR_BTNFACE: 48 case wxSYS_COLOUR_MENUBAR: 49 return wxColor( 0xDD , 0xDD , 0xDD ) ; 50 break ; 51 52 case wxSYS_COLOUR_LISTBOX : 53 { 54 if (major >= 10) 55 return *wxWHITE ; 56 else 57 return wxColor( 0xEE , 0xEE , 0xEE ) ; 58 break ; 59 } 60 case wxSYS_COLOUR_BTNSHADOW: 61 if (major >= 10) 62 return wxColor( 0xBE , 0xBE , 0xBE ) ; 63 else 64 return wxColor( 0x44 , 0x44 , 0x44 ) ; 65 break ; 66 67 case wxSYS_COLOUR_BTNTEXT: 68 case wxSYS_COLOUR_MENUTEXT: 69 case wxSYS_COLOUR_WINDOWTEXT: 70 case wxSYS_COLOUR_CAPTIONTEXT: 71 case wxSYS_COLOUR_INFOTEXT: 72 case wxSYS_COLOUR_INACTIVECAPTIONTEXT: 73 case wxSYS_COLOUR_LISTBOXTEXT: 74 return *wxBLACK; 75 break ; 76 case wxSYS_COLOUR_HIGHLIGHT: 77 { 78 RGBColor hilite ; 79 LMGetHiliteRGB(&hilite) ; 80 return wxColor( hilite.red >> 8 , hilite.green >> 8 , hilite.blue >> 8 ) ; 81 } 82 break ; 83 case wxSYS_COLOUR_BTNHIGHLIGHT: 84 case wxSYS_COLOUR_GRAYTEXT: 85 return wxColor( 0xCC , 0xCC , 0xCC ) ; 86 break ; 87 88 case wxSYS_COLOUR_3DDKSHADOW: 89 return wxColor( 0x44 , 0x44 , 0x44 ) ; 90 break ; 91 case wxSYS_COLOUR_3DLIGHT: 92 return wxColor( 0xCC , 0xCC , 0xCC ) ; 93 break ; 94 case wxSYS_COLOUR_HIGHLIGHTTEXT : 95 { 96 RGBColor hilite ; 97 LMGetHiliteRGB(&hilite) ; 98 if ( ( hilite.red + hilite.green + hilite.blue ) == 0 ) 99 return *wxWHITE ; 100 else 101 return *wxBLACK ; 102 } 103 break ; 104 case wxSYS_COLOUR_INFOBK : 105 case wxSYS_COLOUR_APPWORKSPACE: 106 return *wxWHITE ; 107 break ; 108 109 case wxSYS_COLOUR_HOTLIGHT: 110 case wxSYS_COLOUR_GRADIENTACTIVECAPTION: 111 case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: 112 case wxSYS_COLOUR_MENUHILIGHT: 113 // TODO 114 return *wxBLACK; 115 116 case wxSYS_COLOUR_MAX: 117 wxFAIL_MSG( _T("unknown system colour index") ); 118 break ; 119 } 120 return *wxWHITE; 121} 122 123// ---------------------------------------------------------------------------- 124// fonts 125// ---------------------------------------------------------------------------- 126 127wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) 128{ 129 switch (index) 130 { 131 case wxSYS_ANSI_VAR_FONT : 132 case wxSYS_SYSTEM_FONT : 133 case wxSYS_DEVICE_DEFAULT_FONT : 134 case wxSYS_DEFAULT_GUI_FONT : 135 { 136 return *wxSMALL_FONT ; 137 } ; 138 break ; 139 case wxSYS_OEM_FIXED_FONT : 140 case wxSYS_ANSI_FIXED_FONT : 141 case wxSYS_SYSTEM_FIXED_FONT : 142 default : 143 { 144 return *wxNORMAL_FONT ; 145 } ; 146 break ; 147 } 148 return *wxNORMAL_FONT; 149} 150 151// ---------------------------------------------------------------------------- 152// system metrics/features 153// ---------------------------------------------------------------------------- 154 155// Get a system metric, e.g. scrollbar size 156int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win)) 157{ 158 int value; 159 160 switch ( index) 161 { 162 case wxSYS_MOUSE_BUTTONS: 163 // we emulate a two button mouse (ctrl + click = right button ) 164 return 2; 165 166 // TODO case wxSYS_BORDER_X: 167 // TODO case wxSYS_BORDER_Y: 168 // TODO case wxSYS_CURSOR_X: 169 // TODO case wxSYS_CURSOR_Y: 170 // TODO case wxSYS_DCLICK_X: 171 // TODO case wxSYS_DCLICK_Y: 172 // TODO case wxSYS_DRAG_X: 173 // TODO case wxSYS_DRAG_Y: 174 // TODO case wxSYS_EDGE_X: 175 // TODO case wxSYS_EDGE_Y: 176 177 case wxSYS_HSCROLL_ARROW_X: 178 return 16; 179 case wxSYS_HSCROLL_ARROW_Y: 180 return 16; 181 case wxSYS_HTHUMB_X: 182 return 16; 183 184 // TODO case wxSYS_ICON_X: 185 // TODO case wxSYS_ICON_Y: 186 // TODO case wxSYS_ICONSPACING_X: 187 // TODO case wxSYS_ICONSPACING_Y: 188 // TODO case wxSYS_WINDOWMIN_X: 189 // TODO case wxSYS_WINDOWMIN_Y: 190 191 case wxSYS_SCREEN_X: 192 wxDisplaySize(&value, NULL); 193 return value; 194 case wxSYS_SCREEN_Y: 195 wxDisplaySize(NULL, &value); 196 return value; 197 198 // TODO case wxSYS_FRAMESIZE_X: 199 // TODO case wxSYS_FRAMESIZE_Y: 200 // TODO case wxSYS_SMALLICON_X: 201 // TODO case wxSYS_SMALLICON_Y: 202 203 case wxSYS_HSCROLL_Y: 204 return 16; 205 case wxSYS_VSCROLL_X: 206 return 16; 207 case wxSYS_VSCROLL_ARROW_X: 208 return 16; 209 case wxSYS_VSCROLL_ARROW_Y: 210 return 16; 211 case wxSYS_VTHUMB_Y: 212 return 16; 213 214 // TODO case wxSYS_CAPTION_Y: 215 // TODO case wxSYS_MENU_Y: 216 // TODO case wxSYS_NETWORK_PRESENT: 217 218 case wxSYS_PENWINDOWS_PRESENT: 219 return 0; 220 221 // TODO case wxSYS_SHOW_SOUNDS: 222 223 case wxSYS_SWAP_BUTTONS: 224 return 0; 225 226 default: 227 return -1; // unsupported metric 228 } 229 return 0; 230} 231 232bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) 233{ 234 switch (index) 235 { 236 case wxSYS_CAN_ICONIZE_FRAME: 237 case wxSYS_CAN_DRAW_FRAME_DECORATIONS: 238 return true; 239 240 default: 241 return false; 242 } 243} 244