1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 16:10:06 +02:00

Separate class ProjectWindowBase...

... which adds a project association to wxFrame, and nothing else
This commit is contained in:
Paul Licameli 2020-01-03 11:58:01 -05:00
parent db6265d4e7
commit be24e6b5a1
2 changed files with 30 additions and 5 deletions

View File

@ -564,14 +564,24 @@ enum {
NextID, NextID,
}; };
ProjectWindow::ProjectWindow(wxWindow * parent, wxWindowID id, ProjectWindowBase::ProjectWindowBase(wxWindow * parent, wxWindowID id,
const wxPoint & pos, const wxPoint & pos,
const wxSize & size, AudacityProject &project) const wxSize & size, AudacityProject &project)
: wxFrame(parent, id, _TS("Audacity"), pos, size) : wxFrame(parent, id, _TS("Audacity"), pos, size)
, mProject{ project } , mProject{ project }
{ {
project.SetFrame( this ); project.SetFrame( this );
};
ProjectWindowBase::~ProjectWindowBase()
{
}
ProjectWindow::ProjectWindow(wxWindow * parent, wxWindowID id,
const wxPoint & pos,
const wxSize & size, AudacityProject &project)
: ProjectWindowBase{ parent, id, pos, size, project }
{
mNextWindowID = NextID; mNextWindowID = NextID;
// Two sub-windows need to be made before Init(), // Two sub-windows need to be made before Init(),

View File

@ -25,9 +25,27 @@ class wxPanel;
class ProjectWindow; class ProjectWindow;
void InitProjectWindow( ProjectWindow &window ); void InitProjectWindow( ProjectWindow &window );
///\brief A top-level window associated with a project
class ProjectWindowBase /* not final */ : public wxFrame
{
public:
explicit ProjectWindowBase(
wxWindow * parent, wxWindowID id,
const wxPoint & pos, const wxSize &size,
AudacityProject &project );
~ProjectWindowBase() override;
AudacityProject &GetProject() { return mProject; }
const AudacityProject &GetProject() const { return mProject; }
protected:
AudacityProject &mProject;
};
///\brief A top-level window associated with a project, and handling scrollbars ///\brief A top-level window associated with a project, and handling scrollbars
/// and zooming /// and zooming
class ProjectWindow final : public wxFrame class ProjectWindow final : public ProjectWindowBase
, public TrackPanelListener , public TrackPanelListener
, public PrefsListener , public PrefsListener
{ {
@ -36,8 +54,6 @@ public:
static const ProjectWindow &Get( const AudacityProject &project ); static const ProjectWindow &Get( const AudacityProject &project );
static ProjectWindow *Find( AudacityProject *pProject ); static ProjectWindow *Find( AudacityProject *pProject );
static const ProjectWindow *Find( const AudacityProject *pProject ); static const ProjectWindow *Find( const AudacityProject *pProject );
AudacityProject &GetProject() { return mProject; }
const AudacityProject &GetProject() const { return mProject; }
explicit ProjectWindow( explicit ProjectWindow(
wxWindow * parent, wxWindowID id, wxWindow * parent, wxWindowID id,
@ -173,7 +189,6 @@ public:
bool mbInitializingScrollbar{ false }; bool mbInitializingScrollbar{ false };
private: private:
AudacityProject &mProject;
wxRect mNormalizedWindowState; wxRect mNormalizedWindowState;
wxPanel *mTopPanel{}; wxPanel *mTopPanel{};