CHANGED: #1471 CWidgetManager no longer depends on CGroupContainer, instead of depends on a new class CGroupContainerBase.
--HG-- branch : gui-refactoring
This commit is contained in:
parent
2fd850b0eb
commit
423ce45141
10 changed files with 109 additions and 18 deletions
|
@ -27,6 +27,7 @@
|
|||
// ***************************************************************************
|
||||
class CCtrlBaseButton;
|
||||
class CCtrlScroll;
|
||||
class CGroupContainer;
|
||||
|
||||
// ***************************************************************************
|
||||
/**
|
||||
|
|
|
@ -33,6 +33,7 @@ class CCtrlButton;
|
|||
class CCtrlScroll;
|
||||
class CHandlerListSheetTradeSelect;
|
||||
class CHandlerListSheetTradeRightClick;
|
||||
class CGroupContainer;
|
||||
|
||||
// ***************************************************************************
|
||||
/**
|
||||
|
|
|
@ -1195,7 +1195,7 @@ NLMISC_REGISTER_OBJECT(CViewBase, CGroupContainer, std::string, "container");
|
|||
|
||||
// ***************************************************************************
|
||||
CGroupContainer::CGroupContainer(const TCtorParam ¶m)
|
||||
: CInterfaceGroup(param)
|
||||
: CGroupContainerBase(param)
|
||||
{
|
||||
// faster than a virual call
|
||||
_IsGroupContainer = true;
|
||||
|
|
|
@ -20,12 +20,14 @@
|
|||
#define RZ_GROUP_CONTAINER_H
|
||||
|
||||
#include "interface_group.h"
|
||||
#include "group_container_base.h"
|
||||
#include "nel/misc/smart_ptr.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CEventDescriptorLocalised;
|
||||
class CEventDescriptorLocalised;
|
||||
}
|
||||
|
||||
class CInterfaceList;
|
||||
class CCtrlButton;
|
||||
class CCtrlScroll;
|
||||
|
@ -152,7 +154,7 @@ private:
|
|||
* \author Nevrax France
|
||||
* \date 2002
|
||||
*/
|
||||
class CGroupContainer : public CInterfaceGroup
|
||||
class CGroupContainer : public CGroupContainerBase
|
||||
{
|
||||
public:
|
||||
enum { NumResizers = 8 };
|
||||
|
@ -267,7 +269,7 @@ public:
|
|||
int luaBlink(CLuaState &ls);
|
||||
int luaSetHeaderColor(CLuaState &ls);
|
||||
|
||||
REFLECT_EXPORT_START(CGroupContainer, CInterfaceGroup)
|
||||
REFLECT_EXPORT_START(CGroupContainer, CGroupContainerBase)
|
||||
REFLECT_LUA_METHOD("blink", luaBlink);
|
||||
REFLECT_LUA_METHOD("setHeaderColor", luaSetHeaderColor);
|
||||
REFLECT_STRING("title", getTitle, setTitle);
|
||||
|
|
43
code/ryzom/client/src/interface_v3/group_container_base.cpp
Normal file
43
code/ryzom/client/src/interface_v3/group_container_base.cpp
Normal file
|
@ -0,0 +1,43 @@
|
|||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
#include "group_container_base.h"
|
||||
|
||||
CGroupContainerBase::CGroupContainerBase( const CViewBase::TCtorParam ¶m ) :
|
||||
CInterfaceGroup( param )
|
||||
{
|
||||
}
|
||||
|
||||
CGroupContainerBase::~CGroupContainerBase()
|
||||
{
|
||||
}
|
||||
|
||||
void CGroupContainerBase::removeAllContainers()
|
||||
{
|
||||
// Necessary because it's supposed to be an abstract class,
|
||||
// however reflection requires the class to be instantiated.
|
||||
nlassert( false );
|
||||
}
|
||||
|
||||
void CGroupContainerBase::setLocked( bool locked )
|
||||
{
|
||||
// Necessary because it's supposed to be an abstract class,
|
||||
// however reflection requires the class to be instantiated.
|
||||
nlassert( false );
|
||||
}
|
||||
|
||||
|
42
code/ryzom/client/src/interface_v3/group_container_base.h
Normal file
42
code/ryzom/client/src/interface_v3/group_container_base.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
#ifndef GROUP_CONTAINER_BASE_H
|
||||
#define GROUP_CONTAINER_BASE_H
|
||||
|
||||
#include "interface_group.h"
|
||||
|
||||
class CGroupContainerBase : public CInterfaceGroup
|
||||
{
|
||||
public:
|
||||
DECLARE_UI_CLASS( CGroupContainerBase )
|
||||
CGroupContainerBase( const TCtorParam ¶m );
|
||||
virtual ~CGroupContainerBase();
|
||||
|
||||
virtual void removeAllContainers();
|
||||
virtual void setLocked( bool locked );
|
||||
|
||||
REFLECT_EXPORT_START( CGroupContainerBase, CInterfaceGroup )
|
||||
REFLECT_EXPORT_END
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -33,7 +33,6 @@ class CInterfaceElement;
|
|||
class CInterfaceGroup;
|
||||
class CViewBase;
|
||||
class CCtrlBase;
|
||||
class CGroupContainer;
|
||||
class IActionHandler;
|
||||
|
||||
/**
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "ctrl_base.h"
|
||||
#include "interface_group.h"
|
||||
#include "group_frame.h"
|
||||
#include "group_container_base.h"
|
||||
#include "group_container.h"
|
||||
#include "group_list.h"
|
||||
#include "dbgroup_select_number.h"
|
||||
|
@ -82,7 +83,8 @@ void registerInterfaceElements()
|
|||
REGISTER_REFLECTABLE_CLASS(CInterfaceGroup, CCtrlBase);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupFrame, CInterfaceGroup);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupModal, CGroupFrame);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupContainer, CInterfaceGroup);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupContainerBase, CInterfaceGroup);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupContainer, CGroupContainerBase);
|
||||
REGISTER_REFLECTABLE_CLASS(CDBGroupSelectNumber, CInterfaceGroup);
|
||||
REGISTER_REFLECTABLE_CLASS(IListSheetBase, CInterfaceGroup);
|
||||
REGISTER_REFLECTABLE_CLASS(CGroupEditBoxBase, CInterfaceGroup);
|
||||
|
|
|
@ -14,19 +14,18 @@
|
|||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "widget_manager.h"
|
||||
#include "interface_group.h"
|
||||
#include "group_modal.h"
|
||||
|
||||
#include "group_container.h"
|
||||
|
||||
#include "nel/gui/db_manager.h"
|
||||
#include "nel/gui/view_renderer.h"
|
||||
#include "widget_manager.h"
|
||||
#include "view_pointer_base.h"
|
||||
#include "group_editbox_base.h"
|
||||
#include "ctrl_draggable.h"
|
||||
#include "interface_group.h"
|
||||
#include "group_container_base.h"
|
||||
#include "group_modal.h"
|
||||
#include "group_editbox_base.h"
|
||||
#include "interface_options.h"
|
||||
|
||||
|
||||
CWidgetManager* CWidgetManager::instance = NULL;
|
||||
std::string CWidgetManager::_CtrlLaunchingModalId= "ctrl_launch_modal";
|
||||
IParser* CWidgetManager::parser = NULL;
|
||||
|
@ -155,7 +154,7 @@ void CWidgetManager::SMasterGroup::setBackWindow(CInterfaceGroup *pIG)
|
|||
// ----------------------------------------------------------------------------
|
||||
void CWidgetManager::SMasterGroup::deactiveAllContainers()
|
||||
{
|
||||
std::vector<CGroupContainer*> gcs;
|
||||
std::vector<CGroupContainerBase*> gcs;
|
||||
|
||||
// Make first a list of all window (Warning: all group container are not window!)
|
||||
for (uint8 i = 0; i < WIN_PRIORITY_MAX; ++i)
|
||||
|
@ -163,7 +162,7 @@ void CWidgetManager::SMasterGroup::deactiveAllContainers()
|
|||
std::list<CInterfaceGroup*>::iterator it = PrioritizedWindows[i].begin();
|
||||
while (it != PrioritizedWindows[i].end())
|
||||
{
|
||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(*it);
|
||||
CGroupContainerBase *pGC = dynamic_cast<CGroupContainerBase*>(*it);
|
||||
if (pGC != NULL)
|
||||
gcs.push_back(pGC);
|
||||
it++;
|
||||
|
@ -186,7 +185,7 @@ void CWidgetManager::SMasterGroup::centerAllContainers()
|
|||
std::list<CInterfaceGroup*>::iterator it = PrioritizedWindows[i].begin();
|
||||
while (it != PrioritizedWindows[i].end())
|
||||
{
|
||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(*it);
|
||||
CGroupContainerBase *pGC = dynamic_cast<CGroupContainerBase*>(*it);
|
||||
if ((pGC != NULL) && (pGC->getParent() != NULL))
|
||||
{
|
||||
sint32 wParent = pGC->getParent()->getW(false);
|
||||
|
@ -210,7 +209,7 @@ void CWidgetManager::SMasterGroup::unlockAllContainers()
|
|||
std::list<CInterfaceGroup*>::iterator it = PrioritizedWindows[i].begin();
|
||||
while (it != PrioritizedWindows[i].end())
|
||||
{
|
||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(*it);
|
||||
CGroupContainerBase *pGC = dynamic_cast<CGroupContainerBase*>(*it);
|
||||
if (pGC != NULL)
|
||||
pGC->setLocked(false);
|
||||
|
||||
|
@ -338,7 +337,7 @@ void unlinkAllContainers (CInterfaceGroup *pIG)
|
|||
for(uint i = 0; i < rG.size(); ++i)
|
||||
unlinkAllContainers (rG[i]);
|
||||
|
||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIG);
|
||||
CGroupContainerBase *pGC = dynamic_cast<CGroupContainerBase*>(pIG);
|
||||
if (pGC != NULL)
|
||||
pGC->removeAllContainers();
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
//
|
||||
|
||||
class CInterfaceManager;
|
||||
class CGroupContainer;
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CEventDescriptor;
|
||||
|
|
Loading…
Reference in a new issue