// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id: utils.cpp 54886 2008-07-31 13:02:53Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#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
#include "wx/osx/private.h"
-
-#ifdef wxOSX_USE_COCOA
-// to get the themeing APIs
-#include <Carbon/Carbon.h>
-#endif
-
-#if wxUSE_GUI
- #include "wx/osx/private/timer.h"
-#endif // wxUSE_GUI
+#include "wx/osx/private/timer.h"
#include "wx/evtloop.h"
#endif
#endif
-#if wxUSE_BASE
-
-extern bool WXDLLEXPORT wxIsDebuggerRunning()
-{
- // TODO : try to find out ...
- return false;
-}
-
-#if wxOSX_USE_COCOA_OR_CARBON
-
-// have a fast version for mac code that returns the version as a return value
-
-long UMAGetSystemVersion()
-{
- static SInt32 sUMASystemVersion = 0 ;
- if ( sUMASystemVersion == 0 )
- {
- verify_noerr(Gestalt(gestaltSystemVersion, &sUMASystemVersion));
- }
- return sUMASystemVersion ;
-}
-
-// our OS version is the same in non GUI and GUI cases
-wxOperatingSystemId wxGetOsVersion(int *majorVsn, int *minorVsn)
-{
- SInt32 theSystem;
- Gestalt(gestaltSystemVersion, &theSystem);
-
- if ( majorVsn != NULL )
- *majorVsn = (theSystem >> 8);
-
- if ( minorVsn != NULL )
- *minorVsn = (theSystem & 0xFF);
-
- return wxOS_MAC_OSX_DARWIN;
-}
-
-#include <sys/utsname.h>
-
-wxString wxGetOsDescription()
-{
- struct utsname name;
- uname(&name);
- return wxString::Format(_T("Mac OS X (%s %s %s)"),
- wxString::FromAscii(name.sysname).c_str(),
- wxString::FromAscii(name.release).c_str(),
- wxString::FromAscii(name.machine).c_str());
-}
-
-#endif // wxOSX_USE_COCOA_OR_CARBON
-
-
-//---------------------------------------------------------------------------
-// wxMac Specific utility functions
-//---------------------------------------------------------------------------
-
-void wxMacStringToPascal( const wxString&from , StringPtr 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( ConstStringPtr from )
-{
- return wxString( (char*) &from[1] , wxConvLocal , from[0] );
-}
-
-#endif // wxUSE_BASE
-
-#if wxUSE_GUI
-
// Check whether this window wants to process messages, e.g. Stop button
// in long calculations.
bool wxCheckForInterrupt(wxWindow *WXUNUSED(wnd))
// Return true if we have a colour display
bool wxColourDisplay()
{
+ // always the case on OS X
return true;
}
if ( height )
*height = (int)bounds.size.height;
}
+
+#if wxUSE_GUI
+
+// ----------------------------------------------------------------------------
+// Launch document with default app
+// ----------------------------------------------------------------------------
+
+bool wxLaunchDefaultApplication(const wxString& document, int flags)
+{
+ wxUnusedVar(flags);
+
+ wxCFRef<CFMutableStringRef> cfMutableString(CFStringCreateMutableCopy(NULL, 0, wxCFStringRef(document)));
+ CFStringNormalize(cfMutableString,kCFStringNormalizationFormD);
+ wxCFRef<CFURLRef> curl(CFURLCreateWithFileSystemPath(kCFAllocatorDefault, cfMutableString , kCFURLPOSIXPathStyle, false));
+ OSStatus err = LSOpenCFURLRef( curl , NULL );
+
+ if (err == noErr)
+ {
+ return true;
+ }
+ else
+ {
+ wxLogDebug(wxT("Default Application Launch error %d"), (int) err);
+ 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)
return new wxEventLoop;
}
+wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt);
+
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
{
- return wxGenericFindWindowAtPoint(pt);
+#if wxOSX_USE_CARBON
+
+ Point screenPoint = { pt.y , pt.x };
+ WindowRef windowRef;
+
+ if ( FindWindow( screenPoint , &windowRef ) )
+ {
+ wxNonOwnedWindow *nonOwned = wxNonOwnedWindow::GetFromWXWindow( windowRef );
+
+ if ( nonOwned )
+ return wxFindWindowAtPoint( nonOwned , pt );
+ }
+
+ return NULL;
+
+#else
+
+ return wxGenericFindWindowAtPoint( pt );
+
+#endif
}
/*
return color;
}
-#endif // wxOSX_USE_COCOA_OR_CARBON
+//---------------------------------------------------------------------------
+// Mac Specific string utility functions
+//---------------------------------------------------------------------------
-#endif // wxUSE_GUI
+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