CHANGED: #1471 CCtrlBaseButton action handlers will now be retrievable, even if the action handler couldn't be found at the time of parsing.
This commit is contained in:
parent
456e64d3e0
commit
366f081d29
3 changed files with 81 additions and 12 deletions
|
@ -175,6 +175,11 @@ namespace NLGUI
|
||||||
void convertTooltipHotSpot(const char *prop, THotSpot &parentHS, THotSpot &childHS);
|
void convertTooltipHotSpot(const char *prop, THotSpot &parentHS, THotSpot &childHS);
|
||||||
static std::string TooltipHotSpotToString( THotSpot parent, THotSpot child );
|
static std::string TooltipHotSpotToString( THotSpot parent, THotSpot child );
|
||||||
|
|
||||||
|
void mapAHString( const std::string &key, const std::string &value );
|
||||||
|
std::string getAHString( const std::string &key ) const;
|
||||||
|
|
||||||
|
static std::map< std::string, std::map< std::string, std::string > > AHCache;
|
||||||
|
|
||||||
bool resizer;
|
bool resizer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLGUI
|
namespace NLGUI
|
||||||
{
|
{
|
||||||
|
std::map< std::string, std::map< std::string, std::string > > CCtrlBase::AHCache;
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
CCtrlBase::~CCtrlBase()
|
CCtrlBase::~CCtrlBase()
|
||||||
|
@ -453,5 +454,32 @@ namespace NLGUI
|
||||||
return depth + getDeltaDepth();
|
return depth + getDeltaDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CCtrlBase::mapAHString( const std::string &key, const std::string &value )
|
||||||
|
{
|
||||||
|
std::map< std::string, std::map< std::string, std::string > >::iterator itr = AHCache.find( getId() );
|
||||||
|
if( itr == AHCache.end() )
|
||||||
|
{
|
||||||
|
AHCache[ getId() ];
|
||||||
|
itr = AHCache.find( getId() );
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map< std::string, std::string > &AHMap = itr->second;
|
||||||
|
AHMap[ key ] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CCtrlBase::getAHString( const stlpx_std::string &key ) const
|
||||||
|
{
|
||||||
|
std::map< std::string, std::map< std::string, std::string > >::const_iterator itr = AHCache.find( getId() );
|
||||||
|
if( itr == AHCache.end() )
|
||||||
|
return "";
|
||||||
|
|
||||||
|
std::map< std::string, std::string >::const_iterator itr2 = itr->second.find( key );
|
||||||
|
if( itr2 == itr->second.end() )
|
||||||
|
return "";
|
||||||
|
else
|
||||||
|
return itr2->second;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "onover" )
|
if( name == "onover" )
|
||||||
{
|
{
|
||||||
return _getActionOnOver();
|
return getAHString( "onover" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_over" )
|
if( name == "params_over" )
|
||||||
|
@ -126,7 +126,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "onclick_l" )
|
if( name == "onclick_l" )
|
||||||
{
|
{
|
||||||
return _getActionOnLeftClick();
|
return getAHString( "onclick_l" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_l" )
|
if( name == "params_l" )
|
||||||
|
@ -136,7 +136,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "ondblclick_l" )
|
if( name == "ondblclick_l" )
|
||||||
{
|
{
|
||||||
return _getActionOnDblLeftClick();
|
return getAHString( "ondblclick_l" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_dblclick_l" )
|
if( name == "params_dblclick_l" )
|
||||||
|
@ -146,7 +146,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "onlongclick_l" )
|
if( name == "onlongclick_l" )
|
||||||
{
|
{
|
||||||
return _getActionOnLeftLongClick();
|
return getAHString( "onlongclick_l" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_longclick_l" )
|
if( name == "params_longclick_l" )
|
||||||
|
@ -156,7 +156,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "onclick_r" )
|
if( name == "onclick_r" )
|
||||||
{
|
{
|
||||||
return _getActionOnRightClick();
|
return getAHString( "onclick_r" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_r" )
|
if( name == "params_r" )
|
||||||
|
@ -166,7 +166,7 @@ namespace NLGUI
|
||||||
else
|
else
|
||||||
if( name == "onclock_tick" )
|
if( name == "onclock_tick" )
|
||||||
{
|
{
|
||||||
return _getActionOnClockTick();
|
return getAHString( "onclock_tick" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( name == "params_clock_tick" )
|
if( name == "params_clock_tick" )
|
||||||
|
@ -283,6 +283,7 @@ namespace NLGUI
|
||||||
if( name == "onover" )
|
if( name == "onover" )
|
||||||
{
|
{
|
||||||
_AHOnOver = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnOver = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "onover", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -295,6 +296,7 @@ namespace NLGUI
|
||||||
if( name == "onclick_l" )
|
if( name == "onclick_l" )
|
||||||
{
|
{
|
||||||
_AHOnLeftClick = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnLeftClick = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "onclick_l", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -307,6 +309,7 @@ namespace NLGUI
|
||||||
if( name == "ondblclick_l" )
|
if( name == "ondblclick_l" )
|
||||||
{
|
{
|
||||||
_AHOnLeftDblClick = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnLeftDblClick = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "ondblclick_l", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -319,6 +322,7 @@ namespace NLGUI
|
||||||
if( name == "onlongclick_l" )
|
if( name == "onlongclick_l" )
|
||||||
{
|
{
|
||||||
_AHOnLeftLongClick = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnLeftLongClick = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "onlongclick_l", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -331,6 +335,7 @@ namespace NLGUI
|
||||||
if( name == "onclick_r" )
|
if( name == "onclick_r" )
|
||||||
{
|
{
|
||||||
_AHOnRightClick = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnRightClick = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "onclick_r", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -343,6 +348,7 @@ namespace NLGUI
|
||||||
if( name == "onclock_tick" )
|
if( name == "onclock_tick" )
|
||||||
{
|
{
|
||||||
_AHOnClockTick = CAHManager::getInstance()->getAH( value, std::string() );
|
_AHOnClockTick = CAHManager::getInstance()->getAH( value, std::string() );
|
||||||
|
mapAHString( "onclock_tick", value );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -407,18 +413,21 @@ namespace NLGUI
|
||||||
xmlNewProp( node, BAD_CAST "global_color_normal", BAD_CAST toString( _ModulateGlobalColorNormal ).c_str() );
|
xmlNewProp( node, BAD_CAST "global_color_normal", BAD_CAST toString( _ModulateGlobalColorNormal ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "global_color_pushed", BAD_CAST toString( _ModulateGlobalColorPushed ).c_str() );
|
xmlNewProp( node, BAD_CAST "global_color_pushed", BAD_CAST toString( _ModulateGlobalColorPushed ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "global_color_over", BAD_CAST toString( _ModulateGlobalColorOver ).c_str() );
|
xmlNewProp( node, BAD_CAST "global_color_over", BAD_CAST toString( _ModulateGlobalColorOver ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "onover", BAD_CAST _getActionOnOver().c_str() );
|
|
||||||
|
xmlNewProp( node, BAD_CAST "onover", BAD_CAST getAHString( "onover" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_over", BAD_CAST _getParamsOnOver().c_str() );
|
xmlNewProp( node, BAD_CAST "params_over", BAD_CAST _getParamsOnOver().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "onclick_l", BAD_CAST _getActionOnLeftClick().c_str() );
|
xmlNewProp( node, BAD_CAST "onclick_l", BAD_CAST getAHString( "onclick_l" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_l", BAD_CAST _getParamsOnLeftClick().c_str() );
|
xmlNewProp( node, BAD_CAST "params_l", BAD_CAST _getParamsOnLeftClick().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "ondblclick_l", BAD_CAST _getActionOnDblLeftClick().c_str() );
|
xmlNewProp( node, BAD_CAST "ondblclick_l", BAD_CAST getAHString( "ondblclick_l" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_dblclick_l", BAD_CAST _AHLeftDblClickParams.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "params_dblclick_l", BAD_CAST _AHLeftDblClickParams.toString().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "onlongclick_l", BAD_CAST _getActionOnLeftLongClick().c_str() );
|
xmlNewProp( node, BAD_CAST "onlongclick_l", BAD_CAST getAHString( "onlongclick_l" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_longclick_l", BAD_CAST _AHLeftLongClickParams.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "params_longclick_l", BAD_CAST _AHLeftLongClickParams.toString().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "onclick_r", BAD_CAST _getActionOnRightClick().c_str() );
|
xmlNewProp( node, BAD_CAST "onclick_r", BAD_CAST getAHString( "onclick_r" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_r", BAD_CAST _AHRightClickParams.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "params_r", BAD_CAST _AHRightClickParams.toString().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "onclock_tick", BAD_CAST _getActionOnClockTick().c_str() );
|
xmlNewProp( node, BAD_CAST "onclock_tick", BAD_CAST getAHString( "onclock_tick" ).c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "params_clock_tick", BAD_CAST _AHClockTickParams.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "params_clock_tick", BAD_CAST _AHClockTickParams.toString().c_str() );
|
||||||
|
|
||||||
|
|
||||||
xmlNewProp( node, BAD_CAST "menu_l", BAD_CAST _ListMenuLeft.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "menu_l", BAD_CAST _ListMenuLeft.toString().c_str() );
|
||||||
xmlNewProp( node, BAD_CAST "menu_r", BAD_CAST _ListMenuRight.toString().c_str() );
|
xmlNewProp( node, BAD_CAST "menu_r", BAD_CAST _ListMenuRight.toString().c_str() );
|
||||||
|
|
||||||
|
@ -509,6 +518,33 @@ namespace NLGUI
|
||||||
CAHManager::getInstance()->parseAH(cur, "onlongclick_l", "params_longclick_l", _AHOnLeftLongClick, _AHLeftLongClickParams);
|
CAHManager::getInstance()->parseAH(cur, "onlongclick_l", "params_longclick_l", _AHOnLeftLongClick, _AHLeftLongClickParams);
|
||||||
CAHManager::getInstance()->parseAH(cur, "onclock_tick", "params_clock_tick", _AHOnClockTick, _AHClockTickParams);
|
CAHManager::getInstance()->parseAH(cur, "onclock_tick", "params_clock_tick", _AHOnClockTick, _AHClockTickParams);
|
||||||
|
|
||||||
|
if( editorMode )
|
||||||
|
{
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "onover" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "onover", std::string( prop ) );
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "onclick_l" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "onclick_l", std::string( prop ) );
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "ondblclick_l" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "ondblclick_l", std::string( prop ) );
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "onclick_r" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "onclick_r", std::string( prop ) );
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "onlongclick_l" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "onlongclick_l", std::string( prop ) );
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, BAD_CAST "onclock_tick" );
|
||||||
|
if( prop != NULL )
|
||||||
|
mapAHString( "onclock_tick", std::string( prop ) );
|
||||||
|
}
|
||||||
|
|
||||||
// Context menu association
|
// Context menu association
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"menu_l" );
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"menu_l" );
|
||||||
if (prop)
|
if (prop)
|
||||||
|
|
Loading…
Reference in a new issue