diff --git a/include/wx/html/helpdata.h b/include/wx/html/helpdata.h index 72612cf2b1..cf318613f2 100644 --- a/include/wx/html/helpdata.h +++ b/include/wx/html/helpdata.h @@ -93,23 +93,23 @@ struct wxHtmlContentsItem }; //------------------------------------------------------------------------------ -// wxSearchEngine +// wxHtmlSearchEngine // This class takes input streams and scans them for occurence // of keyword(s) //------------------------------------------------------------------------------ -class WXDLLEXPORT wxSearchEngine : public wxObject +class WXDLLEXPORT wxHtmlSearchEngine : public wxObject { public: - wxSearchEngine() : wxObject() {m_Keyword = NULL; } - ~wxSearchEngine() {if (m_Keyword) delete[] m_Keyword; } + wxHtmlSearchEngine() : wxObject() {m_Keyword = NULL; } + ~wxHtmlSearchEngine() {if (m_Keyword) delete[] m_Keyword; } // Sets the keyword we will be searching for virtual void LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only); // Scans the stream for the keyword. // Returns TRUE if the stream contains keyword, fALSE otherwise - virtual bool Scan(wxInputStream *stream); + virtual bool Scan(const wxFSFile& file); private: wxChar *m_Keyword; @@ -139,7 +139,7 @@ public: private: wxHtmlHelpData* m_Data; - wxSearchEngine m_Engine; + wxHtmlSearchEngine m_Engine; wxString m_Keyword, m_Name; wxChar *m_LastPage; wxHtmlContentsItem* m_ContentsItem; diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp index 9c430b0b06..51d0f334d3 100644 --- a/src/html/helpdata.cpp +++ b/src/html/helpdata.cpp @@ -40,6 +40,7 @@ #include "wx/log.h" #include "wx/html/htmlpars.h" #include "wx/html/htmldefs.h" +#include "wx/html/htmlfilt.h" #include "wx/filename.h" #include "wx/arrimpl.cpp" @@ -250,12 +251,10 @@ wxHtmlHelpData::~wxHtmlHelpData() } } -// defined in htmlfilt.cpp -void wxPrivate_ReadString(wxString& str, wxInputStream* s, wxMBConv& conv); - bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, const wxString& indexfile, const wxString& contentsfile) { wxFSFile *f; + wxHtmlFilterHTML filter; wxString buf; wxString string; @@ -267,27 +266,31 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c if (f) { buf.clear(); - wxPrivate_ReadString(buf, f->GetStream(), wxConvLibc /*FIXME?*/); + buf = filter.ReadFile(*f); delete f; handler->ReadIn(m_Contents, m_ContentsCnt); parser.Parse(buf); handler->WriteOut(m_Contents, m_ContentsCnt); } else + { wxLogError(_("Cannot open contents file: %s"), contentsfile.c_str()); + } f = ( indexfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(indexfile) ); if (f) { buf.clear(); - wxPrivate_ReadString(buf, f->GetStream(), wxConvLibc /*FIXME?*/); + buf = filter.ReadFile(*f); delete f; handler->ReadIn(m_Index, m_IndexCnt); parser.Parse(buf); handler->WriteOut(m_Index, m_IndexCnt); } else if (!indexfile.IsEmpty()) + { wxLogError(_("Cannot open index file: %s"), indexfile.c_str()); + } return TRUE; } @@ -567,7 +570,6 @@ bool wxHtmlHelpData::AddBook(const wxString& book) { wxFSFile *fi; wxFileSystem fsys; - wxInputStream *s; wxString bookFull; wxString title = _("noname"), @@ -594,13 +596,12 @@ bool wxHtmlHelpData::AddBook(const wxString& book) return FALSE; } fsys.ChangePathTo(bookFull); - s = fi->GetStream(); const wxChar *lineptr; wxChar linebuf[300]; wxString tmp; - - wxPrivate_ReadString(tmp, s, wxConvLibc /*FIXME?*/); + wxHtmlFilterPlainText filter; + tmp = filter.ReadFile(*fi); lineptr = tmp.c_str(); do @@ -785,7 +786,7 @@ bool wxHtmlSearchStatus::Search() 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)) { m_Name = m_Data->m_Contents[i].m_Name; m_ContentsItem = m_Data->m_Contents + i; @@ -804,10 +805,10 @@ bool wxHtmlSearchStatus::Search() //-------------------------------------------------------------------------------- -// wxSearchEngine +// wxHtmlSearchEngine //-------------------------------------------------------------------------------- -void wxSearchEngine::LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only) +void wxHtmlSearchEngine::LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only) { m_CaseSensitive = case_sensitive; m_WholeWords = whole_words_only; @@ -831,16 +832,15 @@ static inline bool WHITESPACE(wxChar c) return c == _T(' ') || c == _T('\n') || c == _T('\r') || c == _T('\t'); } -bool wxSearchEngine::Scan(wxInputStream *stream) +bool wxHtmlSearchEngine::Scan(const wxFSFile& file) { - wxASSERT_MSG(m_Keyword != NULL, wxT("wxSearchEngine::LookFor must be called before scanning!")); + wxASSERT_MSG(m_Keyword != NULL, wxT("wxHtmlSearchEngine::LookFor must be called before scanning!")); int i, j; int wrd = wxStrlen(m_Keyword); bool found = FALSE; - wxString tmp; - wxPrivate_ReadString(tmp, stream, wxConvLibc); - // FIXME - use wxHtmlFilters instead of wxPrivate_ReadString !!!!!! + wxHtmlFilterHTML filter; + wxString tmp = filter.ReadFile(file); int lng = tmp.length(); const wxChar *buf = tmp.c_str(); diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index 40b7565107..a2dfa82097 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -269,9 +269,6 @@ void wxHtmlPrintout::SetHtmlText(const wxString& html, const wxString &basepath, m_BasePathIsDir = isdir; } -// defined in htmlfilt.cpp -void wxPrivate_ReadString(wxString& str, wxInputStream* s, wxMBConv& conv); - void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile) { wxFileSystem fs; @@ -283,13 +280,11 @@ void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile) return; } - wxInputStream *st = ff->GetStream(); - wxString doc; - wxPrivate_ReadString(doc, st, wxConvLibc /*FIXME -- use wxHtmlFilter!!*/); - - delete ff; - + wxHtmlFilterHTML filter; + wxString doc = filter.ReadFile(*ff); + SetHtmlText(doc, htmlfile, FALSE); + delete ff; }