Refactoring. Added CInterfaceFactory.

This commit is contained in:
dfighter1985 2014-09-27 21:48:51 +02:00
parent 59011fe726
commit e87d83bccc
4 changed files with 68 additions and 2 deletions

View file

@ -0,0 +1,35 @@
// 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 IFACE_FACTORY
#define IFACE_FACTORY
#include <string>
namespace NLGUI
{
class CViewBase;
/// Simple interface element ( widget ) factory
class CInterfaceFactory
{
public:
static CViewBase* createClass( const std::string &name );
};
}
#endif

View file

@ -23,6 +23,7 @@
#include "nel/gui/group_container_base.h" #include "nel/gui/group_container_base.h"
#include "nel/gui/lua_ihm.h" #include "nel/gui/lua_ihm.h"
#include "nel/gui/widget_manager.h" #include "nel/gui/widget_manager.h"
#include "nel/gui/interface_factory.h"
#include "nel/misc/i18n.h" #include "nel/misc/i18n.h"
using namespace std; using namespace std;
@ -904,7 +905,7 @@ namespace NLGUI
if( _ViewText == NULL ) if( _ViewText == NULL )
{ {
CViewBase *v = CWidgetManager::getInstance()->getParser()->createClass( "text" ); CViewBase *v = CInterfaceFactory::createClass( "text" );
nlassert( v != NULL ); nlassert( v != NULL );
_ViewText = dynamic_cast< CViewText* >( v ); _ViewText = dynamic_cast< CViewText* >( v );
_ViewText->setId( _Id + "_text" ); _ViewText->setId( _Id + "_text" );

View file

@ -27,6 +27,7 @@
#include "nel/gui/widget_manager.h" #include "nel/gui/widget_manager.h"
#include "nel/gui/view_renderer.h" #include "nel/gui/view_renderer.h"
#include "nel/gui/db_manager.h" #include "nel/gui/db_manager.h"
#include "nel/gui/interface_factory.h"
#include <limits> #include <limits>
using namespace std; using namespace std;
@ -1543,7 +1544,7 @@ namespace NLGUI
if( editorMode ) if( editorMode )
{ {
nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() ); nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() );
_ViewText = dynamic_cast< CViewText* >( CWidgetManager::getInstance()->getParser()->createClass( "text" ) ); _ViewText = dynamic_cast< CViewText* >( CInterfaceFactory::createClass( "text" ) );
if( _ViewText != NULL ) if( _ViewText != NULL )
{ {
_ViewText->setParent( this ); _ViewText->setParent( this );

View file

@ -0,0 +1,29 @@
// 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/interface_factory.h"
#include "nel/gui/view_base.h"
#include "nel/misc/factory.h"
namespace NLGUI
{
CViewBase* CInterfaceFactory::createClass( const std::string &name )
{
return NLMISC_GET_FACTORY( CViewBase, std::string ).createObject( std::string( name ) , CViewBase::TCtorParam() );
}
}