// set the scheme of url to http if it does not have one
// RR: This doesn't work if the url is just a local path
wxString url(urlOrig);
-#if 0
- if ( !wxURI(url).HasScheme() )
+ wxURI uri(url);
+ if ( !uri.HasScheme() )
url.Prepend(wxT("http://"));
-#endif
#if defined(__WXMSW__)
{
// ShellExecuteEx() opens the URL in an existing window by default so
// we can't use it if we need a new window
- wxRegKey key(wxRegKey::HKCR, url.BeforeFirst(':') + _T("\\shell\\open"));
+ wxRegKey key(wxRegKey::HKCR, uri.GetScheme() + _T("\\shell\\open"));
+ if ( !key.Exists() )
+ {
+ // try default browser, it must be registered at least for http URLs
+ key.SetName(wxRegKey::HKCR, _T("http\\shell\\open"));
+ }
+
if ( key.Exists() )
{
wxRegKey keyDDE(key, wxT("DDEExec"));
// (non-Mac, non-MSW)
#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 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)
{
wxString cmd = output[0];
return true;
}
}
+ else if (desktop == wxT("KDE"))
+ {
+ // kfmclient directly opens the given URL
+ if (wxExecute(wxT("kfmclient openURL ") + url))
+ return true;
+ }
#endif
bool ok = false;
wxString cmd;
+#if wxUSE_MIMETYPE
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("html"));
if ( ft )
{
ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
delete ft;
}
+#endif // wxUSE_MIMETYPE
if ( !ok || cmd.empty() )
{