diff --git a/code/nel/include/nel/gui/dbview_number.h b/code/nel/include/nel/gui/dbview_number.h
index 2c76a255d..bfa963fb6 100644
--- a/code/nel/include/nel/gui/dbview_number.h
+++ b/code/nel/include/nel/gui/dbview_number.h
@@ -55,9 +55,7 @@ namespace NLGUI
static void forceLink();
protected:
-
- sint64 getVal() { if (_Modulo == 0) return (_Number.getSInt64() / _Divisor);
- else return (_Number.getSInt64() / _Divisor)%_Modulo; }
+ sint64 getVal();
protected:
diff --git a/code/nel/include/nel/gui/group_editbox.h b/code/nel/include/nel/gui/group_editbox.h
index 7ea2ab529..771bdc482 100644
--- a/code/nel/include/nel/gui/group_editbox.h
+++ b/code/nel/include/nel/gui/group_editbox.h
@@ -283,6 +283,10 @@ namespace NLGUI
sint32 _ViewTextDeltaX;
+ CViewText* getVT() const{ return _ViewText; }
+
+ void createViewText();
+
private:
void setupDisplayText();
void makeTopWindow();
diff --git a/code/nel/include/nel/gui/group_editbox_decor.h b/code/nel/include/nel/gui/group_editbox_decor.h
new file mode 100644
index 000000000..975177612
--- /dev/null
+++ b/code/nel/include/nel/gui/group_editbox_decor.h
@@ -0,0 +1,53 @@
+// Ryzom - MMORPG Framework
+// Copyright (C) 2014 Laszlo Kis-Adam
+// 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 .
+
+#ifndef GROUP_EDITBOX_DECOR
+#define GROUP_EDITBOX_DECOR
+
+#include "nel/gui/group_editbox.h"
+
+namespace NLGUI
+{
+ /// Decorated CGroupEditBox
+ class CGroupEditBoxDecor : public CGroupEditBox
+ {
+ public:
+ DECLARE_UI_CLASS( CGroupEditBoxDecor )
+
+ CGroupEditBoxDecor( const TCtorParam ¶m );
+ ~CGroupEditBoxDecor();
+
+ void moveBy( sint32 x, sint32 y );
+
+ void setIdRecurse( const std::string &newID );
+
+ std::string getProperty( const std::string &name ) const;
+ void setProperty( const std::string &name, const std::string &value );
+ xmlNodePtr serialize( xmlNodePtr parentNode, const char *type ) const;
+ bool parse( xmlNodePtr cur, CInterfaceGroup *parent );
+ void draw();
+ void updateCoords();
+
+ static void forceLink();
+
+ private:
+ class EBDPrivate *_Pvt;
+ };
+}
+
+#endif
+
diff --git a/code/nel/include/nel/gui/interface_element.h b/code/nel/include/nel/gui/interface_element.h
index c1f6d20e7..e2f9ffc87 100644
--- a/code/nel/include/nel/gui/interface_element.h
+++ b/code/nel/include/nel/gui/interface_element.h
@@ -117,6 +117,7 @@ namespace NLGUI
editorSelected = false;
serializable = true;
+ _EditorSelectable = true;
}
// dtor
@@ -531,9 +532,16 @@ namespace NLGUI
/// Aligns the element to the other element specified
void alignTo( CInterfaceElement *other );
+ /// Specifies if the widget can be selected in the editor
+ void setEditorSelectable( bool b ){ _EditorSelectable = b; }
+
+ /// Tells if the widget can be selected in the editor
+ bool isEditorSelectable() const{ return _EditorSelectable; }
+
protected:
bool editorSelected;
+ bool _EditorSelectable;
static bool editorMode;
diff --git a/code/nel/include/nel/gui/interface_property.h b/code/nel/include/nel/gui/interface_property.h
index 63a62ef0e..4ed6e701e 100644
--- a/code/nel/include/nel/gui/interface_property.h
+++ b/code/nel/include/nel/gui/interface_property.h
@@ -47,6 +47,15 @@ namespace NLGUI
_VolatileValue = NULL;
}
+ /// Tells if this property has a value
+ bool hasValue() const
+ {
+ if( _VolatileValue != NULL )
+ return true;
+ else
+ return false;
+ }
+
NLMISC::CCDBNodeLeaf* getNodePtr() const
{
return _VolatileValue;
diff --git a/code/nel/src/gui/dbview_number.cpp b/code/nel/src/gui/dbview_number.cpp
index a0b6dfb02..e844bf4c0 100644
--- a/code/nel/src/gui/dbview_number.cpp
+++ b/code/nel/src/gui/dbview_number.cpp
@@ -121,7 +121,7 @@ namespace NLGUI
{
sint64 i;
if( fromString( value, i ) )
- _Divisor = i;
+ _Modulo = i;
return;
}
else
@@ -249,5 +249,16 @@ namespace NLGUI
{
}
+ sint64 CDBViewNumber::getVal()
+ {
+ if( !_Number.hasValue() )
+ return 0;
+
+ if( _Modulo == 0 )
+ return _Number.getSInt64() / _Divisor;
+ else
+ return ( _Number.getSInt64() / _Divisor ) % _Modulo;
+ }
+
}
diff --git a/code/nel/src/gui/dbview_quantity.cpp b/code/nel/src/gui/dbview_quantity.cpp
index ad651f582..12dfce4b8 100644
--- a/code/nel/src/gui/dbview_quantity.cpp
+++ b/code/nel/src/gui/dbview_quantity.cpp
@@ -157,14 +157,17 @@ namespace NLGUI
// ***************************************************************************
void CDBViewQuantity::draw ()
{
- // change text
- sint32 val= _Number.getSInt32();
- sint32 valMax= _NumberMax.getSInt32();
- if(_Cache!=val || _CacheMax!=valMax)
+ if( _Number.hasValue() && _NumberMax.hasValue() )
{
- _Cache= val;
- _CacheMax=valMax;
- buildTextFromCache();
+ // change text
+ sint32 val= _Number.getSInt32();
+ sint32 valMax= _NumberMax.getSInt32();
+ if(_Cache!=val || _CacheMax!=valMax)
+ {
+ _Cache= val;
+ _CacheMax=valMax;
+ buildTextFromCache();
+ }
}
// parent call
diff --git a/code/nel/src/gui/group_editbox.cpp b/code/nel/src/gui/group_editbox.cpp
index 92ae46703..0dd4ffbda 100644
--- a/code/nel/src/gui/group_editbox.cpp
+++ b/code/nel/src/gui/group_editbox.cpp
@@ -1336,6 +1336,11 @@ namespace NLGUI
// if click, and not frozen, then get the focus
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown && !_Frozen)
{
+ if( getEditorMode() )
+ {
+ return CViewBase::handleEvent( event );
+ }
+
_SelectingText = true;
stopParentBlink();
CWidgetManager::getInstance()->setCaptureKeyboard (this);
@@ -1531,36 +1536,45 @@ namespace NLGUI
CInterfaceGroup::clearViews();
}
+ // ----------------------------------------------------------------------------
+
+ void CGroupEditBox::createViewText()
+ {
+ nlwarning("Interface: CGroupEditBox: text 'edit_text' missing or bad type");
+ nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() );
+ _ViewText = dynamic_cast< CViewText* >( CInterfaceFactory::createClass( "text" ) );
+ if( _ViewText == NULL )
+ {
+ nlwarning( "Failed to create new 'edit_text' for %s", getId().c_str() );
+ return;
+ }
+
+ _ViewText->setParent( this );
+ _ViewText->setIdRecurse( "edit_text" );
+ _ViewText->setHardText( "" );
+ _ViewText->setPosRef( Hotspot_ML );
+ _ViewText->setParentPosRef( Hotspot_ML );
+ addView( _ViewText );
+
+ sint32 w,h;
+ w = std::max( sint32( _ViewText->getFontWidth() * _ViewText->getText().size() ), getW() );
+ h = std::max( sint32( _ViewText->getFontHeight() ), getH() );
+
+ setH( h );
+ setW( w );
+ }
+
// ----------------------------------------------------------------------------
void CGroupEditBox::setup()
{
// bind to the controls
- _ViewText = dynamic_cast(CInterfaceGroup::getView("edit_text"));
+ if( _ViewText == NULL )
+ _ViewText = dynamic_cast(CInterfaceGroup::getView("edit_text"));
if(_ViewText == NULL)
- {
- nlwarning("Interface: CGroupEditBox: text 'edit_text' missing or bad type");
- if( editorMode )
- {
- nlwarning( "Trying to create a new 'edit_text' for %s", getId().c_str() );
- _ViewText = dynamic_cast< CViewText* >( CInterfaceFactory::createClass( "text" ) );
- if( _ViewText != NULL )
- {
- _ViewText->setParent( this );
- _ViewText->setIdRecurse( "edit_text" );
- _ViewText->setHardText( "sometext" );
- _ViewText->setPosRef( Hotspot_TL );
- _ViewText->setParentPosRef( Hotspot_TL );
- addView( _ViewText );
-
- setH( _ViewText->getFontHeight() );
- setW( _ViewText->getFontWidth() * _ViewText->getText().size() );
-
- }
- else
- nlwarning( "Failed to create new 'edit_text' for %s", getId().c_str() );
- }
- }
+ createViewText();
+
+ _ViewText->setEditorSelectable( false );
// For MultiLine editbox, clip the end space, else weird when edit space at end of line (nothing happens)
if(_ViewText)
diff --git a/code/nel/src/gui/group_editbox_decor.cpp b/code/nel/src/gui/group_editbox_decor.cpp
new file mode 100644
index 000000000..ae31513de
--- /dev/null
+++ b/code/nel/src/gui/group_editbox_decor.cpp
@@ -0,0 +1,380 @@
+// Ryzom - MMORPG Framework
+// Copyright (C) 2014 Laszlo Kis-Adam
+// 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 .
+
+#include "stdpch.h"
+#include "nel/gui/group_editbox_decor.h"
+#include "nel/gui/view_bitmap.h"
+#include "nel/gui/view_text.h"
+
+namespace NLGUI
+{
+ class EBDPrivate
+ {
+ public:
+ enum Textures
+ {
+ BG,
+ L,
+ R,
+ TM,
+ BM,
+ TL,
+ TR,
+ BL,
+ BR,
+ TCOUNT
+ };
+
+ EBDPrivate()
+ {
+ for( int i = 0; i < TCOUNT; i++ )
+ {
+ _Textures.push_back( new CViewBitmap( CViewBase::TCtorParam() ) );
+ }
+ }
+
+ ~EBDPrivate()
+ {
+ for( int i = 0; i < _Textures.size(); i++ )
+ delete _Textures[ i ];
+ _Textures.clear();
+ }
+
+ void draw()
+ {
+ for( int i = 0; i < _Textures.size(); i++ )
+ {
+ CViewBitmap *bm = _Textures[ i ];
+ bm->draw();
+ }
+ }
+
+ void updateCoords()
+ {
+ for( int i = 0; i < _Textures.size(); i++ )
+ {
+ CViewBitmap *bm = _Textures[ i ];
+ bm->fitTexture();
+ }
+
+ // W and H parameters depend on the sizes of the other textures
+ // Negative sizes mean that the sizes are that much smaller than the parent
+ sint32 w,h;
+ h = _Textures[ TL ]->getHReal() + _Textures[ BL ]->getHReal();
+ h *= -1;
+ _Textures[ L ]->setH( h );
+
+ h = _Textures[ TR ]->getHReal() + _Textures[ BR ]->getHReal();
+ h *= -1;
+ _Textures[ R ]->setH( h );
+
+ w = _Textures[ TL ]->getWReal() + _Textures[ TR ]->getWReal();
+ w *= -1;
+ _Textures[ TM ]->setW( w );
+
+ w = _Textures[ BL ]->getWReal() + _Textures[ BR ]->getWReal();
+ w *= -1;
+ _Textures[ BM ]->setW( w );
+
+ h = _Textures[ TM ]->getHReal() + _Textures[ BM ]->getHReal();
+ h *= -1;
+ w = _Textures[ L ]->getWReal() + _Textures[ R ]->getWReal();
+ w *= -1;
+ _Textures[ BG ]->setW( w );
+ _Textures[ BG ]->setH( h );
+
+ for( int i = 0; i < _Textures.size(); i++ )
+ {
+ CViewBitmap *bm = _Textures[ i ];
+ bm->updateCoords();
+ }
+ }
+
+ void setup( CInterfaceGroup *parent )
+ {
+ for( int i = 0; i < _Textures.size(); i++ )
+ {
+ CViewBitmap *bm = _Textures[ i ];
+ bm->setParent( parent );
+ bm->setParentPos( parent );
+ bm->setParentSize( parent );
+ bm->setEditorSelectable( false );
+ }
+
+ _Textures[ TL ]->setPosRef( Hotspot_TL );
+ _Textures[ TL ]->setParentPosRef( Hotspot_TL );
+
+ _Textures[ TM ]->setPosRef( Hotspot_TM );
+ _Textures[ TM ]->setParentPosRef( Hotspot_TM );
+ _Textures[ TM ]->setScale( true );
+ _Textures[ TM ]->setSizeRef( "w" );
+
+ _Textures[ TR ]->setPosRef( Hotspot_TR );
+ _Textures[ TR ]->setParentPosRef( Hotspot_TR );
+
+ _Textures[ BL ]->setPosRef( Hotspot_BL );
+ _Textures[ BL ]->setParentPosRef( Hotspot_BL );
+
+ _Textures[ BM ]->setPosRef( Hotspot_BM );
+ _Textures[ BM ]->setParentPosRef( Hotspot_BM );
+ _Textures[ BM ]->setScale( true );
+ _Textures[ BM ]->setSizeRef( "w" );
+
+ _Textures[ BR ]->setPosRef( Hotspot_BR );
+ _Textures[ BR ]->setParentPosRef( Hotspot_BR );
+
+ _Textures[ L ]->setPosRef( Hotspot_ML );
+ _Textures[ L ]->setParentPosRef( Hotspot_ML );
+ _Textures[ L ]->setScale( true );
+ _Textures[ L ]->setSizeRef( "h" );
+
+ _Textures[ R ]->setPosRef( Hotspot_MR );
+ _Textures[ R ]->setParentPosRef( Hotspot_MR );
+ _Textures[ R ]->setScale( true );
+ _Textures[ R ]->setSizeRef( "h" );
+
+ _Textures[ BG ]->setPosRef( Hotspot_MM );
+ _Textures[ BG ]->setParentPosRef( Hotspot_MM );
+ _Textures[ BG ]->setScale( true );
+ _Textures[ BG ]->setSizeRef( "wh" );
+ }
+
+ std::vector< CViewBitmap* > _Textures;
+ };
+
+ NLMISC_REGISTER_OBJECT( CViewBase, CGroupEditBoxDecor, std::string, "edit_box_decor" );
+
+ CGroupEditBoxDecor::CGroupEditBoxDecor( const TCtorParam ¶m ) :
+ CGroupEditBox( param )
+ {
+ _Pvt = new EBDPrivate();
+ _Pvt->setup( this );
+
+ createViewText();
+ getVT()->setSerializable( false );
+ getVT()->setEditorSelectable( false );
+ }
+
+ CGroupEditBoxDecor::~CGroupEditBoxDecor()
+ {
+ delete _Pvt;
+ _Pvt = NULL;
+ }
+
+ void CGroupEditBoxDecor::moveBy( sint32 x, sint32 y )
+ {
+ CInterfaceElement::moveBy( x, y );
+
+ _Pvt->updateCoords();
+ }
+
+ void CGroupEditBoxDecor::setIdRecurse( const std::string &newID )
+ {
+ CInterfaceElement::setIdRecurse( newID );
+ _ViewText->setIdRecurse( _ViewText->getShortId() );
+ }
+
+ std::string CGroupEditBoxDecor::getProperty( const std::string &name ) const
+ {
+ if( name == "tx_tl" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::TL ]->getTexture();
+ }
+ else
+ if( name == "tx_tm" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::TM ]->getTexture();
+ }
+ else
+ if( name == "tx_tr" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::TR ]->getTexture();
+ }
+ else
+ if( name == "tx_bl" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::BL ]->getTexture();
+ }
+ else
+ if( name == "tx_bm" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::BM ]->getTexture();
+ }
+ else
+ if( name == "tx_br" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::BR ]->getTexture();
+ }
+ else
+ if( name == "tx_l" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::L ]->getTexture();
+ }
+ else
+ if( name == "tx_r" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::R ]->getTexture();
+ }
+ else
+ if( name == "tx_bg" )
+ {
+ return _Pvt->_Textures[ EBDPrivate::BG ]->getTexture();
+ }
+ else
+ return CGroupEditBox::getProperty( name );
+ }
+
+ void CGroupEditBoxDecor::setProperty( const std::string &name, const std::string &value )
+ {
+ if( name == "tx_tl" )
+ {
+ _Pvt->_Textures[ EBDPrivate::TL ]->setTexture( value );
+ }
+ else
+ if( name == "tx_tm" )
+ {
+ _Pvt->_Textures[ EBDPrivate::TM ]->setTexture( value );
+ }
+ else
+ if( name == "tx_tr" )
+ {
+ _Pvt->_Textures[ EBDPrivate::TR ]->setTexture( value );
+ }
+ else
+ if( name == "tx_bl" )
+ {
+ _Pvt->_Textures[ EBDPrivate::BL ]->setTexture( value );
+ }
+ else
+ if( name == "tx_bm" )
+ {
+ _Pvt->_Textures[ EBDPrivate::BM ]->setTexture( value );
+ }
+ else
+ if( name == "tx_br" )
+ {
+ _Pvt->_Textures[ EBDPrivate::BR ]->setTexture( value );
+ }
+ else
+ if( name == "tx_l" )
+ {
+ _Pvt->_Textures[ EBDPrivate::L ]->setTexture( value );
+ }
+ else
+ if( name == "tx_r" )
+ {
+ _Pvt->_Textures[ EBDPrivate::R ]->setTexture( value );
+ }
+ else
+ if( name == "tx_bg" )
+ {
+ _Pvt->_Textures[ EBDPrivate::BG ]->setTexture( value );
+ }
+ else
+ CGroupEditBox::setProperty( name, value );
+ }
+
+ xmlNodePtr CGroupEditBoxDecor::serialize( xmlNodePtr parentNode, const char *type ) const
+ {
+ xmlNodePtr node = CGroupEditBox::serialize( parentNode, type );
+ if( node == NULL )
+ return NULL;
+
+ xmlSetProp( node, BAD_CAST "type", BAD_CAST "edit_box_decor" );
+ xmlSetProp( node, BAD_CAST "tx_tl", BAD_CAST _Pvt->_Textures[ EBDPrivate::TL ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_tr", BAD_CAST _Pvt->_Textures[ EBDPrivate::TR ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_tm", BAD_CAST _Pvt->_Textures[ EBDPrivate::TM ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_bl", BAD_CAST _Pvt->_Textures[ EBDPrivate::BL ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_bm", BAD_CAST _Pvt->_Textures[ EBDPrivate::BM ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_br", BAD_CAST _Pvt->_Textures[ EBDPrivate::BR ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_l", BAD_CAST _Pvt->_Textures[ EBDPrivate::L ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_r", BAD_CAST _Pvt->_Textures[ EBDPrivate::R ]->getTexture().c_str() );
+ xmlSetProp( node, BAD_CAST "tx_bg", BAD_CAST _Pvt->_Textures[ EBDPrivate::BG ]->getTexture().c_str() );
+
+ return node;
+ }
+
+ bool CGroupEditBoxDecor::parse( xmlNodePtr cur, CInterfaceGroup *parent )
+ {
+ if( !CGroupEditBox::parse( cur, parent ) )
+ return false;
+
+ CXMLAutoPtr prop;
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tl" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::TL ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tm" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::TM ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_tr" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::TR ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bl" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::BL ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bm" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::BM ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_br" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::BR ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_l" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::L ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_r" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::R ]->setTexture( ( const char* )prop );
+
+ prop = ( char* ) xmlGetProp( cur, BAD_CAST "tx_bg" );
+ if( prop )
+ _Pvt->_Textures[ EBDPrivate::BG ]->setTexture( ( const char* )prop );
+
+ getVT()->setIdRecurse( "edit_text" );
+
+ return true;
+ }
+
+ void CGroupEditBoxDecor::draw()
+ {
+ CGroupEditBox::draw();
+
+ _Pvt->draw();
+ }
+
+ void CGroupEditBoxDecor::updateCoords()
+ {
+ sint32 tw = _Pvt->_Textures[ EBDPrivate::L ]->getWReal();
+ getVT()->setX( tw + 1 );
+
+ CGroupEditBox::updateCoords();
+ _Pvt->updateCoords();
+ }
+
+ void CGroupEditBoxDecor::forceLink()
+ {
+ }
+}
+
+
diff --git a/code/nel/src/gui/link_hack.cpp b/code/nel/src/gui/link_hack.cpp
index 06a8c23e8..3ecc6fb0a 100644
--- a/code/nel/src/gui/link_hack.cpp
+++ b/code/nel/src/gui/link_hack.cpp
@@ -20,6 +20,7 @@
#include "nel/gui/dbview_number.h"
#include "nel/gui/dbview_quantity.h"
#include "nel/gui/view_pointer.h"
+#include "nel/gui/group_editbox_decor.h"
namespace NLGUI
{
@@ -39,5 +40,6 @@ namespace NLGUI
force_link_dbgroup_select_number_cpp();
force_link_dbgroup_combo_box_cpp();
force_link_group_wheel_cpp();
+ CGroupEditBoxDecor::forceLink();
}
}
\ No newline at end of file
diff --git a/code/nel/src/gui/widget_manager.cpp b/code/nel/src/gui/widget_manager.cpp
index 81fbaf28b..4591d7554 100644
--- a/code/nel/src/gui/widget_manager.cpp
+++ b/code/nel/src/gui/widget_manager.cpp
@@ -2436,6 +2436,9 @@ namespace NLGUI
CCtrlBase *ctrl= _CtrlsUnderPointer[i];
if (ctrl && ctrl->isCapturable() && ctrl->isInGroup( pNewCurrentWnd ) )
{
+ if( CInterfaceElement::getEditorMode() && !ctrl->isEditorSelectable() )
+ continue;
+
uint d = ctrl->getDepth( pNewCurrentWnd );
if (d > nMaxDepth)
{
@@ -2454,6 +2457,9 @@ namespace NLGUI
CViewBase *v = _ViewsUnderPointer[i];
if( ( v != NULL ) && v->isInGroup( pNewCurrentWnd ) )
{
+ if( CInterfaceElement::getEditorMode() && !v->isEditorSelectable() )
+ continue;
+
_CapturedView = v;
captured = true;
break;
diff --git a/code/studio/src/plugins/gui_editor/nelgui_ctrl.cpp b/code/studio/src/plugins/gui_editor/nelgui_ctrl.cpp
index e9712ce4e..4852b227f 100644
--- a/code/studio/src/plugins/gui_editor/nelgui_ctrl.cpp
+++ b/code/studio/src/plugins/gui_editor/nelgui_ctrl.cpp
@@ -188,7 +188,7 @@ namespace GUIEditor
void NelGUICtrl::onGUILoaded()
{
- timerID = startTimer( 200 );
+ timerID = startTimer( 25 );
guiLoaded = true;
Q_EMIT guiLoadComplete();
diff --git a/code/studio/src/plugins/gui_editor/new_gui_dlg.cpp b/code/studio/src/plugins/gui_editor/new_gui_dlg.cpp
index 3c9208dfc..43faabf79 100644
--- a/code/studio/src/plugins/gui_editor/new_gui_dlg.cpp
+++ b/code/studio/src/plugins/gui_editor/new_gui_dlg.cpp
@@ -25,6 +25,9 @@ QDialog( parent )
{
m_ui.setupUi( this );
+ // Login texture map - temporaty measure until we add default textures for widgets to use
+ m_ui.mapList->addItem( "texture_interfaces_v3_login.tga" );
+
connect( m_ui.okButton, SIGNAL( clicked( bool ) ), this, SLOT( onOKClicked() ) );
connect( m_ui.cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( onCancelClicked() ) );
connect( m_ui.projectDirTB, SIGNAL( clicked( bool ) ), this, SLOT( onProjectDirTBClicked() ) );
diff --git a/code/studio/src/plugins/gui_editor/widget_hierarchy.cpp b/code/studio/src/plugins/gui_editor/widget_hierarchy.cpp
index 343d8efd8..17e7f6e57 100644
--- a/code/studio/src/plugins/gui_editor/widget_hierarchy.cpp
+++ b/code/studio/src/plugins/gui_editor/widget_hierarchy.cpp
@@ -166,6 +166,9 @@ namespace GUIEditor
std::vector< CCtrlBase* >::const_iterator citr;
for( citr = controls.begin(); citr != controls.end(); ++citr )
{
+ if( !(*citr)->isEditorSelectable() )
+ continue;
+
QTreeWidgetItem *subItem = new QTreeWidgetItem( item );
subItem->setText( 0, makeNodeName( (*citr)->getId() ).c_str() );
widgetHierarchyMap[ (*citr)->getId() ] = subItem;
@@ -176,6 +179,9 @@ namespace GUIEditor
std::vector< CViewBase* >::const_iterator vitr;
for( vitr = views.begin(); vitr != views.end(); ++vitr )
{
+ if( !(*vitr)->isEditorSelectable() )
+ continue;
+
QTreeWidgetItem *subItem = new QTreeWidgetItem( item );
subItem->setText( 0, makeNodeName( (*vitr)->getId() ).c_str() );
widgetHierarchyMap[ (*vitr)->getId() ] = subItem;
diff --git a/code/studio/src/plugins/gui_editor/widget_info_tree_node.h b/code/studio/src/plugins/gui_editor/widget_info_tree_node.h
index 0de9e6977..8aefe6f0f 100644
--- a/code/studio/src/plugins/gui_editor/widget_info_tree_node.h
+++ b/code/studio/src/plugins/gui_editor/widget_info_tree_node.h
@@ -75,6 +75,10 @@ namespace GUIEditor
// copy the properties to the child, since they inherit them
for( std::vector< SPropEntry >::const_iterator itr = this->info.props.begin(); itr != this->info.props.end(); ++itr )
{
+ // Don't add property if already exists, since it's an override.
+ if( node->hasProperty( itr->propName ) )
+ continue;
+
node->addProperty( *itr );
}
}
diff --git a/code/studio/src/plugins/gui_editor/widgets/CtrlButton.xml b/code/studio/src/plugins/gui_editor/widgets/CtrlButton.xml
index c081f3dae..2454f7035 100644
--- a/code/studio/src/plugins/gui_editor/widgets/CtrlButton.xml
+++ b/code/studio/src/plugins/gui_editor/widgets/CtrlButton.xml
@@ -11,18 +11,18 @@
tx_normal
- string
-
+ texture
+ tp_quit.tga
tx_pushed
- string
-
+ texture
+ tp_quit.tga
tx_over
- string
-
+ texture
+ tp_quit.tga
scale
diff --git a/code/studio/src/plugins/gui_editor/widgets/DBViewNumber.xml b/code/studio/src/plugins/gui_editor/widgets/DBViewNumber.xml
index 36a7d23ce..99cc153ce 100644
--- a/code/studio/src/plugins/gui_editor/widgets/DBViewNumber.xml
+++ b/code/studio/src/plugins/gui_editor/widgets/DBViewNumber.xml
@@ -9,6 +9,11 @@
+
+ hardtext
+ string
+ 0
+
value
string
diff --git a/code/studio/src/plugins/gui_editor/widgets/GroupEditBoxDecor.xml b/code/studio/src/plugins/gui_editor/widgets/GroupEditBoxDecor.xml
new file mode 100644
index 000000000..67865e707
--- /dev/null
+++ b/code/studio/src/plugins/gui_editor/widgets/GroupEditBoxDecor.xml
@@ -0,0 +1,68 @@
+
+
+ GroupEditBoxDecor
+ CGroupEditBoxDecor
+ edit_box_decor
+ GroupEditBox
+
+ false
+
+
+
+
+ w
+ int
+ 150
+
+
+ h
+ int
+ 25
+
+
+ tx_tl
+ texture
+ log_eb_tl.tga
+
+
+ tx_tm
+ texture
+ log_eb_t.tga
+
+
+ tx_tr
+ texture
+ log_eb_tr.tga
+
+
+ tx_bl
+ texture
+ log_eb_bl.tga
+
+
+ tx_bm
+ texture
+ log_eb_b.tga
+
+
+ tx_br
+ texture
+ log_eb_br.tga
+
+
+ tx_l
+ texture
+ log_eb_l.tga
+
+
+ tx_r
+ texture
+ log_eb_r.tga
+
+
+ tx_bg
+ texture
+ log_eb_m.tga
+
+
+
diff --git a/code/studio/src/plugins/gui_editor/widgets/ViewBitmap.xml b/code/studio/src/plugins/gui_editor/widgets/ViewBitmap.xml
index 7d78f6c40..1c22d67cd 100644
--- a/code/studio/src/plugins/gui_editor/widgets/ViewBitmap.xml
+++ b/code/studio/src/plugins/gui_editor/widgets/ViewBitmap.xml
@@ -37,7 +37,7 @@
texture
texture
-
+ log_kami.tga
scale