]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/html/htmlwin.h
dropped in new wxMatrix (from wxCanvas)
[wxWidgets.git] / include / wx / html / htmlwin.h
index 657ee2348de65fee51ea38701a36bb1bbc963605..822cc96547d1b812c8502e35cf105b76b40d8302 100644 (file)
@@ -2,13 +2,14 @@
 // Name:        htmlwin.h
 // Purpose:     wxHtmlWindow class for parsing & displaying HTML
 // Author:      Vaclav Slavik
+// RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
 // Licence:     wxWindows Licence
 /////////////////////////////////////////////////////////////////////////////
 
 
-#ifndef __HTMLWIN_H__
-#define __HTMLWIN_H__
+#ifndef _WX_HTMLWIN_H_
+#define _WX_HTMLWIN_H_
 
 #ifdef __GNUG__
 #pragma interface
 #include "wx/defs.h"
 #if wxUSE_HTML
 
-#include <wx/window.h>
-#include <wx/config.h>
-#include <wx/treectrl.h>
-#include <wx/html/htmlwinparser.h>
-#include <wx/html/htmlcell.h>
-#include <wx/filesys.h>
-#include <wx/html/htmlfilter.h>
+#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"
+#include "wx/html/htmlfilt.h"
 
 
 //--------------------------------------------------------------------------------
 // wxHtmlWindow
-//                  (This is probably the only class you will directly use.) 
+//                  (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
-//                  SetPage(text) or LoadPage(filename). 
+//                  SetPage(text) or LoadPage(filename).
 //--------------------------------------------------------------------------------
 
 
 // item of history list
 class WXDLLEXPORT HtmlHistoryItem : public wxObject
 {
-    private:
-        wxString m_Page;
-        wxString m_Anchor;
-        int m_Pos;
-
     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;}
-};
 
-#undef WXDLLEXPORTLOCAL
-#define WXDLLEXPORTLOCAL WXDLLEXPORT
-     // ?? Don't know why - but Allen Van Sickel reported it to fix problems with DLL
+    private:
+        wxString m_Page;
+        wxString m_Anchor;
+        int m_Pos;
+};
 
-WX_DECLARE_OBJARRAY(HtmlHistoryItem, HtmlHistoryArray);
 
-#undef WXDLLEXPORTLOCAL
-#define WXDLLEXPORTLOCAL
+WX_DECLARE_EXPORTED_OBJARRAY(HtmlHistoryItem, HtmlHistoryArray);
 
+class wxHtmlWinModule;
 
 class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
 {
     DECLARE_DYNAMIC_CLASS(wxHtmlWindow)
-
-    protected:
-        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)
-        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)
-        wxString m_OpenedPage;
-                // contains name of actualy opened page or empty string if no page opened
-        wxString m_OpenedAnchor;
-                // contains name of current anchor within m_OpenedPage
-        wxFileSystem* m_FS;
-                // class for opening files (file system)
-
-        wxFrame *m_RelatedFrame;
-        wxString m_TitleFormat;
-        int m_RelatedStatusBar;
-                // frame in which page title should be displayed & number of it's statusbar
-                // reserved for usage with this html window
-
-        int m_Borders;
-                // borders (free space between text and window borders)
-                // defaults to 10 pixels.
-
-        bool m_Style;
-
-
-    private:
-        bool m_tmpMouseMoved;
-                // a flag indicated if mouse moved
-                // (if TRUE we will try to change cursor in last call to OnIdle)
-        bool m_tmpCanDraw;
-                // if FALSE contents of the window is not redrawn
-                // (in order to avoid ugly bliking)
-
-        static wxList m_Filters;
-                // list of HTML filters
-        static wxHtmlFilter *m_DefaultFilter;
-                // this filter is used when no filter is able to read some file
-
-        HtmlHistoryArray m_History;
-        int m_HistoryPos;
-                // browser history
-        bool m_HistoryOn;
-                // if this FLAG is false, items are not added to history
+    
+    friend class wxHtmlWinModule;
 
     public:
         wxHtmlWindow() : wxScrolledWindow() {};
-        wxHtmlWindow(wxWindow *parent, wxWindowID id = -1, 
+        wxHtmlWindow(wxWindow *parent, wxWindowID id = -1,
                      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-                    long style = wxHW_SCROLLBAR_AUTO,
+                     long style = wxHW_SCROLLBAR_AUTO,
                      const wxString& name = "htmlWindow");
         ~wxHtmlWindow();
 
         bool SetPage(const wxString& source);
                 // Set HTML page and display it. !! source is HTML document itself,
-                // it is NOT address/filename of HTML document. If you want to 
+                // 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 LoadPage(const wxString& location);
                 // Load HTML page from given location. Location can be either
                 // a) /usr/wxGTK2/docs/html/wx.htm
@@ -142,21 +94,24 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
 
         wxString GetOpenedPage() const {return m_OpenedPage;}
                 // Returns full location of opened page
-        
+        wxString GetOpenedAnchor() const {return m_OpenedAnchor;}
+                // Returns anchor within opened page
+        wxString GetOpenedPageTitle() const {return m_OpenedPageTitle;}
+                // Returns <TITLE> of opened page or empty string otherwise
+
         void SetRelatedFrame(wxFrame* frame, const wxString& format);
                 // sets frame in which page title will  be displayed. Format is format of
-                // frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s 
+                // frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s
         wxFrame* GetRelatedFrame() const {return m_RelatedFrame;}
 
         void SetRelatedStatusBar(int bar);
                 // after(!) calling SetRelatedFrame, this sets statusbar slot where messages
                 // will be displayed. Default is -1 = no messages.
 
-        void SetFonts(wxString normal_face, int normal_italic_mode, wxString fixed_face, int fixed_italic_mode, int *sizes);
+        void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes);
                 // sets fonts to be used when displaying HTML page.
-                // *_italic_mode can be either wxSLANT or wxITALIC
 
-        void SetTitle(const wxString& title);
+        virtual void OnSetTitle(const wxString& title);
                 // Sets the title of the window
                 // (depending on the information passed to SetRelatedFrame() method)
 
@@ -174,6 +129,9 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
         bool HistoryForward();
                 // Goes to previous/next page (in browsing history)
                 // Returns TRUE if successful, FALSE otherwise
+        bool HistoryCanBack();
+        bool HistoryCanForward();
+        
         void HistoryClear();
                 // Resets history
 
@@ -184,12 +142,12 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
         static void AddFilter(wxHtmlFilter *filter);
                 // Adds input filter
 
-        virtual void OnLinkClicked(const wxString& link);
+        virtual void OnLinkClicked(const wxHtmlLinkInfo& link);
                 // called when users clicked on hypertext link. Default behavior is to
                 // call LoadPage(loc)
-               
-       static void CleanUpStatics();
-               // cleans static variables
+
+        wxHtmlWinParser *GetParser() const { return m_Parser; }
+                // return a pointer to the parser.
 
     protected:
         bool ScrollToAnchor(const wxString& anchor);
@@ -206,19 +164,72 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
         void OnSize(wxSizeEvent& event);
         void OnMouseEvent(wxMouseEvent& event);
         void OnIdle(wxIdleEvent& event);
-        void OnKeyDown(wxKeyEvent& event);
-       
-       virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
+
+        virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
                // returns new filter (will be stored into m_DefaultFilter variable)
 
-    DECLARE_EVENT_TABLE()
-};
+        static void CleanUpStatics();
+               // cleans static variables
 
 
+    protected:
+        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)
+        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)
+        wxString m_OpenedPage;
+                // contains name of actualy opened page or empty string if no page opened
+        wxString m_OpenedAnchor;
+                // contains name of current anchor within m_OpenedPage
+        wxString m_OpenedPageTitle;
+                // contains title of actualy opened page or empty string if no <TITLE> tag
+        wxFileSystem* m_FS;
+                // class for opening files (file system)
 
-#endif // __HTMLWIN_H__
+        wxFrame *m_RelatedFrame;
+        wxString m_TitleFormat;
+        int m_RelatedStatusBar;
+                // frame in which page title should be displayed & number of it's statusbar
+                // reserved for usage with this html window
 
-#endif
+        int m_Borders;
+                // borders (free space between text and window borders)
+                // defaults to 10 pixels.
+
+        int m_Style;
+
+    private:
+        bool m_tmpMouseMoved;
+                // a flag indicated if mouse moved
+                // (if TRUE we will try to change cursor in last call to OnIdle)
+        wxHtmlLinkInfo *m_tmpLastLink;
+                // contains last link name
+        int m_tmpCanDrawLocks;
+                // if >0 contents of the window is not redrawn
+                // (in order to avoid ugly blinking)
 
+        static wxList m_Filters;
+                // list of HTML filters
+        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;
+        int m_HistoryPos;
+                // browser history
+        bool m_HistoryOn;
+                // if this FLAG is false, items are not added to history
+
+
+    DECLARE_EVENT_TABLE()
+};
+
+
+#endif
 
+#endif // _WX_HTMLWIN_H_