17#include "../../ProjectAudioManager.h"
19#include "../../SelectUtilities.h"
20#include "../../RefreshCode.h"
24#include "../../TrackPanel.h"
25#include "../../TrackUtilities.h"
27#include "../../tracks/ui/ChannelView.h"
30(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
43 if (
auto pTrack =
mpTrack.lock()) {
44 auto channels = pTrack->Channels();
46 for (
auto pChannel : channels)
64 ?
XO(
"Expand") :
XO(
"Collapse");
68(std::weak_ptr<MinimizeButtonHandle> &holder,
69 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
74 if (buttonRect.Contains(state.m_x, state.m_y)) {
76 auto result = std::make_shared<MinimizeButtonHandle>( pTrack, buttonRect );
86(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
104 *pTrack, event.ShiftDown(), event.ControlDown(), !unsafe);
115#if defined(__WXMAC__)
116 return pTrack->GetSelected() ?
XO(
"Command+Click to deselect") :
XO(
"Select track");
118 return pTrack->GetSelected() ?
XO(
"Ctrl+Click to deselect") :
XO(
"Select track");
123(std::weak_ptr<SelectButtonHandle> &holder,
124 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
129 if (buttonRect.Contains(state.m_x, state.m_y)) {
131 auto result = std::make_shared<SelectButtonHandle>( pTrack, buttonRect );
142(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
177 auto name =
XO(
"Delete Track");
185 return commandManager.DescribeCommandsAndShortcuts( &command, 1u );
189(std::weak_ptr<CloseButtonHandle> &holder,
190 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
195 if (buttonRect.Contains(state.m_x, state.m_y)) {
197 auto result = std::make_shared<CloseButtonHandle>( pTrack, buttonRect );
208(
const std::shared_ptr<TrackPanelCell> &pCell,
209 const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
219(
const wxMouseEvent &,
AudacityProject *pProject, wxWindow *WXUNUSED(pParent))
222 auto pCell =
mpCell.lock();
229 trackPanel.CallAfter(
230 [&trackPanel,pTrack]{ trackPanel.OnTrackMenu( pTrack.get() ); } );
237 auto name =
XO(
"Open menu...");
245 return commandManager.DescribeCommandsAndShortcuts( &command, 1u );
249(std::weak_ptr<MenuButtonHandle> &holder,
250 const wxMouseState &state,
const wxRect &rect,
251 const std::shared_ptr<TrackPanelCell> &pCell)
256 if (buttonRect.Contains(state.m_x, state.m_y)) {
258 auto result = std::make_shared<MenuButtonHandle>( pCell, pTrack, buttonRect );
std::shared_ptr< UIHandle > UIHandlePtr
const TranslatableString name
declares abstract base class Track, TrackList, and iterators over TrackList
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...
static ChannelView & Get(Channel &channel)
bool GetMinimized() const
void SetMinimized(bool minimized)
Subclass & Get(const RegisteredFactory &key)
Get reference to an attachment, creating on demand if not present, down-cast it to Subclass.
static CommandManager & Get(AudacityProject &project)
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Track & SubstitutePendingChangedTrack(Track &track) const
static PendingTracks & Get(AudacityProject &project)
bool IsAudioActive() const
static ProjectAudioIO & Get(AudacityProject &project)
static ProjectAudioManager & Get(AudacityProject &project)
void ModifyState(bool bWantsAutoSave)
static ProjectHistory & Get(AudacityProject &project)
static TrackPanel & Get(AudacityProject &project)
Holds a msgid for the translation catalog; may also bind format arguments.
AUDACITY_DLL_API void GetCloseBoxRect(const wxRect &rect, wxRect &dest)
AUDACITY_DLL_API void GetSelectButtonRect(const wxRect &rect, wxRect &dest)
AUDACITY_DLL_API void GetMinimizeRect(const wxRect &rect, wxRect &dest)
AUDACITY_DLL_API void GetTitleBarRect(const wxRect &rect, wxRect &dest)
Namespace containing an enum 'what to do on a refresh?'.
void DoListSelection(AudacityProject &project, Track &t, bool shift, bool ctrl, bool modifyState)
AUDACITY_DLL_API void DoRemoveTrack(AudacityProject &project, Track &toRemove)