Merging GUI library changes.

--HG--
branch : gsoc2012-gui-editor
This commit is contained in:
dfighter1985 2012-07-18 04:09:25 +02:00
commit 3598c4c46a
14 changed files with 90 additions and 27 deletions

View file

@ -23,15 +23,39 @@
namespace NLGUI namespace NLGUI
{ {
/**
Database Manager
Provides access to a simple CDB based tree hierarchical data store
*/
class CDBManager : public NLMISC::CCDBManager class CDBManager : public NLMISC::CCDBManager
{ {
public: public:
static CDBManager* getInstance(); static CDBManager* getInstance();
static void release(); static void release();
/**
Retrieves a leaf node from the database.
@param name - name of the data leaf node we are querying.
@param create - when true if a node cannot be found it is created.
*/
NLMISC::CCDBNodeLeaf* getDbProp( const std::string &name, bool create = true ); NLMISC::CCDBNodeLeaf* getDbProp( const std::string &name, bool create = true );
/**
Deletes a node from the database.
@param name - name of the node.
*/
void delDbProp( const std::string &name ); void delDbProp( const std::string &name );
/**
Returns a leaf node's content as an sint32
@param name - name of the leaf node.
*/
sint32 getDbValue32( const std::string &name ); sint32 getDbValue32( const std::string &name );
/**
Returns the root branch of the database.
*/
NLMISC::CCDBNodeBranch* getDB() const; NLMISC::CCDBNodeBranch* getDB() const;
private: private:

View file

@ -63,12 +63,17 @@ namespace NLGUI
friend void TextEndUnparsedElement(HText *me, const char *buffer, int length); friend void TextEndUnparsedElement(HText *me, const char *buffer, int length);
friend int requestTerminater (HTRequest * request, HTResponse * response, void * param, int status); friend int requestTerminater (HTRequest * request, HTResponse * response, void * param, int status);
/// Web browser options for CGroupHTML
struct SWebOptions struct SWebOptions
{ {
public: public:
/// Id of the browser ( e.g.: Chrome, Firefox, Ryzom )
std::string appName; std::string appName;
/// Version of the browser
std::string appVersion; std::string appVersion;
/// Language code of the browser( e.g.: en, hu )
std::string languageCode; std::string languageCode;
/// List of domains the widget can consider secure.
std::vector< std::string > trustedDomains; std::vector< std::string > trustedDomains;
SWebOptions() SWebOptions()

View file

@ -521,7 +521,6 @@ namespace NLGUI
TLinkVect *_Links; // links, or NULL if no link TLinkVect *_Links; // links, or NULL if no link
}; };
extern NLMISC::CStringMapper *_UIStringMapper;
/** /**
* class to compress string usage in the interface * class to compress string usage in the interface
* \author Matthieu 'Trap' Besson * \author Matthieu 'Trap' Besson
@ -586,9 +585,13 @@ namespace NLGUI
} }
} }
static void createStringMapper();
static void deleteStringMapper();
private: private:
NLMISC::TStringId _Id; NLMISC::TStringId _Id;
static NLMISC::CStringMapper *_UIStringMapper;
}; };
inline bool operator==(const CStringShared &lhs, const CStringShared &rhs) { return lhs.getStringId() == rhs.getStringId(); } inline bool operator==(const CStringShared &lhs, const CStringShared &rhs) { return lhs.getStringId() == rhs.getStringId(); }

View file

@ -53,15 +53,21 @@ namespace NLGUI
public: public:
/// Interface for parser modules
/// Such modules can be plugged into CInterfaceParser, and
/// the modules then can parse GUI XMLs for widget classes that are not
/// generic enough to be in the GUI library.
class IParserModule class IParserModule
{ {
public: public:
/// Various parsing stages
enum ParsingStage enum ParsingStage
{ {
None = 0, None = 0, /// module cannot parse in any stage.
Unresolved = 1, Unresolved = 1, /// module can parse in the first stage when styles, templates, etc have not been resolved yet
Resolved = 2, Resolved = 2, /// module can parse after resolving styles and templates
GroupChildren = 4 GroupChildren = 4 /// module can parse when parsing the group children
}; };
IParserModule(){ IParserModule(){
@ -86,6 +92,7 @@ namespace NLGUI
uint parsingStage; uint parsingStage;
}; };
/// Interface for event handlers which can be called when setting up the options.
class ISetupOptionCallbackClass class ISetupOptionCallbackClass
{ {
public: public:

View file

@ -23,7 +23,11 @@ namespace NLGUI
{ {
class CLuaState; class CLuaState;
/// Provides a single global access point to the Lua state, and related stuff. :( /**
Lua Manager
Provides a single global access point to the Lua state, and related stuff. :(
*/
class CLuaManager class CLuaManager
{ {
public: public:
@ -41,12 +45,20 @@ namespace NLGUI
/// Enables attaching the Lua debugger in the CLuaState instance, only matters on startup. /// Enables attaching the Lua debugger in the CLuaState instance, only matters on startup.
static void enableLuaDebugging(){ debugLua = true; } static void enableLuaDebugging(){ debugLua = true; }
/// Returns the Lua state.
NLGUI::CLuaState* getLuaState() const{ return luaState; } NLGUI::CLuaState* getLuaState() const{ return luaState; }
/**
Executes a Lua script
@param luaScript - the script we want to execute ( the actual script, not the filename! )
@param smallScript - true if the script is very small, so it can be cached for the possible next execution.
*/
bool executeLuaScript( const std::string &luaScript, bool smallScript = false ); bool executeLuaScript( const std::string &luaScript, bool smallScript = false );
/// Resets the Lua state, that is deallocates it and allocates a new one.
void ResetLuaState(); void ResetLuaState();
/// Forces the Garbage Collector to run.
void forceGarbageCollect(); void forceGarbageCollect();
private: private:

View file

@ -31,6 +31,7 @@ namespace NLGUI
class CCtrlSheetSelection; class CCtrlSheetSelection;
class CInterfaceLink; class CInterfaceLink;
/// Interface for the GUI XML parser class.
class IParser class IParser
{ {
public: public:

View file

@ -20,6 +20,7 @@
namespace NLGUI namespace NLGUI
{ {
/// Helper class to register reflectable classes
class CReflectableRegister class CReflectableRegister
{ {
public: public:

View file

@ -580,6 +580,7 @@ namespace NLGUI
public: public:
static NL3D::UTextContext* getTextContext(){ return textcontext; } static NL3D::UTextContext* getTextContext(){ return textcontext; }
/// Set of hw cursor images
static std::set< std::string > *hwCursors; static std::set< std::string > *hwCursors;
static float hwCursorScale; static float hwCursorScale;

View file

@ -36,6 +36,7 @@ namespace NLGUI
{ {
public: public:
/// Interface for classes which can format the text for this view.
class IViewTextFormatter class IViewTextFormatter
{ {
public: public:

View file

@ -49,7 +49,7 @@ namespace NLGUI
{ {
public: public:
/// Interface for classes that can provide text to CViewTextId /// Interface for classes which can provide text to CViewTextId
class IViewTextProvider class IViewTextProvider
{ {
public: public:

View file

@ -47,11 +47,16 @@ namespace NLGUI
class CInterfaceAnim; class CInterfaceAnim;
class CProcedure; class CProcedure;
/// Manages the GUI widgets /**
GUI Widget Manager
Manages the GUI widgets, asks them to draw themselves, etc.
*/
class CWidgetManager{ class CWidgetManager{
public: public:
/// Interface for event handlers that can be called when the screen is resized.
class INewScreenSizeHandler class INewScreenSizeHandler
{ {
public: public:
@ -59,6 +64,7 @@ namespace NLGUI
virtual void process( uint32 w, uint32 h ) = 0; virtual void process( uint32 w, uint32 h ) = 0;
}; };
/// Interface for event handlers that can be called when the widgets finished drawing.
class IOnWidgetsDrawnHandler class IOnWidgetsDrawnHandler
{ {
public: public:
@ -66,11 +72,15 @@ namespace NLGUI
virtual void process() = 0; virtual void process() = 0;
}; };
/// Frame render times
struct SInterfaceTimes struct SInterfaceTimes
{ {
public: public:
/// Time when the last frame was rendered in ms.
sint64 lastFrameMs; sint64 lastFrameMs;
/// Time when the current frame was rendered in ms.
sint64 thisFrameMs; sint64 thisFrameMs;
/// Difference between the two times in ms.
sint64 frameDiffMs; sint64 frameDiffMs;
SInterfaceTimes() SInterfaceTimes()

View file

@ -32,8 +32,6 @@ using namespace NLMISC;
namespace NLGUI namespace NLGUI
{ {
CStringMapper *_UIStringMapper = NULL;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
CInterfaceElement::~CInterfaceElement() CInterfaceElement::~CInterfaceElement()
{ {
@ -1271,6 +1269,19 @@ namespace NLGUI
return false; return false;
} }
CStringMapper* CStringShared::_UIStringMapper = NULL;
void CStringShared::createStringMapper()
{
if( _UIStringMapper == NULL )
_UIStringMapper = CStringMapper::createLocalMapper();
}
void CStringShared::deleteStringMapper()
{
delete _UIStringMapper;
}
} }

View file

@ -3093,6 +3093,8 @@ namespace NLGUI
CWidgetManager::CWidgetManager() CWidgetManager::CWidgetManager()
{ {
CStringShared::createStringMapper();
CReflectableRegister::registerClasses(); CReflectableRegister::registerClasses();
parser = IParser::createParser(); parser = IParser::createParser();
@ -3133,6 +3135,8 @@ namespace NLGUI
_Pointer = NULL; _Pointer = NULL;
curContextHelp = NULL; curContextHelp = NULL;
CStringShared::deleteStringMapper();
} }
} }

View file

@ -137,7 +137,6 @@ using namespace NLMISC;
namespace NLGUI namespace NLGUI
{ {
extern void luaDebuggerMainLoop(); extern void luaDebuggerMainLoop();
extern NLMISC::CStringMapper *_UIStringMapper;
} }
extern CClientChatManager ChatMngr; extern CClientChatManager ChatMngr;
@ -543,10 +542,6 @@ CInterfaceManager::~CInterfaceManager()
CViewTextFormated::setFormatter( NULL ); CViewTextFormated::setFormatter( NULL );
reset(); // to flush IDStringWaiters reset(); // to flush IDStringWaiters
// release the local string mapper
delete _UIStringMapper;
_UIStringMapper = NULL;
// release the database observers // release the database observers
releaseServerToLocalAutoCopyObservers(); releaseServerToLocalAutoCopyObservers();
@ -636,10 +631,6 @@ void CInterfaceManager::initLogin()
// Init LUA Scripting // Init LUA Scripting
initLUA(); initLUA();
// Create String mapper
if (_UIStringMapper == NULL)
_UIStringMapper = CStringMapper::createLocalMapper();
// Clear the action manager // Clear the action manager
Actions.clear(); Actions.clear();
EditActions.clear(); EditActions.clear();
@ -708,10 +699,6 @@ void CInterfaceManager::uninitLogin()
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void CInterfaceManager::initOutGame() void CInterfaceManager::initOutGame()
{ {
// create String mapper
if (_UIStringMapper == NULL)
_UIStringMapper = CStringMapper::createLocalMapper();
// Clear the action manager // Clear the action manager
Actions.clear(); Actions.clear();
EditActions.clear(); EditActions.clear();
@ -871,10 +858,6 @@ void CInterfaceManager::initInGame()
// Init LUA Scripting // Init LUA Scripting
initLUA(); initLUA();
// create the _UIStringMapper
if (_UIStringMapper == NULL)
_UIStringMapper = CStringMapper::createLocalMapper();
// Clear the action manager // Clear the action manager
Actions.clear(); Actions.clear();
EditActions.clear(); EditActions.clear();