X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afcaf277afb7a5f9f31cfd6c425dd9c3a68dd2ba..31a06b07cce898a22d0ca3992501e85da9c22f13:/src/generic/helpext.cpp diff --git a/src/generic/helpext.cpp b/src/generic/helpext.cpp index 2b79a863b2..8f6276fb25 100644 --- a/src/generic/helpext.cpp +++ b/src/generic/helpext.cpp @@ -1,34 +1,51 @@ -/*-*- c++ -*-******************************************************** - * helpext.cpp - an external help controller for wxWindows * - * * - * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ +///////////////////////////////////////////////////////////////////////////// +// Name: helpext.cpp +// Purpose: an external help controller for wxWindows +// Author: Karsten Ballueder +// Modified by: +// Created: 04/01/98 +// RCS-ID: $Id$ +// Copyright: (c) Karsten Ballueder +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + #ifdef __GNUG__ # pragma implementation "wxexthlp.h" #endif -#include "wx/setup.h" -#include "wx/helpbase.h" -#include "wx/generic/helpext.h" -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/list.h" -#include -#include -#include -#include +#include "wx/wxprec.h" +#ifdef __BORLANDC__ + #pragma hdrstop +#endif -struct wxBusyCursor -{ - wxBusyCursor() { wxBeginBusyCursor(); } - ~wxBusyCursor() { wxEndBusyCursor(); } -}; +#if wxUSE_HELP + +#ifndef WX_PRECOMP + #include "wx/setup.h" + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/list.h" + #include "wx/intl.h" +#endif + +#include "wx/helpbase.h" +#include "wx/generic/helpext.h" + +#include +#include +#include + +#if !defined(__WINDOWS__) && !defined(__OS2__) + #include +#endif + +#ifdef __WXMSW__ +#include +#endif IMPLEMENT_CLASS(wxExtHelpController, wxHTMLHelpControllerBase) - + /** This class implements help via an external browser. It requires the name of a directory containing the documentation @@ -57,35 +74,78 @@ wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) m_BrowserIsNetscape = isNetscape; } +// Set viewer: new, generic name for SetBrowser +void wxExtHelpController::SetViewer(const wxString& viewer, long flags) +{ + SetBrowser(viewer, ((flags & wxHELP_NETSCAPE) == wxHELP_NETSCAPE)); +} + bool -wxExtHelpController::DisplayHelp(wxString const &relativeURL) +wxExtHelpController::DisplayHelp(const wxString &relativeURL) { wxBusyCursor b; // display a busy cursor + + +#if defined(__WXMSW__) + wxString url; + url << m_MapFile << '\\' << relativeURL.BeforeFirst('#'); + bool bOk = (int)ShellExecute(NULL, wxT("open"), url.c_str(), + NULL, NULL, SW_SHOWNORMAL ) > 32; + if ( !bOk ) + { + wxLogSysError(_("Cannot open URL '%s'"), relativeURL.c_str()); + return false; + } + else + return true; +#elif defined(__WXPM__) + wxString url; + url << m_MapFile << '\\' << relativeURL.BeforeFirst('#'); +// will have to fix for OS/2, later.....DW +// bool bOk = (int)ShellExecute(NULL, "open", url, +// NULL, NULL, SW_SHOWNORMAL ) > 32; +// if ( !bOk ) +// { +// wxLogSysError(_("Cannot open URL '%s'"), relativeURL.c_str()); +// return false; +// } +// else + return TRUE; +#else + // assume UNIX wxString command; if(m_BrowserIsNetscape) // try re-loading first { wxString lockfile; wxGetHomeDir(&lockfile); - lockfile << WXEXTHELP_SEPARATOR << ".netscape/lock"; +#ifdef __VMS__ + lockfile << WXEXTHELP_SEPARATOR << wxT(".netscape]lock."); + struct stat statbuf; + if(stat(lockfile.fn_str(), &statbuf) == 0) +#else + lockfile << WXEXTHELP_SEPARATOR << wxT(".netscape/lock"); struct stat statbuf; - if(lstat(lockfile.c_str(), &statbuf) == 0) + if(lstat(lockfile.fn_str(), &statbuf) == 0) // cannot use wxFileExists, because it's a link pointing to a // non-existing location if(wxFileExists(lockfile)) - { +#endif + { long success; - command << m_BrowserName << " -remote openURL(" - << "file://" << m_MapFile - << WXEXTHELP_SEPARATOR << relativeURL << ")"; + command << m_BrowserName << wxT(" -remote openURL(") + << wxT("file://") << m_MapFile + << WXEXTHELP_SEPARATOR << relativeURL << wxT(")"); success = wxExecute(command); if(success != 0 ) // returns PID on success return TRUE; } } command = m_BrowserName; - command << " file://" - << m_MapFile << WXEXTHELP_SEPARATOR << relativeURL; - return wxExecute(command) != 0; + command << wxT(" file://") + << m_MapFile << WXEXTHELP_SEPARATOR << relativeURL; + return wxExecute(command) != 0; +#endif } +#endif // wxUSE_HELP