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