11#ifndef __AUDACITY_UI_HANDLE__
12#define __AUDACITY_UI_HANDLE__
53 virtual bool HasRotation()
const;
72 virtual bool HandlesRightClick();
101 wxWindow *pParent) = 0;
111 virtual bool StopsOnKeystroke();
149template<
typename Sub
class>
151( std::weak_ptr<Subclass> &holder,
const std::shared_ptr<Subclass> &pNew )
157 auto ptr = holder.lock();
164 wxASSERT(
typeid(*ptr) ==
typeid(*pNew));
166 auto code = Subclass::NeedChangeHighlight( *ptr, *pNew );
167 *ptr = std::move(*pNew);
168 ptr->SetChangeHighlight( code );
std::shared_ptr< UIHandle > UIHandlePtr
std::shared_ptr< Subclass > AssignUIHandlePtr(std::weak_ptr< Subclass > &holder, const std::shared_ptr< Subclass > &pNew)
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Drawing interface common to cells, groups of cells, and temporary handles in CellularPanel.
Short-lived drawing and event-handling object associated with a TrackPanelCell.
virtual Result Drag(const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
virtual Result Release(const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent)=0
void SetChangeHighlight(Result val)
Result GetChangeHighlight() const
static UIHandle::Result NeedChangeHighlight(const UIHandle &, const UIHandle &)
virtual HitTestPreview Preview(const TrackPanelMouseState &state, AudacityProject *pProject)=0
virtual Result Cancel(AudacityProject *pProject)=0
virtual Result Click(const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
void Rotate(ArraysOf< float > &arrays, size_t historyLen)