]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/hyperlink.h
Added drawing context to allow 'virtual' (dynamic) attributes, for e.g. showing bookm...
[wxWidgets.git] / interface / wx / hyperlink.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: hyperlink.h
e54c96f1 3// Purpose: interface of wxHyperlinkEvent
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxHyperlinkEvent
7c913512 11
9cc56d1f
FM
12 This event class is used for the events generated by wxHyperlinkCtrl.
13
14 @beginEventTable{wxHyperlinkEvent}
15 @event{EVT_HYPERLINK(id, func)}
16 User clicked on an hyperlink.
17 @endEventTable
7c913512 18
23324ae1 19 @library{wxadv}
9cc56d1f 20 @category{events}
23324ae1
FM
21*/
22class wxHyperlinkEvent : public wxCommandEvent
23{
24public:
25 /**
26 The constructor is not normally used by the user code.
27 */
9cc56d1f 28 wxHyperlinkEvent(wxObject* generator, int id, const wxString& url);
23324ae1
FM
29
30 /**
31 Returns the URL of the hyperlink where the user has just clicked.
32 */
328f5751 33 wxString GetURL() const;
23324ae1
FM
34
35 /**
36 Sets the URL associated with the event.
37 */
4cc4bfaf 38 void SetURL(const wxString& url);
23324ae1
FM
39};
40
41
e54c96f1 42
23324ae1
FM
43/**
44 @class wxHyperlinkCtrl
7c913512 45
23324ae1 46 This class shows a static text element which links to an URL.
b815cf68 47
9cc56d1f
FM
48 Appearance and behaviour is completely customizable.
49
50 In fact, when the user clicks on the hyperlink, a wxHyperlinkEvent is
51 sent but if that event is not handled (or it's skipped; see wxEvent::Skip),
52 then a call to wxLaunchDefaultBrowser() is done with the hyperlink's URL.
7c913512 53
23324ae1 54 Note that standard wxWindow functions like wxWindow::SetBackgroundColour,
9cc56d1f
FM
55 wxWindow::SetFont, wxWindow::SetCursor, wxWindow::SetLabel can be used to
56 customize appearance of the hyperlink.
7c913512 57
23324ae1 58 @beginStyleTable
8c6791e4 59 @style{wxHL_ALIGN_LEFT}
23324ae1 60 Align the text to the left.
8c6791e4 61 @style{wxHL_ALIGN_RIGHT}
b815cf68
VZ
62 Align the text to the right. This style is not supported under
63 Windows XP but is supported under all the other Windows versions.
8c6791e4 64 @style{wxHL_ALIGN_CENTRE}
b815cf68
VZ
65 Center the text (horizontally). This style is not supported by the
66 native MSW implementation used under Windows XP and later.
8c6791e4 67 @style{wxHL_CONTEXTMENU}
23324ae1
FM
68 Pop up a context menu when the hyperlink is right-clicked. The
69 context menu contains a "Copy URL" menu item which is automatically
70 handled by the hyperlink and which just copies in the clipboard the
71 URL (not the label) of the control.
8c6791e4 72 @style{wxHL_DEFAULT_STYLE}
23324ae1
FM
73 The default style for wxHyperlinkCtrl:
74 wxBORDER_NONE|wxHL_CONTEXTMENU|wxHL_ALIGN_CENTRE.
75 @endStyleTable
7c913512 76
3051a44a 77 @beginEventEmissionTable{wxHyperlinkEvent}
9cc56d1f
FM
78 @event{EVT_HYPERLINK(id, func)}
79 The hyperlink was (left) clicked. If this event is not handled in user's
80 code (or it's skipped; see wxEvent::Skip), then a call to wxLaunchDefaultBrowser
81 is done with the hyperlink's URL.
82 @endEventTable
83
b815cf68
VZ
84 Currently this class is implemented using native support in wxGTK and wxMSW
85 (under Windows XP and later only) and a generic version is used by the
86 other ports.
9cc56d1f 87
23324ae1
FM
88 @library{wxadv}
89 @category{ctrl}
7e59b885 90 @appearance{hyperlinkctrl.png}
7c913512 91
e54c96f1 92 @see wxURL, wxHyperlinkEvent
23324ae1
FM
93*/
94class wxHyperlinkCtrl : public wxControl
95{
96public:
a6052817
FM
97 /**
98 Constructor. See Create() for more info.
99 */
3db47dfa 100 wxHyperlinkCtrl(wxWindow* parent, wxWindowID id,
ccf39540
FM
101 const wxString& label,
102 const wxString& url,
103 const wxPoint& pos = wxDefaultPosition,
104 const wxSize& size = wxDefaultSize,
105 long style = wxHL_DEFAULT_STYLE,
106 const wxString& name = wxHyperlinkCtrlNameStr);
a6052817 107
23324ae1
FM
108 /**
109 Creates the hyperlink control.
3c4f71cc 110
7c913512 111 @param parent
4cc4bfaf 112 Parent window. Must not be @NULL.
7c913512 113 @param id
4cc4bfaf 114 Window identifier. A value of wxID_ANY indicates a default value.
7c913512 115 @param label
4cc4bfaf 116 The label of the hyperlink.
7c913512 117 @param url
4cc4bfaf 118 The URL associated with the given label.
7c913512 119 @param pos
4cc4bfaf 120 Window position.
7c913512 121 @param size
9cc56d1f
FM
122 Window size.
123 If the wxDefaultSize is specified then the window is sized appropriately.
7c913512 124 @param style
4cc4bfaf 125 Window style. See wxHyperlinkCtrl.
7c913512 126 @param name
4cc4bfaf 127 Window name.
23324ae1 128 */
43c48e1e
FM
129 bool Create(wxWindow* parent, wxWindowID id, const wxString& label,
130 const wxString& url, const wxPoint& pos = wxDefaultPosition,
23324ae1 131 const wxSize& size = wxDefaultSize,
a6052817 132 long style = wxHL_DEFAULT_STYLE,
43c48e1e 133 const wxString& name = wxHyperlinkCtrlNameStr);
23324ae1
FM
134
135 /**
136 Returns the colour used to print the label of the hyperlink when the mouse is
137 over the control.
138 */
adaaa686 139 virtual wxColour GetHoverColour() const;
23324ae1
FM
140
141 /**
142 Returns the colour used to print the label when the link has never been clicked
9cc56d1f 143 before (i.e. the link has not been @e visited) and the mouse is not over the control.
23324ae1 144 */
adaaa686 145 virtual wxColour GetNormalColour() const;
23324ae1
FM
146
147 /**
148 Returns the URL associated with the hyperlink.
149 */
adaaa686 150 virtual wxString GetURL() const;
23324ae1
FM
151
152 /**
153 Returns @true if the hyperlink has already been clicked by the user at least
154 one time.
155 */
a6052817 156 virtual bool GetVisited() const = 0;
23324ae1
FM
157
158 /**
159 Returns the colour used to print the label when the mouse is not over the
9cc56d1f
FM
160 control and the link has already been clicked before (i.e. the link has
161 been @e visited).
23324ae1 162 */
adaaa686 163 virtual wxColour GetVisitedColour() const;
23324ae1
FM
164
165 /**
166 Sets the colour used to print the label of the hyperlink when the mouse is over
167 the control.
168 */
adaaa686 169 virtual void SetHoverColour(const wxColour& colour);
23324ae1
FM
170
171 /**
9cc56d1f 172 Sets the colour used to print the label when the link has never been clicked before
23324ae1
FM
173 (i.e. the link has not been @e visited) and the mouse is not over the control.
174 */
adaaa686 175 virtual void SetNormalColour(const wxColour& colour);
23324ae1
FM
176
177 /**
178 Sets the URL associated with the hyperlink.
179 */
adaaa686 180 virtual void SetURL(const wxString& url);
23324ae1
FM
181
182 /**
183 Marks the hyperlink as visited (see wxHyperlinkCtrl::SetVisitedColour).
184 */
a6052817 185 virtual void SetVisited(bool visited = true) = 0;
23324ae1
FM
186
187 /**
188 Sets the colour used to print the label when the mouse is not over the control
9cc56d1f 189 and the link has already been clicked before (i.e. the link has been @e visited).
23324ae1 190 */
adaaa686 191 virtual void SetVisitedColour(const wxColour& colour);
23324ae1 192};
e54c96f1 193