X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bfb9ee966d5d1f29e49f38e340812ade4b3cc956..eee3624b111881520d7d58fe174ef563c62d8375:/include/wx/html/htmlwin.h diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index c88745ae04..719fbc4fc5 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -11,7 +11,7 @@ #ifndef _WX_HTMLWIN_H_ #define _WX_HTMLWIN_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "htmlwin.h" #endif @@ -26,22 +26,40 @@ #include "wx/html/htmlcell.h" #include "wx/filesys.h" #include "wx/html/htmlfilt.h" +#include "wx/filename.h" class wxHtmlProcessor; class wxHtmlWinModule; class wxHtmlHistoryArray; class wxHtmlProcessorList; -//-------------------------------------------------------------------------------- + +// wxHtmlWindow flags: +#define wxHW_SCROLLBAR_NEVER 0x0002 +#define wxHW_SCROLLBAR_AUTO 0x0004 +#define wxHW_NO_SELECTION 0x0008 + +#define wxHW_DEFAULT_STYLE wxHW_SCROLLBAR_AUTO + + +// enums for wxHtmlWindow::OnOpeningURL +enum wxHtmlOpeningStatus +{ + wxHTML_OPEN, + wxHTML_BLOCK, + wxHTML_REDIRECT +}; + +// ---------------------------------------------------------------------------- // wxHtmlWindow // (This is probably the only class you will directly use.) // Purpose of this class is to display HTML page (either local -// file or downloaded via HTTP protocol) in a window. Width -// of window is constant - given in constructor - virtual height -// is changed dynamicly depending on page size. -// Once the window is created you can set it's content by calling +// file or downloaded via HTTP protocol) in a window. Width of +// window is constant - given in constructor - virtual height +// is changed dynamicly depending on page size. Once the +// window is created you can set it's content by calling // SetPage(text) or LoadPage(filename). -//-------------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow { @@ -49,20 +67,33 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow friend class wxHtmlWinModule; public: - wxHtmlWindow() : wxScrolledWindow() {}; + wxHtmlWindow() { Init(); } wxHtmlWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow"); + long style = wxHW_DEFAULT_STYLE, + 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 @@ -72,7 +103,10 @@ 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); + + // Loads HTML page from file + bool LoadFile(const wxFileName& filename); // Returns full location of opened page wxString GetOpenedPage() const {return m_OpenedPage;} @@ -91,11 +125,8 @@ public: void SetRelatedStatusBar(int bar); // 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); + void SetFonts(wxString normal_face, wxString fixed_face, + const int *sizes = NULL); // Sets space between text and window borders. void SetBorders(int b) {m_Borders = b;} @@ -123,19 +154,49 @@ public: // Adds input filter static void AddFilter(wxHtmlFilter *filter); - // Called when users 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; } // 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); + 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); + + // 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) @@ -148,7 +209,8 @@ protected: void OnDraw(wxDC& dc); void OnSize(wxSizeEvent& event); - void OnMouseEvent(wxMouseEvent& event); + void OnMouseMove(wxMouseEvent& event); + void OnMouseButton(wxMouseEvent& event); void OnIdle(wxIdleEvent& event); // Returns new filter (will be stored into m_DefaultFilter variable) @@ -157,6 +219,10 @@ protected: // cleans static variables static void CleanUpStatics(); + // Returns true if text selection is enabled (wxClipboard must be available + // and wxHW_NO_SELECTION not used) + bool IsSelectionEnabled() const; + 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) @@ -192,6 +258,8 @@ private: bool m_tmpMouseMoved; // contains last link name wxHtmlLinkInfo *m_tmpLastLink; + // 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; @@ -212,12 +280,14 @@ private: // html processors array: wxHtmlProcessorList *m_Processors; - static wxHtmlProcessorList *m_SharedProcessors; + static wxHtmlProcessorList *m_GlobalProcessors; DECLARE_EVENT_TABLE() + DECLARE_NO_COPY_CLASS(wxHtmlWindow) }; #endif #endif // _WX_HTMLWIN_H_ +