X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31d8b4ad2425eb6c172c97cc3a39300ee2d39b85..07170120ee06625fead8c72ad537bf41fa3ed8a9:/include/wx/html/htmlwin.h?ds=inline diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index 719fbc4fc5..fd0ea89b1a 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -4,14 +4,14 @@ // Author: Vaclav Slavik // RCS-ID: $Id$ // Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_HTMLWIN_H_ #define _WX_HTMLWIN_H_ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "htmlwin.h" #endif @@ -21,7 +21,6 @@ #include "wx/window.h" #include "wx/scrolwin.h" #include "wx/config.h" -#include "wx/treectrl.h" #include "wx/html/winpars.h" #include "wx/html/htmlcell.h" #include "wx/filesys.h" @@ -32,6 +31,7 @@ class wxHtmlProcessor; class wxHtmlWinModule; class wxHtmlHistoryArray; class wxHtmlProcessorList; +class WXDLLIMPEXP_HTML wxHtmlWinAutoScrollTimer; // wxHtmlWindow flags: @@ -61,14 +61,14 @@ enum wxHtmlOpeningStatus // SetPage(text) or LoadPage(filename). // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow +class WXDLLIMPEXP_HTML wxHtmlWindow : public wxScrolledWindow { DECLARE_DYNAMIC_CLASS(wxHtmlWindow) friend class wxHtmlWinModule; public: wxHtmlWindow() { Init(); } - wxHtmlWindow(wxWindow *parent, wxWindowID id = -1, + wxHtmlWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_DEFAULT_STYLE, @@ -79,7 +79,7 @@ public: } ~wxHtmlWindow(); - bool Create(wxWindow *parent, wxWindowID id = -1, + bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, @@ -88,7 +88,7 @@ public: // 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 + // Return value : false if an error occured, true otherwise bool SetPage(const wxString& source); // Append to current page @@ -120,14 +120,22 @@ public: void SetRelatedFrame(wxFrame* frame, const wxString& format); wxFrame* GetRelatedFrame() const {return m_RelatedFrame;} +#if wxUSE_STATUSBAR // After(!) calling SetRelatedFrame, this sets statusbar slot where messages // will be displayed. Default is -1 = no messages. void SetRelatedStatusBar(int bar); +#endif // wxUSE_STATUSBAR // Sets fonts to be used when displaying HTML page. void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL); + // Sets font sizes to be relative to the given size or the system + // default size; use either specified or default font + void SetStandardFonts(int size = -1, + const wxString& normal_face = wxEmptyString, + const wxString& fixed_face = wxEmptyString); + // Sets space between text and window borders. void SetBorders(int b) {m_Borders = b;} @@ -139,7 +147,7 @@ public: virtual void WriteCustomization(wxConfigBase *cfg, wxString path = wxEmptyString); // Goes to previous/next page (in browsing history) - // Returns TRUE if successful, FALSE otherwise + // Returns true if successful, false otherwise bool HistoryBack(); bool HistoryForward(); bool HistoryCanBack(); @@ -162,9 +170,6 @@ public: // 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 @@ -187,31 +192,57 @@ public: // 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, + // 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; } +#if wxUSE_CLIPBOARD + // Helper functions to select parts of page: + void SelectWord(const wxPoint& pos); + void SelectLine(const wxPoint& pos); + void SelectAll(); + + // Convert selection to text: + wxString SelectionToText() { return DoSelectionToText(m_selection); } + + // Converts current page to text: + wxString ToText(); +#endif + + virtual void ApplyParentThemeBackground(const wxColour& WXUNUSED(bg)) + { /* do nothing */ } + 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 + // Return value : true if anchor exists, false otherwise bool ScrollToAnchor(const wxString& anchor); // Prepares layout (= fill m_PosX, m_PosY for fragments) based on // actual size of window. This method also setup scrollbars void CreateLayout(); - void OnDraw(wxDC& dc); + void OnEraseBackground(wxEraseEvent& event); + void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnMouseMove(wxMouseEvent& event); - void OnMouseButton(wxMouseEvent& event); - void OnIdle(wxIdleEvent& event); + void OnMouseDown(wxMouseEvent& event); + void OnMouseUp(wxMouseEvent& event); +#if wxUSE_CLIPBOARD + void OnKeyUp(wxKeyEvent& event); + void OnDoubleClick(wxMouseEvent& event); + void OnCopy(wxCommandEvent& event); + void OnMouseEnter(wxMouseEvent& event); + void OnMouseLeave(wxMouseEvent& event); +#endif // wxUSE_CLIPBOARD + + virtual void OnInternalIdle(); // Returns new filter (will be stored into m_DefaultFilter variable) virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;} @@ -223,9 +254,27 @@ protected: // and wxHW_NO_SELECTION not used) bool IsSelectionEnabled() const; + enum ClipboardType + { + Primary, + Secondary + }; + + // Copies selection to clipboard if the clipboard support is available + // + // returns true if anything was copied to clipboard, false otherwise + bool CopySelection(ClipboardType t = Secondary); + +#if wxUSE_CLIPBOARD + // Automatic scrolling during selection: + void StopAutoScrolling(); +#endif // wxUSE_CLIPBOARD + 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) + wxString DoSelectionToText(wxHtmlSelection *sel); + + // 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; // parser which is used to parse HTML input. // Each wxHtmlWindow has it's own parser because sharing one global @@ -242,9 +291,11 @@ protected: wxFrame *m_RelatedFrame; wxString m_TitleFormat; +#if wxUSE_STATUSBAR // frame in which page title should be displayed & number of it's statusbar // reserved for usage with this html window int m_RelatedStatusBar; +#endif // wxUSE_STATUSBAR // borders (free space between text and window borders) // defaults to 10 pixels. @@ -252,9 +303,32 @@ protected: int m_Style; + // current text selection or NULL + wxHtmlSelection *m_selection; + + // true if the user is dragging mouse to select text + bool m_makingSelection; + +#if wxUSE_CLIPBOARD + // time of the last doubleclick event, used to detect tripleclicks + // (tripleclicks are used to select whole line): + wxLongLong m_lastDoubleClick; + + // helper class to automatically scroll the window if the user is selecting + // text and the mouse leaves wxHtmlWindow: + wxHtmlWinAutoScrollTimer *m_timerAutoScroll; +#endif // wxUSE_CLIPBOARD + private: + // window content for double buffered rendering: + wxBitmap *m_backBuffer; + + // variables used when user is selecting text + wxPoint m_tmpSelFromPos; + wxHtmlCell *m_tmpSelFromCell; + // a flag indicated if mouse moved - // (if TRUE we will try to change cursor in last call to OnIdle) + // (if true we will try to change cursor in last call to OnIdle) bool m_tmpMouseMoved; // contains last link name wxHtmlLinkInfo *m_tmpLastLink; @@ -269,9 +343,6 @@ private: // this filter is used when no filter is able to read some file static wxHtmlFilter *m_DefaultFilter; - static wxCursor *s_cur_hand; - static wxCursor *s_cur_arrow; - wxHtmlHistoryArray *m_History; // browser history int m_HistoryPos; @@ -287,7 +358,7 @@ private: }; -#endif +#endif // wxUSE_HTML #endif // _WX_HTMLWIN_H_