diff --git a/common/kiway_holder.cpp b/common/kiway_holder.cpp index 15f19b8015..de66fb5a82 100644 --- a/common/kiway_holder.cpp +++ b/common/kiway_holder.cpp @@ -24,7 +24,7 @@ */ #include -#include +#include #if defined(DEBUG) #include diff --git a/include/kiway_holder.h b/include/kiway_holder.h new file mode 100644 index 0000000000..d8ba9c6026 --- /dev/null +++ b/include/kiway_holder.h @@ -0,0 +1,97 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2019 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef KIWAY_HOLDER_H_ +#define KIWAY_HOLDER_H_ + +#include +#include + +class KIWAY; +class PROJECT; +class TOOL_MANAGER; + + +/** + * Class KIWAY_HOLDER + * is a mix in class which holds the location of a wxWindow's KIWAY. It allows calls to + * Kiway() and SetKiway(). + */ +class KIWAY_HOLDER +{ +public: + KIWAY_HOLDER( KIWAY* aKiway ) : + m_kiway( aKiway ) + {} + + /** + * Function Kiway + * returns a reference to the KIWAY that this object has an opportunity + * to participate in. A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER. + */ + KIWAY& Kiway() const + { + wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine. + return *m_kiway; + } + + /** + * Function Prj + * returns a reference to the PROJECT "associated with" this KIWAY. + */ + PROJECT& Prj() const; + + /** + * Function GetUserUnits + * Allows participation in KEYWAY_PLAYER/DIALOG_SHIM userUnits inheritance. + * + * This would fit better in KEYWAY_PLAYER, but DIALOG_SHIMs can only use mix-ins + * because their primary superclass must be wxDialog. + */ + virtual EDA_UNITS_T GetUserUnits() const; + + /** + * Function GetToolManager + * Return the tool manager instance, if any. + */ + virtual TOOL_MANAGER* GetToolManager() const; + + /** + * Function SetKiway + * + * @param aDest is the recipient of aKiway pointer. + * It is only used for debugging, since "this" is not a wxWindow*. "this" is + * a KIWAY_HOLDER mix-in. + * + * @param aKiway is often from a parent window, or from KIFACE::CreateWindow(). + */ + void SetKiway( wxWindow* aDest, KIWAY* aKiway ); + +private: + // private, all setting is done through SetKiway(). + KIWAY* m_kiway; // no ownership. +}; + + + +#endif // KIWAY_HOLDER_H_ diff --git a/include/kiway_player.h b/include/kiway_player.h index 248ce3a145..e21d5d1c6f 100644 --- a/include/kiway_player.h +++ b/include/kiway_player.h @@ -27,6 +27,7 @@ #include #include +#include #include @@ -35,78 +36,9 @@ class PROJECT; struct KIFACE; class KIFACE_I; class TOOL_MANAGER; - -#define VTBL_ENTRY virtual - - -/** - * Class KIWAY_HOLDER - * is a mix in class which holds the location of a wxWindow's KIWAY. It allows - * calls to Kiway() and SetKiway(). - * - * Known to be used in at least DIALOG_SHIM, KICAD_MANAGER_FRAME and KIWAY_PLAYER classes. - */ -class KIWAY_HOLDER -{ -public: - KIWAY_HOLDER( KIWAY* aKiway ) : - m_kiway( aKiway ) - {} - - /** - * Function Kiway - * returns a reference to the KIWAY that this object has an opportunity - * to participate in. A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER. - */ - KIWAY& Kiway() const - { - wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine. - return *m_kiway; - } - - /** - * Function Prj - * returns a reference to the PROJECT "associated with" this KIWAY. - */ - PROJECT& Prj() const; - - /** - * Function GetUserUnits - * Allows participation in KEYWAY_PLAYER/DIALOG_SHIM userUnits inheritance. - * - * This would fit better in KEYWAY_PLAYER, but DIALOG_SHIMs can only use mix-ins - * because their primary superclass must be wxDialog. - */ - VTBL_ENTRY EDA_UNITS_T GetUserUnits() const; - - /** - * Function GetToolManager - * Return the tool manager instance, if any. - */ - VTBL_ENTRY TOOL_MANAGER* GetToolManager() const; - - /** - * Function SetKiway - * - * @param aDest is the recipient of aKiway pointer. - * It is only used for debugging, since "this" is not a wxWindow*. "this" is - * a KIWAY_HOLDER mix-in. - * - * @param aKiway is often from a parent window, or from KIFACE::CreateWindow(). - */ - void SetKiway( wxWindow* aDest, KIWAY* aKiway ); - -private: - // private, all setting is done through SetKiway(). - KIWAY* m_kiway; // no ownership. -}; - - class KIWAY_EXPRESS; #define WX_EVENT_LOOP wxGUIEventLoop - - class WX_EVENT_LOOP; @@ -183,7 +115,7 @@ public: * * @return bool - true if all requested files were opened OK, else false. */ - VTBL_ENTRY bool OpenProjectFiles( const std::vector& aFileList, int aCtl = 0 ) + virtual bool OpenProjectFiles( const std::vector& aFileList, int aCtl = 0 ) { // overload me for your wxFrame type. @@ -211,7 +143,7 @@ public: * @return bool - true if frame implementation called KIWAY_PLAYER::DismissModal() * with aRetVal of true. */ - VTBL_ENTRY bool ShowModal( wxString* aResult = NULL, wxWindow* aResultantFocusWindow = NULL ); + virtual bool ShowModal( wxString* aResult = NULL, wxWindow* aResultantFocusWindow = NULL ); //--------------------------------------------------------