16#include "../../ProjectAudioManager.h"
18#include "../../SelectUtilities.h"
19#include "../../RefreshCode.h"
23#include "../../TrackPanel.h"
24#include "../../TrackUtilities.h"
26#include "../../tracks/ui/ChannelView.h"
29(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
42 if (
auto pTrack =
mpTrack.lock()) {
43 auto channels = pTrack->Channels();
45 for (
auto pChannel : channels)
63 ?
XO(
"Expand") :
XO(
"Collapse");
67(std::weak_ptr<MinimizeButtonHandle> &holder,
68 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
73 if (buttonRect.Contains(state.m_x, state.m_y)) {
75 auto result = std::make_shared<MinimizeButtonHandle>( pTrack, buttonRect );
85(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
103 *pTrack, event.ShiftDown(), event.ControlDown(), !unsafe);
114#if defined(__WXMAC__)
115 return pTrack->GetSelected() ?
XO(
"Command+Click to deselect") :
XO(
"Select track");
117 return pTrack->GetSelected() ?
XO(
"Ctrl+Click to deselect") :
XO(
"Select track");
122(std::weak_ptr<SelectButtonHandle> &holder,
123 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
128 if (buttonRect.Contains(state.m_x, state.m_y)) {
130 auto result = std::make_shared<SelectButtonHandle>( pTrack, buttonRect );
141(
const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
158 auto toRemove = pTrack->SubstitutePendingChangedTrack();
184 return commandManager.DescribeCommandsAndShortcuts( &command, 1u );
188(std::weak_ptr<CloseButtonHandle> &holder,
189 const wxMouseState &state,
const wxRect &rect,
TrackPanelCell *pCell)
194 if (buttonRect.Contains(state.m_x, state.m_y)) {
196 auto result = std::make_shared<CloseButtonHandle>( pTrack, buttonRect );
207(
const std::shared_ptr<TrackPanelCell> &pCell,
208 const std::shared_ptr<Track> &pTrack,
const wxRect &rect )
218(
const wxMouseEvent &,
AudacityProject *pProject, wxWindow *WXUNUSED(pParent))
221 auto pCell =
mpCell.lock();
228 trackPanel.CallAfter(
229 [&trackPanel,pTrack]{ trackPanel.OnTrackMenu( pTrack.get() ); } );
236 auto name =
XO(
"Open menu...");
244 return commandManager.DescribeCommandsAndShortcuts( &command, 1u );
248(std::weak_ptr<MenuButtonHandle> &holder,
249 const wxMouseState &state,
const wxRect &rect,
250 const std::shared_ptr<TrackPanelCell> &pCell)
255 if (buttonRect.Contains(state.m_x, state.m_y)) {
257 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,...
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)
void DoRemoveTrack(AudacityProject &project, Track *toRemove)
std::shared_ptr< Track > FindTrack(TrackPanelCell *pCell)