[ 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:
@@ -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>
|
||||||
|
@@ -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())
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user