// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
-// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
wxString wxHtmlBookRecord::GetFullPath(const wxString &page) const
{
- if (wxIsAbsolutePath(page))
+ if (wxIsAbsolutePath(page) || page.Find(wxT("file:")) == 0)
return page;
else
return m_BasePath + page;
m_tempPath = path;
else
{
- if (wxIsAbsolutePath(path)) m_tempPath = path;
- else m_tempPath = wxGetCwd() + wxT("/") + path;
+ wxFileName fn;
+ fn.AssignDir(path);
+ fn.MakeAbsolute();
- if (m_tempPath[m_tempPath.length() - 1] != wxT('/'))
- m_tempPath << wxT('/');
+ m_tempPath = fn.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR);
}
}
const wxString& indexfile, const wxString& deftopic,
const wxString& path)
{
+#if wxUSE_WCHAR_T
+ #if wxUSE_UNICODE
+ #define CORRECT_STR(str, conv) \
+ str = wxString((str).mb_str(wxConvISO8859_1), conv)
+ #else
+ #define CORRECT_STR(str, conv) \
+ str = wxString((str).wc_str(conv), wxConvLocal)
+ #endif
+#else
+ #define CORRECT_STR(str, conv)
+#endif
+
wxFileSystem fsys;
wxFSFile *fi;
wxHtmlBookRecord *bookr;
return true; // book is (was) loaded
}
- bookr = new wxHtmlBookRecord(bookfile.GetLocation(), fsys.GetPath(), title, deftopic);
+ wxString title1 = title;
+ if (encoding != wxFONTENCODING_SYSTEM)
+ {
+ wxCSConv conv(encoding);
+ CORRECT_STR(title1, conv);
+ if (title1.IsEmpty() && !title.IsEmpty())
+ title1 = title;
+ }
+
+ bookr = new wxHtmlBookRecord(bookfile.GetLocation(), fsys.GetPath(), title1, deftopic);
wxHtmlHelpDataItem *bookitem = new wxHtmlHelpDataItem;
bookitem->level = 0;
// Now store the contents range
bookr->SetContentsRange(cont_start, m_contents.size());
-#if wxUSE_WCHAR_T
// MS HTML Help files [written by MS HTML Help Workshop] are broken
// in that the data are iso-8859-1 (including HTML entities), but must
// be interpreted as being in language's windows charset. Correct the
// differences here and also convert to wxConvLocal in ANSI build
if (encoding != wxFONTENCODING_SYSTEM)
{
- #if wxUSE_UNICODE
- #define CORRECT_STR(str, conv) \
- str = wxString((str).mb_str(wxConvISO8859_1), conv)
- #else
- #define CORRECT_STR(str, conv) \
- str = wxString((str).wc_str(conv), wxConvLocal)
- #endif
wxCSConv conv(encoding);
size_t IndexCnt = m_index.size();
size_t ContentsCnt = m_contents.size();
}
#undef CORRECT_STR
}
-#else
- wxUnusedVar(IndexOld);
- wxUnusedVar(ContentsOld);
- wxASSERT_MSG(encoding == wxFONTENCODING_SYSTEM, wxT("Help files need charset conversion, but wxUSE_WCHAR_T is 0"));
-#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
m_bookRecords.Add(bookr);
if (!m_index.empty())