@ -114,19 +114,6 @@ namespace NLGUI
OldShadowColorGrayed . A = OldColorGrayed . A = ( uint8 ) a ;
}
// ------------------------------------------------------------------------------------------------
void CViewTextMenu : : setActive ( bool state )
{
if ( _ParentMenu )
_ParentMenu - > setActive ( state ) ;
if ( _Active ! = state )
{
_Active = state ;
invalidateCoords ( ) ;
}
}
// ------------------------------------------------------------------------------------------------
// CGroupSubMenu
// ------------------------------------------------------------------------------------------------
@ -303,9 +290,6 @@ namespace NLGUI
if ( cond ) strCond = ( const char * ) cond ;
CXMLAutoPtr params ( ( const char * ) xmlGetProp ( cur , ( xmlChar * ) " params " ) ) ;
if ( params ) strParams = ( const char * ) params ;
CXMLAutoPtr icon ( ( const char * ) xmlGetProp ( cur , ( xmlChar * ) " icon " ) ) ;
if ( icon )
strTexture = ( const char * ) icon ;
CXMLAutoPtr strCheckable ( ( const char * ) xmlGetProp ( cur , ( xmlChar * ) " checkable " ) ) ;
bool bCheckable = false ;
if ( strCheckable ) bCheckable = convertBool ( strCheckable ) ;
@ -391,6 +375,23 @@ namespace NLGUI
if ( pUG )
setUserGroupRight ( ( uint ) _Lines . size ( ) - 1 , pUG , true ) ;
}
// usergroup from simple icon
CXMLAutoPtr icon ( ( const char * ) xmlGetProp ( cur , ( xmlChar * ) " icon " ) ) ;
if ( icon )
{
typedef std : : pair < std : : string , std : : string > TTmplParams ;
std : : vector < TTmplParams > vparams ;
uint lineIndex = _Lines . size ( ) - 1 ;
vparams . push_back ( TTmplParams ( " id " , toString ( " icon%d " , lineIndex ) ) ) ;
vparams . push_back ( TTmplParams ( " sizeref " , " " ) ) ;
vparams . push_back ( TTmplParams ( " icon_texture " , ( const char * ) icon ) ) ;
//vparams.push_back(TTmplParams("icon_color", options.ColorNormal.toString()));
string lineId = toString ( " %s:icon " , pV - > getId ( ) . c_str ( ) ) ;
CInterfaceGroup * pUG = CWidgetManager : : getInstance ( ) - > getParser ( ) - > createGroupInstance ( " menu_row_icon " , lineId , vparams ) ;
if ( pUG )
setUserGroupLeft ( ( uint ) _Lines . size ( ) - 1 , pUG , true ) ;
}
}
cur = cur - > next ;
}
@ -409,11 +410,11 @@ namespace NLGUI
pVB - > setSerializable ( false ) ;
pVB - > setParent ( this ) ;
pVB - > setParentPos ( parentPos ) ;
pVB - > setParentPosRef ( Hotspot_ B L) ;
pVB - > setPosRef ( Hotspot_ B R) ;
pVB - > setParentPosRef ( Hotspot_ M L) ;
pVB - > setPosRef ( Hotspot_ M R) ;
pVB - > setTexture ( texture ) ;
pVB - > setModulateGlobalColor ( false ) ;
pVB - > setX ( MENU_WIDGET_X ) ;
pVB - > setX ( - 2 ) ;
addView ( pVB ) ;
return pVB ;
}
@ -583,8 +584,6 @@ namespace NLGUI
CGroupFrame : : updateCoords ( ) ;
bool mustUpdate = false ;
if ( _MaxVisibleLine > 0 & & sint32 ( _Lines . size ( ) ) > _MaxVisibleLine )
{
for ( k = 0 ; k < _Lines . size ( ) ; + + k )
@ -592,14 +591,11 @@ namespace NLGUI
{
// compute max height of widgets on the left of text
sint32 widgetMaxH = 0 ;
if ( _Lines [ k ] . ViewText - > getActive ( ) )
{
if ( _Lines [ k ] . UserGroupRight ) widgetMaxH = _Lines [ k ] . UserGroupRight - > getHReal ( ) ;
if ( _Lines [ k ] . UserGroupLeft ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . UserGroupLeft - > getHReal ( ) ) ;
if ( _Lines [ k ] . CheckBox ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . CheckBox - > getHReal ( ) ) ;
if ( _Lines [ k ] . RightArrow ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . RightArrow - > getHReal ( ) ) ;
widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . ViewText - > getHReal ( ) ) ;
}
if ( _Lines [ k ] . UserGroupRight ) widgetMaxH = _Lines [ k ] . UserGroupRight - > getHReal ( ) ;
if ( _Lines [ k ] . UserGroupLeft ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . UserGroupLeft - > getHReal ( ) ) ;
if ( _Lines [ k ] . CheckBox ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . CheckBox - > getHReal ( ) ) ;
if ( _Lines [ k ] . RightArrow ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . RightArrow - > getHReal ( ) ) ;
widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . ViewText - > getHReal ( ) ) ;
_GroupList - > setMaxH ( widgetMaxH * _MaxVisibleLine + _GroupList - > getSpace ( ) * ( _MaxVisibleLine - 1 ) ) ;
if ( _ScrollBar = = NULL )
{
@ -618,7 +614,6 @@ namespace NLGUI
_SelectionView - > setW ( - 8 - 8 - 2 ) ;
_ScrollBar - > setSerializable ( false ) ;
addCtrl ( _ScrollBar ) ;
mustUpdate = true ;
}
break ;
}
@ -642,54 +637,39 @@ namespace NLGUI
{
// compute max height of widgets on the left of text
sint32 widgetMaxH = 0 ;
sint32 textHReal = 0 ;
if ( _Lines [ k ] . ViewText - > getActive ( ) )
{
if ( _Lines [ k ] . UserGroupRight ) widgetMaxH = _Lines [ k ] . UserGroupRight - > getHReal ( ) ;
if ( _Lines [ k ] . UserGroupLeft ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . UserGroupLeft - > getHReal ( ) ) ;
if ( _Lines [ k ] . CheckBox ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . CheckBox - > getHReal ( ) ) ;
if ( _Lines [ k ] . RightArrow ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . RightArrow - > getHReal ( ) ) ;
textHReal = _Lines [ k ] . ViewText - > getHReal ( ) ;
}
_Lines [ k ] . HReal = max ( widgetMaxH , textHReal ) ;
_Lines [ k ] . TextDY = textDYPos ;
if ( _Lines [ k ] . UserGroupRight ) widgetMaxH = _Lines [ k ] . UserGroupRight - > getHReal ( ) ;
if ( _Lines [ k ] . UserGroupLeft ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . UserGroupLeft - > getHReal ( ) ) ;
if ( _Lines [ k ] . CheckBox ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . CheckBox - > getHReal ( ) ) ;
if ( _Lines [ k ] . RightArrow ) widgetMaxH = std : : max ( widgetMaxH , _Lines [ k ] . RightArrow - > getHReal ( ) ) ;
sint32 textHReal = _Lines [ k ] . ViewText - > getHReal ( ) ;
_Lines [ k ] . HReal = max ( widgetMaxH , textHReal ) ;
_Lines [ k ] . TextDY = textDYPos ;
if ( widgetMaxH > textHReal )
_Lines [ k ] . TextDY + = ( widgetMaxH - textHReal ) / 2 ;
_Lines [ k ] . TextDY + = ( widgetMaxH - textHReal ) / 2 ;
}
}
// *** Update Text Positions
// sint32 currX = 0;
sint32 maxTextW = 0 ;
for ( k = 0 ; k < _Lines . size ( ) ; + + k )
{
if ( _Lines [ k ] . ViewText )
{
// Setup Y
_Lines [ k ] . ViewText - > setY ( _Lines [ k ] . TextDY ) ;
maxTextW = max ( maxTextW , _Lines [ k ] . ViewText - > getW ( ) ) ;
}
}
if ( mustUpdate )
{
CGroupFrame : : updateCoords ( ) ;
}
CGroupFrame : : updateCoords ( ) ;
// *** Setup SubMenus and CheckBoxes Positions
sint32 maxViewW = 0 ;
for ( i = 1 ; i < _Views . size ( ) ; + + i )
{
CViewBitmap * pVB = dynamic_cast < CViewBitmap * > ( _Views [ i ] ) ;
if ( pVB = = NULL ) continue ;
if ( pVB - > getId ( ) = = ID_MENU_SUBMENU )
{
// Look for the next line of the menu that contains a sub menu
@ -1252,7 +1232,7 @@ namespace NLGUI
pV - > setCaseMode ( _GroupMenu - > getCaseMode ( ) ) ;
if ( formatted )
{
pV - > setMultiLine ( true ) ;
pV - > setMultiLine ( true ) ;
pV - > setMultiLineMaxWOnly ( true ) ;
pV - > setTextFormatTaged ( name ) ;
}
@ -1278,7 +1258,6 @@ namespace NLGUI
_GroupList - > addChild ( pV ) ;
CViewBitmap * checkBox = NULL ;
CViewBitmap * icon = NULL ;
if ( checkable )
{
@ -1287,6 +1266,15 @@ namespace NLGUI
pV - > setCheckBox ( checkBox ) ;
}
CViewBitmap * icon = NULL ;
if ( ! texture . empty ( ) )
{
if ( _GroupList - > getNumChildren ( ) = = 1 )
pV - > setX ( 20 ) ;
icon = createIcon ( pV , texture ) ;
}
tmp . ViewText = pV ;
tmp . Separator = NULL ;
tmp . AHName = ah ;
@ -1300,39 +1288,12 @@ namespace NLGUI
tmp . Id = id ;
pV - > setId ( _GroupMenu - > getId ( ) + " : " + tmp . Id ) ;
{
typedef std : : pair < std : : string , std : : string > TTmplParams ;
std : : vector < TTmplParams > vparams ;
uint lineIndex = _Lines . size ( ) - 1 ;
vparams . push_back ( TTmplParams ( " id " , toString ( " icon%d " , lineIndex ) ) ) ;
vparams . push_back ( TTmplParams ( " sizeref " , " " ) ) ;
vparams . push_back ( TTmplParams ( " icon_texture " , texture ) ) ;
//vparams.push_back(TTmplParams("icon_color", options.ColorNormal.toString()));
string lineId = toString ( " %s:icon " , pV - > getId ( ) . c_str ( ) ) ;
CInterfaceGroup * pUGLeft = CWidgetManager : : getInstance ( ) - > getParser ( ) - > createGroupInstance ( " menu_row_icon " , lineId , vparams ) ;
if ( pUGLeft )
{
tmp . UserGroupLeft = pUGLeft ;
tmp . UserGroupLeftOwnership = true ;
addGroup ( pUGLeft ) ;
pUGLeft - > setParent ( this ) ;
pUGLeft - > setParentPos ( this ) ;
pUGLeft - > setParentPosRef ( Hotspot_BL ) ;
pUGLeft - > setPosRef ( Hotspot_BL ) ;
pUGLeft - > setX ( LEFT_MENU_WIDGET_X ) ;
}
}
_Lines . push_back ( tmp ) ;
// Add an empty sub menu by default
_SubMenus . push_back ( NULL ) ;
_GroupMenu - > invalidateCoords ( ) ;
return pV ;