Audacity 3.2.0
WaveTrackMenuItems.cpp
Go to the documentation of this file.
1/**********************************************************************
2
3Audacity: A Digital Audio Editor
4
5@file WaveTrackMenuItems.cpp
6@brief Injects menu items using WaveTrack but not the views of it
7
8Paul Licameli split from TrackMenus.cpp
9
10**********************************************************************/
11
12#include "CommonCommandFlags.h"
13#include "ProjectHistory.h"
14#include "ProjectRate.h"
15#include "ProjectWindow.h"
16#include "SelectUtilities.h"
17#include "TrackPanelAx.h"
18#include "WaveTrack.h"
19#include "../../../../commands/CommandContext.h"
20#include "../../../../commands/CommandManager.h"
21#include "QualitySettings.h"
22
23namespace {
24using namespace MenuTable;
25
26void OnNewWaveTrack(const CommandContext &context)
27{
28 auto &project = context.project;
29 auto &tracks = TrackList::Get( project );
30 auto &trackFactory = WaveTrackFactory::Get( project );
31 auto &window = ProjectWindow::Get( project );
32
33 auto defaultFormat = QualitySettings::SampleFormatChoice();
34
35 auto rate = ProjectRate::Get(project).GetRate();
36
37 auto track = trackFactory.Create(defaultFormat, rate);
38 track->SetName(tracks.MakeUniqueTrackName(WaveTrack::GetDefaultAudioTrackNamePreference()));
39 tracks.Add(track);
41
42 track->SetSelected(true);
43
45 .PushState(XO("Created new audio track"), XO("New Track"));
46
47 TrackFocus::Get(project).Set(track.get());
48 track->EnsureVisible();
49}
50
51void OnNewStereoTrack(const CommandContext &context)
52{
53 auto &project = context.project;
54 auto &tracks = TrackList::Get( project );
55 auto &trackFactory = WaveTrackFactory::Get( project );
56 auto &window = ProjectWindow::Get( project );
57
58 auto defaultFormat = QualitySettings::SampleFormatChoice();
59 auto rate = ProjectRate::Get(project).GetRate();
60
62
63 tracks.Append(std::move(*trackFactory.Create(2, defaultFormat, rate)));
64 (*tracks.rbegin())->SetSelected(true);
65 (*tracks.rbegin())->SetName(tracks.MakeUniqueTrackName(WaveTrack::GetDefaultAudioTrackNamePreference()));
66
68 .PushState(XO("Created new stereo audio track"), XO("New Track"));
69
70 TrackFocus::Get(project).Set(*tracks.rbegin());
71 (*tracks.rbegin())->EnsureVisible();
72}
73
74AttachedItem sAttachment{ wxT("Tracks/Add/Add"),
75 Items( "",
76 Command( wxT("NewMonoTrack"), XXO("&Mono Track"), OnNewWaveTrack,
77 AudioIONotBusyFlag(), wxT("Ctrl+Shift+N") ),
78 Command( wxT("NewStereoTrack"), XXO("&Stereo Track"),
80 )
81};
82
83}
wxT("CloseDown"))
const ReservedCommandFlag & AudioIONotBusyFlag()
XO("Cut/Copy/Paste")
XXO("&Cut/Copy/Paste Toolbar")
an object holding per-project preferred sample rate
const auto tracks
const auto project
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
AudacityProject & project
void PushState(const TranslatableString &desc, const TranslatableString &shortDesc)
static ProjectHistory & Get(AudacityProject &project)
static ProjectRate & Get(AudacityProject &project)
Definition: ProjectRate.cpp:28
double GetRate() const
Definition: ProjectRate.cpp:53
static ProjectWindow & Get(AudacityProject &project)
Track * Get()
void EnsureVisible(bool modifyState=false)
Definition: Track.cpp:86
static TrackList & Get(AudacityProject &project)
Definition: Track.cpp:354
static WaveTrackFactory & Get(AudacityProject &project)
Definition: WaveTrack.cpp:4079
static wxString GetDefaultAudioTrackNamePreference()
Definition: WaveTrack.cpp:528
constexpr auto Items
constexpr auto Command
PROJECT_RATE_API sampleFormat SampleFormatChoice()
void SelectNone(AudacityProject &project)
void OnNewWaveTrack(const CommandContext &context)
void OnNewStereoTrack(const CommandContext &context)