1) some cleanup in wxHtmlWindow, moved private structures out of headers

2) added wxHtmlProcessor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9978 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2001-05-02 23:08:47 +00:00
parent 75e0142942
commit 892aeafc2a
3 changed files with 237 additions and 84 deletions

View File

@@ -0,0 +1,56 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlprep.h
// Purpose: HTML processor
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 2001 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLPREP_H_
#define _WX_HTMLPREP_H_
#ifdef __GNUG__
#pragma interface "htmlprep.h"
// (implementation is in htmlwin.cpp, there's no htmlprep.cpp!)
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/string.h"
// Priority of preprocessor in the chain. The higher, the earlier it is used
enum
{
wxHTML_PRIORITY_DONTCARE = 128, // if the order doesn't matter, use this
// priority
wxHTML_PRIORITY_SYSTEM = 256 // >=256 is only for wxHTML's internals
};
// Classes derived from this class serve as simple text processors for
// wxHtmlWindow. wxHtmlWindow runs HTML markup through all registered
// processors before displaying it, thus allowing for on-the-fly
// modifications of the markup.
class WXDLLEXPORT wxHtmlProcessor : public wxObject
{
DECLARE_ABSTRACT_CLASS(wxHtmlProcessor)
public:
wxHtmlProcessor() : wxObject() {}
virtual ~wxHtmlProcessor() {}
// Process input text and return processed result
virtual wxString Process(const wxString& text) const = 0;
// Return priority value of this processor. The higher, the sooner
// is the processor applied to the text.
virtual int GetPriority() const { return wxHTML_PRIORITY_DONTCARE; }
};
#endif // wxUSE_HTML
#endif // _WX_HTMLPROC_H_

View File

@@ -27,6 +27,11 @@
#include "wx/filesys.h"
#include "wx/html/htmlfilt.h"
class WXDLLEXPORT wxHtmlProcessor;
class wxHtmlWinModule;
class wxHtmlHistoryArray;
class wxHtmlProcessorList;
//--------------------------------------------------------------------------------
// wxHtmlWindow
@@ -39,28 +44,6 @@
// SetPage(text) or LoadPage(filename).
//--------------------------------------------------------------------------------
// item of history list
class WXDLLEXPORT HtmlHistoryItem : public wxObject
{
public:
HtmlHistoryItem(const wxString& p, const wxString& a) {m_Page = p, m_Anchor = a, m_Pos = 0;}
int GetPos() const {return m_Pos;}
void SetPos(int p) {m_Pos = p;}
const wxString& GetPage() const {return m_Page;}
const wxString& GetAnchor() const {return m_Anchor;}
private:
wxString m_Page;
wxString m_Anchor;
int m_Pos;
};
WX_DECLARE_EXPORTED_OBJARRAY(HtmlHistoryItem, HtmlHistoryArray);
class wxHtmlWinModule;
class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
{
DECLARE_DYNAMIC_CLASS(wxHtmlWindow)
@@ -147,6 +130,11 @@ public:
// Returns a pointer to the parser.
wxHtmlWinParser *GetParser() const { return m_Parser; }
// Adds HTML processor to this instance of wxHtmlWindow:
void AddProcessor(wxHtmlProcessor *processor);
// Adds HTML processor to wxHtmlWindow class as whole:
static void AddSharedProcessor(wxHtmlProcessor *processor);
protected:
// Scrolls to anchor of this name. (Anchor is #news
@@ -167,63 +155,65 @@ protected:
// Returns new filter (will be stored into m_DefaultFilter variable)
virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
// cleans static variables
static void CleanUpStatics();
// cleans static variables
protected:
// This is pointer to the first cell in parsed data.
// (Note: the first cell is usually top one = all other cells are sub-cells of this one)
wxHtmlContainerCell *m_Cell;
// This is pointer to the first cell in parsed data.
// (Note: the first cell is usually top one = all other cells are sub-cells of this one)
// parser which is used to parse HTML input.
// Each wxHtmlWindow has it's own parser because sharing one global
// parser would be problematic (because of reentrancy)
wxHtmlWinParser *m_Parser;
// parser which is used to parse HTML input.
// Each wxHtmlWindow has it's own parser because sharing one global
// parser would be problematic (because of reentrancy)
// contains name of actualy opened page or empty string if no page opened
wxString m_OpenedPage;
// contains name of actualy opened page or empty string if no page opened
// contains name of current anchor within m_OpenedPage
wxString m_OpenedAnchor;
// contains name of current anchor within m_OpenedPage
// contains title of actualy opened page or empty string if no <TITLE> tag
wxString m_OpenedPageTitle;
// contains title of actualy opened page or empty string if no <TITLE> tag
// class for opening files (file system)
wxFileSystem* m_FS;
// class for opening files (file system)
wxFrame *m_RelatedFrame;
wxString m_TitleFormat;
// frame in which page title should be displayed & number of it's statusbar
// reserved for usage with this html window
int m_RelatedStatusBar;
// frame in which page title should be displayed & number of it's statusbar
// reserved for usage with this html window
// borders (free space between text and window borders)
// defaults to 10 pixels.
int m_Borders;
// borders (free space between text and window borders)
// defaults to 10 pixels.
int m_Style;
private:
// a flag indicated if mouse moved
// (if TRUE we will try to change cursor in last call to OnIdle)
bool m_tmpMouseMoved;
// a flag indicated if mouse moved
// (if TRUE we will try to change cursor in last call to OnIdle)
// contains last link name
wxHtmlLinkInfo *m_tmpLastLink;
// contains last link name
// if >0 contents of the window is not redrawn
// (in order to avoid ugly blinking)
int m_tmpCanDrawLocks;
// if >0 contents of the window is not redrawn
// (in order to avoid ugly blinking)
// list of HTML filters
static wxList m_Filters;
// list of HTML filters
// this filter is used when no filter is able to read some file
static wxHtmlFilter *m_DefaultFilter;
// this filter is used when no filter is able to read some file
static wxCursor *s_cur_hand;
static wxCursor *s_cur_arrow;
HtmlHistoryArray m_History;
wxHtmlHistoryArray *m_History;
// browser history
int m_HistoryPos;
// browser history
// if this FLAG is false, items are not added to history
bool m_HistoryOn;
// if this FLAG is false, items are not added to history
// html processors array:
wxHtmlProcessorList *m_Processors;
static wxHtmlProcessorList *m_SharedProcessors;
DECLARE_EVENT_TABLE()
};