12#ifndef __AUDACITY_BUTTON__
13#define __AUDACITY_BUTTON__
26#if wxUSE_ACCESSIBILITY
32 AButtonAx(wxWindow * window);
34 virtual ~ AButtonAx();
40 wxAccStatus DoDefaultAction(
int childId)
override;
44 wxAccStatus GetChild(
int childId, wxAccessible** child)
override;
47 wxAccStatus GetChildCount(
int* childCount)
override;
55 wxAccStatus GetDefaultAction(
int childId, wxString *actionName)
override;
58 wxAccStatus GetDescription(
int childId, wxString *description)
override;
64 wxAccStatus GetFocus(
int *childId, wxAccessible **child)
override;
67 wxAccStatus GetHelpText(
int childId, wxString *helpText)
override;
71 wxAccStatus GetKeyboardShortcut(
int childId, wxString *shortcut)
override;
75 wxAccStatus GetLocation(wxRect& rect,
int elementId)
override;
78 wxAccStatus GetName(
int childId, wxString *
name)
override;
81 wxAccStatus GetRole(
int childId, wxAccRole *role)
override;
91 wxAccStatus GetSelections(wxVariant *selections)
override;
94 wxAccStatus GetState(
int childId,
long* state)
override;
98 wxAccStatus GetValue(
int childId, wxString* strValue)
override;
104class AUDACITY_DLL_API
AButton :
public wxWindow {
105 friend class AButtonAx;
128 AButton(wxWindow* parent =
nullptr,
129 wxWindowID
id = wxID_ANY,
130 const wxPoint& pos = wxDefaultPosition,
131 const wxSize&
size = wxDefaultSize,
132 bool toggle =
false);
149 void SetButtonType(Type type);
150 void SetFrameMid(
int mid);
161 void SetFocusFromKbd()
override;
164 void SetImages(
const wxImage& up,
172 void SetAlternateImages(
unsigned idx,
179 void SetIcon(
const wxImage& icon);
180 void SetIcon(AButtonState state,
const wxImage& icon);
183 void SetAlternateIcon(
unsigned idx,
const wxImage& icon);
184 void SetAlternateIcon(
unsigned idx, AButtonState state,
const wxImage& icon);
185 void SetAlternateIcons(
unsigned idx,
const wxImage& up,
const wxImage& down,
const wxImage& disabled);
188 void SetAlternateIdx(
unsigned idx);
193 void FollowModifierKeys();
195 void SetFocusRect(
const wxRect & r);
201 state ? Enable() : Disable();
207 void OnErase(wxEraseEvent & event);
208 void OnPaint(wxPaintEvent & event);
209 void OnSize(wxSizeEvent & event);
210 void OnMouseEvent(wxMouseEvent & event);
216 void OnCaptureLost(wxMouseCaptureLostEvent & event);
217 void OnKeyDown(wxKeyEvent & event);
218 void OnSetFocus(wxFocusEvent & event);
219 void OnKillFocus(wxFocusEvent & event);
220 void OnCharHook(wxKeyEvent& event);
224 bool WasControlDown();
236 void InteractionOver(){
if( !mToggle ) PopUp();}
237 void Toggle(){ mButtonIsDown ? PopUp() : PushDown();}
239 void SetShift(
bool shift);
240 void SetControl(
bool control);
242 wxSize DoGetBestClientSize()
const override;
244 AButtonState GetState();
246 void UseDisabledAsDownHiliteImage(
bool flag);
250 struct Resetter {
void operator () (
bool *p)
const {
if(p) *p =
false; } };
258 bool HasAlternateImages(
unsigned idx)
const;
260 void Init(wxWindow* parent, wxWindowID
id,
const wxPoint& pos,
const wxSize&
size,
bool toggle);
262 unsigned mAlternateIdx{0};
270 bool mWasShiftDown {
false};
271 bool mWasControlDown {
false};
273 bool mCursorIsInWindow{
false};
274 bool mButtonIsDown{
false};
275 bool mIsClicking{
false};
277 bool mUseDisabledAsDownHiliteImage{
false};
278 bool mIsDoubleClicked{
false};
280 std::vector<std::array<wxImage, AButtonStateCount>>
mIcons;
281 std::vector<std::array<wxImage, AButtonStateCount>>
mImages;
284 bool mForceFocusRect{
false};
293 DECLARE_EVENT_TABLE()
const TranslatableString name
static void OnSize(wxSizeEvent &evt)
Holds a msgid for the translation catalog; may also bind format arguments.
An alternative to using wxWindowAccessible, which in wxWidgets 3.1.1 contained GetParent() which was ...