From 7e86b10b7bced8fd5640e6db75e3232a65146496 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Fri, 9 Jan 2009 11:55:12 +0000 Subject: [PATCH] move wxLaunch* code in utilsx11.cpp as utilsunx.cpp is not compiled for wxCore git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57937 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/utilscmn.cpp | 2 +- src/unix/utilsunx.cpp | 83 +---------------------------------------- src/unix/utilsx11.cpp | 78 +++++++++++++++++++++++++++++++++++++- 3 files changed, 79 insertions(+), 84 deletions(-) diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 0a16b57fa4..4457a14ebe 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -942,7 +942,7 @@ void wxQsort(void *const pbase, size_t total_elems, // implemented in a port-specific utils source file: bool wxDoLaunchDefaultBrowser(const wxString& url, const wxString& scheme, int flags); -#elif defined(__UNIX__) || defined(__WXCOCOA__) || \ +#elif defined(__WXX11__) || defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXCOCOA__) || \ (defined(__WXMAC__) && !defined(__WXOSX_IPHONE__)) // implemented in a port-specific utils source file: diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 543792c83a..a5c3221bb2 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: src/unix/utilsunx.cpp -// Purpose: generic Unix implementation of many wx functions +// Purpose: generic Unix implementation of many wx functions (for wxBase) // Author: Vadim Zeitlin // Id: $Id$ // Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin @@ -434,87 +434,6 @@ private: } // anonymous namespace -// these functions are in src/osx/carbon/utils.cpp for wxMac -#ifndef __WXMAC__ - -// ---------------------------------------------------------------------------- -// Launch document with default app -// ---------------------------------------------------------------------------- - -bool wxLaunchDefaultApplication(const wxString& document, int flags) -{ - wxUnusedVar(flags); - - // 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; - } - - return false; -} - -// ---------------------------------------------------------------------------- -// Launch default browser -// ---------------------------------------------------------------------------- - -bool wxDoLaunchDefaultBrowser(const wxString& url, int flags) -{ - wxUnusedVar(flags); - - // 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. Only if that fails, try to find the right - // browser ourselves. - wxString path, xdg_open; - if ( wxGetEnv("PATH", &path) && - wxFindFileInPath(&xdg_open, path, "xdg-open") ) - { - if ( wxExecute(xdg_open + " " + url) ) - return true; - } - - wxString desktop = wxTheApp->GetTraits()->GetDesktopEnvironment(); - - // GNOME and KDE desktops have some applications which should be always installed - // together with their main parts, which give us the - if (desktop == wxT("GNOME")) - { - wxArrayString errors; - wxArrayString output; - - // gconf will tell us the path of the application to use as browser - long res = wxExecute( wxT("gconftool-2 --get /desktop/gnome/applications/browser/exec"), - output, errors, wxEXEC_NODISABLE ); - if (res >= 0 && errors.GetCount() == 0) - { - wxString cmd = output[0]; - cmd << _T(' ') << url; - if (wxExecute(cmd)) - return true; - } - } - else if (desktop == wxT("KDE")) - { - // kfmclient directly opens the given URL - if (wxExecute(wxT("kfmclient openURL ") + url)) - return true; - } - - return false; -} - -#endif // __WXMAC__ - // ---------------------------------------------------------------------------- // wxExecute implementations // ---------------------------------------------------------------------------- diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index efb3be521c..04f061bb20 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: src/unix/utilsx11.cpp -// Purpose: Miscellaneous X11 functions +// Purpose: Miscellaneous X11 functions (for wxCore) // Author: Mattia Barbon, Vaclav Slavik, Robert Roebling // Modified by: // Created: 25.03.02 @@ -848,4 +848,80 @@ bool wxGetKeyState(wxKeyCode key) return key_vector[keyCode >> 3] & (1 << (keyCode & 7)); } +// ---------------------------------------------------------------------------- +// Launch document with default app +// ---------------------------------------------------------------------------- + +bool wxLaunchDefaultApplication(const wxString& document, int flags) +{ + wxUnusedVar(flags); + + // 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; + } + + return false; +} + +// ---------------------------------------------------------------------------- +// Launch default browser +// ---------------------------------------------------------------------------- + +bool wxDoLaunchDefaultBrowser(const wxString& url, int flags) +{ + wxUnusedVar(flags); + + // 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. Only if that fails, try to find the right + // browser ourselves. + wxString path, xdg_open; + if ( wxGetEnv("PATH", &path) && + wxFindFileInPath(&xdg_open, path, "xdg-open") ) + { + if ( wxExecute(xdg_open + " " + url) ) + return true; + } + + wxString desktop = wxTheApp->GetTraits()->GetDesktopEnvironment(); + + // GNOME and KDE desktops have some applications which should be always installed + // together with their main parts, which give us the + if (desktop == wxT("GNOME")) + { + wxArrayString errors; + wxArrayString output; + + // gconf will tell us the path of the application to use as browser + long res = wxExecute( wxT("gconftool-2 --get /desktop/gnome/applications/browser/exec"), + output, errors, wxEXEC_NODISABLE ); + if (res >= 0 && errors.GetCount() == 0) + { + wxString cmd = output[0]; + cmd << _T(' ') << url; + if (wxExecute(cmd)) + return true; + } + } + else if (desktop == wxT("KDE")) + { + // kfmclient directly opens the given URL + if (wxExecute(wxT("kfmclient openURL ") + url)) + return true; + } + + return false; +} + #endif // __WXX11__ || __WXGTK__ || __WXMOTIF__