// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
+#error This file should not be compiled! Update your build system! \
+(configure users, rerun configure to get a new Makefile) \
+Instead of htmlhelp[_io], use helpdata, helpfrm and helpctrl. This \
+file is only left to point out the problem and will be removed r.s.n.
#ifdef __GNUG__
-#pragma implementation
+#pragma implementation "htmlhelp.h"
#endif
-#include <wx/wxprec.h>
+#include "wx/wxprec.h"
-#include "wx/defs.h"
#if wxUSE_HTML
#ifdef __BORDLANDC__
#endif
#ifndef WXPRECOMP
-#include <wx/wx.h>
#endif
-
#include <wx/notebook.h>
#include <wx/imaglist.h>
#include <wx/treectrl.h>
// Bitmaps:
#ifndef __WXMSW__
-#include "bitmaps/panel.xpm"
-#include "bitmaps/back.xpm"
-#include "bitmaps/forward.xpm"
-#include "bitmaps/book.xpm"
-#include "bitmaps/folder.xpm"
-#include "bitmaps/page.xpm"
-#endif
-
-#include "search.h"
-
-
-
-//-----------------------------------------------------------------------------
-// Helper constants
-//-----------------------------------------------------------------------------
-
-
-// Command IDs :
-
-enum {
- wxID_HTML_PANEL = wxID_HIGHEST + 1,
- wxID_HTML_BACK,
- wxID_HTML_FORWARD,
- wxID_HTML_TREECTRL,
- wxID_HTML_INDEXPAGE,
- wxID_HTML_INDEXLIST,
- wxID_HTML_NOTEBOOK,
- wxID_HTML_SEARCHPAGE,
- wxID_HTML_SEARCHTEXT,
- wxID_HTML_SEARCHLIST,
- wxID_HTML_SEARCHBUTTON
-};
-
-
-// Images:
-
-enum {
- IMG_Book = 0,
- IMG_Folder,
- IMG_Page
-};
-
-
-
-
+ // XPM hack: make the arrays const
+ #define static static const
+ #include "bitmaps/panel.xpm"
+ #include "bitmaps/back.xpm"
+ #include "bitmaps/forward.xpm"
+ #include "bitmaps/book.xpm"
+ #include "bitmaps/folder.xpm"
+ #include "bitmaps/page.xpm"
-class HtmlHelpTreeItemData : public wxTreeItemData
-{
- private:
- wxString m_Page;
-
- public:
- HtmlHelpTreeItemData(HtmlContentsItem *it) : wxTreeItemData() {m_Page = it -> m_Book -> GetBasePath() + it -> m_Page;}
- const wxString& GetPage() {return m_Page;}
-};
+ #undef static
+#endif
+#include "search.h"
m_ContentsCnt = 0;
m_Index = NULL;
m_IndexCnt = 0;
+
+ m_IndexBox = NULL;
+ m_ContentsBox = NULL;
+ m_SearchList = NULL;
+ m_SearchText = NULL;
+ m_SearchButton = NULL;
+ m_HtmlWin = NULL;
+ m_Splitter = NULL;
+ m_NavigPan = NULL;
}
delete m_ContentsImageList;
if (m_Contents) {
for (i = 0; i < m_ContentsCnt; i++) {
- free(m_Contents[i].m_Page);
- free(m_Contents[i].m_Name);
+ delete[] m_Contents[i].m_Page;
+ delete[] m_Contents[i].m_Name;
}
free(m_Contents);
}
if (m_Index) {
for (i = 0; i < m_IndexCnt; i++) {
- free(m_Index[i].m_Page);
- free(m_Index[i].m_Name);
+ delete[] m_Index[i].m_Page;
+ delete[] m_Index[i].m_Name;
}
free(m_Index);
}
static wxString SafeFileName(const wxString& s)
{
wxString res = s;
- res.Replace(":", "_", TRUE);
- res.Replace(" ", "_", TRUE);
- res.Replace("/", "_", TRUE);
- res.Replace("\\", "_", TRUE);
- res.Replace("#", "_", TRUE);
- res.Replace(".", "_", TRUE);
+ res.Replace(_T(":"), _T("_"), TRUE);
+ res.Replace(_T(" "), _T("_"), TRUE);
+ res.Replace(_T("/"), _T("_"), TRUE);
+ res.Replace(_T("\\"), _T("_"), TRUE);
+ res.Replace(_T("#"), _T("_"), TRUE);
+ res.Replace(_T("."), _T("_"), TRUE);
return res;
}
-bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg = FALSE)
+bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg)
{
wxFSFile *fi;
wxFileSystem fsys;
int sz;
char *buff, *lineptr;
char linebuf[300];
-
+
wxString title = _("noname"),
safetitle,
start = wxEmptyString,
contents = wxEmptyString, index = wxEmptyString;
-
+
if (wxIsAbsolutePath(book)) bookFull = book;
else bookFull = wxGetCwd() + "/" + book;
if (fi == NULL) return FALSE;
fsys.ChangePathTo(bookFull);
s = fi -> GetStream();
- sz = s -> StreamSize();
- buff = (char*) malloc(sz+1);
+ sz = s -> GetSize();
+ buff = new char[sz+1];
buff[sz] = 0;
s -> Read(buff, sz);
lineptr = buff;
if (strstr(linebuf, "Contents file=") == linebuf)
contents = linebuf + strlen("Contents file=");
}
- free(buff);
+ delete[] buff;
bookr = new HtmlBookRecord(fsys.GetPath(), title, start);
m_Contents = (HtmlContentsItem*) realloc(m_Contents, (m_ContentsCnt + HTML_REALLOC_STEP) * sizeof(HtmlContentsItem));
m_Contents[m_ContentsCnt].m_Level = 0;
m_Contents[m_ContentsCnt].m_ID = 0;
- m_Contents[m_ContentsCnt].m_Page = (char*) malloc(start.Length() + 1);
+ m_Contents[m_ContentsCnt].m_Page = new char[start.Length() + 1];
strcpy(m_Contents[m_ContentsCnt].m_Page, start.c_str());
- m_Contents[m_ContentsCnt].m_Name = (char*) malloc(title.Length() + 1);
+ m_Contents[m_ContentsCnt].m_Name = new char [title.Length() + 1];
strcpy(m_Contents[m_ContentsCnt].m_Name, title.c_str());
m_Contents[m_ContentsCnt].m_Book = bookr;
m_ContentsCnt++;
m_BookRecords.Add(bookr);
if (m_IndexCnt > 0)
qsort(m_Index, m_IndexCnt, sizeof(HtmlContentsItem), IndexCompareFunc);
-
+
return TRUE;
}
public:
bool m_Canceled;
- MyProgressDlg(wxWindow *parent) : wxDialog(parent, -1,
- _("Searching..."),
- wxPoint(0, 0),
+ MyProgressDlg(wxWindow *parent) : wxDialog(parent, -1,
+ _("Searching..."),
+ wxPoint(0, 0),
#ifdef __WXGTK__
- wxSize(300, 110))
+ wxSize(300, 110)
#else
- wxSize(300, 130))
+ wxSize(300, 130)
#endif
+ )
{m_Canceled = FALSE;}
void OnCancel(wxCommandEvent& event) {m_Canceled = TRUE;}
DECLARE_EVENT_TABLE()
#endif
-
+
bool wxHtmlHelpController::KeywordSearch(const wxString& keyword)
{
int foundcnt = 0;
-
CreateHelpWindow();
+ // if these are not set, we can't continue
+ if (! (m_SearchList && m_HtmlWin))
+ return FALSE;
m_Frame -> Raise();
- if (!m_Splitter -> IsSplit()) {
- m_NavigPan -> Show(TRUE);
- m_HtmlWin -> Show(TRUE);
- m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+ if (m_Splitter && m_NavigPan && m_SearchButton) {
+ if (!m_Splitter -> IsSplit()) {
+ m_NavigPan -> Show(TRUE);
+ m_HtmlWin -> Show(TRUE);
+ m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
+ }
+ m_NavigPan -> SetSelection(2);
+ m_SearchList -> Clear();
+ m_SearchText -> SetValue(keyword);
+ m_SearchButton -> Enable(FALSE);
}
- m_NavigPan -> SetSelection(2);
- m_SearchList -> Clear();
- m_SearchText -> SetValue(keyword);
- m_SearchButton -> Enable(FALSE);
-
{
int cnt = m_ContentsCnt;
wxSearchEngine engine;
progress.Close(TRUE);
#endif
}
-
- m_SearchButton -> Enable(TRUE);
- m_SearchText -> SetSelection(0, keyword.Length());
- m_SearchText -> SetFocus();
+ if (m_SearchButton)
+ m_SearchButton -> Enable(TRUE);
+ if (m_SearchText) {
+ m_SearchText -> SetSelection(0, keyword.Length());
+ m_SearchText -> SetFocus();
+ }
if (foundcnt) {
HtmlContentsItem *it = (HtmlContentsItem*) m_SearchList -> GetClientData(0);
if (it) m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page);
if (m_Frame) {
m_Frame -> Raise();
- m_Frame -> Show(TRUE);
+ m_Frame -> Show(TRUE);
return;
}
+#if wxUSE_BUSYINFO
wxBusyInfo busyinfo(_("Preparing help window..."));
+#endif
if (m_Config) ReadCustomization(m_Config, m_ConfigRoot);
for (int i = 0; i < count; i++) {
it = m_Contents + i;
- roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(roots[it -> m_Level], it -> m_Name, IMG_Page, -1, new HtmlHelpTreeItemData(it));
+ roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(roots[it -> m_Level], it -> m_Name, IMG_Page, -1, new wxHtmlHelpTreeItemData(it));
if (it -> m_Level == 0) {
m_ContentsBox -> SetItemBold(roots[1], TRUE);
m_ContentsBox -> SetItemImage(roots[1], IMG_Book);
cfg -> SetPath(path);
}
- m_Cfg.navig_on = (bool) cfg -> Read("hcNavigPanel", m_Cfg.navig_on);
+ m_Cfg.navig_on = cfg -> Read("hcNavigPanel", m_Cfg.navig_on) != 0;
m_Cfg.sashpos = cfg -> Read("hcSashPos", m_Cfg.sashpos);
m_Cfg.x = cfg -> Read("hcX", m_Cfg.x);
m_Cfg.y = cfg -> Read("hcY", m_Cfg.y);
void wxHtmlHelpController::OnContentsSel(wxTreeEvent& event)
{
- HtmlHelpTreeItemData *pg;
+ wxHtmlHelpTreeItemData *pg;
- pg = (HtmlHelpTreeItemData*) m_ContentsBox -> GetItemData(event.GetItem());
+ pg = (wxHtmlHelpTreeItemData*) m_ContentsBox -> GetItemData(event.GetItem());
if (pg) m_HtmlWin -> LoadPage(pg -> GetPage());
}