X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d713a7574bfabba6671a0dca00ecf0ca324fdf3..ad237a73a80bb9c475b95b8122c23a99a5f65122:/src/common/utilscmn.cpp diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index dd052b5c90..3186968dfc 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -84,10 +84,7 @@ #endif // ! __WXPALMOS5__ #ifdef __WXMAC__ -#include "wx/mac/private.h" -#ifndef __DARWIN__ -#include "InternetConfig.h" -#endif +#include "wx/osx/private.h" #endif #ifndef __WXPALMOS5__ @@ -936,6 +933,49 @@ void wxQsort(void *const pbase, size_t total_elems, #if wxUSE_GUI +// ---------------------------------------------------------------------------- +// Launch document with default app +// ---------------------------------------------------------------------------- + +bool wxLaunchDefaultApplication(const wxString& document, int flags) +{ + wxUnusedVar(flags); + +#ifdef __WXMAC__ + static const char * const OPEN_CMD = "/usr/bin/open"; + if ( wxFileExists(OPEN_CMD) && + wxExecute(wxString(OPEN_CMD) + " " + document) ) + return true; +#elif defined(__UNIX__) + // Our best best is to use xdg-open from freedesktop.org cross-desktop + // compatibility suite xdg-utils + // (see http://portland.freedesktop.org/wiki/) -- this is installed on + // most modern distributions and may be tweaked by them to handle + // distribution specifics. + wxString path, xdg_open; + if ( wxGetEnv("PATH", &path) && + wxFindFileInPath(&xdg_open, path, "xdg-open") ) + { + if ( wxExecute(xdg_open + " " + document) ) + return true; + } +#elif defined(__WXMSW__) + const INT_PTR result = (INT_PTR)::ShellExecute + ( + NULL, // parent window + _T("open"), + document.wx_str(), + NULL, // parameters + NULL, // working directory + SW_SHOWDEFAULT + ); + if ( result > 32 ) + return true; +#endif + + return false; +} + // ---------------------------------------------------------------------------- // Launch default browser // ---------------------------------------------------------------------------- @@ -945,7 +985,7 @@ void wxQsort(void *const pbase, size_t total_elems, bool wxCocoaLaunchDefaultBrowser(const wxString& url, int flags); #endif -bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags) +static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) { wxUnusedVar(flags); @@ -1054,7 +1094,7 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags) // NOTE: We need to call the real implementation from src/cocoa/utils.mm // because the code must use Objective-C features. return wxCocoaLaunchDefaultBrowser(url, flags); -#elif defined(__WXMAC__) +#elif defined(__WXMAC__) && !defined(__WXOSX_IPHONE__) wxCFRef< CFURLRef > curl( CFURLCreateWithString( kCFAllocatorDefault, wxCFStringRef( url ), NULL ) ); OSStatus err = LSOpenCFURLRef( curl , NULL ); @@ -1153,6 +1193,15 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags) return false; } +bool wxLaunchDefaultBrowser(const wxString& url, int flags) +{ + if ( flags & wxBROWSER_NOBUSYCURSOR ) + return DoLaunchDefaultBrowser(url, flags); + + wxBusyCursor bc; + return DoLaunchDefaultBrowser(url, flags); +} + // ---------------------------------------------------------------------------- // Menu accelerators related functions // ---------------------------------------------------------------------------- @@ -1382,7 +1431,7 @@ void wxInfoMessageBox(wxWindow* parent) msg.Printf(_T("wxWidgets Library (%s port)\n") _T("Version %d.%d.%d%s%s, compiled at %s %s\n") _T("Runtime version of toolkit used is %d.%d.%s\n") - _T("Copyright (c) 1995-2007 wxWidgets team"), + _T("Copyright (c) 1995-2008 wxWidgets team"), wxPlatformInfo::Get().GetPortIdName().c_str(), wxMAJOR_VERSION, wxMINOR_VERSION, @@ -1469,8 +1518,8 @@ wxString wxGetPasswordFromUser(const wxString& message, #if wxUSE_COLOURDLG -wxColour wxGetColourFromUser(wxWindow *parent, - const wxColour& colInit, +wxColour wxGetColourFromUser(wxWindow *parent, + const wxColour& colInit, const wxString& caption, wxColourData *ptrData) { @@ -1561,7 +1610,20 @@ void wxEnableTopLevelWindows(bool enable) node->GetData()->Enable(enable); } +wxWindowDisabler::wxWindowDisabler(bool disable) +{ + m_disabled = disable; + if ( disable ) + DoDisable(); +} + wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip) +{ + m_disabled = true; + DoDisable(winToSkip); +} + +void wxWindowDisabler::DoDisable(wxWindow *winToSkip) { // remember the top level windows which were already disabled, so that we // don't reenable them later @@ -1593,6 +1655,9 @@ wxWindowDisabler::wxWindowDisabler(wxWindow *winToSkip) wxWindowDisabler::~wxWindowDisabler() { + if ( !m_disabled ) + return; + wxWindowList::compatibility_iterator node; for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) {