X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/019a60d62560638a65bb575e7e30938c7e667450..0477a8578b7346a25be3177d1fea4401be1b94bb:/src/mac/carbon/settings.cpp diff --git a/src/mac/carbon/settings.cpp b/src/mac/carbon/settings.cpp index 2d72222ab8..9cdf66aa66 100644 --- a/src/mac/carbon/settings.cpp +++ b/src/mac/carbon/settings.cpp @@ -1,87 +1,130 @@ ///////////////////////////////////////////////////////////////////////////// // Name: 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__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "settings.h" #endif +#include "wx/wxprec.h" + #include "wx/settings.h" +#include "wx/gdicmn.h" +#include "wx/utils.h" + +#include "wx/mac/uma.h" + +// ---------------------------------------------------------------------------- +// wxSystemSettingsNative +// ---------------------------------------------------------------------------- -wxColour wxSystemSettings::GetSystemColour(int index) +// ---------------------------------------------------------------------------- +// colours +// ---------------------------------------------------------------------------- + +wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) { - switch( index ) - { - case wxSYS_COLOUR_SCROLLBAR : - case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: - case wxSYS_COLOUR_INACTIVECAPTION: - case wxSYS_COLOUR_MENU: - case wxSYS_COLOUR_WINDOW: - case wxSYS_COLOUR_WINDOWFRAME: - case wxSYS_COLOUR_ACTIVEBORDER: - case wxSYS_COLOUR_INACTIVEBORDER: - case wxSYS_COLOUR_BTNFACE: - return wxColor( 0xDD , 0xDD , 0xDD ) ; - break ; - - case wxSYS_COLOUR_BTNSHADOW: - return wxColor( 0x44 , 0x44 , 0x44 ) ; - 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: - return *wxBLACK; - break ; - case wxSYS_COLOUR_HIGHLIGHT: - { - RGBColor hilite ; - LMGetHiliteRGB(&hilite) ; - return wxColor( hilite.red >> 8 , hilite.green >> 8 , hilite.blue >> 8 ) ; - } - break ; - case wxSYS_COLOUR_BTNHIGHLIGHT: - case wxSYS_COLOUR_GRAYTEXT: - return wxColor( 0xCC , 0xCC , 0xCC ) ; - break ; - - case wxSYS_COLOUR_3DDKSHADOW: - return wxColor( 0x44 , 0x44 , 0x44 ) ; - break ; - case wxSYS_COLOUR_3DLIGHT: - return wxColor( 0xCC , 0xCC , 0xCC ) ; - break ; - case wxSYS_COLOUR_HIGHLIGHTTEXT : - { - RGBColor hilite ; - LMGetHiliteRGB(&hilite) ; - if ( ( hilite.red + hilite.green + hilite.blue ) == 0 ) - return *wxWHITE ; - else - return *wxBLACK ; - } - break ; - case wxSYS_COLOUR_INFOBK : - case wxSYS_COLOUR_APPWORKSPACE: - case wxSYS_COLOUR_LISTBOX: - return *wxWHITE ; - break ; - } - return *wxWHITE; + int major,minor; + wxGetOsVersion( &major, &minor ); + + switch( index ) + { + case wxSYS_COLOUR_SCROLLBAR : + case wxSYS_COLOUR_BACKGROUND: + case wxSYS_COLOUR_ACTIVECAPTION: + case wxSYS_COLOUR_INACTIVECAPTION: + case wxSYS_COLOUR_MENU: + case wxSYS_COLOUR_WINDOW: + case wxSYS_COLOUR_WINDOWFRAME: + case wxSYS_COLOUR_ACTIVEBORDER: + case wxSYS_COLOUR_INACTIVEBORDER: + case wxSYS_COLOUR_BTNFACE: + case wxSYS_COLOUR_MENUBAR: + return wxColor( 0xDD , 0xDD , 0xDD ) ; + break ; + + case wxSYS_COLOUR_LISTBOX : + { + if (major >= 10) + return *wxWHITE ; + else + return wxColor( 0xEE , 0xEE , 0xEE ) ; + break ; + } + case wxSYS_COLOUR_BTNSHADOW: + if (major >= 10) + return wxColor( 0xBE , 0xBE , 0xBE ) ; + else + return wxColor( 0x44 , 0x44 , 0x44 ) ; + 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: + return *wxBLACK; + break ; + case wxSYS_COLOUR_HIGHLIGHT: + { + RGBColor hilite ; + LMGetHiliteRGB(&hilite) ; + return wxColor( hilite.red >> 8 , hilite.green >> 8 , hilite.blue >> 8 ) ; + } + break ; + case wxSYS_COLOUR_BTNHIGHLIGHT: + case wxSYS_COLOUR_GRAYTEXT: + return wxColor( 0xCC , 0xCC , 0xCC ) ; + break ; + + case wxSYS_COLOUR_3DDKSHADOW: + return wxColor( 0x44 , 0x44 , 0x44 ) ; + break ; + case wxSYS_COLOUR_3DLIGHT: + return wxColor( 0xCC , 0xCC , 0xCC ) ; + break ; + case wxSYS_COLOUR_HIGHLIGHTTEXT : + { + RGBColor hilite ; + LMGetHiliteRGB(&hilite) ; + if ( ( hilite.red + hilite.green + hilite.blue ) == 0 ) + return *wxWHITE ; + else + return *wxBLACK ; + } + break ; + case wxSYS_COLOUR_INFOBK : + case wxSYS_COLOUR_APPWORKSPACE: + return *wxWHITE ; + break ; + + case wxSYS_COLOUR_HOTLIGHT: + case wxSYS_COLOUR_GRADIENTACTIVECAPTION: + case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: + case wxSYS_COLOUR_MENUHILIGHT: + // TODO + return *wxBLACK; + + case wxSYS_COLOUR_MAX: + wxFAIL_MSG( _T("unknown system colour index") ); + break ; + } + return *wxWHITE; } -wxFont wxSystemSettings::GetSystemFont(int index) +// ---------------------------------------------------------------------------- +// fonts +// ---------------------------------------------------------------------------- + +wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) { switch (index) { @@ -89,131 +132,113 @@ wxFont wxSystemSettings::GetSystemFont(int index) case wxSYS_SYSTEM_FONT : case wxSYS_DEVICE_DEFAULT_FONT : case wxSYS_DEFAULT_GUI_FONT : - { - return *wxSMALL_FONT ; - } ; - break ; + { + return *wxSMALL_FONT ; + } ; + break ; case wxSYS_OEM_FIXED_FONT : case wxSYS_ANSI_FIXED_FONT : case wxSYS_SYSTEM_FIXED_FONT : default : - { - return *wxNORMAL_FONT ; - } ; - break ; - + { + return *wxNORMAL_FONT ; + } ; + break ; + } 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: - return 2; // we emulate a two button mouse (ctrl + click = right button ) - 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: - return 16; + return 16; case wxSYS_HSCROLL_ARROW_Y: - return 16; + return 16; case wxSYS_HTHUMB_X: - return 16; - 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: - return 16; + return 16; case wxSYS_VSCROLL_X: - return 16; + return 16; case wxSYS_VSCROLL_ARROW_X: - return 16; + return 16; case wxSYS_VSCROLL_ARROW_Y: - return 16; + return 16; case wxSYS_VTHUMB_Y: - return 16; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; + return 16; + + // TODO case wxSYS_CAPTION_Y: + // TODO case wxSYS_MENU_Y: + // TODO case wxSYS_NETWORK_PRESENT: + case wxSYS_PENWINDOWS_PRESENT: - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; + return 0; + + // TODO case wxSYS_SHOW_SOUNDS: + case wxSYS_SWAP_BUTTONS: - return 0; - default: - return 0; - } - return 0; + return 0; + + default: + return -1; // unsupported metric + } + return 0; } +bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; + + default: + return FALSE; + } +}