X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9749497156909657d17ef972857caaca4bd09da2..36d9119341753b2f6f606571702a9b906050a07c:/include/wx/html/htmlwin.h?ds=sidebyside diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index 75585561b6..d31dd8b880 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -27,6 +27,23 @@ #include "wx/filesys.h" #include "wx/html/htmlfilt.h" +class wxHtmlProcessor; +class wxHtmlWinModule; +class wxHtmlHistoryArray; +class wxHtmlProcessorList; + + +// wxHtmlWindow flags: +#define wxHW_SCROLLBAR_NEVER 0x0002 +#define wxHW_SCROLLBAR_AUTO 0x0004 + +// enums for wxHtmlWindow::OnOpeningURL +enum wxHtmlOpeningStatus +{ + wxHTML_OPEN, + wxHTML_BLOCK, + wxHTML_REDIRECT +}; //-------------------------------------------------------------------------------- // wxHtmlWindow @@ -39,48 +56,39 @@ // 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) friend class wxHtmlWinModule; public: - wxHtmlWindow() : wxScrolledWindow() {}; + wxHtmlWindow() { Init(); } wxHtmlWindow(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow"); + const wxString& name = wxT("htmlWindow")) + { + Init(); + Create(parent, id, pos, size, style, name); + } ~wxHtmlWindow(); + bool Create(wxWindow *parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxHW_SCROLLBAR_AUTO, + const wxString& name = wxT("htmlWindow")); + // Set HTML page and display it. !! source is HTML document itself, // it is NOT address/filename of HTML document. If you want to // specify document location, use LoadPage() istead // Return value : FALSE if an error occured, TRUE otherwise bool SetPage(const wxString& source); + // Append to current page + bool AppendToPage(const wxString& source); + // Load HTML page from given location. Location can be either // a) /usr/wxGTK2/docs/html/wx.htm // b) http://www.somewhere.uk/document.htm @@ -90,7 +98,7 @@ public: // After the page is loaded, the method calls SetPage() to display it. // Note : you can also use path relative to previously loaded page // Return value : same as SetPage - bool LoadPage(const wxString& location); + virtual bool LoadPage(const wxString& location); // Returns full location of opened page wxString GetOpenedPage() const {return m_OpenedPage;} @@ -111,10 +119,6 @@ public: // Sets fonts to be used when displaying HTML page. void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes); - // Sets the title of the window - // (depending on the information passed to SetRelatedFrame() method) - virtual void OnSetTitle(const wxString& title); - // Sets space between text and window borders. void SetBorders(int b) {m_Borders = b;} @@ -141,21 +145,56 @@ public: // Adds input filter static void AddFilter(wxHtmlFilter *filter); - // Called when users clicked on hypertext link. Default behavior is to + // 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 AddGlobalProcessor(wxHtmlProcessor *processor); + + // what would we do with it? + virtual bool AcceptsFocusFromKeyboard() const { return FALSE; } + + // -- Callbacks -- + + // Sets the title of the window + // (depending on the information passed to SetRelatedFrame() method) + virtual void OnSetTitle(const wxString& title); + + // Called when the mouse hovers over a cell: (x, y) are logical coords + // Default behaviour is to do nothing at all + virtual void OnCellMouseHover(wxHtmlCell *cell, wxCoord x, wxCoord y); + + // Called when user clicks on a cell. Default behavior is to call + // OnLinkClicked() if this cell corresponds to a hypertext link + virtual void OnCellClicked(wxHtmlCell *cell, + wxCoord x, wxCoord y, + const wxMouseEvent& event); + + // Called when user clicked on hypertext link. Default behavior is to // call LoadPage(loc) virtual void OnLinkClicked(const wxHtmlLinkInfo& link); - // Returns a pointer to the parser. - wxHtmlWinParser *GetParser() const { return m_Parser; } + // Called when wxHtmlWindow wants to fetch data from an URL (e.g. when + // loading a page or loading an image). The data are downloaded if and only if + // OnOpeningURL returns TRUE. If OnOpeningURL returns wxHTML_REDIRECT, + // it must set *redirect to the new URL + virtual wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType WXUNUSED(type), + const wxString& WXUNUSED(url), + wxString *WXUNUSED(redirect)) const + { return wxHTML_OPEN; } protected: + void Init(); + // Scrolls to anchor of this name. (Anchor is #news // or #features etc. it is part of address sometimes: // http://www.ms.mff.cuni.cz/~vsla8348/wxhtml/index.html#news) // Return value : TRUE if anchor exists, FALSE otherwise bool ScrollToAnchor(const wxString& anchor); - // Prepares layout (= fill m_PosX, m_PosY for fragments) based on + // Prepares layout (= fill m_PosX, m_PosY for fragments) based on // actual size of window. This method also setup scrollbars void CreateLayout(); @@ -167,63 +206,67 @@ 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 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 + // contains the last (terminal) cell which contained the mouse + wxHtmlCell *m_tmpLastCell; + // 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_GlobalProcessors; DECLARE_EVENT_TABLE() }; @@ -232,3 +275,4 @@ private: #endif #endif // _WX_HTMLWIN_H_ +