#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
// ----------------------------------------------------------------------------
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);
wxRegKey keyDDE(key, wxT("DDEExec"));
if ( keyDDE.Exists() )
{
- const wxString ddeTopic = wxRegKey(keyDDE, wxT("topic"));
-
// we only know the syntax of WWW_OpenURL DDE request for IE,
// optimistically assume that all other browsers are compatible
// with it
+ static const wxChar *TOPIC_OPEN_URL = wxT("WWW_OpenURL");
wxString ddeCmd;
- bool ok = ddeTopic == wxT("WWW_OpenURL");
+ wxRegKey keyTopic(keyDDE, wxT("topic"));
+ bool ok = keyTopic.Exists() && keyTopic == TOPIC_OPEN_URL;
if ( ok )
{
ddeCmd = keyDDE.QueryDefaultValue();
wxLogNull noLog;
const wxString ddeServer = wxRegKey(keyDDE, wxT("application"));
- if ( wxExecuteDDE(ddeServer, ddeTopic, ddeCmd) )
+ if ( wxExecuteDDE(ddeServer, TOPIC_OPEN_URL, ddeCmd) )
return true;
// this is not necessarily an error: maybe browser is
sei.lpFile = url.c_str();
sei.lpVerb = _T("open");
sei.nShow = SW_SHOWNORMAL;
+ sei.fMask = SEE_MASK_FLAG_NO_UI; // we give error message ourselves
::ShellExecuteEx(&sei);
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
// ----------------------------------------------------------------------------
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,
#if wxUSE_COLOURDLG
-wxColour wxGetColourFromUser(wxWindow *parent,
- const wxColour& colInit,
+wxColour wxGetColourFromUser(wxWindow *parent,
+ const wxColour& colInit,
const wxString& caption,
wxColourData *ptrData)
{