wxHtmlContentsItem *m_Items;
int m_ItemsCnt;
wxHtmlBookRecord *m_Book;
- bool m_firstTime; // For checking if we're adding sections at level zero, so we 'delete' the first one
public:
HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler()
{ m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString;
- m_Level = 0; m_ID = -1; m_firstTime = TRUE; }
+ m_Level = 0; m_ID = -1; }
wxString GetSupportedTags() { return wxT("UL,OBJECT,PARAM"); }
bool HandleTag(const wxHtmlTag& tag);
void WriteOut(wxHtmlContentsItem*& array, int& size);
m_Name = m_Page = wxEmptyString;
ParseInner(tag);
- if (tag.GetParam("TYPE") == "text/sitemap")
-
- // if (!m_Page.IsEmpty())
+#if 0
+ if (!m_Page.IsEmpty())
/* Valid HHW's file may contain only two object tags:
<OBJECT type="text/site properties">
We're interested in the latter. !m_Page.IsEmpty() is valid
condition because text/site properties does not contain Local param
*/
+#endif
+ if (tag.GetParam(wxT("TYPE")) == wxT("text/sitemap"))
{
- // We're reading in items at level zero, which must mean we want to specify
- // our own 'books', so chuck out the first (empty) one that AddBook already
- // created
- if (m_firstTime && (m_Level == 0) && (m_ItemsCnt > 0))
- {
- m_ItemsCnt --;
- }
- else
- {
- if (m_ItemsCnt % wxHTML_REALLOC_STEP == 0)
- m_Items = (wxHtmlContentsItem*) realloc(m_Items, (m_ItemsCnt + wxHTML_REALLOC_STEP) * sizeof(wxHtmlContentsItem));
- }
+ if (m_ItemsCnt % wxHTML_REALLOC_STEP == 0)
+ m_Items = (wxHtmlContentsItem*) realloc(m_Items,
+ (m_ItemsCnt + wxHTML_REALLOC_STEP) *
+ sizeof(wxHtmlContentsItem));
+
m_Items[m_ItemsCnt].m_Level = m_Level;
m_Items[m_ItemsCnt].m_ID = m_ID;
m_Items[m_ItemsCnt].m_Page = new wxChar[m_Page.Length() + 1];
wxStrcpy(m_Items[m_ItemsCnt].m_Name, m_Name.c_str());
m_Items[m_ItemsCnt].m_Book = m_Book;
m_ItemsCnt++;
-
- m_firstTime = FALSE;
}
return TRUE;
{
ESCSEQ("quot", "\""),
ESCSEQ("#34", "\""),
+ ESCSEQ("#8220", "\""),
+ ESCSEQ("#8221", "\""),
ESCSEQ("lt", "<"),
ESCSEQ("#60", "<"),
ESCSEQ("gt", ">"),
ESCSEQ("trade", "(TM)"),
ESCSEQ("#153", "(TM)"),
+ ESCSEQ("#8482", "(TM)"),
ESCSEQ("yen", "¥"),
ESCSEQ("#165", "¥"),
ESCSEQ("Uuml", "\334"/* Ü */),
ESCSEQ("szlig", "\247"/* § */),
- ESCSEQ("agrave;","à"),
+ ESCSEQ("agrave","à"),
ESCSEQ("aacute", "\341"/* á */),
ESCSEQ("acirc", "\342"/* â */),
ESCSEQ("atilde", "\343"/* ã */),
ESCSEQ("yuml", ""),
- ESCSEQ("#60", "<"),
- ESCSEQ("#62", ">"),
-
/* this one should ALWAYS stay the last one!!! */
ESCSEQ("amp", "&"),
ESCSEQ("#38", "&"),
// wxHtmlHelpData
//-----------------------------------------------------------------------------
+wxString wxHtmlBookRecord::GetFullPath(const wxString &page) const
+{
+ if (wxIsAbsolutePath(page))
+ return page;
+ else
+ return m_BasePath + page;
+}
+
+
+
IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpData, wxObject)
wxHtmlHelpData::wxHtmlHelpData()
cnt = m_BookRecords.GetCount();
for (i = 0; i < cnt; i++)
{
- f = fsys.OpenFile(m_BookRecords[i].GetBasePath() + x);
+ f = fsys.OpenFile(m_BookRecords[i].GetFullPath(x));
if (f)
{
- url = m_BookRecords[i].GetBasePath() + x;
+ url = m_BookRecords[i].GetFullPath(x);
delete f;
return url;
}
{
if (m_BookRecords[i].GetTitle() == x)
{
- url = m_BookRecords[i].GetBasePath() + m_BookRecords[i].GetStart();
+ url = m_BookRecords[i].GetFullPath(m_BookRecords[i].GetStart());
return url;
}
}
{
if (wxStrcmp(m_Contents[i].m_Name, x) == 0)
{
- url = m_Contents[i].m_Book->GetBasePath() + m_Contents[i].m_Page;
+ url = m_Contents[i].GetFullPath();
return url;
}
}
{
if (wxStrcmp(m_Index[i].m_Name, x) == 0)
{
- url = m_Index[i].m_Book->GetBasePath() + m_Index[i].m_Page;
+ url = m_Index[i].GetFullPath();
return url;
}
}
{
if (m_Contents[i].m_ID == id)
{
- url = m_Contents[i].m_Book->GetBasePath() + m_Contents[i].m_Page;
+ url = m_Contents[i].GetFullPath();
return url;
}
}
else m_LastPage = thepage;
wxFileSystem fsys;
- file = fsys.OpenFile(m_Data->m_Contents[i].m_Book->GetBasePath() + thepage);
+ file = fsys.OpenFile(m_Data->m_Contents[i].m_Book->GetFullPath(thepage));
if (file)
{
- if (m_Engine.Scan(file->GetStream())) {
+ if (m_Engine.Scan(file->GetStream()))
+ {
m_Name = m_Data->m_Contents[i].m_Name;
m_ContentsItem = m_Data->m_Contents + i;
found = TRUE;
-
#endif