2#include "../CommonCommandFlags.h"
3#include "../MenuCreator.h"
9#include "../TrackPanel.h"
15#include "../prefs/GUIPrefs.h"
16#include "../prefs/TracksPrefs.h"
19#include <wx/scrolbar.h>
31 const double lowerBound =
32 std::max(viewInfo.selectedRegion.t0(),
33 viewport.ScrollingLowerBoundTime());
35 viewInfo.selectedRegion.t1() - lowerBound;
37 return viewInfo.GetZoom();
49 auto width = viewInfo.GetTracksUsableWidth();
50 return (width - 1) / denom;
57 const double maxZoomOutFactor = 4.0;
59 const double pixelsPerUnit = 5.0;
63 double zoomToFit = viewport.GetZoomOfToFit();
77 result = pixelsPerUnit * 1.0/60;
80 result = pixelsPerUnit * 1.0;
83 result = pixelsPerUnit * 5.0;
86 result = pixelsPerUnit * 10.0;
89 result = pixelsPerUnit * 20.0;
92 result = pixelsPerUnit * 50.0;
95 result = pixelsPerUnit * 100.0;
98 result = pixelsPerUnit * 500.0;
101 result = pixelsPerUnit * 1000.0;
107 result = 44100.0 * 4;
113 if( result < (zoomToFit/maxZoomOutFactor) )
114 result = zoomToFit / maxZoomOutFactor;
133 if (gAudioIO->IsStreamActive(
135 !gAudioIO->IsPaused()){
136 viewport.ZoomBy(2.0);
137 viewport.ScrollIntoView(gAudioIO->GetStreamTime());
140 viewport.ZoomAboutSelection(2.0);
142 trackPanel.Refresh(
false);
151 trackPanel.Refresh(
false);
158 viewport.ZoomAboutCenter(0.5);
167 viewport.SetHorizontalThumb(selectedRegion.t0());
183 double Z = viewInfo.GetZoom();
185 fabs(log(Zoom1 / Z)) > fabs(log( Z / Zoom2)) ? Zoom1:Zoom2;
187 viewport.Zoom(ChosenZoom);
188 trackPanel.Refresh(
false);
198 viewport.ZoomFitHorizontally();
205 viewport.ZoomFitVertically();
227 auto &selectedRegion = viewInfo.selectedRegion;
230 if (selectedRegion.isPoint())
233 viewport.SetHorizontalThumb(
234 selectedRegion.t0() - ((viewInfo.GetScreenEndTime() - viewInfo.hpos) / 2));
241 auto &selectedRegion = viewInfo.selectedRegion;
244 if (selectedRegion.isPoint())
247 viewport.SetHorizontalThumb(
248 selectedRegion.t1() - ((viewInfo.GetScreenEndTime() - viewInfo.hpos) / 2));
256 bool checked = !
gPrefs->
Read(
wxT(
"/GUI/ShowExtraMenus"), 0L);
259 commandManager.Check(
wxT(
"ShowExtraMenus"), checked);
272 commandManager.Check(
wxT(
"ShowClipping"), checked);
276 trackPanel.Refresh(
false);
285 bool checked = !
gPrefs->
Read(
wxT(
"/GUI/ShowTrackNameInWaveform"), 0L);
288 commandManager.Check(
wxT(
"ShowTrackNameInWaveform"), checked);
292 trackPanel.Refresh(
false);
304 static auto menu = std::shared_ptr{
325 Command(
wxT(
"CollapseAllTracks"),
XXO(
"&Collapse All Tracks"),
327 Command(
wxT(
"ExpandAllTracks"),
XXO(
"E&xpand Collapsed Tracks"),
334 Options{
wxT(
"Ctrl+["),
XO(
"Skip to Selection Start") } ),
347 Command(
wxT(
"ShowTrackNameInWaveform"),
XXO(
"Show Track &Name as overlay"),
350 Command(
wxT(
"ShowClipping"),
XXO(
"&Show Clipping in Waveform"),
AttachedItem sAttachment1
constexpr CommandFlag AlwaysEnabledFlag
const ReservedCommandFlag & ZoomInAvailableFlag()
const ReservedCommandFlag & ZoomOutAvailableFlag()
const ReservedCommandFlag & TimeSelectedFlag()
const ReservedCommandFlag & TracksExistFlag()
XXO("&Cut/Copy/Paste Toolbar")
int ShowTrackNameInWaveformPrefsID()
int ShowClippingPrefsID()
audacity::BasicSettings * gPrefs
EffectReverbSettings preset
declares abstract base class Track, TrackList, and iterators over TrackList
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
AudacityProject & project
static CommandManager & Get(AudacityProject &project)
static void Broadcast(int id=0)
Call this static function to notify all PrefsListener objects.
int GetAudioIOToken() const
static ProjectAudioIO & Get(AudacityProject &project)
void ModifyState(bool bWantsAutoSave)
static ProjectHistory & Get(AudacityProject &project)
Generates classes whose instances register items at construction.
static TrackPanel & Get(AudacityProject &project)
static WaveChannelViewConstants::ZoomPresets Zoom1Choice()
static WaveChannelViewConstants::ZoomPresets Zoom2Choice()
NotifyingSelectedRegion selectedRegion
static ViewInfo & Get(AudacityProject &project)
static Viewport & Get(AudacityProject &project)
static double GetDefaultZoom()
static double GetMaxZoom()
virtual bool Flush() noexcept=0
virtual bool Write(const wxString &key, bool value)=0
virtual bool Read(const wxString &key, bool *value) const =0
std::unique_ptr< detail::IndirectItem< Item > > Indirect(const std::shared_ptr< Item > &ptr)
A convenience function.