It was (consistently) misspelt as "themeing" in several places. Closes #11206. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
224 lines
5.3 KiB
C++
224 lines
5.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/osx/utils_osx.cpp
|
|
// Purpose: Various utilities
|
|
// Author: Stefan Csomor
|
|
// Modified by:
|
|
// Created: 1998-01-01
|
|
// RCS-ID: $Id: utils.cpp 54886 2008-07-31 13:02:53Z SC $
|
|
// Copyright: (c) Stefan Csomor
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#include "wx/utils.h"
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/intl.h"
|
|
#include "wx/app.h"
|
|
#include "wx/log.h"
|
|
#if wxUSE_GUI
|
|
#include "wx/toplevel.h"
|
|
#include "wx/font.h"
|
|
#endif
|
|
#endif
|
|
|
|
#include "wx/apptrait.h"
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdarg.h>
|
|
|
|
// #include "MoreFilesX.h"
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
|
|
#include <AudioToolbox/AudioServices.h>
|
|
#endif
|
|
|
|
#include "wx/osx/private.h"
|
|
|
|
#if wxOSX_USE_COCOA
|
|
// to get the theming APIs
|
|
#include <Carbon/Carbon.h>
|
|
#endif
|
|
|
|
#include "wx/osx/private/timer.h"
|
|
|
|
#include "wx/evtloop.h"
|
|
|
|
#if defined(__MWERKS__) && wxUSE_UNICODE
|
|
#if __MWERKS__ < 0x4100
|
|
#include <wtime.h>
|
|
#endif
|
|
#endif
|
|
|
|
// Check whether this window wants to process messages, e.g. Stop button
|
|
// in long calculations.
|
|
bool wxCheckForInterrupt(wxWindow *WXUNUSED(wnd))
|
|
{
|
|
// TODO
|
|
return false;
|
|
}
|
|
|
|
// Return true if we have a colour display
|
|
bool wxColourDisplay()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
#if wxOSX_USE_COCOA_OR_CARBON
|
|
// Returns depth of screen
|
|
int wxDisplayDepth()
|
|
{
|
|
int theDepth = (int) CGDisplayBitsPerPixel(CGMainDisplayID());
|
|
return theDepth;
|
|
}
|
|
|
|
// Get size of display
|
|
void wxDisplaySize(int *width, int *height)
|
|
{
|
|
// TODO adapt for multi-displays
|
|
CGRect bounds = CGDisplayBounds(CGMainDisplayID());
|
|
if ( width )
|
|
*width = (int)bounds.size.width ;
|
|
if ( height )
|
|
*height = (int)bounds.size.height;
|
|
}
|
|
|
|
#if wxUSE_GUI
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Launch document with default app
|
|
// ----------------------------------------------------------------------------
|
|
|
|
bool wxLaunchDefaultApplication(const wxString& document, int flags)
|
|
{
|
|
wxUnusedVar(flags);
|
|
|
|
static const char * const OPEN_CMD = "/usr/bin/open";
|
|
if ( wxFileExists(OPEN_CMD) &&
|
|
wxExecute(wxString(OPEN_CMD) + " " + document) )
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Launch default browser
|
|
// ----------------------------------------------------------------------------
|
|
|
|
bool wxDoLaunchDefaultBrowser(const wxString& url, int flags)
|
|
{
|
|
wxUnusedVar(flags);
|
|
wxCFRef< CFURLRef > curl( CFURLCreateWithString( kCFAllocatorDefault,
|
|
wxCFStringRef( url ), NULL ) );
|
|
OSStatus err = LSOpenCFURLRef( curl , NULL );
|
|
|
|
if (err == noErr)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
wxLogDebug(wxT("Browser Launch error %d"), (int) err);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endif // wxUSE_GUI
|
|
|
|
#endif
|
|
|
|
void wxDisplaySizeMM(int *width, int *height)
|
|
{
|
|
wxDisplaySize(width, height);
|
|
// on mac 72 is fixed (at least now;-)
|
|
double cvPt2Mm = 25.4 / 72;
|
|
|
|
if (width != NULL)
|
|
*width = int( *width * cvPt2Mm );
|
|
|
|
if (height != NULL)
|
|
*height = int( *height * cvPt2Mm );
|
|
}
|
|
|
|
|
|
wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
|
|
{
|
|
// We suppose that toolkit version is the same as OS version under Mac
|
|
wxGetOsVersion(verMaj, verMin);
|
|
|
|
return wxPORT_OSX;
|
|
}
|
|
|
|
wxEventLoopBase* wxGUIAppTraits::CreateEventLoop()
|
|
{
|
|
return new wxEventLoop;
|
|
}
|
|
|
|
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
|
|
{
|
|
return wxGenericFindWindowAtPoint(pt);
|
|
}
|
|
|
|
/*
|
|
Return the generic RGB color space. This is a 'get' function and the caller should
|
|
not release the returned value unless the caller retains it first. Usually callers
|
|
of this routine will immediately use the returned colorspace with CoreGraphics
|
|
so they typically do not need to retain it themselves.
|
|
|
|
This function creates the generic RGB color space once and hangs onto it so it can
|
|
return it whenever this function is called.
|
|
*/
|
|
|
|
CGColorSpaceRef wxMacGetGenericRGBColorSpace()
|
|
{
|
|
static wxCFRef<CGColorSpaceRef> genericRGBColorSpace;
|
|
|
|
if (genericRGBColorSpace == NULL)
|
|
{
|
|
#if wxOSX_USE_IPHONE
|
|
genericRGBColorSpace.reset( CGColorSpaceCreateDeviceRGB() );
|
|
#else
|
|
genericRGBColorSpace.reset( CGColorSpaceCreateWithName( kCGColorSpaceGenericRGB ) );
|
|
#endif
|
|
}
|
|
|
|
return genericRGBColorSpace;
|
|
}
|
|
|
|
#if wxOSX_USE_COCOA_OR_CARBON
|
|
|
|
CGColorRef wxMacCreateCGColorFromHITheme( ThemeBrush brush )
|
|
{
|
|
CGColorRef color ;
|
|
HIThemeBrushCreateCGColor( brush, &color );
|
|
return color;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Mac Specific string utility functions
|
|
//---------------------------------------------------------------------------
|
|
|
|
void wxMacStringToPascal( const wxString&from , unsigned char * to )
|
|
{
|
|
wxCharBuffer buf = from.mb_str( wxConvLocal );
|
|
int len = strlen(buf);
|
|
|
|
if ( len > 255 )
|
|
len = 255;
|
|
to[0] = len;
|
|
memcpy( (char*) &to[1] , buf , len );
|
|
}
|
|
|
|
wxString wxMacMakeStringFromPascal( const unsigned char * from )
|
|
{
|
|
return wxString( (char*) &from[1] , wxConvLocal , from[0] );
|
|
}
|
|
|
|
#endif // wxOSX_USE_COCOA_OR_CARBON
|