11#ifndef __AUDACITY_PROJECT_WINDOW__
12#define __AUDACITY_PROJECT_WINDOW__
25class wxSplitterWindow;
46 wxWindow * parent, wxWindowID
id,
47 const wxPoint & pos,
const wxSize &
size,
54 bool IsActive()
override;
55 bool IsIconized()
const override;
67 wxWindow* GetEffectsWindow() noexcept;
72 wxWindow* GetTrackListWindow() noexcept;
78 wxWindow* GetContainerWindow() noexcept;
83 wxPanel *GetTopPanel() noexcept;
85 void UpdateStatusWidths();
118 double mRecentStreamTime{ -1.0 };
125 void RedrawProject(
const bool bForceWaveTracks =
false);
127 void Zoom(
double level);
128 void ZoomInByFactor(
double ZoomFactor );
129 void ZoomOutByFactor(
double ZoomFactor );
130 void ZoomBy(
double multiplier);
131 void ZoomAfterImport(
Track *pTrack);
132 double GetZoomOfToFit()
const;
136 void HideEffectsPanel();
138 void ApplyUpdatedTheme();
145 void ScrollIntoView(
double pos);
146 void ScrollIntoView(
int x);
149 void OnScrollRight();
151 void Rewind(
bool shift);
152 void SkipEnd(
bool shift);
154 void OnScrollLeftButton(wxScrollEvent & event);
155 void OnScrollRightButton(wxScrollEvent & event);
157 void FinishAutoScroll();
160 bool MayScrollBeyondZero()
const;
161 double ScrollingLowerBoundTime()
const;
164 double PixelWidthBeforeTime(
double scrollto)
const;
165 void SetHorizontalThumb(
double scrollto);
189 void OnMenu(wxCommandEvent & event);
190 void OnUpdateUI(wxUpdateUIEvent & event);
192 void MacShowUndockedToolbars(
bool show);
193 void OnActivate(wxActivateEvent & event);
195 void OnMouseEvent(wxMouseEvent & event);
196 void OnIconize(wxIconizeEvent &event);
197 void OnSize(wxSizeEvent & event);
200 void OnShow(wxShowEvent & event);
201 void OnMove(wxMoveEvent & event);
203 void OnScroll(wxScrollEvent & event);
204 void OnToolBarUpdate(wxCommandEvent & event);
205 void OnUndoPushedModified();
209 bool mbInitializingScrollbar{
false };
214 wxPanel *mTopPanel{};
217 wxWindow* mTrackListWindow{};
219 wxScrollBar *mHsbar{};
220 wxScrollBar *mVsbar{};
224 bool mAutoScrolling{
false };
225 bool mActive{
true };
226 bool mIconized{
false };
227 bool mShownOnce{
false };
231 bool mIsDeleting{
false };
241 DECLARE_EVENT_TABLE()
AUDACITY_DLL_API IntSetting ProjectWindowNormalWidth
void InitProjectWindow(ProjectWindow &window)
AUDACITY_DLL_API IntSetting ProjectWindowNormalHeight
AUDACITY_DLL_API IntSetting ProjectWindowHeight
void GetDefaultWindowRect(wxRect *defRect)
AUDACITY_DLL_API IntSetting ProjectWindowX
AUDACITY_DLL_API IntSetting ProjectWindowNormalX
void GetNextWindowPlacement(wxRect *nextRect, bool *pMaximized, bool *pIconized)
AUDACITY_DLL_API IntSetting ProjectWindowWidth
AUDACITY_DLL_API IntSetting ProjectWindowY
AUDACITY_DLL_API BoolSetting ProjectWindowMaximized
AUDACITY_DLL_API BoolSetting ProjectWindowIconized
AUDACITY_DLL_API IntSetting ProjectWindowNormalY
static void OnSize(wxSizeEvent &evt)
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
This specialization of Setting for bool adds a Toggle method to negate the saved value.
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
Specialization of Setting for int.
An object that sends messages to an open-ended list of subscribed callbacks.
A move-only handle representing a connection to a Publisher.
A listener notified of changes in preferences.
A top-level window associated with a project.
A top-level window associated with a project, and handling scrollbars and zooming.
wxScrollBar & GetHorizontalScrollBar()
PlaybackScroller & GetPlaybackScroller()
wxSplitterWindow * mContainerWindow
Observer::Subscription mFocusChangeSubscription
void RefreshTPTrack(Track *pTrk, bool refreshbacking=true)
wxScrollBar & GetVerticalScrollBar()
Observer::Subscription mThemeChangeSubscription
wxRect GetNormalizedWindowState() const
void SetNormalizedWindowState(wxRect pSizeAndLocation)
wxSize GetTPTracksUsableArea()
bool IsBeingDeleted() const
std::unique_ptr< PlaybackScroller > mPlaybackScroller
Observer::Subscription mUndoSubscription
wxRect mNormalizedWindowState
UI Panel that displays realtime effects from the effect stack of an individual track,...
Abstract base class for an object holding data associated with points on a time axis.
virtual void TP_HandleResize()=0
virtual void TP_ScrollLeft()=0
virtual void TP_ScrollWindow(double scrollto)=0
virtual bool TP_ScrollUpDown(int delta)=0
virtual void TP_RedrawScrollbars()=0
virtual void TP_ScrollRight()=0
wxString Find(const FilePath &path)
Services * Get()
Fetch the global instance, or nullptr if none is yet installed.
AUDACITY_DLL_API void UpdatePrefs(wxWindow *pParent)
TranslatableString Message(unsigned trackCount)