📄 htmlwin.h
字号:
// Goes to previous/next page (in browsing history) // Returns true if successful, false otherwise bool HistoryBack(); bool HistoryForward(); bool HistoryCanBack(); bool HistoryCanForward(); // Resets history void HistoryClear(); // Returns pointer to conteiners/cells structure. // It should be used ONLY when printing wxHtmlContainerCell* GetInternalRepresentation() const {return m_Cell;} // Adds input filter static void AddFilter(wxHtmlFilter *filter); // 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); // -- Callbacks -- // Sets the title of the window // (depending on the information passed to SetRelatedFrame() method) virtual void OnSetTitle(const wxString& title); // 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; }#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 // wxUSE_CLIPBOARD virtual void OnInternalIdle(); /// Returns standard HTML cursor as used by wxHtmlWindow static wxCursor GetDefaultHTMLCursor(HTMLCursor type);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 // actual size of window. This method also setup scrollbars void CreateLayout(); void OnEraseBackground(wxEraseEvent& event); void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnMouseMove(wxMouseEvent& 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 OnClipboardEvent(wxClipboardTextEvent& event); void OnMouseEnter(wxMouseEvent& event); void OnMouseLeave(wxMouseEvent& event); void OnMouseCaptureLost(wxMouseCaptureLostEvent& event);#endif // wxUSE_CLIPBOARD // Returns new filter (will be stored into m_DefaultFilter variable) virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;} // 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; 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 wxString DoSelectionToText(wxHtmlSelection *sel);public: // wxHtmlWindowInterface methods: virtual void SetHTMLWindowTitle(const wxString& title); virtual void OnHTMLLinkClicked(const wxHtmlLinkInfo& link); virtual wxHtmlOpeningStatus OnHTMLOpeningURL(wxHtmlURLType type, const wxString& url, wxString *redirect) const; virtual wxPoint HTMLCoordsToWindow(wxHtmlCell *cell, const wxPoint& pos) const; virtual wxWindow* GetHTMLWindow(); virtual wxColour GetHTMLBackgroundColour() const; virtual void SetHTMLBackgroundColour(const wxColour& clr); virtual void SetHTMLBackgroundImage(const wxBitmap& bmpBg); virtual void SetHTMLStatusText(const wxString& text); virtual wxCursor GetHTMLCursor(HTMLCursor type) const; // implementation of SetPage() bool DoSetPage(const wxString& source);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; // 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; // contains name of actualy opened page or empty string if no page opened wxString m_OpenedPage; // contains name of current anchor within m_OpenedPage wxString m_OpenedAnchor; // contains title of actualy opened page or empty string if no <TITLE> tag wxString m_OpenedPageTitle; // class for opening files (file system) wxFileSystem* m_FS; 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. int m_Borders; // 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): wxMilliClock_t 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_CLIPBOARDprivate: // window content for double buffered rendering: wxBitmap *m_backBuffer; // background image, may be invalid wxBitmap m_bmpBg; // variables used when user is selecting text wxPoint m_tmpSelFromPos; wxHtmlCell *m_tmpSelFromCell; // if >0 contents of the window is not redrawn // (in order to avoid ugly blinking) int m_tmpCanDrawLocks; // list of HTML filters static wxList m_Filters; // this filter is used when no filter is able to read some file static wxHtmlFilter *m_DefaultFilter; // html processors array: wxHtmlProcessorList *m_Processors; static wxHtmlProcessorList *m_GlobalProcessors; // browser history wxHtmlHistoryArray *m_History; int m_HistoryPos; // if this FLAG is false, items are not added to history bool m_HistoryOn; // a flag set if we need to erase background in OnPaint() (otherwise this // is supposed to have been done in OnEraseBackground()) bool m_eraseBgInOnPaint; // standard mouse cursors static wxCursor *ms_cursorLink; static wxCursor *ms_cursorText; DECLARE_EVENT_TABLE() DECLARE_NO_COPY_CLASS(wxHtmlWindow)};BEGIN_DECLARE_EVENT_TYPES() DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, wxEVT_COMMAND_HTML_CELL_CLICKED, 1000) DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, wxEVT_COMMAND_HTML_CELL_HOVER, 1001) DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, wxEVT_COMMAND_HTML_LINK_CLICKED, 1002)END_DECLARE_EVENT_TYPES()/*! * Html cell window event */class WXDLLIMPEXP_HTML wxHtmlCellEvent : public wxCommandEvent{public: wxHtmlCellEvent() {} wxHtmlCellEvent(wxEventType commandType, int id, wxHtmlCell *cell, const wxPoint &pt, const wxMouseEvent &ev) : wxCommandEvent(commandType, id) { m_cell = cell; m_pt = pt; m_mouseEvent = ev; m_bLinkWasClicked = false; } wxHtmlCell* GetCell() const { return m_cell; } wxPoint GetPoint() const { return m_pt; } wxMouseEvent GetMouseEvent() const { return m_mouseEvent; } void SetLinkClicked(bool linkclicked) { m_bLinkWasClicked=linkclicked; } bool GetLinkClicked() const { return m_bLinkWasClicked; } // default copy ctor, assignment operator and dtor are ok virtual wxEvent *Clone() const { return new wxHtmlCellEvent(*this); }private: wxHtmlCell *m_cell; wxMouseEvent m_mouseEvent; wxPoint m_pt; bool m_bLinkWasClicked; DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHtmlCellEvent)};/*! * Html link event */class WXDLLIMPEXP_HTML wxHtmlLinkEvent : public wxCommandEvent{public: wxHtmlLinkEvent() {} wxHtmlLinkEvent(int id, const wxHtmlLinkInfo &linkinfo) : wxCommandEvent(wxEVT_COMMAND_HTML_LINK_CLICKED, id) { m_linkInfo = linkinfo; } const wxHtmlLinkInfo &GetLinkInfo() const { return m_linkInfo; } // default copy ctor, assignment operator and dtor are ok virtual wxEvent *Clone() const { return new wxHtmlLinkEvent(*this); }private: wxHtmlLinkInfo m_linkInfo; DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHtmlLinkEvent)};typedef void (wxEvtHandler::*wxHtmlCellEventFunction)(wxHtmlCellEvent&);typedef void (wxEvtHandler::*wxHtmlLinkEventFunction)(wxHtmlLinkEvent&);#define wxHtmlCellEventHandler(func) \ (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxHtmlCellEventFunction, &func)#define wxHtmlLinkEventHandler(func) \ (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxHtmlLinkEventFunction, &func)#define EVT_HTML_CELL_CLICKED(id, fn) \ wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_CELL_CLICKED, id, wxHtmlCellEventHandler(fn))#define EVT_HTML_CELL_HOVER(id, fn) \ wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_CELL_HOVER, id, wxHtmlCellEventHandler(fn))#define EVT_HTML_LINK_CLICKED(id, fn) \ wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_LINK_CLICKED, id, wxHtmlLinkEventHandler(fn))#endif // wxUSE_HTML#endif // _WX_HTMLWIN_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -