--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/hyperlink.h
+// Purpose: Hyperlink control
+// Author: David Norris <danorris@gmail.com>, Otto Wyss
+// Modified by: Ryan Norton, Francesco Montorsi
+// Created: 04/02/2005
+// RCS-ID: $Id$
+// Copyright: (c) 2005 David Norris
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __GENERICHYPERLINKCTRLH__
+#define __GENERICHYPERLINKCTRLH__
+
+#include "wx/defs.h"
+#include "wx/control.h"
+
+
+// ----------------------------------------------------------------------------
+// wxGenericHyperlinkCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxGenericHyperlinkCtrl : public wxHyperlinkCtrlBase
+{
+public:
+ // Default constructor (for two-step construction).
+ wxGenericHyperlinkCtrl() { }
+
+ // Constructor.
+ wxGenericHyperlinkCtrl(wxWindow *parent,
+ wxWindowID id,
+ const wxString& label, const wxString& url,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxHL_DEFAULT_STYLE,
+ const wxString& name = wxHyperlinkCtrlNameStr)
+ {
+ (void)Create(parent, id, label, url, pos, size, style, name);
+ }
+
+ // Creation function (for two-step construction).
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxString& label, const wxString& url,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxHL_DEFAULT_STYLE,
+ const wxString& name = wxHyperlinkCtrlNameStr);
+
+
+ // get/set
+ wxColour GetHoverColour() const { return m_hoverColour; }
+ void SetHoverColour(const wxColour &colour) { m_hoverColour = colour; }
+
+ wxColour GetNormalColour() const { return m_normalColour; }
+ void SetNormalColour(const wxColour &colour);
+
+ wxColour GetVisitedColour() const { return m_visitedColour; }
+ void SetVisitedColour(const wxColour &colour);
+
+ wxString GetURL() const { return m_url; }
+ void SetURL (const wxString &url) { m_url=url; }
+
+ void SetVisited(bool visited = true) { m_visited=visited; }
+ bool GetVisited() const { return m_visited; }
+
+ // NOTE: also wxWindow::Set/GetLabel, wxWindow::Set/GetBackgroundColour,
+ // wxWindow::Get/SetFont, wxWindow::Get/SetCursor are important !
+
+
+protected:
+ // event handlers
+
+ // Renders the hyperlink.
+ void OnPaint(wxPaintEvent& event);
+
+ // Returns the wxRect of the label of this hyperlink.
+ // This is different from the clientsize's rectangle when
+ // clientsize != bestsize and this rectangle is influenced
+ // by the alignment of the label (wxHL_ALIGN_*).
+ wxRect GetLabelRect() const;
+
+ // If the click originates inside the bounding box of the label,
+ // a flag is set so that an event will be fired when the left
+ // button is released.
+ void OnLeftDown(wxMouseEvent& event);
+
+ // If the click both originated and finished inside the bounding box
+ // of the label, a HyperlinkEvent is fired.
+ void OnLeftUp(wxMouseEvent& event);
+ void OnRightUp(wxMouseEvent& event);
+
+ // Changes the cursor to a hand, if the mouse is inside the label's
+ // bounding box.
+ void OnMotion(wxMouseEvent& event);
+
+ // Changes the cursor back to the default, if necessary.
+ void OnLeaveWindow(wxMouseEvent& event);
+
+ // handles "Copy URL" menuitem
+ void OnPopUpCopy(wxCommandEvent& event);
+
+ // Refreshes the control to update label's position if necessary
+ void OnSize(wxSizeEvent& event);
+
+
+ // overridden base class virtuals
+
+ // Returns the best size for the window, which is the size needed
+ // to display the text label.
+ virtual wxSize DoGetBestSize() const;
+
+ // creates a context menu with "Copy URL" menuitem
+ virtual void DoContextMenu(const wxPoint &);
+
+private:
+ // URL associated with the link. This is transmitted inside
+ // the HyperlinkEvent fired when the user clicks on the label.
+ wxString m_url;
+
+ // Foreground colours for various link types.
+ // NOTE: wxWindow::m_backgroundColour is used for background,
+ // wxWindow::m_foregroundColour is used to render non-visited links
+ wxColour m_hoverColour;
+ wxColour m_normalColour;
+ wxColour m_visitedColour;
+
+ // True if the mouse cursor is inside the label's bounding box.
+ bool m_rollover;
+
+ // True if the link has been clicked before.
+ bool m_visited;
+
+ // True if a click is in progress (left button down) and the click
+ // originated inside the label's bounding box.
+ bool m_clicking;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxGenericHyperlinkCtrl)
+};
+
+#endif // __GENERICHYPERLINKCTRLH__