[ 1587059 ] wxLaunchDefaultBrowser fix for KDE

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2006-10-30 11:46:44 +00:00
parent f10ccf9e6b
commit 17ede0b11d
3 changed files with 38 additions and 7 deletions

View File

@@ -3286,6 +3286,10 @@ Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
Returns \true if the application was successfully launched. Returns \true if the application was successfully launched.
Note that for some configurations of the running user, the application which
is launched to open the given URL may be URL-dependent (e.g. a browser may be used for
local URLs while another one may be used for remote URLs).
\wxheading{Include files} \wxheading{Include files}
<wx/utils.h> <wx/utils.h>

View File

@@ -66,7 +66,8 @@ public:
// event handlers (these functions should _not_ be virtual) // event handlers (these functions should _not_ be virtual)
void OnQuit(wxCommandEvent& event); void OnQuit(wxCommandEvent& event);
void OnPageOpen(wxCommandEvent& event); void OnPageOpen(wxCommandEvent& event);
void OnDefaultBrowser(wxCommandEvent& event); void OnDefaultLocalBrowser(wxCommandEvent& event);
void OnDefaultWebBrowser(wxCommandEvent& event);
void OnBack(wxCommandEvent& event); void OnBack(wxCommandEvent& event);
void OnForward(wxCommandEvent& event); void OnForward(wxCommandEvent& event);
void OnProcessor(wxCommandEvent& event); void OnProcessor(wxCommandEvent& event);
@@ -108,7 +109,8 @@ enum
{ {
// menu items // menu items
ID_PageOpen = wxID_HIGHEST, ID_PageOpen = wxID_HIGHEST,
ID_DefaultBrowser, ID_DefaultLocalBrowser,
ID_DefaultWebBrowser,
ID_Back, ID_Back,
ID_Forward, ID_Forward,
ID_Processor ID_Processor
@@ -121,7 +123,8 @@ enum
BEGIN_EVENT_TABLE(MyFrame, wxFrame) BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(wxID_EXIT, MyFrame::OnQuit) EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
EVT_MENU(ID_PageOpen, MyFrame::OnPageOpen) EVT_MENU(ID_PageOpen, MyFrame::OnPageOpen)
EVT_MENU(ID_DefaultBrowser, MyFrame::OnDefaultBrowser) EVT_MENU(ID_DefaultLocalBrowser, MyFrame::OnDefaultLocalBrowser)
EVT_MENU(ID_DefaultWebBrowser, MyFrame::OnDefaultWebBrowser)
EVT_MENU(ID_Back, MyFrame::OnBack) EVT_MENU(ID_Back, MyFrame::OnBack)
EVT_MENU(ID_Forward, MyFrame::OnForward) EVT_MENU(ID_Forward, MyFrame::OnForward)
EVT_MENU(ID_Processor, MyFrame::OnProcessor) EVT_MENU(ID_Processor, MyFrame::OnProcessor)
@@ -180,7 +183,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
wxMenu *menuNav = new wxMenu; wxMenu *menuNav = new wxMenu;
menuFile->Append(ID_PageOpen, _("&Open HTML page...")); menuFile->Append(ID_PageOpen, _("&Open HTML page..."));
menuFile->Append(ID_DefaultBrowser, _("&Open current page with default browser")); menuFile->Append(ID_DefaultLocalBrowser, _("&Open current page with default browser"));
menuFile->Append(ID_DefaultWebBrowser, _("Open a &web page with default browser"));
menuFile->AppendSeparator(); menuFile->AppendSeparator();
menuFile->Append(ID_Processor, _("&Remove bold attribute"), menuFile->Append(ID_Processor, _("&Remove bold attribute"),
wxEmptyString, wxITEM_CHECK); wxEmptyString, wxITEM_CHECK);
@@ -260,7 +264,7 @@ void MyFrame::OnPageOpen(wxCommandEvent& WXUNUSED(event))
#endif // wxUSE_FILEDLG #endif // wxUSE_FILEDLG
} }
void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnDefaultLocalBrowser(wxCommandEvent& WXUNUSED(event))
{ {
wxString page = m_Html->GetOpenedPage(); wxString page = m_Html->GetOpenedPage();
if (!page.empty()) if (!page.empty())
@@ -269,6 +273,15 @@ void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event))
} }
} }
void MyFrame::OnDefaultWebBrowser(wxCommandEvent& WXUNUSED(event))
{
wxString page = m_Html->GetOpenedPage();
if (!page.empty())
{
wxLaunchDefaultBrowser(wxT("http://www.google.com"));
}
}
void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event))
{ {
if (!m_Html->HistoryBack()) if (!m_Html->HistoryBack())

View File

@@ -855,11 +855,19 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
// (non-Mac, non-MSW) // (non-Mac, non-MSW)
#ifdef __UNIX__ #ifdef __UNIX__
if (wxTheApp->GetTraits()->GetDesktopEnvironment() == wxT("GNOME"))
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 errors;
wxArrayString output; wxArrayString output;
long res = wxExecute( wxT("gconftool-2 --get /desktop/gnome/applications/browser/exec"), output, errors, wxEXEC_NODISABLE );
// 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) if (res >= 0 && errors.GetCount() == 0)
{ {
wxString cmd = output[0]; wxString cmd = output[0];
@@ -868,6 +876,12 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
return true; return true;
} }
} }
else if (desktop == wxT("KDE"))
{
// kfmclient directly opens the given URL
if (wxExecute(wxT("kfmclient openURL ") + url))
return true;
}
#endif #endif
bool ok = false; bool ok = false;