1#include "../CommonCommandFlags.h"
7#include "../ProjectSettings.h"
8#include "../ProjectWindow.h"
9#include "../TrackInfo.h"
10#include "../TrackPanel.h"
13#include "../commands/CommandContext.h"
14#include "../commands/CommandManager.h"
15#include "../prefs/GUIPrefs.h"
16#include "../prefs/TracksPrefs.h"
17#include "../tracks/ui/ChannelView.h"
21#include <wx/scrolbar.h>
33 const double lowerBound =
34 std::max(viewInfo.selectedRegion.t0(),
35 window.ScrollingLowerBoundTime());
37 viewInfo.selectedRegion.t1() - lowerBound;
39 return viewInfo.GetZoom();
51 auto width = viewInfo.GetTracksUsableWidth();
52 return (width - 1) / denom;
59 const double maxZoomOutFactor = 4.0;
61 const double pixelsPerUnit = 5.0;
65 double zoomToFit = window.GetZoomOfToFit();
79 result = pixelsPerUnit * 1.0/60;
82 result = pixelsPerUnit * 1.0;
85 result = pixelsPerUnit * 5.0;
88 result = pixelsPerUnit * 10.0;
91 result = pixelsPerUnit * 20.0;
94 result = pixelsPerUnit * 50.0;
97 result = pixelsPerUnit * 100.0;
100 result = pixelsPerUnit * 500.0;
103 result = pixelsPerUnit * 1000.0;
109 result = 44100.0 * 4;
115 if( result < (zoomToFit/maxZoomOutFactor) )
116 result = zoomToFit / maxZoomOutFactor;
131 - [](
const Track *pTrack){
138 auto height = viewInfo.GetHeight();
150 height = height / (int)count;
156 for (
auto pChannel : t->Channels())
175 window.ZoomInByFactor( 2.0 );
176 trackPanel.Refresh(
false);
186 trackPanel.Refresh(
false);
193 window.ZoomOutByFactor( 1 /2.0 );
203 window.TP_ScrollWindow(selectedRegion.t0());
219 double Z = viewInfo.GetZoom();
221 fabs(log(Zoom1 / Z)) > fabs(log( Z / Zoom2)) ? Zoom1:Zoom2;
223 window.Zoom(ChosenZoom);
224 trackPanel.Refresh(
false);
244 window.GetVerticalScrollBar().SetThumbPosition(0);
253 bool checked = !
gPrefs->
Read(
wxT(
"/GUI/VerticalZooming"), 0L);
256 commandManager.Check(
wxT(
"AdvancedVZoom"), checked);
267 for (
auto pChannel : t->Channels())
280 for (
auto pChannel : t->Channels())
290 auto &selectedRegion = viewInfo.selectedRegion;
293 if (selectedRegion.isPoint())
296 window.TP_ScrollWindow(
297 selectedRegion.t0() - ((viewInfo.GetScreenEndTime() - viewInfo.h) / 2));
304 auto &selectedRegion = viewInfo.selectedRegion;
307 if (selectedRegion.isPoint())
310 window.TP_ScrollWindow(
311 selectedRegion.t1() - ((viewInfo.GetScreenEndTime() - viewInfo.h) / 2));
319 bool checked = !
gPrefs->
Read(
wxT(
"/GUI/ShowExtraMenus"), 0L);
322 commandManager.Check(
wxT(
"ShowExtraMenus"), checked);
335 commandManager.Check(
wxT(
"ShowClipping"), checked);
339 trackPanel.Refresh(
false);
348 bool checked = !
gPrefs->
Read(
wxT(
"/GUI/ShowTrackNameInWaveform"), 0L);
351 commandManager.Check(
wxT(
"ShowTrackNameInWaveform"), checked);
355 trackPanel.Refresh(
false);
363 if (
settings.GetTracksFitVerticallyZoomed())
389 return std::make_unique< ViewActions::Handler >(
project ); } };
397#define FN(X) (& ViewActions::Handler :: X)
424 Command(
wxT(
"AdvancedVZoom"),
XXO(
"Advanced &Vertical Zooming"),
435 Command(
wxT(
"CollapseAllTracks"),
XXO(
"&Collapse All Tracks"),
437 Command(
wxT(
"ExpandAllTracks"),
XXO(
"E&xpand Collapsed Tracks"),
444 Options{
wxT(
"Ctrl+["),
XO(
"Skip to Selection Start") } ),
457 Command(
wxT(
"ShowTrackNameInWaveform"),
XXO(
"Show Track &Name as overlay"),
460 Command(
wxT(
"ShowClipping"),
XXO(
"&Show Clipping in Waveform"),
AttachedItem sAttachment1
constexpr CommandFlag AlwaysEnabledFlag
wxEvtHandler CommandHandlerObject
const ReservedCommandFlag & ZoomInAvailableFlag()
const ReservedCommandFlag & ZoomOutAvailableFlag()
const ReservedCommandFlag & TimeSelectedFlag()
const ReservedCommandFlag & TracksExistFlag()
XXO("&Cut/Copy/Paste Toolbar")
int ShowTrackNameInWaveformPrefsID()
int ShowClippingPrefsID()
Extends Track with notions of mute and solo setting.
audacity::BasicSettings * gPrefs
EffectReverbSettings preset
static Settings & settings()
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Track subclass holding data representing sound (as notes, or samples, or ...)
virtual size_t NChannels() const =0
Report the number of channels.
std::shared_ptr< ChannelType > GetChannel(size_t iChannel)
Retrieve a channel, cast to the given type.
static ChannelView & Get(Channel &channel)
bool GetMinimized() const
void SetMinimized(bool minimized)
static int GetChannelGroupHeight(const Track *pTrack)
void SetExpandedHeight(int height)
Client code makes static instance from a factory of attachments; passes it to Get or Find as a retrie...
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
AudacityProject & project
static CommandManager & Get(AudacityProject &project)
Subscription Subscribe(Callback callback)
Connect a callback to the Publisher; later-connected are called earlier.
A move-only handle representing a connection to a Publisher.
static void Broadcast(int id=0)
Call this static function to notify all PrefsListener objects.
void ModifyState(bool bWantsAutoSave)
static ProjectHistory & Get(AudacityProject &project)
static ProjectSettings & Get(AudacityProject &project)
static ProjectWindow & Get(AudacityProject &project)
Abstract base class for an object holding data associated with points on a time axis.
static TrackList & Get(AudacityProject &project)
static TrackPanel & Get(AudacityProject &project)
static WaveChannelViewConstants::ZoomPresets Zoom1Choice()
static WaveChannelViewConstants::ZoomPresets Zoom2Choice()
static UndoManager & Get(AudacityProject &project)
NotifyingSelectedRegion selectedRegion
static ViewInfo & 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.
std::shared_ptr< BaseItem > BaseItemSharedPtr
AUDACITY_DLL_API unsigned MinimumTrackHeight()
CommandManager::Options Options
A convenient default parameter for class template Site.
Options && CheckTest(const CheckFn &fn) &&
Type of message published by UndoManager.
enum UndoRedoMessage::Type type
void OnCollapseAllTracks(const CommandContext &context)
void OnExpandAllTracks(const CommandContext &context)
void OnGoSelStart(const CommandContext &context)
void OnUndoPushed(UndoRedoMessage message)
Handler(AudacityProject &project)
void OnGoSelEnd(const CommandContext &context)
AudacityProject & mProject
Handler(const Handler &)=delete
void OnZoomFit(const CommandContext &context)
void OnZoomFitV(const CommandContext &context)
Handler & operator=(const Handler &)=delete
void OnZoomIn(const CommandContext &context)
void OnShowClipping(const CommandContext &context)
void OnZoomOut(const CommandContext &context)
void OnZoomToggle(const CommandContext &context)
Observer::Subscription mUndoSubscription
void OnAdvancedVZoom(const CommandContext &context)
void OnShowExtraMenus(const CommandContext &context)
void OnShowNameOverlay(const CommandContext &context)
void OnZoomNormal(const CommandContext &context)
void OnZoomSel(const CommandContext &context)