11#ifndef __AUDACITY_PROJECT_WINDOW__
12#define __AUDACITY_PROJECT_WINDOW__
25class wxSplitterWindow;
52 wxWindow * parent, wxWindowID
id,
53 const wxPoint & pos,
const wxSize &
size,
60 bool IsActive()
override;
61 bool IsIconized()
const override;
72 wxWindow* GetTrackListWindow() noexcept;
78 wxSplitterWindow* 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;
135 void ApplyUpdatedTheme();
142 void ScrollIntoView(
double pos);
143 void ScrollIntoView(
int x);
146 void OnScrollRight();
148 void Rewind(
bool shift);
149 void SkipEnd(
bool shift);
151 void OnScrollLeftButton(wxScrollEvent & event);
152 void OnScrollRightButton(wxScrollEvent & event);
154 void FinishAutoScroll();
157 bool MayScrollBeyondZero()
const;
158 double ScrollingLowerBoundTime()
const;
161 double PixelWidthBeforeTime(
double scrollto)
const;
162 void SetHorizontalThumb(
double scrollto);
186 void OnMenu(wxCommandEvent & event);
187 void OnUpdateUI(wxUpdateUIEvent & event);
189 void MacShowUndockedToolbars(
bool show);
190 void OnActivate(wxActivateEvent & event);
192 void OnMouseEvent(wxMouseEvent & event);
193 void OnIconize(wxIconizeEvent &event);
194 void OnSize(wxSizeEvent & event);
197 void OnShow(wxShowEvent & event);
198 void OnMove(wxMoveEvent & event);
200 void OnScroll(wxScrollEvent & event);
201 void OnToolBarUpdate(wxCommandEvent & event);
202 void OnUndoPushedModified();
207 bool mbInitializingScrollbar{
false };
212 wxPanel *mTopPanel{};
214 wxWindow* mTrackListWindow{};
216 wxScrollBar *mHsbar{};
217 wxScrollBar *mVsbar{};
221 bool mAutoScrolling{
false };
222 bool mActive{
true };
223 bool mIconized{
false };
224 bool mShownOnce{
false };
228 bool mIsDeleting{
false };
238 DECLARE_EVENT_TABLE()
ProjectFileIOMessage
Subscribe to ProjectFileIO to receive messages; always in idle time.
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
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 mTitleChangeSubcription
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
PROJECT_FILE_IO_API 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)
Default message type for Publisher.
Message sent when the project window is closed.