From: Václav Slavík Date: Wed, 19 Jan 2000 23:05:31 +0000 (+0000) Subject: added encoding support to help contents X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/f890e2d474d26e47950717c802a3890497615484 added encoding support to help contents git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/html/helpdata.h b/include/wx/html/helpdata.h index 972c90f732..906d12b13b 100644 --- a/include/wx/html/helpdata.h +++ b/include/wx/html/helpdata.h @@ -24,6 +24,7 @@ #include "wx/string.h" #include "wx/filesys.h" #include "wx/dynarray.h" +#include "wx/font.h" //-------------------------------------------------------------------------------- // helper classes & structs @@ -153,6 +154,7 @@ class WXDLLEXPORT wxHtmlHelpData : public wxObject // See documentation for details on its format. // Returns success. bool AddBookParam(const wxFSFile& bookfile, + wxFontEncoding encoding, const wxString& title, const wxString& contfile, const wxString& indexfile = wxEmptyString, const wxString& deftopic = wxEmptyString, diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp index 8e6b8df21c..bc928a7ccb 100644 --- a/src/html/helpdata.cpp +++ b/src/html/helpdata.cpp @@ -32,6 +32,8 @@ #include "wx/tokenzr.h" #include "wx/wfstream.h" #include "wx/busyinfo.h" +#include "wx/encconv.h" +#include "wx/fontmap.h" #include "wx/html/htmlpars.h" #include "wx/html/htmldefs.h" @@ -384,6 +386,7 @@ void wxHtmlHelpData::SetTempDir(const wxString& path) bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile, + wxFontEncoding encoding, const wxString& title, const wxString& contfile, const wxString& indexfile, const wxString& deftopic, const wxString& path) @@ -391,6 +394,9 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile, wxFileSystem fsys; wxFSFile *fi; wxHtmlBookRecord *bookr; + + int IndexOld = m_IndexCnt, + ContentsOld = m_ContentsCnt; if (! path.IsEmpty()) fsys.ChangePathTo(path, TRUE); @@ -442,6 +448,23 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile, // Now store the contents range bookr->SetContentsRange(cont_start, m_ContentsCnt); + + // Convert encoding, if neccessary: + if (encoding != wxFONTENCODING_SYSTEM) + { + wxFontEncodingArray a = wxEncodingConverter::GetPlatformEquivalents(encoding); + if (a.GetCount() != 0 && a[0] != encoding) + { + int i; + wxEncodingConverter conv; + conv.Init(encoding, a[0]); + + for (i = IndexOld; i < m_IndexCnt; i++) + conv.Convert(m_Index[i].m_Name); + for (i = ContentsOld; i < m_ContentsCnt; i++) + conv.Convert(m_Contents[i].m_Name); + } + } m_BookRecords.Add(bookr); if (m_IndexCnt > 0) @@ -484,9 +507,11 @@ bool wxHtmlHelpData::AddBook(const wxString& book) char linebuf[300]; wxString title = _("noname"), - safetitle, - start = wxEmptyString, - contents = wxEmptyString, index = wxEmptyString; + safetitle, + start = wxEmptyString, + contents = wxEmptyString, + index = wxEmptyString, + charset = wxEmptyString; if (wxIsAbsolutePath(book)) bookFull = book; else bookFull = wxGetCwd() + "/" + book; @@ -512,10 +537,16 @@ bool wxHtmlHelpData::AddBook(const wxString& book) index = linebuf + strlen("Index file="); if (strstr(linebuf, "Contents file=") == linebuf) contents = linebuf + strlen("Contents file="); + if (strstr(linebuf, "Charset=") == linebuf) + charset = linebuf + strlen("Charset="); } while (lineptr != NULL); delete[] buff; - - bool rtval = AddBookParam(*fi, title, contents, index, start, fsys.GetPath()); + + wxFontEncoding enc; + if (charset == wxEmptyString) enc = wxFONTENCODING_SYSTEM; + else enc = wxTheFontMapper -> CharsetToEncoding(charset); + bool rtval = AddBookParam(*fi, enc, + title, contents, index, start, fsys.GetPath()); delete fi; return rtval; }