X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9576ca53db96b462ed4c0b4bdf47d64c40203e4..8064223b7b1b3657363b7a635c381b9269d95e55:/src/mac/carbon/settings.cpp diff --git a/src/mac/carbon/settings.cpp b/src/mac/carbon/settings.cpp index 2beda5c2a6..58cecfb357 100644 --- a/src/mac/carbon/settings.cpp +++ b/src/mac/carbon/settings.cpp @@ -1,176 +1,256 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp +// Name: src/mac/carbon/settings.cpp // Purpose: wxSettings -// Author: AUTHOR +// Author: Stefan Csomor // Modified by: -// Created: ??/??/98 +// Created: 1998-01-01 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence +// Copyright: (c) Stefan Csomor +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif +#include "wx/wxprec.h" #include "wx/settings.h" -wxColour wxSystemSettings::GetSystemColour(int index) +#ifndef WX_PRECOMP + #include "wx/utils.h" + #include "wx/gdicmn.h" +#endif + +#include "wx/mac/uma.h" + +// ---------------------------------------------------------------------------- +// wxSystemSettingsNative +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// colours +// ---------------------------------------------------------------------------- + +wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) { - // TODO - return wxColour(); + wxColour resultColor; + ThemeBrush colorBrushID; + + switch ( index ) + { + case wxSYS_COLOUR_WINDOW: + resultColor = *wxWHITE ; + break ; + case wxSYS_COLOUR_SCROLLBAR : + case wxSYS_COLOUR_BACKGROUND: + case wxSYS_COLOUR_ACTIVECAPTION: + case wxSYS_COLOUR_INACTIVECAPTION: + case wxSYS_COLOUR_MENU: + case wxSYS_COLOUR_WINDOWFRAME: + case wxSYS_COLOUR_ACTIVEBORDER: + case wxSYS_COLOUR_INACTIVEBORDER: + case wxSYS_COLOUR_BTNFACE: + case wxSYS_COLOUR_MENUBAR: + resultColor = wxColor( 0xDD, 0xDD, 0xDD ); + break ; + + case wxSYS_COLOUR_LISTBOX : + resultColor = *wxWHITE ; + break ; + + case wxSYS_COLOUR_BTNSHADOW: + resultColor = wxColor( 0xBE, 0xBE, 0xBE ); + break ; + + case wxSYS_COLOUR_BTNTEXT: + case wxSYS_COLOUR_MENUTEXT: + case wxSYS_COLOUR_WINDOWTEXT: + case wxSYS_COLOUR_CAPTIONTEXT: + case wxSYS_COLOUR_INFOTEXT: + case wxSYS_COLOUR_INACTIVECAPTIONTEXT: + resultColor = *wxBLACK; + break ; + + case wxSYS_COLOUR_HIGHLIGHT: + { +#if 0 + // NB: enable this case as desired + colorBrushID = kThemeBrushAlternatePrimaryHighlightColor; +#else + colorBrushID = kThemeBrushPrimaryHighlightColor; +#endif + resultColor = wxColor( wxMacCreateCGColorFromHITheme(colorBrushID) ); + } + break ; + + case wxSYS_COLOUR_BTNHIGHLIGHT: + case wxSYS_COLOUR_GRAYTEXT: + resultColor = wxColor( 0xCC, 0xCC, 0xCC ); + break ; + + case wxSYS_COLOUR_3DDKSHADOW: + resultColor = wxColor( 0x44, 0x44, 0x44 ); + break ; + + case wxSYS_COLOUR_3DLIGHT: + resultColor = wxColor( 0xCC, 0xCC, 0xCC ); + break ; + + case wxSYS_COLOUR_HIGHLIGHTTEXT : +#if 0 + // NB: enable this case as desired + resultColor = *wxWHITE ; +#else + { + wxColour highlightcolor( wxMacCreateCGColorFromHITheme(kThemeBrushPrimaryHighlightColor) ); + if ((highlightcolor.Red() + highlightcolor.Green() + highlightcolor.Blue() ) == 0) + resultColor = *wxWHITE ; + else + resultColor = *wxBLACK ; + } +#endif + break ; + + case wxSYS_COLOUR_INFOBK : + // we don't have a way to detect tooltip color, so use the + // standard value used at least on 10.4: + resultColor = wxColour( 0xFF, 0xFF, 0xD3 ) ; + break ; + case wxSYS_COLOUR_APPWORKSPACE: + resultColor = wxColor( 0x80, 0x80, 0x80 ); ; + break ; + + case wxSYS_COLOUR_HOTLIGHT: + case wxSYS_COLOUR_GRADIENTACTIVECAPTION: + case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: + case wxSYS_COLOUR_MENUHILIGHT: + // TODO: + resultColor = *wxBLACK; + break ; + + // case wxSYS_COLOUR_MAX: + default: + resultColor = *wxWHITE; + // wxCHECK_MSG( index >= wxSYS_COLOUR_MAX, false, _T("unknown system colour index") ); + break ; + } + + return resultColor; } -wxFont wxSystemSettings::GetSystemFont(int index) +// ---------------------------------------------------------------------------- +// fonts +// ---------------------------------------------------------------------------- + +wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) { - // TODO switch (index) { - case wxSYS_DEVICE_DEFAULT_FONT: - { - break; - } - case wxSYS_DEFAULT_PALETTE: - { - break; - } - case wxSYS_SYSTEM_FIXED_FONT: - { - break; - } - case wxSYS_SYSTEM_FONT: - { - break; - } - default: - case wxSYS_DEFAULT_GUI_FONT: - { - break; - } + case wxSYS_ANSI_VAR_FONT : + case wxSYS_SYSTEM_FONT : + case wxSYS_DEVICE_DEFAULT_FONT : + case wxSYS_DEFAULT_GUI_FONT : + return *wxSMALL_FONT ; + break ; + + default : + break ; } - return wxFont(); + return *wxNORMAL_FONT; } +// ---------------------------------------------------------------------------- +// system metrics/features +// ---------------------------------------------------------------------------- + // Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) +int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win)) { - switch ( index) - { + int value; + + switch ( index ) + { case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; + // we emulate a two button mouse (ctrl + click = right button) + return 2; + + // TODO case wxSYS_BORDER_X: + // TODO case wxSYS_BORDER_Y: + // TODO case wxSYS_CURSOR_X: + // TODO case wxSYS_CURSOR_Y: + // TODO case wxSYS_DCLICK_X: + // TODO case wxSYS_DCLICK_Y: + // TODO case wxSYS_DRAG_X: + // TODO case wxSYS_DRAG_Y: + // TODO case wxSYS_EDGE_X: + // TODO case wxSYS_EDGE_Y: + case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; + return 16; + + // TODO case wxSYS_ICON_X: + // TODO case wxSYS_ICON_Y: + // TODO case wxSYS_ICONSPACING_X: + // TODO case wxSYS_ICONSPACING_Y: + // TODO case wxSYS_WINDOWMIN_X: + // TODO case wxSYS_WINDOWMIN_Y: + case wxSYS_SCREEN_X: - // TODO - return 0; + wxDisplaySize( &value, NULL ); + return value; + case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; + wxDisplaySize( NULL, &value ); + return value; + + // TODO case wxSYS_FRAMESIZE_X: + // TODO case wxSYS_FRAMESIZE_Y: + // TODO case wxSYS_SMALLICON_X: + // TODO case wxSYS_SMALLICON_Y: + case wxSYS_HSCROLL_Y: - // TODO - return 0; case wxSYS_VSCROLL_X: - // TODO - return 0; case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; + return 16; + case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; + return 0; + case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; + return 0; + + // TODO: case wxSYS_CAPTION_Y: + // TODO: case wxSYS_MENU_Y: + // TODO: case wxSYS_NETWORK_PRESENT: + // TODO: case wxSYS_SHOW_SOUNDS: + + case wxSYS_DCLICK_MSEC: +#ifdef __LP64__ + // default on mac is 30 ticks, we shouldn't really use wxSYS_DCLICK_MSEC anyway + // but rather rely on the 'click-count' by the system delivered in a mouse event + return 500; +#else + return (int)(GetDblTime() * 1000. / 60.); +#endif + default: + // unsupported metric + break; + } + + return -1; } +bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return true; + + default: + return false; + } +}