1 /*-*- c++ -*-********************************************************
2 * helpext.cpp - an external help controller for wxWindows *
4 * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) *
7 *******************************************************************/
9 # pragma implementation "wxexthlp.h"
13 #include "wx/helpbase.h"
14 #include "wx/generic/helpext.h"
15 #include "wx/string.h"
26 wxBusyCursor() { wxBeginBusyCursor(); }
27 ~wxBusyCursor() { wxEndBusyCursor(); }
30 IMPLEMENT_CLASS(wxExtHelpController
, wxHTMLHelpControllerBase
)
33 This class implements help via an external browser.
34 It requires the name of a directory containing the documentation
35 and a file mapping numerical Section numbers to relative URLS.
38 wxExtHelpController::wxExtHelpController(void)
40 m_BrowserName
= WXEXTHELP_DEFAULTBROWSER
;
41 m_BrowserIsNetscape
= WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE
;
43 char *browser
= getenv(WXEXTHELP_ENVVAR_BROWSER
);
46 m_BrowserName
= browser
;
47 browser
= getenv(WXEXTHELP_ENVVAR_BROWSERISNETSCAPE
);
48 m_BrowserIsNetscape
= browser
&& (atoi(browser
) != 0);
54 wxExtHelpController::SetBrowser(wxString
const & browsername
, bool isNetscape
)
56 m_BrowserName
= browsername
;
57 m_BrowserIsNetscape
= isNetscape
;
61 wxExtHelpController::DisplayHelp(wxString
const &relativeURL
)
63 wxBusyCursor b
; // display a busy cursor
66 if(m_BrowserIsNetscape
) // try re-loading first
69 wxGetHomeDir(&lockfile
);
70 lockfile
<< WXEXTHELP_SEPARATOR
<< ".netscape/lock";
72 if(lstat(lockfile
.c_str(), &statbuf
) == 0)
73 // cannot use wxFileExists, because it's a link pointing to a
74 // non-existing location if(wxFileExists(lockfile))
77 command
<< m_BrowserName
<< " -remote openURL("
78 << "file://" << m_MapFile
79 << WXEXTHELP_SEPARATOR
<< relativeURL
<< ")";
80 success
= wxExecute(command
);
81 if(success
!= 0 ) // returns PID on success
85 command
= m_BrowserName
;
87 << m_MapFile
<< WXEXTHELP_SEPARATOR
<< relativeURL
;
88 return wxExecute(command
) != 0;