Moved CRootGroup out of CInterfaceParser.
This commit is contained in:
parent
983c9febc9
commit
f5826add20
3 changed files with 141 additions and 80 deletions
46
code/nel/include/nel/gui/root_group.h
Normal file
46
code/nel/include/nel/gui/root_group.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
// 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 ROOT_GROUP_H
|
||||
#define ROOT_GROUP_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
#include "nel/gui/interface_group.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
|
||||
class CRootGroup : public CInterfaceGroup
|
||||
{
|
||||
public:
|
||||
CRootGroup(const TCtorParam ¶m);
|
||||
virtual ~CRootGroup();
|
||||
|
||||
virtual CInterfaceElement* getElement (const std::string &id);
|
||||
virtual void addGroup (CInterfaceGroup *child, sint eltOrder = -1);
|
||||
virtual bool delGroup (CInterfaceGroup *child, bool dontDelete = false);
|
||||
|
||||
private:
|
||||
std::map< std::string, CInterfaceGroup* > _Accel;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -37,6 +37,7 @@
|
|||
#include "nel/gui/lua_helper.h"
|
||||
#include "nel/gui/lua_ihm.h"
|
||||
#include "nel/gui/lua_manager.h"
|
||||
#include "nel/gui/root_group.h"
|
||||
|
||||
#ifdef LUA_NEVRAX_VERSION
|
||||
#include "lua_ide_dll_nevrax/include/lua_ide_dll/ide_interface.h" // external debugger
|
||||
|
@ -113,86 +114,6 @@ namespace NLGUI
|
|||
return node;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// CRootGroup
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class CRootGroup : public CInterfaceGroup
|
||||
{
|
||||
public:
|
||||
CRootGroup(const TCtorParam ¶m)
|
||||
: CInterfaceGroup(param)
|
||||
{ }
|
||||
|
||||
/// Destructor
|
||||
virtual ~CRootGroup() { }
|
||||
|
||||
virtual CInterfaceElement* getElement (const std::string &id)
|
||||
{
|
||||
if (_Id == id)
|
||||
return this;
|
||||
|
||||
if (id.substr(0, _Id.size()) != _Id)
|
||||
return NULL;
|
||||
|
||||
vector<CViewBase*>::const_iterator itv;
|
||||
for (itv = _Views.begin(); itv != _Views.end(); itv++)
|
||||
{
|
||||
CViewBase *pVB = *itv;
|
||||
if (pVB->getId() == id)
|
||||
return pVB;
|
||||
}
|
||||
|
||||
vector<CCtrlBase*>::const_iterator itc;
|
||||
for (itc = _Controls.begin(); itc != _Controls.end(); itc++)
|
||||
{
|
||||
CCtrlBase* ctrl = *itc;
|
||||
if (ctrl->getId() == id)
|
||||
return ctrl;
|
||||
}
|
||||
|
||||
// Accelerate
|
||||
string sTmp = id;
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
string::size_type pos = sTmp.find(':');
|
||||
if (pos != string::npos)
|
||||
sTmp = sTmp.substr(0,pos);
|
||||
|
||||
map<string,CInterfaceGroup*>::iterator it = _Accel.find(sTmp);
|
||||
if (it != _Accel.end())
|
||||
{
|
||||
CInterfaceGroup *pIG = it->second;
|
||||
return pIG->getElement(id);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual void addGroup (CInterfaceGroup *child, sint eltOrder = -1)
|
||||
{
|
||||
string sTmp = child->getId();
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
_Accel.insert(pair<string,CInterfaceGroup*>(sTmp, child));
|
||||
CInterfaceGroup::addGroup(child,eltOrder);
|
||||
}
|
||||
|
||||
virtual bool delGroup (CInterfaceGroup *child, bool dontDelete = false)
|
||||
{
|
||||
string sTmp = child->getId();
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
map<string,CInterfaceGroup*>::iterator it = _Accel.find(sTmp);
|
||||
if (it != _Accel.end())
|
||||
{
|
||||
_Accel.erase(it);
|
||||
}
|
||||
return CInterfaceGroup::delGroup(child,dontDelete);
|
||||
}
|
||||
|
||||
private:
|
||||
map<string,CInterfaceGroup*> _Accel;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// CInterfaceParser
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
94
code/nel/src/gui/root_group.cpp
Normal file
94
code/nel/src/gui/root_group.cpp
Normal file
|
@ -0,0 +1,94 @@
|
|||
// 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 "nel/gui/root_group.h"
|
||||
#include <vector>
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
|
||||
CRootGroup::CRootGroup(const TCtorParam ¶m) :
|
||||
CInterfaceGroup(param)
|
||||
{
|
||||
}
|
||||
|
||||
CRootGroup::~CRootGroup()
|
||||
{
|
||||
}
|
||||
|
||||
CInterfaceElement* CRootGroup::getElement (const std::string &id)
|
||||
{
|
||||
if (_Id == id)
|
||||
return this;
|
||||
|
||||
if (id.substr(0, _Id.size()) != _Id)
|
||||
return NULL;
|
||||
|
||||
std::vector<CViewBase*>::const_iterator itv;
|
||||
for (itv = _Views.begin(); itv != _Views.end(); itv++)
|
||||
{
|
||||
CViewBase *pVB = *itv;
|
||||
if (pVB->getId() == id)
|
||||
return pVB;
|
||||
}
|
||||
|
||||
std::vector<CCtrlBase*>::const_iterator itc;
|
||||
for (itc = _Controls.begin(); itc != _Controls.end(); itc++)
|
||||
{
|
||||
CCtrlBase* ctrl = *itc;
|
||||
if (ctrl->getId() == id)
|
||||
return ctrl;
|
||||
}
|
||||
|
||||
// Accelerate
|
||||
std::string sTmp = id;
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
std::string::size_type pos = sTmp.find(':');
|
||||
if (pos != std::string::npos)
|
||||
sTmp = sTmp.substr(0,pos);
|
||||
|
||||
std::map<std::string,CInterfaceGroup*>::iterator it = _Accel.find(sTmp);
|
||||
if (it != _Accel.end())
|
||||
{
|
||||
CInterfaceGroup *pIG = it->second;
|
||||
return pIG->getElement(id);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void CRootGroup::addGroup (CInterfaceGroup *child, sint eltOrder)
|
||||
{
|
||||
std::string sTmp = child->getId();
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
_Accel.insert(std::pair<std::string,CInterfaceGroup*>(sTmp, child));
|
||||
CInterfaceGroup::addGroup(child,eltOrder);
|
||||
}
|
||||
|
||||
bool CRootGroup::delGroup (CInterfaceGroup *child, bool dontDelete)
|
||||
{
|
||||
std::string sTmp = child->getId();
|
||||
sTmp = sTmp.substr(_Id.size()+1,sTmp.size());
|
||||
std::map<std::string,CInterfaceGroup*>::iterator it = _Accel.find(sTmp);
|
||||
if (it != _Accel.end())
|
||||
{
|
||||
_Accel.erase(it);
|
||||
}
|
||||
return CInterfaceGroup::delGroup(child,dontDelete);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in a new issue