X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/888c4e8f0d6e739aadf4d048c31a586292d7d026..30386aeb867e0b6311450a87c056c42301765a65:/src/cocoa/settings.mm diff --git a/src/cocoa/settings.mm b/src/cocoa/settings.mm index 765148a48b..0f6ffb05f0 100644 --- a/src/cocoa/settings.mm +++ b/src/cocoa/settings.mm @@ -1,21 +1,28 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp +// Name: src/cocoa/settings.mm // Purpose: wxSettings -// Author: AUTHOR +// Author: David Elliott // Modified by: -// Created: ??/??/98 +// Created: 2005/01/11 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR +// Copyright: (c) 2005 David Elliott // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif +#include "wx/wxprec.h" #include "wx/settings.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" + +#ifndef WX_PRECOMP + #include "wx/utils.h" + #include "wx/gdicmn.h" +#endif + +#include "wx/cocoa/autorelease.h" +#include "wx/cocoa/private/fontfactory.h" + +#import +#import // ---------------------------------------------------------------------------- // wxSystemSettingsNative @@ -27,93 +34,72 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) { - return wxColour(); -#if 0 - int major,minor; - wxGetOsVersion( &major, &minor ); - + wxAutoNSAutoreleasePool pool; 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 : + case wxSYS_COLOUR_SCROLLBAR: + return wxColour([NSColor scrollBarColor]); // color of slot + case wxSYS_COLOUR_BACKGROUND: // No idea how to get desktop background + break; // break so we return an invalid colour. + case wxSYS_COLOUR_ACTIVECAPTION: // No idea how to get this + // fall through, window background is reasonable + case wxSYS_COLOUR_INACTIVECAPTION: // No idea how to get this + // fall through, window background is reasonable + case wxSYS_COLOUR_MENU: + case wxSYS_COLOUR_MENUBAR: + case wxSYS_COLOUR_WINDOW: + case wxSYS_COLOUR_WINDOWFRAME: + case wxSYS_COLOUR_ACTIVEBORDER: + case wxSYS_COLOUR_INACTIVEBORDER: + return wxColour([NSColor windowFrameColor]); + case wxSYS_COLOUR_BTNFACE: + return wxColour([NSColor knobColor]); // close enough? + case wxSYS_COLOUR_LISTBOX: + return wxColour([NSColor controlBackgroundColor]); + case wxSYS_COLOUR_BTNSHADOW: + return wxColour([NSColor controlShadowColor]); + 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 wxColour([NSColor controlTextColor]); + case wxSYS_COLOUR_HIGHLIGHT: + return wxColour([NSColor selectedControlColor]); + case wxSYS_COLOUR_BTNHIGHLIGHT: + return wxColour([NSColor controlHighlightColor]); + case wxSYS_COLOUR_GRAYTEXT: + return wxColour([NSColor disabledControlTextColor]); + case wxSYS_COLOUR_3DDKSHADOW: + return wxColour([NSColor controlShadowColor]); + case wxSYS_COLOUR_3DLIGHT: + return wxColour([NSColor controlHighlightColor]); + case wxSYS_COLOUR_HIGHLIGHTTEXT: + return wxColour([NSColor selectedControlTextColor]); + case wxSYS_COLOUR_INFOBK: + // tooltip (bogus) + return wxColour([NSColor controlBackgroundColor]); + case wxSYS_COLOUR_APPWORKSPACE: + // MDI window color (bogus) + return wxColour([NSColor windowBackgroundColor]); + case wxSYS_COLOUR_HOTLIGHT: + break; // what is this? + case wxSYS_COLOUR_GRADIENTACTIVECAPTION: + case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: + break; // Doesn't really apply to Cocoa. + case wxSYS_COLOUR_MENUHILIGHT: + return wxColour([NSColor selectedMenuItemColor]); + case wxSYS_COLOUR_MAX: + default: + if(index>=wxSYS_COLOUR_MAX) { - if (major >= 10) - return *wxWHITE ; - else - return wxColor( 0xEE , 0xEE , 0xEE ) ; - break ; + wxFAIL_MSG(wxT("Invalid system colour index")); + return wxColour(); } - 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: - 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; -#endif + wxFAIL_MSG(wxT("Unimplemented system colour index")); + return wxColour(); } // ---------------------------------------------------------------------------- @@ -122,8 +108,10 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) { -// return a nonworking font object, crash from wxInitializeStockObjects - return wxFont(); + // Return the system font for now + { wxAutoNSAutoreleasePool pool; + return wxCocoaFontFactory::InstanceForNSFont([NSFont systemFontOfSize:0.0], false); + } switch (index) { case wxSYS_ANSI_VAR_FONT : @@ -142,7 +130,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) return *wxNORMAL_FONT ; } ; break ; - + } return *wxNORMAL_FONT; } @@ -152,13 +140,13 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) // ---------------------------------------------------------------------------- // Get a system metric, e.g. scrollbar size -int wxSystemSettingsNative::GetMetric(wxSystemMetric index) +int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow *WXUNUSED(win)) { switch ( index) { case wxSYS_MOUSE_BUTTONS: return 2; // we emulate a two button mouse (ctrl + click = right button ) - + // TODO case wxSYS_BORDER_X: // TODO case wxSYS_BORDER_Y: // TODO case wxSYS_CURSOR_X: @@ -176,7 +164,7 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) return 16; case wxSYS_HTHUMB_X: return 16; - + // TODO case wxSYS_ICON_X: // TODO case wxSYS_ICON_Y: // TODO case wxSYS_ICONSPACING_X: @@ -189,7 +177,7 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) // TODO case wxSYS_FRAMESIZE_Y: // TODO case wxSYS_SMALLICON_X: // TODO case wxSYS_SMALLICON_Y: - + case wxSYS_HSCROLL_Y: return 16; case wxSYS_VSCROLL_X: @@ -200,19 +188,19 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) return 16; case wxSYS_VTHUMB_Y: return 16; - + // TODO case wxSYS_CAPTION_Y: // TODO case wxSYS_MENU_Y: // TODO case wxSYS_NETWORK_PRESENT: - + case wxSYS_PENWINDOWS_PRESENT: return 0; - + // TODO case wxSYS_SHOW_SOUNDS: case wxSYS_SWAP_BUTTONS: return 0; - + default: return -1; // unsupported metric } @@ -223,11 +211,11 @@ bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) { switch (index) { - case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_ICONIZE_FRAME: case wxSYS_CAN_DRAW_FRAME_DECORATIONS: - return TRUE; - + return true; + default: - return FALSE; + return false; } }