From afcaf277afb7a5f9f31cfd6c425dd9c3a68dd2ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Karsten=20Ball=C3=BCder?= Date: Thu, 14 Jan 1999 13:11:36 +0000 Subject: [PATCH] Split part of wxExtHelpController into wxHTMLHelpControllerBase to share the filename lookup and URL handling mechanisms with the soon to be created gtk-xmhtml based alternative. Added wxLocale support to allow different translated help files to be used. Tested (no changes to application required) under Solaris. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/helpext.h | 70 +-------- include/wx/generic/helphtml.h | 128 +++++++++++++++ include/wx/intl.h | 4 +- src/generic/helpext.cpp | 231 +--------------------------- src/generic/helphtml.cpp | 282 ++++++++++++++++++++++++++++++++++ src/gtk.inc | 3 +- src/motif.inc | 3 +- 7 files changed, 424 insertions(+), 297 deletions(-) create mode 100644 include/wx/generic/helphtml.h create mode 100644 src/generic/helphtml.cpp diff --git a/include/wx/generic/helpext.h b/include/wx/generic/helpext.h index c920afef85..32033dea06 100644 --- a/include/wx/generic/helpext.h +++ b/include/wx/generic/helpext.h @@ -14,12 +14,8 @@ # pragma interface "wxexthlp.h" #endif -#include "wx/helpbase.h" +#include "wx/generic/helphtml.h" -/// Name for map file. -#define WXEXTHELP_MAPFILE "wxhelp.map" -/// Path separator. -#define WXEXTHELP_SEPARATOR '/' #ifndef WXEXTHELP_DEFAULTBROWSER /// Default browser name. # define WXEXTHELP_DEFAULTBROWSER "netscape" @@ -30,12 +26,6 @@ #define WXEXTHELP_ENVVAR_BROWSER "WX_HELPBROWSER" /// Is browser a netscape browser? #define WXEXTHELP_ENVVAR_BROWSERISNETSCAPE "WX_HELPBROWSER_NS" -/// Maximum line length in map file. -#define WXEXTHELP_BUFLEN 512 -/// Character introducing comments/documentation field in map file. -#define WXEXTHELP_COMMENTCHAR ';' - -class wxExtHelpMapList; /** @@ -57,57 +47,11 @@ class wxExtHelpMapList; Lines starting with ';' will be ignored. */ -class wxExtHelpController : public wxHelpControllerBase +class wxExtHelpController : public wxHTMLHelpControllerBase { DECLARE_CLASS(wxExtHelpController) public: wxExtHelpController(void); - virtual ~wxExtHelpController(void); - - /** This must be called to tell the controller where to find the - documentation. - @param file - NOT a filename, but a directory name. - @return true on success - */ - virtual bool Initialize(const wxString& file, int WXUNUSED(server)) - { return Initialize(file); } - - /** This must be called to tell the controller where to find the - documentation. - @param file - NOT a filename, but a directory name. - @return true on success - */ - virtual bool Initialize(const wxString& file); - - /** If file is "", reloads file given in Initialize. - @file Name of help directory. - @return true on success - */ - virtual bool LoadFile(const wxString& file = ""); - - /** Display list of all help entries. - @return true on success - */ - virtual bool DisplayContents(void); - /** Display help for id sectionNo. - @return true on success - */ - virtual bool DisplaySection(int sectionNo); - /** Display help for id sectionNo -- identical with DisplaySection(). - @return true on success - */ - virtual bool DisplayBlock(long blockNo); - /** Search comment/documentation fields in map file and present a - list to chose from. - @key k string to search for, empty string will list all entries - @return true on success - */ - virtual bool KeywordSearch(const wxString& k); - - /// does nothing - virtual bool Quit(void); - /// does nothing - virtual void OnQuit(void); /** Tell it which browser to use. The Netscape support will check whether Netscape is already @@ -120,20 +64,12 @@ DECLARE_CLASS(wxExtHelpController) void SetBrowser(wxString const & browsername = WXEXTHELP_DEFAULTBROWSER, bool isNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE); private: - /// Filename of currently active map file. - wxString m_MapFile; - /// How many entries do we have in the map file? - int m_NumOfEntries; - /// A list containing all id,url,documentation triples. - wxList *m_MapList; /// How to call the html viewer. wxString m_BrowserName; /// Is the viewer a variant of netscape? bool m_BrowserIsNetscape; /// Call the browser using a relative URL. - bool CallBrowser(wxString const &); - /// Deletes the list and all objects. - void DeleteList(void); + bool DisplayHelp(wxString const &); }; #endif diff --git a/include/wx/generic/helphtml.h b/include/wx/generic/helphtml.h new file mode 100644 index 0000000000..05bfbd947f --- /dev/null +++ b/include/wx/generic/helphtml.h @@ -0,0 +1,128 @@ +/*-*- c++ -*-******************************************************** + * helphtml.h - base class for html based help controllers * + * * + * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * + * * + * $Id$ + *******************************************************************/ +#ifndef WXXHELPHTML_H +#define WXXHELPHTML_H + +#if wxUSE_HELP + +#ifdef __GNUG__ +# pragma interface "helphtml.h" +#endif + +#include "wx/helpbase.h" + +/// Name for map file. +#define WXEXTHELP_MAPFILE "wxhelp.map" +/// Path separator. +#define WXEXTHELP_SEPARATOR '/' +/// Maximum line length in map file. +#define WXEXTHELP_BUFLEN 512 +/// Character introducing comments/documentation field in map file. +#define WXEXTHELP_COMMENTCHAR ';' + +class wxExtHelpMapList; + + +/** + This class is the base class for all html help implementations. + It requires the name of a directory containing the documentation + and a file mapping numerical Section numbers to relative URLS. + + The map file contains two or three fields per line: + numeric_id relative_URL [; comment/documentation] + + The numeric_id is the id used to look up the entry in + DisplaySection()/DisplayBlock(). The relative_URL is a filename of + an html file, relative to the help directory. The optional + comment/documentation field (after a ';') is used for keyword + searches, so some meaningful text here does not hurt. + If the documentation itself contains a ';', only the part before + that will be displayed in the listbox, but all of it used for search. + + Lines starting with ';' will be ignored. +*/ + +class wxHTMLHelpControllerBase : public wxHelpControllerBase +{ +DECLARE_ABSTRACT_CLASS(wxHTMLHelpControllerBase) + public: + wxHTMLHelpControllerBase(void); + virtual ~wxHTMLHelpControllerBase(void); + + /** This must be called to tell the controller where to find the + documentation. + If a locale is set, look in file/localename, i.e. + If passed "/usr/local/myapp/help" and the current wxLocale is + set to be "de", then look in "/usr/local/myapp/help/de/" + first and fall back to "/usr/local/myapp/help" if that + doesn't exist. + + @param file - NOT a filename, but a directory name. + @return true on success + */ + virtual bool Initialize(const wxString& dir, int WXUNUSED(server)) + { return Initialize(dir); } + + /** This must be called to tell the controller where to find the + documentation. + If a locale is set, look in file/localename, i.e. + If passed "/usr/local/myapp/help" and the current wxLocale is + set to be "de", then look in "/usr/local/myapp/help/de/" + first and fall back to "/usr/local/myapp/help" if that + doesn't exist. + @param dir - directory name where to fine the help files + @return true on success + */ + virtual bool Initialize(const wxString& dir); + + /** If file is "", reloads file given in Initialize. + @file Name of help directory. + @return true on success + */ + virtual bool LoadFile(const wxString& file = ""); + + /** Display list of all help entries. + @return true on success + */ + virtual bool DisplayContents(void); + /** Display help for id sectionNo. + @return true on success + */ + virtual bool DisplaySection(int sectionNo); + /** Display help for id sectionNo -- identical with DisplaySection(). + @return true on success + */ + virtual bool DisplayBlock(long blockNo); + /** Search comment/documentation fields in map file and present a + list to chose from. + @key k string to search for, empty string will list all entries + @return true on success + */ + virtual bool KeywordSearch(const wxString& k); + + /// does nothing + virtual bool Quit(void); + /// does nothing + virtual void OnQuit(void); + + /// Call the browser using a relative URL. + virtual bool DisplayHelp(wxString const &) = 0; + + protected: + /// Filename of currently active map file. + wxString m_MapFile; + /// How many entries do we have in the map file? + int m_NumOfEntries; + /// A list containing all id,url,documentation triples. + wxList *m_MapList; + /// Deletes the list and all objects. + void DeleteList(void); +}; + +#endif +#endif diff --git a/include/wx/intl.h b/include/wx/intl.h index 15aecb9391..3edc2edb9a 100644 --- a/include/wx/intl.h +++ b/include/wx/intl.h @@ -110,7 +110,9 @@ public: const char *GetString(const char *szOrigString, const char *szDomain = (const char *) NULL) const; -private: + // Returns the current short name for the locale + wxString const &GetName() const { return m_strShort; } + private: // find catalog by name in a linked list, return NULL if !found wxMsgCatalog *FindCatalog(const char *szDomain) const; diff --git a/src/generic/helpext.cpp b/src/generic/helpext.cpp index c439ce2934..2b79a863b2 100644 --- a/src/generic/helpext.cpp +++ b/src/generic/helpext.cpp @@ -1,7 +1,7 @@ /*-*- c++ -*-******************************************************** - * wxexthlp.cpp - an external help controller for wxWindows * + * helpext.cpp - an external help controller for wxWindows * * * - * (C) 1998 by Karsten Ballüder (Ballueder@usa.net) * + * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * * * * $Id$ *******************************************************************/ @@ -21,25 +21,13 @@ #include - -class wxExtHelpMapEntry : public wxObject -{ -public: - int id; - wxString url; - wxString doc; - wxExtHelpMapEntry(int iid, wxString const &iurl, wxString const &idoc) - { id = iid; url = iurl; doc = idoc; } -}; - - struct wxBusyCursor { wxBusyCursor() { wxBeginBusyCursor(); } ~wxBusyCursor() { wxEndBusyCursor(); } }; -IMPLEMENT_CLASS(wxExtHelpController, wxHelpControllerBase) +IMPLEMENT_CLASS(wxExtHelpController, wxHTMLHelpControllerBase) /** This class implements help via an external browser. @@ -49,10 +37,8 @@ IMPLEMENT_CLASS(wxExtHelpController, wxHelpControllerBase) wxExtHelpController::wxExtHelpController(void) { - m_MapList = (wxList*) NULL; m_BrowserName = WXEXTHELP_DEFAULTBROWSER; m_BrowserIsNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE; - m_NumOfEntries = 0; char *browser = getenv(WXEXTHELP_ENVVAR_BROWSER); if(browser) @@ -63,27 +49,6 @@ wxExtHelpController::wxExtHelpController(void) } } -void -wxExtHelpController::DeleteList(void) -{ - if(m_MapList) - { - wxNode *node = m_MapList->First(); - while (node) - { - delete (wxExtHelpMapEntry *)node->Data(); - delete node; - node = m_MapList->First(); - } - delete m_MapList; - m_MapList = (wxList*) NULL; - } -} - -wxExtHelpController::~wxExtHelpController(void) -{ - DeleteList(); -} void wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) @@ -92,90 +57,8 @@ wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) m_BrowserIsNetscape = isNetscape; } -/** This must be called to tell the controller where to find the - documentation. - @param file - NOT a filename, but a directory name. - @return true on success -*/ -bool -wxExtHelpController::Initialize(const wxString& file) -{ - return LoadFile(file); -} - - bool -wxExtHelpController::LoadFile(const wxString& ifile) -{ - wxString mapFile, file, url, doc; - int id,i,len; - char buffer[WXEXTHELP_BUFLEN]; - - wxBusyCursor b; // display a busy cursor - - if(! ifile.IsEmpty()) - { - file = ifile; - if(! wxIsAbsolutePath(file)) - { - char* f = wxGetWorkingDirectory(); - file = f; - delete[] f; // wxGetWorkingDirectory returns new memory - file << WXEXTHELP_SEPARATOR << ifile; - } - else - file = ifile; - - if(! wxDirExists(file)) - return FALSE; - - mapFile << file << WXEXTHELP_SEPARATOR << WXEXTHELP_MAPFILE; - } - else // try to reload old file - mapFile = m_MapFile; - - if(! wxFileExists(mapFile)) - return FALSE; - - DeleteList(); - m_MapList = new wxList; - m_NumOfEntries = 0; - - FILE *input = fopen(mapFile.c_str(),"rt"); - if(! input) - return FALSE; - do - { - if(fgets(buffer,WXEXTHELP_BUFLEN,input) && *buffer != WXEXTHELP_COMMENTCHAR) - { - len = strlen(buffer); - if(buffer[len-1] == '\n') - buffer[len-1] = '\0'; // cut of trailing newline - if(sscanf(buffer,"%d", &id) != 1) - break; // error - for(i=0; isdigit(buffer[i])||isspace(buffer[i])||buffer[i]=='-'; i++) - ; // find begin of URL - url = ""; - while(buffer[i] && ! isspace(buffer[i]) && buffer[i] != - WXEXTHELP_COMMENTCHAR) - url << buffer[i++]; - while(buffer[i] && buffer[i] != WXEXTHELP_COMMENTCHAR) - i++; - doc = ""; - if(buffer[i]) - doc = (buffer + i + 1); // skip the comment character - m_MapList->Append(new wxExtHelpMapEntry(id,url,doc)); - m_NumOfEntries++; - } - }while(! feof(input)); - fclose(input); - - m_MapFile = file; // now it's valid - return TRUE; -} - -bool -wxExtHelpController::CallBrowser(wxString const &relativeURL) +wxExtHelpController::DisplayHelp(wxString const &relativeURL) { wxBusyCursor b; // display a busy cursor wxString command; @@ -205,110 +88,4 @@ wxExtHelpController::CallBrowser(wxString const &relativeURL) return wxExecute(command) != 0; } -bool -wxExtHelpController::DisplayContents(void) -{ - if(! m_NumOfEntries) - return FALSE; - wxBusyCursor b; // display a busy cursor - return KeywordSearch(""); -} - -bool -wxExtHelpController::DisplaySection(int sectionNo) -{ - if(! m_NumOfEntries) - return FALSE; - - wxBusyCursor b; // display a busy cursor - wxNode *node = m_MapList->First(); - wxExtHelpMapEntry *entry; - while(node) - { - entry = (wxExtHelpMapEntry *)node->Data(); - if(entry->id == sectionNo) - return CallBrowser(entry->url); - node = node->Next(); - } - return FALSE; -} - -bool -wxExtHelpController::DisplayBlock(long blockNo) -{ - return DisplaySection((int)blockNo); -} - -bool -wxExtHelpController::KeywordSearch(const wxString& k) -{ - if(! m_NumOfEntries) - return FALSE; - - wxBusyCursor b; // display a busy cursor - wxString *choices = new wxString[m_NumOfEntries]; - wxString *urls = new wxString[m_NumOfEntries]; - wxString compA, compB; - - int idx = 0, j; - bool rc; - bool showAll = k.IsEmpty(); - wxNode *node = m_MapList->First(); - wxExtHelpMapEntry *entry; - - compA = k; compA.LowerCase(); // we compare case insensitive - while(node) - { - entry = (wxExtHelpMapEntry *)node->Data(); - compB = entry->doc; compB.LowerCase(); - if((showAll || compB.Contains(k)) && ! compB.IsEmpty()) - { - urls[idx] = entry->url; - // doesn't work: - // choices[idx] = (**i).doc.Contains((**i).doc.Before(WXEXTHELP_COMMENTCHAR)); - //if(choices[idx].IsEmpty()) // didn't contain the ';' - // choices[idx] = (**i).doc; - choices[idx] = ""; - for(j=0;entry->doc.c_str()[j] - && entry->doc.c_str()[j] != WXEXTHELP_COMMENTCHAR; j++) - choices[idx] << entry->doc.c_str()[j]; - idx++; - } - node = node->Next(); - } - - if(idx == 1) - rc = CallBrowser(urls[0]); - else if(idx == 0) - { - wxMessageBox(_("No entries found.")); - rc = FALSE; - } - else - { - idx = wxGetSingleChoiceIndex(showAll ? _("Help Index") : _("Relevant entries:"), - showAll ? _("Help Index") : _("Entries found"), - idx,choices); - if(idx != -1) - rc = CallBrowser(urls[idx]); - else - rc = FALSE; - } - delete[] urls; - delete[] choices; - - return rc; -} - - -bool -wxExtHelpController::Quit(void) -{ - return TRUE; -} - -void -wxExtHelpController::OnQuit(void) -{ -} diff --git a/src/generic/helphtml.cpp b/src/generic/helphtml.cpp new file mode 100644 index 0000000000..0d909968b3 --- /dev/null +++ b/src/generic/helphtml.cpp @@ -0,0 +1,282 @@ +/*-*- c++ -*-******************************************************** + * helphtml.cpp - base class for html help systems * + * * + * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * + * * + * $Id$ + *******************************************************************/ +#ifdef __GNUG__ +# pragma implementation "helphtml.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 "wx/intl.h" +#include +#include +#include +#include + + + +class wxExtHelpMapEntry : public wxObject +{ +public: + int id; + wxString url; + wxString doc; + wxExtHelpMapEntry(int iid, wxString const &iurl, wxString const &idoc) + { id = iid; url = iurl; doc = idoc; } +}; + + +struct wxBusyCursor +{ + wxBusyCursor() { wxBeginBusyCursor(); } + ~wxBusyCursor() { wxEndBusyCursor(); } +}; + +IMPLEMENT_ABSTRACT_CLASS(wxHTMLHelpControllerBase, wxHelpControllerBase) + +/** + This class implements help via an external browser. + It requires the name of a directory containing the documentation + and a file mapping numerical Section numbers to relative URLS. +*/ + +wxHTMLHelpControllerBase::wxHTMLHelpControllerBase(void) +{ + m_MapList = (wxList*) NULL; + m_NumOfEntries = 0; +} + +void +wxHTMLHelpControllerBase::DeleteList(void) +{ + if(m_MapList) + { + wxNode *node = m_MapList->First(); + while (node) + { + delete (wxExtHelpMapEntry *)node->Data(); + delete node; + node = m_MapList->First(); + } + delete m_MapList; + m_MapList = (wxList*) NULL; + } +} + +wxHTMLHelpControllerBase::~wxHTMLHelpControllerBase(void) +{ + DeleteList(); +} + +/** This must be called to tell the controller where to find the + documentation. + @param file - NOT a filename, but a directory name. + @return true on success +*/ +bool +wxHTMLHelpControllerBase::Initialize(const wxString& file) +{ + return LoadFile(file); +} + + +// ifile is the name of the base help directory +bool +wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) +{ + wxString mapFile, file, url, doc; + int id,i,len; + char buffer[WXEXTHELP_BUFLEN]; + + wxBusyCursor b; // display a busy cursor + + if(! ifile.IsEmpty()) + { + file = ifile; + if(! wxIsAbsolutePath(file)) + { + char* f = wxGetWorkingDirectory(); + file = f; + delete[] f; // wxGetWorkingDirectory returns new memory + file << WXEXTHELP_SEPARATOR << ifile; + } + else + file = ifile; + + // If a locale is set, look in file/localename, i.e. + // If passed "/usr/local/myapp/help" and the current wxLocale is + // set to be "de", then look in "/usr/local/myapp/help/de/" + // first and fall back to "/usr/local/myapp/help" if that + // doesn't exist. + if(wxGetLocale() && !wxGetLocale()->GetName().IsEmpty()) + { + wxString newfile; + newfile << WXEXTHELP_SEPARATOR << wxGetLocale()->GetName(); + if(wxDirExists(newfile)) + file = newfile; + } + + if(! wxDirExists(file)) + return FALSE; + + mapFile << file << WXEXTHELP_SEPARATOR << WXEXTHELP_MAPFILE; + } + else // try to reload old file + mapFile = m_MapFile; + + if(! wxFileExists(mapFile)) + return FALSE; + + DeleteList(); + m_MapList = new wxList; + m_NumOfEntries = 0; + + FILE *input = fopen(mapFile.c_str(),"rt"); + if(! input) + return FALSE; + do + { + if(fgets(buffer,WXEXTHELP_BUFLEN,input) && *buffer != WXEXTHELP_COMMENTCHAR) + { + len = strlen(buffer); + if(buffer[len-1] == '\n') + buffer[len-1] = '\0'; // cut of trailing newline + if(sscanf(buffer,"%d", &id) != 1) + break; // error + for(i=0; isdigit(buffer[i])||isspace(buffer[i])||buffer[i]=='-'; i++) + ; // find begin of URL + url = ""; + while(buffer[i] && ! isspace(buffer[i]) && buffer[i] != + WXEXTHELP_COMMENTCHAR) + url << buffer[i++]; + while(buffer[i] && buffer[i] != WXEXTHELP_COMMENTCHAR) + i++; + doc = ""; + if(buffer[i]) + doc = (buffer + i + 1); // skip the comment character + m_MapList->Append(new wxExtHelpMapEntry(id,url,doc)); + m_NumOfEntries++; + } + }while(! feof(input)); + fclose(input); + + m_MapFile = file; // now it's valid + return TRUE; +} + + +bool +wxHTMLHelpControllerBase::DisplayContents(void) +{ + if(! m_NumOfEntries) + return FALSE; + wxBusyCursor b; // display a busy cursor + return KeywordSearch(""); +} + +bool +wxHTMLHelpControllerBase::DisplaySection(int sectionNo) +{ + if(! m_NumOfEntries) + return FALSE; + + wxBusyCursor b; // display a busy cursor + wxNode *node = m_MapList->First(); + wxExtHelpMapEntry *entry; + while(node) + { + entry = (wxExtHelpMapEntry *)node->Data(); + if(entry->id == sectionNo) + return DisplayHelp(entry->url); + node = node->Next(); + } + return FALSE; +} + +bool +wxHTMLHelpControllerBase::DisplayBlock(long blockNo) +{ + return DisplaySection((int)blockNo); +} + +bool +wxHTMLHelpControllerBase::KeywordSearch(const wxString& k) +{ + if(! m_NumOfEntries) + return FALSE; + + wxBusyCursor b; // display a busy cursor + wxString *choices = new wxString[m_NumOfEntries]; + wxString *urls = new wxString[m_NumOfEntries]; + wxString compA, compB; + + int idx = 0, j; + bool rc; + bool showAll = k.IsEmpty(); + wxNode *node = m_MapList->First(); + wxExtHelpMapEntry *entry; + + compA = k; compA.LowerCase(); // we compare case insensitive + while(node) + { + entry = (wxExtHelpMapEntry *)node->Data(); + compB = entry->doc; compB.LowerCase(); + if((showAll || compB.Contains(k)) && ! compB.IsEmpty()) + { + urls[idx] = entry->url; + // doesn't work: + // choices[idx] = (**i).doc.Contains((**i).doc.Before(WXEXTHELP_COMMENTCHAR)); + //if(choices[idx].IsEmpty()) // didn't contain the ';' + // choices[idx] = (**i).doc; + choices[idx] = ""; + for(j=0;entry->doc.c_str()[j] + && entry->doc.c_str()[j] != WXEXTHELP_COMMENTCHAR; j++) + choices[idx] << entry->doc.c_str()[j]; + idx++; + } + node = node->Next(); + } + + if(idx == 1) + rc = DisplayHelp(urls[0]); + else if(idx == 0) + { + wxMessageBox(_("No entries found.")); + rc = FALSE; + } + else + { + idx = wxGetSingleChoiceIndex(showAll ? _("Help Index") : _("Relevant entries:"), + showAll ? _("Help Index") : _("Entries found"), + idx,choices); + if(idx != -1) + rc = DisplayHelp(urls[idx]); + else + rc = FALSE; + } + delete[] urls; + delete[] choices; + + return rc; +} + + +bool +wxHTMLHelpControllerBase::Quit(void) +{ + return TRUE; +} + +void +wxHTMLHelpControllerBase::OnQuit(void) +{ +} + diff --git a/src/gtk.inc b/src/gtk.inc index 8984fd7809..f566ff981e 100644 --- a/src/gtk.inc +++ b/src/gtk.inc @@ -143,7 +143,8 @@ LIB_CPP_SRC=\ generic/tabg.cpp \ generic/textdlgg.cpp \ generic/treectrl.cpp \ - generic/helpext.cpp + generic/helpext.cpp \ + generic/helphtml.cpp LIB_C_SRC=\ common/extended.c \ diff --git a/src/motif.inc b/src/motif.inc index b5dc556831..f56f9860db 100644 --- a/src/motif.inc +++ b/src/motif.inc @@ -134,6 +134,7 @@ LIB_CPP_SRC=\ generic/fontdlgg.cpp \ generic/gridg.cpp \ generic/helpext.cpp \ + generic/helphtml.cpp \ generic/imaglist.cpp \ generic/listctrl.cpp \ generic/laywin.cpp \ @@ -157,4 +158,4 @@ LIB_C_SRC=\ \ motif/xmcombo/xmcombo.c \ \ - common/extended.c \ No newline at end of file + common/extended.c -- 2.45.2