]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/accel.h
Note that CanCut / CanCopy / CanPaste are not currently supported on the OSX WebKit...
[wxWidgets.git] / interface / wx / accel.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: accel.h
463b4bfa 3// Purpose: interface of wxAccelerator* classes
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
463b4bfa
FM
9
10/** wxAcceleratorEntry flags */
11enum wxAcceleratorEntryFlags
12{
13 /** no modifiers */
14 wxACCEL_NORMAL,
15
16 /** hold Alt key down */
17 wxACCEL_ALT,
18
19 /** hold Ctrl key down */
20 wxACCEL_CTRL,
21
22 /** hold Shift key down */
23 wxACCEL_SHIFT,
24
25 /** Command key on OS X; identic to wxACCEL_CTRL on other platforms. */
26 wxACCEL_CMD
27};
28
29
23324ae1
FM
30/**
31 @class wxAcceleratorEntry
7c913512 32
463b4bfa
FM
33 An object used by an application wishing to create an accelerator table
34 (see wxAcceleratorTable).
7c913512 35
23324ae1 36 @library{wxcore}
3c99e2fd 37 @category{data}
7c913512 38
3a65144e 39 @see wxAcceleratorTable, wxWindow::SetAcceleratorTable
23324ae1 40*/
7c913512 41class wxAcceleratorEntry
23324ae1
FM
42{
43public:
23324ae1
FM
44 /**
45 Constructor.
463b4bfa 46
7c913512 47 @param flags
d4624460 48 A combination of the ::wxAcceleratorEntryFlags values, which
463b4bfa 49 indicates which modifier keys are held down.
7c913512 50 @param keyCode
d4624460 51 The keycode to be detected. See ::wxKeyCode for a full list of keycodes.
7c913512 52 @param cmd
3d8662ab
FM
53 The menu or control command identifier (ID).
54 @param item
55 The menu item associated with this accelerator.
56 */
57 wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0,
58 wxMenuItem *item = NULL);
59
60 /**
61 Copy ctor.
23324ae1 62 */
3d8662ab 63 wxAcceleratorEntry(const wxAcceleratorEntry& entry);
23324ae1
FM
64
65 /**
66 Returns the command identifier for the accelerator table entry.
67 */
328f5751 68 int GetCommand() const;
23324ae1
FM
69
70 /**
71 Returns the flags for the accelerator table entry.
72 */
328f5751 73 int GetFlags() const;
23324ae1
FM
74
75 /**
76 Returns the keycode for the accelerator table entry.
77 */
328f5751 78 int GetKeyCode() const;
23324ae1 79
3d8662ab
FM
80 /**
81 Returns the menu item associated with this accelerator entry.
82 */
83 wxMenuItem *GetMenuItem() const;
84
23324ae1
FM
85 /**
86 Sets the accelerator entry parameters.
3c4f71cc 87
7c913512 88 @param flags
d4624460 89 A combination of the ::wxAcceleratorEntryFlags values, which
463b4bfa 90 indicates which modifier keys are held down.
7c913512 91 @param keyCode
d4624460 92 The keycode to be detected. See ::wxKeyCode for a full list of keycodes.
7c913512 93 @param cmd
3d8662ab
FM
94 The menu or control command identifier (ID).
95 @param item
96 The menu item associated with this accelerator.
97 */
98 void Set(int flags, int keyCode, int cmd, wxMenuItem *item = NULL);
463b4bfa 99
3d8662ab
FM
100 /**
101 Returns @true if this object is correctly initialized.
23324ae1 102 */
3d8662ab
FM
103 bool IsOk() const;
104
105 /**
944f641c 106 Returns a textual representation of this accelerator.
d4624460 107
944f641c
VZ
108 The returned string is of the form <code>[Alt+][Ctrl+][Shift+]Key</code>
109 where the modifier keys are present only if the corresponding flag is
110 set.
3d8662ab
FM
111 */
112 wxString ToString() const;
113
114 /**
115 Parses the given string and sets the accelerator accordingly.
116
117 @param str
944f641c
VZ
118 This string may be either in the same format as returned by
119 ToString(), i.e. contain the accelerator itself only, or have the
120 format of a full menu item text with i.e. <code>Label TAB
121 Accelerator</code>. In the latter case, the part of the string
6fc7a1ad
VZ
122 before the TAB is ignored. Notice that the latter format is only
123 supported for the compatibility with the previous wxWidgets
124 versions and the new code should pass only the accelerator string
125 itself to this function.
3d8662ab 126
d29a9a8a
BP
127 @return @true if the given string correctly initialized this object
128 (i.e. if IsOk() returns true after this call)
3d8662ab
FM
129 */
130 bool FromString(const wxString& str);
131
132
133 wxAcceleratorEntry& operator=(const wxAcceleratorEntry& entry);
134 bool operator==(const wxAcceleratorEntry& entry) const;
135 bool operator!=(const wxAcceleratorEntry& entry) const;
23324ae1
FM
136};
137
138
139/**
140 @class wxAcceleratorTable
7c913512 141
23324ae1 142 An accelerator table allows the application to specify a table of keyboard
b1bb04c5 143 shortcuts for menu or button commands.
463b4bfa 144
3a65144e 145 The object ::wxNullAcceleratorTable is defined to be a table with no data, and
463b4bfa
FM
146 is the initial accelerator table for a window.
147
148 Example:
149
150 @code
151 wxAcceleratorEntry entries[4];
152 entries[0].Set(wxACCEL_CTRL, (int) 'N', ID_NEW_WINDOW);
153 entries[1].Set(wxACCEL_CTRL, (int) 'X', wxID_EXIT);
154 entries[2].Set(wxACCEL_SHIFT, (int) 'A', ID_ABOUT);
155 entries[3].Set(wxACCEL_NORMAL, WXK_DELETE, wxID_CUT);
156
157 wxAcceleratorTable accel(4, entries);
158 frame->SetAcceleratorTable(accel);
159 @endcode
7c913512 160
463b4bfa
FM
161 @remarks
162 An accelerator takes precedence over normal processing and can be a convenient
163 way to program some event handling. For example, you can use an accelerator table
164 to enable a dialog with a multi-line text control to accept CTRL-Enter as meaning
aa47271c 165 'OK'.
7c913512 166
23324ae1 167 @library{wxcore}
3c99e2fd 168 @category{data}
7c913512 169
23324ae1 170 @stdobjects
3a65144e 171 ::wxNullAcceleratorTable
7c913512 172
3a65144e 173 @see wxAcceleratorEntry, wxWindow::SetAcceleratorTable
23324ae1
FM
174*/
175class wxAcceleratorTable : public wxObject
176{
177public:
23324ae1 178 /**
463b4bfa
FM
179 Default ctor.
180 */
181 wxAcceleratorTable();
182
463b4bfa
FM
183 /**
184 Initializes the accelerator table from an array of wxAcceleratorEntry.
3c4f71cc 185
7c913512 186 @param n
4cc4bfaf 187 Number of accelerator entries.
7c913512 188 @param entries
4cc4bfaf 189 The array of entries.
1058f652
MB
190
191 @beginWxPerlOnly
192 The wxPerl constructor accepts a list of either
193 Wx::AcceleratorEntry objects or references to 3-element arrays
194 [flags, keyCode, cmd] , like the parameters of
195 Wx::AcceleratorEntry::new.
196 @endWxPerlOnly
463b4bfa 197 */
3d8662ab 198 wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]);
463b4bfa
FM
199
200 /**
201 Loads the accelerator table from a Windows resource (Windows only).
3c4f71cc 202
d9faa1fe
FM
203 @onlyfor{wxmsw}
204
7c913512 205 @param resource
4cc4bfaf 206 Name of a Windows accelerator.
23324ae1 207 */
7c913512 208 wxAcceleratorTable(const wxString& resource);
23324ae1
FM
209
210 /**
211 Destroys the wxAcceleratorTable object.
463b4bfa 212 See @ref overview_refcount_destruct for more info.
23324ae1 213 */
8d483c9b 214 virtual ~wxAcceleratorTable();
23324ae1
FM
215
216 /**
217 Returns @true if the accelerator table is valid.
218 */
328f5751 219 bool IsOk() const;
23324ae1 220};
463b4bfa 221
39fb8056
FM
222
223// ============================================================================
224// Global functions/macros
225// ============================================================================
226
463b4bfa
FM
227/**
228 An empty accelerator table.
229*/
230wxAcceleratorTable wxNullAcceleratorTable;