Audacity 3.2.0
Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | List of all members
AffordanceHandle Class Referenceabstract

#include <AffordanceHandle.h>

Inheritance diagram for AffordanceHandle:
[legend]
Collaboration diagram for AffordanceHandle:
[legend]

Public Member Functions

void Enter (bool forward, AudacityProject *pProject) override
 
HitTestPreview Preview (const TrackPanelMouseState &mouseState, AudacityProject *pProject) override
 
 AffordanceHandle (const std::shared_ptr< Track > &track)
 
Result Click (const TrackPanelMouseEvent &evt, AudacityProject *pProject) override
 
Result Release (const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) override
 
- Public Member Functions inherited from TimeShiftHandle
 TimeShiftHandle (std::shared_ptr< Track > pTrack, bool gripHit)
 
TimeShiftHandleoperator= (TimeShiftHandle &&)=default
 
bool IsGripHit () const
 
virtual ~TimeShiftHandle ()
 
void Enter (bool forward, AudacityProject *) override
 
Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override
 
Result Drag (const TrackPanelMouseEvent &event, AudacityProject *pProject) override
 
HitTestPreview Preview (const TrackPanelMouseState &state, AudacityProject *pProject) override
 
Result Release (const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) override
 
Result Cancel (AudacityProject *pProject) override
 
bool StopsOnKeystroke () override
 
bool Clicked () const
 
- Public Member Functions inherited from UIHandle
virtual ~UIHandle ()=0
 
virtual void Enter (bool forward, AudacityProject *pProject)
 
virtual bool HasRotation () const
 
virtual bool Rotate (bool forward)
 
virtual bool HasEscape (AudacityProject *pProject) const
 
virtual bool Escape (AudacityProject *pProject)
 
virtual bool HandlesRightClick ()
 Whether the handle has any special right-button handling. More...
 
virtual Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
 
virtual Result Drag (const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
 
virtual HitTestPreview Preview (const TrackPanelMouseState &state, AudacityProject *pProject)=0
 
virtual Result Release (const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent)=0
 
virtual Result Cancel (AudacityProject *pProject)=0
 
virtual bool StopsOnKeystroke ()
 
virtual void OnProjectChange (AudacityProject *pProject)
 
Result GetChangeHighlight () const
 
void SetChangeHighlight (Result val)
 
- Public Member Functions inherited from TrackPanelDrawable
virtual ~TrackPanelDrawable ()=0
 
virtual void Draw (TrackPanelDrawingContext &context, const wxRect &rect, unsigned iPass)
 
virtual wxRect DrawingArea (TrackPanelDrawingContext &context, const wxRect &rect, const wxRect &panelRect, unsigned iPass)
 

Protected Member Functions

virtual Result SelectAt (const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
 
- Protected Member Functions inherited from TimeShiftHandle
std::shared_ptr< TrackGetTrack () const
 
bool WasMoved () const
 

Private Member Functions

Result UpdateTrackSelection (const TrackPanelMouseEvent &event, AudacityProject *pProject)
 

Static Private Member Functions

static HitTestPreview HitPreview (const AudacityProject *, bool unsafe, bool moving)
 

Additional Inherited Members

- Public Types inherited from UIHandle
using Result = unsigned
 
using Cell = TrackPanelCell
 
- Static Public Member Functions inherited from TimeShiftHandle
static UIHandlePtr HitAnywhere (std::weak_ptr< TimeShiftHandle > &holder, const std::shared_ptr< Track > &pTrack, bool gripHit)
 
static UIHandlePtr HitTest (std::weak_ptr< TimeShiftHandle > &holder, const wxMouseState &state, const wxRect &rect, const std::shared_ptr< Track > &pTrack)
 
- Static Public Member Functions inherited from UIHandle
static UIHandle::Result NeedChangeHighlight (const UIHandle &, const UIHandle &)
 
- Static Public Member Functions inherited from TrackPanelDrawable
static wxRect MaximizeWidth (const wxRect &rect, const wxRect &panelRect)
 
static wxRect MaximizeHeight (const wxRect &rect, const wxRect &panelRect)
 
- Protected Attributes inherited from UIHandle
Result mChangeHighlight { 0 }
 

Detailed Description


Audacity: A Digital Audio Editor

AffordanceHandle.h

Vitaly Sverchinsky

Definition at line 15 of file AffordanceHandle.h.

Constructor & Destructor Documentation

◆ AffordanceHandle()

AffordanceHandle::AffordanceHandle ( const std::shared_ptr< Track > &  track)

Definition at line 58 of file AffordanceHandle.cpp.

59 : TimeShiftHandle(track, false)
60{
61}
TimeShiftHandle(const TimeShiftHandle &)=delete

Member Function Documentation

◆ Click()

UIHandle::Result AffordanceHandle::Click ( const TrackPanelMouseEvent evt,
AudacityProject pProject 
)
overridevirtual

Implements UIHandle.

Definition at line 63 of file AffordanceHandle.cpp.

64{
65 auto result = TimeShiftHandle::Click(evt, pProject);
66 return result | RefreshCode::RefreshCell;
67}
Result Click(const TrackPanelMouseEvent &event, AudacityProject *pProject) override

References TimeShiftHandle::Click(), and RefreshCode::RefreshCell.

Referenced by WaveTrackAffordanceHandle::Click().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Enter()

void AffordanceHandle::Enter ( bool  forward,
AudacityProject pProject 
)
overridevirtual

Reimplemented from UIHandle.

Definition at line 46 of file AffordanceHandle.cpp.

47{
50}
void Enter(bool forward, AudacityProject *) override
void SetChangeHighlight(Result val)
Definition: UIHandle.h:123
@ RefreshLatestCell
Definition: RefreshCode.h:25

References TimeShiftHandle::Enter(), forward, RefreshCode::RefreshCell, RefreshCode::RefreshLatestCell, and UIHandle::SetChangeHighlight().

Here is the call graph for this function:

◆ HitPreview()

HitTestPreview AffordanceHandle::HitPreview ( const AudacityProject ,
bool  unsafe,
bool  moving 
)
staticprivate

Audacity: A Digital Audio Editor

AffordanceHandle.cpp

Vitaly Sverchinsky

Definition at line 24 of file AffordanceHandle.cpp.

25{
26 static auto disabledCursor =
27 MakeCursor(wxCURSOR_NO_ENTRY, DisabledCursorXpm, 16, 16);
28 static auto handOpenCursor =
29 MakeCursor(wxCURSOR_HAND, RearrangeCursorXpm, 16, 16);
30 static auto handClosedCursor =
31 MakeCursor(wxCURSOR_HAND, RearrangingCursorXpm, 16, 16);
32 // i18n-hint Appears on hovering mouse over clip affordance
33 auto message = XO("Drag clips to reposition them."\
34 " Hold Shift and drag to move all clips on the same track.");
35
36 if (unsafe)
37 return { message, &*disabledCursor };
38 return {
39 message,
40 (moving
41 ? &*handClosedCursor
43 };
44}
static std::unique_ptr< wxCursor > handOpenCursor
XO("Cut/Copy/Paste")
std::unique_ptr< wxCursor > MakeCursor(int WXUNUSED(CursorId), const char *const pXpm[36], int HotX, int HotY)
Definition: TrackPanel.cpp:187

References handOpenCursor, MakeCursor(), and XO().

Referenced by Preview().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Preview()

HitTestPreview AffordanceHandle::Preview ( const TrackPanelMouseState mouseState,
AudacityProject pProject 
)
overridevirtual

Implements UIHandle.

Definition at line 52 of file AffordanceHandle.cpp.

53{
54 const bool unsafe = ProjectAudioIO::Get(*pProject).IsAudioActive();
55 return HitPreview(pProject, unsafe, Clicked());
56}
static HitTestPreview HitPreview(const AudacityProject *, bool unsafe, bool moving)
bool IsAudioActive() const
static ProjectAudioIO & Get(AudacityProject &project)
bool Clicked() const

References TimeShiftHandle::Clicked(), ProjectAudioIO::Get(), HitPreview(), and ProjectAudioIO::IsAudioActive().

Here is the call graph for this function:

◆ Release()

UIHandle::Result AffordanceHandle::Release ( const TrackPanelMouseEvent event,
AudacityProject pProject,
wxWindow *  pParent 
)
overridevirtual

Implements UIHandle.

Definition at line 69 of file AffordanceHandle.cpp.

70{
71 auto result = TimeShiftHandle::Release(event, pProject, pParent);
72 if (!WasMoved())
73 result |= UpdateTrackSelection(event, pProject);
74 return result;
75}
Result UpdateTrackSelection(const TrackPanelMouseEvent &event, AudacityProject *pProject)
bool WasMoved() const
Result Release(const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) override

References TimeShiftHandle::Release(), UpdateTrackSelection(), and TimeShiftHandle::WasMoved().

Referenced by WaveTrackAffordanceHandle::Release().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SelectAt()

virtual Result AffordanceHandle::SelectAt ( const TrackPanelMouseEvent event,
AudacityProject pProject 
)
protectedpure virtual

Implemented in NoteTrackAffordanceHandle, and WaveTrackAffordanceHandle.

Referenced by UpdateTrackSelection().

Here is the caller graph for this function:

◆ UpdateTrackSelection()

UIHandle::Result AffordanceHandle::UpdateTrackSelection ( const TrackPanelMouseEvent event,
AudacityProject pProject 
)
private

Definition at line 77 of file AffordanceHandle.cpp.

78{
79 auto& trackList = TrackList::Get(*pProject);
80
81 if(const auto track = trackList.Lock<Track>(GetTrack()))
82 {
83 auto& selectionState = SelectionState::Get(*pProject);
84 selectionState.SelectNone(trackList);
85 if (auto pTrack = *trackList.Find(track.get()))
86 selectionState.SelectTrack(*pTrack, true, true);
87
88 return SelectAt(event, pProject);
89 }
90
92}
virtual Result SelectAt(const TrackPanelMouseEvent &event, AudacityProject *pProject)=0
static SelectionState & Get(AudacityProject &project)
std::shared_ptr< Track > GetTrack() const
Abstract base class for an object holding data associated with points on a time axis.
Definition: Track.h:123
static TrackList & Get(AudacityProject &project)
Definition: Track.cpp:354

References SelectionState::Get(), TrackList::Get(), TimeShiftHandle::GetTrack(), RefreshCode::RefreshNone, and SelectAt().

Referenced by Release().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: