wxHtmlWindow::OnLinkClicked and wxHtmlCell::Get/SetLink and wxHtmlWinParser::GetSetLink now work with wxHtmlLinkInfo instead of wxString (making it ready for frames)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
1999-12-23 21:12:23 +00:00
parent f2c2fa4d62
commit 846914d18d
12 changed files with 156 additions and 47 deletions

View File

@@ -24,6 +24,8 @@
#include "wx/html/htmldefs.h"
#include "wx/window.h"
class wxHtmlLinkInfo;
class wxHtmlCell;
class wxHtmlContainerCell;
@@ -38,8 +40,8 @@ class wxHtmlContainerCell;
class WXDLLEXPORT wxHtmlCell : public wxObject
{
public:
wxHtmlCell() : wxObject() {m_Next = NULL; m_Parent = NULL; m_Width = m_Height = m_Descent = 0; m_CanLiveOnPagebreak = TRUE;}
virtual ~wxHtmlCell() {if (m_Next) delete m_Next;};
wxHtmlCell();
virtual ~wxHtmlCell();
void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}
wxHtmlContainerCell *GetParent() const {return m_Parent;}
@@ -49,7 +51,7 @@ class WXDLLEXPORT wxHtmlCell : public wxObject
int GetWidth() const {return m_Width;}
int GetHeight() const {return m_Height;}
int GetDescent() const {return m_Descent;}
virtual wxString GetLink(int WXUNUSED(x) = 0,
virtual wxHtmlLinkInfo* GetLink(int WXUNUSED(x) = 0,
int WXUNUSED(y) = 0) const
{ return m_Link; }
// returns the link associated with this cell. The position is position within
@@ -58,7 +60,7 @@ class WXDLLEXPORT wxHtmlCell : public wxObject
// members access methods
virtual void SetPos(int x, int y) {m_PosX = x, m_PosY = y;}
void SetLink(const wxString& link) {m_Link = link;}
void SetLink(const wxHtmlLinkInfo& link);
void SetNext(wxHtmlCell *cell) {m_Next = cell;}
// members writin methods
@@ -120,7 +122,7 @@ class WXDLLEXPORT wxHtmlCell : public wxObject
// m_Descent is used to position text&images..
long m_PosX, m_PosY;
// position where the fragment is drawn
wxString m_Link;
wxHtmlLinkInfo *m_Link;
// destination address if this fragment is hypertext link, "" otherwise
bool m_CanLiveOnPagebreak;
// true if this cell can be placed on pagebreak, false otherwise
@@ -222,7 +224,7 @@ class WXDLLEXPORT wxHtmlContainerCell : public wxHtmlCell
// Layout()
void SetBackgroundColour(const wxColour& clr) {m_UseBkColour = TRUE; m_BkColour = clr;}
void SetBorder(const wxColour& clr1, const wxColour& clr2) {m_UseBorder = TRUE; m_BorderColour1 = clr1, m_BorderColour2 = clr2;}
virtual wxString GetLink(int x = 0, int y = 0) const;
virtual wxHtmlLinkInfo* GetLink(int x = 0, int y = 0) const;
virtual const wxHtmlCell* Find(int condition, const void* param) const;
virtual void OnMouseClick(wxWindow *parent, int x, int y, bool left, bool middle, bool right);
@@ -301,7 +303,34 @@ class WXDLLEXPORT wxHtmlWidgetCell : public wxHtmlCell
#endif
//--------------------------------------------------------------------------------
// wxHtmlLinkInfo
// Internal data structure. It represents hypertext link
//--------------------------------------------------------------------------------
class wxHtmlLinkInfo : public wxObject
{
public:
wxHtmlLinkInfo() : wxObject()
{ m_Href = m_Target = wxEmptyString; }
wxHtmlLinkInfo(const wxString& href, const wxString& target = wxEmptyString) : wxObject()
{ m_Href = href; m_Target = target; }
wxHtmlLinkInfo(const wxHtmlLinkInfo& l)
{ m_Href = l.m_Href, m_Target = l.m_Target; }
wxHtmlLinkInfo& operator=(const wxHtmlLinkInfo& l)
{ m_Href = l.m_Href, m_Target = l.m_Target; return *this; }
wxString GetHref() const { return m_Href; }
wxString GetTarget() const { return m_Target; }
private:
wxString m_Href, m_Target;
};
#endif // wxUSE_HTML
#endif // _WX_HTMLCELL_H_

View File

@@ -136,7 +136,7 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
static void AddFilter(wxHtmlFilter *filter);
// Adds input filter
virtual void OnLinkClicked(const wxString& link);
virtual void OnLinkClicked(wxHtmlLinkInfo *link);
// called when users clicked on hypertext link. Default behavior is to
// call LoadPage(loc)
@@ -200,7 +200,7 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
bool m_tmpMouseMoved;
// a flag indicated if mouse moved
// (if TRUE we will try to change cursor in last call to OnIdle)
wxString m_tmpLastLink;
wxHtmlLinkInfo *m_tmpLastLink;
// contains last link name
int m_tmpCanDrawLocks;
// if >0 contents of the window is not redrawn

View File

@@ -51,7 +51,7 @@ class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
double GetPixelScale() {return m_PixelScale;}
int GetCharHeight() const {return m_CharHeight;}
int GetCharWidth() const {return m_CharWidth;}
// NOTE : these functions do _not_ return _actual_
// NOTE : these functions do _not_ return _actual_
// height/width. They return h/w of default font
// for this DC. If you want actual values, call
// GetDC() -> GetChar...()
@@ -82,7 +82,7 @@ class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
// container
int GetFontSize() const {return m_FontSize;}
void SetFontSize(int s) {m_FontSize = s;}
void SetFontSize(int s);
int GetFontBold() const {return m_FontBold;}
void SetFontBold(int x) {m_FontBold = x;}
int GetFontItalic() const {return m_FontItalic;}
@@ -98,12 +98,11 @@ class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
void SetLinkColor(const wxColour& clr) {m_LinkColor = clr;}
const wxColour& GetActualColor() const {return m_ActualColor;}
void SetActualColor(const wxColour& clr) {m_ActualColor = clr;}
const wxString& GetLink() const {return m_Link;}
void SetLink(const wxString& link) {m_Link = link; m_UseLink = link.Length() > 0;}
const wxHtmlLinkInfo& GetLink() const {return m_Link;}
void SetLink(const wxHtmlLinkInfo& link);
virtual wxFont* CreateCurrentFont();
// creates font depending on m_Font* members.
// (note : it calls wxHtmlWindow's CreateCurrentFont...)
protected:
virtual void AddText(const char *txt);
@@ -128,7 +127,7 @@ class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
wxColour m_LinkColor;
wxColour m_ActualColor;
// basic font parameters.
wxString m_Link;
wxHtmlLinkInfo m_Link;
// actual hypertext link or empty string
bool m_UseLink;
// TRUE if m_Link is not empty
@@ -141,7 +140,7 @@ class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
// table of loaded fonts. 1st four indexes are 0 or 1, depending on on/off
// state of these flags (from left to right):
// [bold][italic][underlined][fixed_size]
// last index is font size : from 0 to 7 (remapped from html sizes -2 to +4)
// last index is font size : from 0 to 6 (remapped from html sizes 1 to 7)
// Note : this table covers all possible combinations of fonts, but not
// all of them are used, so many items in table are usually NULL.
int m_FontsSizes[7];