diff --git a/code/nel/include/nel/gui/ctrl_text_button.h b/code/nel/include/nel/gui/ctrl_text_button.h
new file mode 100644
index 000000000..a6d43c50f
--- /dev/null
+++ b/code/nel/include/nel/gui/ctrl_text_button.h
@@ -0,0 +1,166 @@
+// Ryzom - MMORPG Framework
+// 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 NL_CTRL_TEXT_BUTTON_H
+#define NL_CTRL_TEXT_BUTTON_H
+
+#include "nel/gui/ctrl_base_button.h"
+#include "nel/gui/view_renderer.h"
+
+
+namespace NLGUI
+{
+ class CEventDescriptor;
+ class CViewText;
+
+ // ***************************************************************************
+ /**
+ * Text Button that can be either Push or Toggle button. Localized, auto-resize
+ * \author Lionel Berenguier
+ * \author Nevrax France
+ * \date 2002
+ */
+ class CCtrlTextButton : public CCtrlBaseButton
+ {
+ public:
+
+ /// Constructor
+ CCtrlTextButton(const TCtorParam ¶m);
+
+ // Init part
+ virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
+
+ virtual void updateCoords();
+
+ virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
+
+ // Display part
+ virtual void draw();
+
+ // Hide/Show the text also.
+ virtual void setActive(bool state);
+
+ // Add also our ViewText
+ virtual void onAddToGroup();
+
+
+ /// \from CInterfaceElement
+ sint32 getMaxUsedW() const;
+ sint32 getMinUsedW() const;
+
+ // Special Text Colors accessors
+ // Colors
+ NLMISC::CRGBA getTextColorNormal() const {return _TextColorNormal;}
+ void setTextColorNormal(NLMISC::CRGBA v) {_TextColorNormal= v;}
+ NLMISC::CRGBA getTextColorPushed() const {return _TextColorPushed;}
+ void setTextColorPushed(NLMISC::CRGBA v) {_TextColorPushed= v;}
+ NLMISC::CRGBA getTextColorOver() const {return _TextColorOver;}
+ void setTextColorOver(NLMISC::CRGBA v) {_TextColorOver= v;}
+ // Shadow Colors
+ NLMISC::CRGBA getTextShadowColorNormal() const {return _TextShadowColorNormal;}
+ void setTextShadowColorNormal(NLMISC::CRGBA v) {_TextShadowColorNormal= v;}
+ NLMISC::CRGBA getTextShadowColorPushed() const {return _TextShadowColorPushed;}
+ void setTextShadowColorPushed(NLMISC::CRGBA v) {_TextShadowColorPushed= v;}
+ NLMISC::CRGBA getTextShadowColorOver() const {return _TextShadowColorOver;}
+ void setTextShadowColorOver(NLMISC::CRGBA v) {_TextShadowColorOver= v;}
+ // Global Modulate Colors
+ bool getTextModulateGlobalColorNormal() const {return _TextModulateGlobalColorNormal;}
+ void setTextModulateGlobalColorNormal(bool v) {_TextModulateGlobalColorNormal= v;}
+ bool getTextModulateGlobalColorPushed() const {return _TextModulateGlobalColorPushed;}
+ void setTextModulateGlobalColorPushed(bool v) {_TextModulateGlobalColorPushed= v;}
+ bool getTextModulateGlobalColorOver() const {return _TextModulateGlobalColorOver;}
+ void setTextModulateGlobalColorOver(bool v) {_TextModulateGlobalColorOver= v;}
+ // Set text (noop if text id)
+ void setText (const ucstring &text);
+ ucstring getText () const;
+
+ void setHardText (const std::string &text);
+ std::string getHardText () const;
+
+ CViewText* getViewText();
+ void setViewText(CViewText* text) {_ViewText=text;}
+
+ void setTextX(sint32 x);
+ sint32 getTextX() const { return _TextX; }
+
+ void setWMargin(sint32 w) { _WMargin = w; }
+ sint32 getWMargin() const { return _WMargin; }
+
+ sint32 getWMin() const { return _WMin; }
+ void setWMin( sint32 wmin ) { _WMin = wmin; }
+
+ // Compute Size according to bitmap and Text (Ensure as big as possible button)
+ sint32 getWMax() const;
+
+ int luaGetViewText(CLuaState &ls);
+
+ REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton)
+ REFLECT_UCSTRING("uc_hardtext", getText, setText);
+ REFLECT_STRING("hardtext", getHardText, setHardText);
+ REFLECT_SINT32("text_x", getTextX, setTextX)
+ REFLECT_SINT32("wmargin", getWMargin, setWMargin)
+ REFLECT_SINT32("wmin", getWMin, setWMin)
+ REFLECT_LUA_METHOD("getViewText", luaGetViewText)
+ REFLECT_EXPORT_END
+
+ protected:
+
+ enum {NumTexture= 3};
+
+ CViewRenderer::CTextureId _TextureIdNormal[NumTexture];
+ CViewRenderer::CTextureId _TextureIdPushed[NumTexture];
+ CViewRenderer::CTextureId _TextureIdOver[NumTexture];
+
+ // setup
+ void setup();
+
+ private:
+
+ CViewText *_ViewText;
+
+ bool _Setuped;
+ bool _IsViewTextId;
+ bool _ForceTextOver; // text is displayed over the "over" texture
+ // Size of Bitmaps
+ sint32 _BmpLeftW, _BmpMiddleW, _BmpRightW, _BmpH;
+ // Value to add to TextW to get button W.
+ sint32 _WMargin;
+ // Min W Value
+ sint32 _WMin;
+ sint32 _TextY;
+ sint32 _TextX;
+ THotSpot _TextPosRef;
+ THotSpot _TextParentPosRef;
+ // Special Colors for text
+ NLMISC::CRGBA _TextColorNormal;
+ NLMISC::CRGBA _TextColorPushed;
+ NLMISC::CRGBA _TextColorOver;
+ NLMISC::CRGBA _TextShadowColorNormal;
+ NLMISC::CRGBA _TextShadowColorPushed;
+ NLMISC::CRGBA _TextShadowColorOver;
+ bool _TextModulateGlobalColorNormal;
+ bool _TextModulateGlobalColorPushed;
+ bool _TextModulateGlobalColorOver;
+ bool _TextHeaderColor;
+ };
+
+}
+
+#endif // NL_CTRL_TEXT_BUTTON_H
+
+/* End of ctrl_text_button.h */
diff --git a/code/nel/src/gui/ctrl_text_button.cpp b/code/nel/src/gui/ctrl_text_button.cpp
new file mode 100644
index 000000000..75964ee36
--- /dev/null
+++ b/code/nel/src/gui/ctrl_text_button.cpp
@@ -0,0 +1,552 @@
+// Ryzom - MMORPG Framework
+// 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 "nel/gui/ctrl_text_button.h"
+#include "nel/misc/xml_auto_ptr.h"
+#include "nel/gui/view_text.h"
+#include "nel/gui/view_text_id.h"
+#include "nel/gui/group_container_base.h"
+#include "nel/gui/lua_ihm.h"
+#include "nel/gui/widget_manager.h"
+#include "nel/misc/i18n.h"
+
+using namespace std;
+using namespace NLMISC;
+using namespace NL3D;
+
+
+NLMISC_REGISTER_OBJECT(CViewBase, CCtrlTextButton, std::string, "text_button");
+
+namespace NLGUI
+{
+
+ // ***************************************************************************
+ CCtrlTextButton::CCtrlTextButton(const TCtorParam ¶m)
+ : CCtrlBaseButton(param)
+ {
+ _BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0;
+ _WMargin= 0;
+ _WMin= 0;
+ _TextX= -2;
+ _TextY= -2;
+ _Setuped= false;
+ _ViewText= NULL;
+ _IsViewTextId= false;
+ _TextColorNormal= CRGBA(255, 255, 255, 255);
+ _TextColorPushed= CRGBA(255, 255, 255, 255);
+ _TextColorOver= CRGBA(255, 255, 255, 255);
+ _TextShadowColorNormal= CRGBA(0, 0, 0, 255);
+ _TextShadowColorPushed= CRGBA(0, 0, 0, 255);
+ _TextShadowColorOver= CRGBA(0, 0, 0, 255);
+ _TextModulateGlobalColorNormal= true;
+ _TextModulateGlobalColorPushed= true;
+ _TextModulateGlobalColorOver= true;
+ _TextHeaderColor= false;
+ _TextPosRef = Hotspot_MM;
+ _TextParentPosRef = Hotspot_MM;
+ _ForceTextOver = false;
+ }
+
+ // ***************************************************************************
+ bool CCtrlTextButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
+ {
+ CXMLAutoPtr prop;
+ CViewRenderer &rVR = *CViewRenderer::getInstance();
+
+ //try to get props that can be inherited from groups
+ //if a property is not defined, try to find it in the parent group.
+ //if it is undefined, set it to zero
+ if (! CCtrlBaseButton::parse(cur,parentGroup) )
+ {
+ string tmp = "cannot parse view:"+getId()+", parent:"+parentGroup->getId();
+ nlinfo(tmp.c_str());
+ return false;
+ }
+
+
+ // *** Read Textures.
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_normal" );
+ if (prop)
+ {
+ string TxName = toLower(std::string((const char *) prop));
+ _TextureIdNormal[0].setTexture((TxName+"_l.tga").c_str());
+ _TextureIdNormal[1].setTexture((TxName+"_m.tga").c_str());
+ _TextureIdNormal[2].setTexture((TxName+"_r.tga").c_str());
+ }
+
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
+ if (prop)
+ {
+ string TxName = toLower(std::string((const char *) prop));
+ _TextureIdPushed[0].setTexture((TxName+"_l.tga").c_str());
+ _TextureIdPushed[1].setTexture((TxName+"_m.tga").c_str());
+ _TextureIdPushed[2].setTexture((TxName+"_r.tga").c_str());
+ }
+
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
+ if (prop)
+ {
+ string TxName = toLower(std::string((const char *) prop));
+ _TextureIdOver[0].setTexture((TxName+"_l.tga").c_str());
+ _TextureIdOver[1].setTexture((TxName+"_m.tga").c_str());
+ _TextureIdOver[2].setTexture((TxName+"_r.tga").c_str());
+ }
+
+ // Compute Bmp Sizes
+ nlctassert(NumTexture==3);
+ rVR.getTextureSizeFromId(_TextureIdNormal[0], _BmpLeftW, _BmpH);
+ rVR.getTextureSizeFromId(_TextureIdNormal[1], _BmpMiddleW, _BmpH);
+ rVR.getTextureSizeFromId(_TextureIdNormal[2], _BmpRightW, _BmpH);
+
+
+ // *** Create the ViewText for draw, and set text
+ // ViewTextId or standard view?
+ CXMLAutoPtr ptr((const char*)xmlGetProp(cur,(xmlChar*)"textid"));
+ _IsViewTextId= (bool)ptr;
+ if(_IsViewTextId)
+ _ViewText= new CViewTextID(CViewBase::TCtorParam());
+ else
+ _ViewText= new CViewText(CViewBase::TCtorParam());
+ _ViewText->setId(_Id+"_text");
+ _ViewText->parseTextOptions(cur);
+ _ViewText->setAvoidResizeParent(avoidResizeParent());
+ if(_IsViewTextId)
+ ((CViewTextID*)_ViewText)->parseTextIdOptions(cur);
+ // Same RenderLayer as us.
+ _ViewText->setRenderLayer(getRenderLayer());
+ // Parse the hardText (if not text id)
+ if(!_IsViewTextId)
+ {
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"hardtext" );
+ if (prop)
+ {
+ const char *propPtr = prop;
+ ucstring text = ucstring(propPtr);
+ if ((strlen(propPtr)>2) && (propPtr[0] == 'u') && (propPtr[1] == 'i'))
+ text = CI18N::get (propPtr);
+ _ViewText->setText(text);
+ }
+ }
+
+ // wmargin
+ _WMargin= 0;
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"wmargin" );
+ if (prop)
+ {
+ fromString((const char *) prop, _WMargin);
+ }
+
+ // wmin
+ _WMin= 0;
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"wmin" );
+ if (prop)
+ {
+ fromString((const char *) prop, _WMin);
+ }
+ // _WMin is at least the size of All W Bitmaps
+ _WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW);
+
+ // TextY
+ _TextY= -2;
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" );
+ if (prop)
+ {
+ fromString((const char *) prop, _TextY);
+ }
+ _TextX = 0;
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_x" );
+ if (prop)
+ {
+ fromString((const char *) prop, _TextX);
+ }
+
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_underlined" );
+ if (prop)
+ {
+ _ViewText->setUnderlined(convertBool(prop));
+ }
+
+ prop = (char*) xmlGetProp( cur, (xmlChar*) "text_posref" );
+ _TextParentPosRef = Hotspot_MM;
+ _TextPosRef = Hotspot_MM;
+ if (prop)
+ {
+ char *seekPtr = prop.getDatas();
+ seekPtr = strtok(seekPtr," \t");
+ if (seekPtr == NULL)
+ {
+ // mean that there s a bad formated posref (missing space or tab)
+ nlwarning("bad 'text_pos_ref' formatting");
+ }
+ else
+ {
+ _TextParentPosRef = convertHotSpot (seekPtr);
+ seekPtr = strtok (seekPtr+1+strlen(seekPtr)," \t");
+ _TextPosRef = convertHotSpot (seekPtr);
+ }
+ }
+
+
+ // *** Read Text Colors
+ // get color normal
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_normal" );
+ _TextColorNormal = CRGBA(255,255,255,255);
+ if (prop)
+ _TextColorNormal = convertColor (prop);
+
+ // Get ColorPushed
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_pushed" );
+ _TextColorPushed = CRGBA(255,255,255,255);
+ if (prop)
+ _TextColorPushed = convertColor(prop);
+
+ // Get ColorOver
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_over" );
+ _TextColorOver = CRGBA(255,255,255,255);
+ if (prop)
+ _TextColorOver = convertColor(prop);
+
+
+ // *** Read Text Shadow Colors
+ // get color normal
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_normal" );
+ _TextShadowColorNormal = CRGBA(0,0,0,255);
+ if (prop)
+ _TextShadowColorNormal = convertColor (prop);
+
+ // Get ColorPushed
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_pushed" );
+ _TextShadowColorPushed = CRGBA(0,0,0,255);
+ if (prop)
+ _TextShadowColorPushed = convertColor(prop);
+
+ // Get ColorOver
+ prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_over" );
+ _TextShadowColorOver = CRGBA(0,0,0,255);
+ if (prop)
+ _TextShadowColorOver = convertColor(prop);
+
+ // *** Read Text Global Color
+ // Default: take "global_color" param interface_element option.
+ _TextModulateGlobalColorNormal= _TextModulateGlobalColorPushed= _TextModulateGlobalColorOver= getModulateGlobalColor();
+
+ // Read special text global_color for each state
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_normal" );
+ if (prop) _TextModulateGlobalColorNormal= convertBool(prop);
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_pushed" );
+ if (prop) _TextModulateGlobalColorPushed= convertBool(prop);
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_over" );
+ if (prop) _TextModulateGlobalColorOver= convertBool(prop);
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"force_text_over" );
+ if (prop) _ForceTextOver= convertBool(prop);
+
+ // read Text header color
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"text_header_color" );
+ if (prop) _TextHeaderColor= convertBool(prop);
+
+ return true;
+ }
+
+ // ***************************************************************************
+ void CCtrlTextButton::draw ()
+ {
+ CViewRenderer::CTextureId *pTxId = NULL;
+ CRGBA color;
+
+ CViewRenderer &rVR = *CViewRenderer::getInstance();
+ CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
+
+ // *** Detect Over
+ bool lastOver = false;
+ updateOver(lastOver);
+
+ // *** Choose Button State
+ switch(_Type)
+ {
+ case ToggleButton:
+ {
+ if (_Pushed)
+ {
+ pTxId = _TextureIdPushed;
+ color = getCurrentColorPushed(globalColor);
+ }
+ else
+ {
+ pTxId = _TextureIdNormal;
+ color = getCurrentColorNormal(globalColor);
+ }
+ }
+ break;
+ case RadioButton:
+ {
+ // CViewPointer &rIP = *CInterfaceManager::getInstance()->getPointer();
+ // Init the radio button
+ initRBRef();
+
+ if (*_RBRef == this)
+ {
+ // if it is equal to the ref value, then the button must appear pushed
+ pTxId = _TextureIdPushed;
+ color = getCurrentColorPushed(globalColor);
+ }
+ else
+ {
+ if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
+ {
+ pTxId = _TextureIdPushed;
+ color = getCurrentColorPushed(globalColor);
+ }
+ else
+ {
+ pTxId = _TextureIdNormal;
+ color = getCurrentColorNormal(globalColor);
+ _Pushed = false;
+ }
+ }
+ }
+ break;
+ case PushButton:
+ {
+ if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
+ {
+ pTxId = _TextureIdPushed;
+ color = getCurrentColorPushed(globalColor);
+ }
+ else
+ {
+ pTxId = _TextureIdNormal;
+ color = getCurrentColorNormal(globalColor);
+ _Pushed = false;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ // *** Draw
+ color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
+
+ // Fromzen ?
+ if (getFrozen() && getFrozenHalfTone())
+ color.A >>= 2;
+
+ sint32 x= _XReal;
+ sint32 y= _YReal;
+ sint32 txw, txh;
+ txw = _WReal - _BmpLeftW - _BmpRightW;
+ txh = _HReal;
+ nlctassert(NumTexture==3);
+ rVR.drawRotFlipBitmap ( _RenderLayer, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
+ rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
+ rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
+
+ // *** Draw Over
+ if (_Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
+ {
+ if ((lastOver == false) && (_AHOnOver != NULL))
+ CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
+
+ // the pointer is over the button.
+ color= getCurrentColorOver(globalColor);
+ color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
+
+ // Fromzen ?
+ if (getFrozen() && getFrozenHalfTone())
+ color.A >>= 2;
+
+ nlctassert(NumTexture==3);
+ pTxId= _TextureIdOver;
+ uint layerOffset = _ForceTextOver ? 0 : 1; // Must write Over On Top of the text ?
+
+ rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
+ rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
+ rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
+ }
+
+ // *** Setup ViewText Color according to selected one (should be drawn after because of eltorder)
+ // update header color?
+ CRGBA viewTextColor;
+ if(_TextHeaderColor)
+ {
+ CInterfaceGroup *pIG= getRootWindow();
+ if(pIG->isGroupContainer())
+ {
+ CGroupContainerBase *pGC = static_cast(pIG);
+ viewTextColor= pGC->getDrawnHeaderColor();
+ }
+ }
+ // Setup ViewText color
+ if ( pTxId==_TextureIdNormal )
+ {
+ if(_TextHeaderColor) viewTextColor.A= _TextColorNormal.A;
+ else viewTextColor= _TextColorNormal;
+ _ViewText->setColor(viewTextColor);
+ _ViewText->setShadowColor(_TextShadowColorNormal);
+ _ViewText->setModulateGlobalColor(_TextModulateGlobalColorNormal);
+ }
+ else if ( pTxId==_TextureIdPushed )
+ {
+ if(_TextHeaderColor) viewTextColor.A= _TextColorPushed.A;
+ else viewTextColor= _TextColorPushed;
+ _ViewText->setColor(viewTextColor);
+ _ViewText->setShadowColor(_TextShadowColorPushed);
+ _ViewText->setModulateGlobalColor(_TextModulateGlobalColorPushed);
+ }
+ else if ( pTxId==_TextureIdOver )
+ {
+ if(_TextHeaderColor) viewTextColor.A= _TextColorOver.A;
+ else viewTextColor= _TextColorOver;
+ _ViewText->setColor(viewTextColor);
+ _ViewText->setShadowColor(_TextShadowColorOver);
+ _ViewText->setModulateGlobalColor(_TextModulateGlobalColorOver);
+ }
+ if(getFrozen() && getFrozenHalfTone())
+ _ViewText->setAlpha(_ViewText->getAlpha()>>2);
+ }
+
+
+ // ***************************************************************************
+ void CCtrlTextButton::updateCoords()
+ {
+ // Should have been setuped with addCtrl
+ nlassert(_Setuped);
+
+ // Compute Size according to bitmap and Text.
+ if (!(_SizeRef & 1))
+ {
+ _W= _ViewText->getW() + _WMargin + _TextX;
+ // Ensure as big as possible button
+ _W= max(_W, _WMin);
+ }
+ if (!(_SizeRef & 2))
+ {
+ _H= _BmpH;
+ }
+
+ CViewBase::updateCoords();
+ }
+
+ // ***************************************************************************
+ sint32 CCtrlTextButton::getWMax() const
+ {
+ return max(_ViewText->getW(false) + _WMargin + _TextX, _WMin);
+ }
+
+ // ***************************************************************************
+ void CCtrlTextButton::setup()
+ {
+ _Setuped= true;
+
+ // setup the viewText and add to parent
+ _ViewText->setParent (getParent());
+ _ViewText->setParentPos (this);
+ _ViewText->setParentPosRef (_TextParentPosRef);
+ _ViewText->setPosRef (_TextPosRef);
+ _ViewText->setActive(_Active);
+ _ViewText->setX(_TextX);
+ _ViewText->setY(_TextY);
+
+ getParent()->addView(_ViewText);
+ }
+
+ // ***************************************************************************
+ void CCtrlTextButton::setTextX(sint32 x)
+ {
+ _TextX = x;
+ if (_ViewText) _ViewText->setX(_TextX);
+ }
+
+ // ***************************************************************************
+ sint32 CCtrlTextButton::getMaxUsedW() const
+ {
+ return _W;
+ }
+
+ // ***************************************************************************
+ sint32 CCtrlTextButton::getMinUsedW() const
+ {
+ return _W;
+ }
+
+ // ***************************************************************************
+ void CCtrlTextButton::setActive(bool state)
+ {
+ _ViewText->setActive(state);
+ CCtrlBaseButton::setActive(state);
+ }
+
+
+ // ***************************************************************************
+ void CCtrlTextButton::onAddToGroup()
+ {
+ // Add the view if not done
+ if(!_Setuped)
+ setup();
+ }
+
+
+ // ***************************************************************************
+ void CCtrlTextButton::setText (const ucstring &text)
+ {
+ if (_ViewText && !_IsViewTextId)
+ _ViewText->setText(text);
+ }
+
+ // ***************************************************************************
+ ucstring CCtrlTextButton::getText () const
+ {
+ if (_ViewText && !_IsViewTextId)
+ return _ViewText->getText();
+ return ucstring("");
+ }
+
+ // ***************************************************************************
+ void CCtrlTextButton::setHardText (const std::string &text)
+ {
+ if (_ViewText && !_IsViewTextId)
+ _ViewText->setHardText(text);
+ }
+
+ // ***************************************************************************
+ string CCtrlTextButton::getHardText () const
+ {
+ if (_ViewText && !_IsViewTextId)
+ return _ViewText->getHardText();
+ return string("");
+ }
+
+ // ***************************************************************************
+
+ CViewText* CCtrlTextButton::getViewText()
+ {
+ return _ViewText;
+ }
+
+ // ***************************************************************************
+
+ int CCtrlTextButton::luaGetViewText(CLuaState &ls)
+ {
+ const char *funcName = "getViewText";
+ CLuaIHM::checkArgCount(ls, funcName, 0);
+ CLuaIHM::pushUIOnStack(ls, getViewText());
+ return 1;
+ }
+
+ // ***************************************************************************
+
+}
+
diff --git a/code/ryzom/client/src/client_chat_manager.cpp b/code/ryzom/client/src/client_chat_manager.cpp
index 711cb914f..1ebbb53f2 100644
--- a/code/ryzom/client/src/client_chat_manager.cpp
+++ b/code/ryzom/client/src/client_chat_manager.cpp
@@ -33,7 +33,7 @@
#include "interface_v3/group_editbox.h"
#include "permanent_ban.h"
#include "global.h"
-#include "interface_v3/ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "interface_v3/group_tab.h"
#include "string_manager_client.h"
diff --git a/code/ryzom/client/src/game_context_menu.cpp b/code/ryzom/client/src/game_context_menu.cpp
index ec147a3b9..195cf45de 100644
--- a/code/ryzom/client/src/game_context_menu.cpp
+++ b/code/ryzom/client/src/game_context_menu.cpp
@@ -24,7 +24,7 @@
// Client.
#include "game_context_menu.h"
#include "interface_v3/interface_manager.h"
-#include "interface_v3/ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "interface_v3/group_menu.h"
#include "entities.h"
#include "interface_v3/bot_chat_manager.h"
diff --git a/code/ryzom/client/src/game_context_menu.h b/code/ryzom/client/src/game_context_menu.h
index 0e5dde414..4f325b5c7 100644
--- a/code/ryzom/client/src/game_context_menu.h
+++ b/code/ryzom/client/src/game_context_menu.h
@@ -21,7 +21,7 @@
#include "nel/misc/types_nl.h"
#include "main_loop.h"
-#include "interface_v3/ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "nel/gui/interface_group.h"
#include "interface_v3/interface_pointer.h"
#include "game_share/bot_chat_types.h"
diff --git a/code/ryzom/client/src/interface_v3/bot_chat_page_trade.cpp b/code/ryzom/client/src/interface_v3/bot_chat_page_trade.cpp
index 7085a1c55..70077ab47 100644
--- a/code/ryzom/client/src/interface_v3/bot_chat_page_trade.cpp
+++ b/code/ryzom/client/src/interface_v3/bot_chat_page_trade.cpp
@@ -41,7 +41,7 @@
#include "../string_manager_client.h"
#include "group_container.h"
#include "dbgroup_list_sheet_text.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "../client_cfg.h"
#include "../init_main_loop.h"
#include "guild_manager.h"
diff --git a/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp b/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp
deleted file mode 100644
index fff7127f0..000000000
--- a/code/ryzom/client/src/interface_v3/ctrl_text_button.cpp
+++ /dev/null
@@ -1,545 +0,0 @@
-// Ryzom - MMORPG Framework
-// 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 "ctrl_text_button.h"
-#include "nel/misc/xml_auto_ptr.h"
-#include "nel/gui/view_text.h"
-#include "nel/gui/view_text_id.h"
-#include "nel/gui/group_container_base.h"
-#include "nel/gui/lua_ihm.h"
-#include "nel/gui/widget_manager.h"
-
-using namespace std;
-using namespace NLMISC;
-using namespace NL3D;
-
-
-NLMISC_REGISTER_OBJECT(CViewBase, CCtrlTextButton, std::string, "text_button");
-
-// ***************************************************************************
-CCtrlTextButton::CCtrlTextButton(const TCtorParam ¶m)
-: CCtrlBaseButton(param)
-{
- _BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0;
- _WMargin= 0;
- _WMin= 0;
- _TextX= -2;
- _TextY= -2;
- _Setuped= false;
- _ViewText= NULL;
- _IsViewTextId= false;
- _TextColorNormal= CRGBA(255, 255, 255, 255);
- _TextColorPushed= CRGBA(255, 255, 255, 255);
- _TextColorOver= CRGBA(255, 255, 255, 255);
- _TextShadowColorNormal= CRGBA(0, 0, 0, 255);
- _TextShadowColorPushed= CRGBA(0, 0, 0, 255);
- _TextShadowColorOver= CRGBA(0, 0, 0, 255);
- _TextModulateGlobalColorNormal= true;
- _TextModulateGlobalColorPushed= true;
- _TextModulateGlobalColorOver= true;
- _TextHeaderColor= false;
- _TextPosRef = Hotspot_MM;
- _TextParentPosRef = Hotspot_MM;
- _ForceTextOver = false;
-}
-
-// ***************************************************************************
-bool CCtrlTextButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
-{
- CXMLAutoPtr prop;
- CViewRenderer &rVR = *CViewRenderer::getInstance();
-
- //try to get props that can be inherited from groups
- //if a property is not defined, try to find it in the parent group.
- //if it is undefined, set it to zero
- if (! CCtrlBaseButton::parse(cur,parentGroup) )
- {
- string tmp = "cannot parse view:"+getId()+", parent:"+parentGroup->getId();
- nlinfo(tmp.c_str());
- return false;
- }
-
-
- // *** Read Textures.
- prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_normal" );
- if (prop)
- {
- string TxName = toLower(std::string((const char *) prop));
- _TextureIdNormal[0].setTexture((TxName+"_l.tga").c_str());
- _TextureIdNormal[1].setTexture((TxName+"_m.tga").c_str());
- _TextureIdNormal[2].setTexture((TxName+"_r.tga").c_str());
- }
-
- prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
- if (prop)
- {
- string TxName = toLower(std::string((const char *) prop));
- _TextureIdPushed[0].setTexture((TxName+"_l.tga").c_str());
- _TextureIdPushed[1].setTexture((TxName+"_m.tga").c_str());
- _TextureIdPushed[2].setTexture((TxName+"_r.tga").c_str());
- }
-
- prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
- if (prop)
- {
- string TxName = toLower(std::string((const char *) prop));
- _TextureIdOver[0].setTexture((TxName+"_l.tga").c_str());
- _TextureIdOver[1].setTexture((TxName+"_m.tga").c_str());
- _TextureIdOver[2].setTexture((TxName+"_r.tga").c_str());
- }
-
- // Compute Bmp Sizes
- nlctassert(NumTexture==3);
- rVR.getTextureSizeFromId(_TextureIdNormal[0], _BmpLeftW, _BmpH);
- rVR.getTextureSizeFromId(_TextureIdNormal[1], _BmpMiddleW, _BmpH);
- rVR.getTextureSizeFromId(_TextureIdNormal[2], _BmpRightW, _BmpH);
-
-
- // *** Create the ViewText for draw, and set text
- // ViewTextId or standard view?
- CXMLAutoPtr ptr((const char*)xmlGetProp(cur,(xmlChar*)"textid"));
- _IsViewTextId= (bool)ptr;
- if(_IsViewTextId)
- _ViewText= new CViewTextID(CViewBase::TCtorParam());
- else
- _ViewText= new CViewText(CViewBase::TCtorParam());
- _ViewText->setId(_Id+"_text");
- _ViewText->parseTextOptions(cur);
- _ViewText->setAvoidResizeParent(avoidResizeParent());
- if(_IsViewTextId)
- ((CViewTextID*)_ViewText)->parseTextIdOptions(cur);
- // Same RenderLayer as us.
- _ViewText->setRenderLayer(getRenderLayer());
- // Parse the hardText (if not text id)
- if(!_IsViewTextId)
- {
- prop = (char*) xmlGetProp( cur, (xmlChar*)"hardtext" );
- if (prop)
- {
- const char *propPtr = prop;
- ucstring text = ucstring(propPtr);
- if ((strlen(propPtr)>2) && (propPtr[0] == 'u') && (propPtr[1] == 'i'))
- text = CI18N::get (propPtr);
- _ViewText->setText(text);
- }
- }
-
- // wmargin
- _WMargin= 0;
- prop = (char*) xmlGetProp( cur, (xmlChar*)"wmargin" );
- if (prop)
- {
- fromString((const char *) prop, _WMargin);
- }
-
- // wmin
- _WMin= 0;
- prop = (char*) xmlGetProp( cur, (xmlChar*)"wmin" );
- if (prop)
- {
- fromString((const char *) prop, _WMin);
- }
- // _WMin is at least the size of All W Bitmaps
- _WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW);
-
- // TextY
- _TextY= -2;
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" );
- if (prop)
- {
- fromString((const char *) prop, _TextY);
- }
- _TextX = 0;
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_x" );
- if (prop)
- {
- fromString((const char *) prop, _TextX);
- }
-
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_underlined" );
- if (prop)
- {
- _ViewText->setUnderlined(convertBool(prop));
- }
-
- prop = (char*) xmlGetProp( cur, (xmlChar*) "text_posref" );
- _TextParentPosRef = Hotspot_MM;
- _TextPosRef = Hotspot_MM;
- if (prop)
- {
- char *seekPtr = prop.getDatas();
- seekPtr = strtok(seekPtr," \t");
- if (seekPtr == NULL)
- {
- // mean that there s a bad formated posref (missing space or tab)
- nlwarning("bad 'text_pos_ref' formatting");
- }
- else
- {
- _TextParentPosRef = convertHotSpot (seekPtr);
- seekPtr = strtok (seekPtr+1+strlen(seekPtr)," \t");
- _TextPosRef = convertHotSpot (seekPtr);
- }
- }
-
-
- // *** Read Text Colors
- // get color normal
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_normal" );
- _TextColorNormal = CRGBA(255,255,255,255);
- if (prop)
- _TextColorNormal = convertColor (prop);
-
- // Get ColorPushed
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_pushed" );
- _TextColorPushed = CRGBA(255,255,255,255);
- if (prop)
- _TextColorPushed = convertColor(prop);
-
- // Get ColorOver
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_over" );
- _TextColorOver = CRGBA(255,255,255,255);
- if (prop)
- _TextColorOver = convertColor(prop);
-
-
- // *** Read Text Shadow Colors
- // get color normal
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_normal" );
- _TextShadowColorNormal = CRGBA(0,0,0,255);
- if (prop)
- _TextShadowColorNormal = convertColor (prop);
-
- // Get ColorPushed
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_pushed" );
- _TextShadowColorPushed = CRGBA(0,0,0,255);
- if (prop)
- _TextShadowColorPushed = convertColor(prop);
-
- // Get ColorOver
- prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_over" );
- _TextShadowColorOver = CRGBA(0,0,0,255);
- if (prop)
- _TextShadowColorOver = convertColor(prop);
-
- // *** Read Text Global Color
- // Default: take "global_color" param interface_element option.
- _TextModulateGlobalColorNormal= _TextModulateGlobalColorPushed= _TextModulateGlobalColorOver= getModulateGlobalColor();
-
- // Read special text global_color for each state
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_normal" );
- if (prop) _TextModulateGlobalColorNormal= convertBool(prop);
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_pushed" );
- if (prop) _TextModulateGlobalColorPushed= convertBool(prop);
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_over" );
- if (prop) _TextModulateGlobalColorOver= convertBool(prop);
- prop = (char*) xmlGetProp( cur, (xmlChar*)"force_text_over" );
- if (prop) _ForceTextOver= convertBool(prop);
-
- // read Text header color
- prop = (char*) xmlGetProp( cur, (xmlChar*)"text_header_color" );
- if (prop) _TextHeaderColor= convertBool(prop);
-
- return true;
-}
-
-// ***************************************************************************
-void CCtrlTextButton::draw ()
-{
- CViewRenderer::CTextureId *pTxId = NULL;
- CRGBA color;
-
- CViewRenderer &rVR = *CViewRenderer::getInstance();
- CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
-
- // *** Detect Over
- bool lastOver = false;
- updateOver(lastOver);
-
- // *** Choose Button State
- switch(_Type)
- {
- case ToggleButton:
- {
- if (_Pushed)
- {
- pTxId = _TextureIdPushed;
- color = getCurrentColorPushed(globalColor);
- }
- else
- {
- pTxId = _TextureIdNormal;
- color = getCurrentColorNormal(globalColor);
- }
- }
- break;
- case RadioButton:
- {
-// CViewPointer &rIP = *CInterfaceManager::getInstance()->getPointer();
- // Init the radio button
- initRBRef();
-
- if (*_RBRef == this)
- {
- // if it is equal to the ref value, then the button must appear pushed
- pTxId = _TextureIdPushed;
- color = getCurrentColorPushed(globalColor);
- }
- else
- {
- if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
- {
- pTxId = _TextureIdPushed;
- color = getCurrentColorPushed(globalColor);
- }
- else
- {
- pTxId = _TextureIdNormal;
- color = getCurrentColorNormal(globalColor);
- _Pushed = false;
- }
- }
- }
- break;
- case PushButton:
- {
- if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
- {
- pTxId = _TextureIdPushed;
- color = getCurrentColorPushed(globalColor);
- }
- else
- {
- pTxId = _TextureIdNormal;
- color = getCurrentColorNormal(globalColor);
- _Pushed = false;
- }
- }
- break;
- default:
- break;
- }
-
- // *** Draw
- color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
-
- // Fromzen ?
- if (getFrozen() && getFrozenHalfTone())
- color.A >>= 2;
-
- sint32 x= _XReal;
- sint32 y= _YReal;
- sint32 txw, txh;
- txw = _WReal - _BmpLeftW - _BmpRightW;
- txh = _HReal;
- nlctassert(NumTexture==3);
- rVR.drawRotFlipBitmap ( _RenderLayer, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
- rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
- rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
-
- // *** Draw Over
- if (_Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
- {
- if ((lastOver == false) && (_AHOnOver != NULL))
- CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
-
- // the pointer is over the button.
- color= getCurrentColorOver(globalColor);
- color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
-
- // Fromzen ?
- if (getFrozen() && getFrozenHalfTone())
- color.A >>= 2;
-
- nlctassert(NumTexture==3);
- pTxId= _TextureIdOver;
- uint layerOffset = _ForceTextOver ? 0 : 1; // Must write Over On Top of the text ?
-
- rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
- rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
- rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
- }
-
- // *** Setup ViewText Color according to selected one (should be drawn after because of eltorder)
- // update header color?
- CRGBA viewTextColor;
- if(_TextHeaderColor)
- {
- CInterfaceGroup *pIG= getRootWindow();
- if(pIG->isGroupContainer())
- {
- CGroupContainerBase *pGC = static_cast(pIG);
- viewTextColor= pGC->getDrawnHeaderColor();
- }
- }
- // Setup ViewText color
- if ( pTxId==_TextureIdNormal )
- {
- if(_TextHeaderColor) viewTextColor.A= _TextColorNormal.A;
- else viewTextColor= _TextColorNormal;
- _ViewText->setColor(viewTextColor);
- _ViewText->setShadowColor(_TextShadowColorNormal);
- _ViewText->setModulateGlobalColor(_TextModulateGlobalColorNormal);
- }
- else if ( pTxId==_TextureIdPushed )
- {
- if(_TextHeaderColor) viewTextColor.A= _TextColorPushed.A;
- else viewTextColor= _TextColorPushed;
- _ViewText->setColor(viewTextColor);
- _ViewText->setShadowColor(_TextShadowColorPushed);
- _ViewText->setModulateGlobalColor(_TextModulateGlobalColorPushed);
- }
- else if ( pTxId==_TextureIdOver )
- {
- if(_TextHeaderColor) viewTextColor.A= _TextColorOver.A;
- else viewTextColor= _TextColorOver;
- _ViewText->setColor(viewTextColor);
- _ViewText->setShadowColor(_TextShadowColorOver);
- _ViewText->setModulateGlobalColor(_TextModulateGlobalColorOver);
- }
- if(getFrozen() && getFrozenHalfTone())
- _ViewText->setAlpha(_ViewText->getAlpha()>>2);
-}
-
-
-// ***************************************************************************
-void CCtrlTextButton::updateCoords()
-{
- // Should have been setuped with addCtrl
- nlassert(_Setuped);
-
- // Compute Size according to bitmap and Text.
- if (!(_SizeRef & 1))
- {
- _W= _ViewText->getW() + _WMargin + _TextX;
- // Ensure as big as possible button
- _W= max(_W, _WMin);
- }
- if (!(_SizeRef & 2))
- {
- _H= _BmpH;
- }
-
- CViewBase::updateCoords();
-}
-
-// ***************************************************************************
-sint32 CCtrlTextButton::getWMax() const
-{
- return max(_ViewText->getW(false) + _WMargin + _TextX, _WMin);
-}
-
-// ***************************************************************************
-void CCtrlTextButton::setup()
-{
- _Setuped= true;
-
- // setup the viewText and add to parent
- _ViewText->setParent (getParent());
- _ViewText->setParentPos (this);
- _ViewText->setParentPosRef (_TextParentPosRef);
- _ViewText->setPosRef (_TextPosRef);
- _ViewText->setActive(_Active);
- _ViewText->setX(_TextX);
- _ViewText->setY(_TextY);
-
- getParent()->addView(_ViewText);
-}
-
-// ***************************************************************************
-void CCtrlTextButton::setTextX(sint32 x)
-{
- _TextX = x;
- if (_ViewText) _ViewText->setX(_TextX);
-}
-
-// ***************************************************************************
-sint32 CCtrlTextButton::getMaxUsedW() const
-{
- return _W;
-}
-
-// ***************************************************************************
-sint32 CCtrlTextButton::getMinUsedW() const
-{
- return _W;
-}
-
-// ***************************************************************************
-void CCtrlTextButton::setActive(bool state)
-{
- _ViewText->setActive(state);
- CCtrlBaseButton::setActive(state);
-}
-
-
-// ***************************************************************************
-void CCtrlTextButton::onAddToGroup()
-{
- // Add the view if not done
- if(!_Setuped)
- setup();
-}
-
-
-// ***************************************************************************
-void CCtrlTextButton::setText (const ucstring &text)
-{
- if (_ViewText && !_IsViewTextId)
- _ViewText->setText(text);
-}
-
-// ***************************************************************************
-ucstring CCtrlTextButton::getText () const
-{
- if (_ViewText && !_IsViewTextId)
- return _ViewText->getText();
- return ucstring("");
-}
-
-// ***************************************************************************
-void CCtrlTextButton::setHardText (const std::string &text)
-{
- if (_ViewText && !_IsViewTextId)
- _ViewText->setHardText(text);
-}
-
-// ***************************************************************************
-string CCtrlTextButton::getHardText () const
-{
- if (_ViewText && !_IsViewTextId)
- return _ViewText->getHardText();
- return string("");
-}
-
-// ***************************************************************************
-
-CViewText* CCtrlTextButton::getViewText()
-{
- return _ViewText;
-}
-
-// ***************************************************************************
-
-int CCtrlTextButton::luaGetViewText(CLuaState &ls)
-{
- const char *funcName = "getViewText";
- CLuaIHM::checkArgCount(ls, funcName, 0);
- CLuaIHM::pushUIOnStack(ls, getViewText());
- return 1;
-}
-
-// ***************************************************************************
diff --git a/code/ryzom/client/src/interface_v3/ctrl_text_button.h b/code/ryzom/client/src/interface_v3/ctrl_text_button.h
deleted file mode 100644
index 677690e50..000000000
--- a/code/ryzom/client/src/interface_v3/ctrl_text_button.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// Ryzom - MMORPG Framework
-// 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 NL_CTRL_TEXT_BUTTON_H
-#define NL_CTRL_TEXT_BUTTON_H
-
-#include "nel/gui/ctrl_base_button.h"
-#include "nel/gui/view_renderer.h"
-
-
-namespace NLGUI
-{
- class CEventDescriptor;
- class CViewText;
-}
-
-// ***************************************************************************
-/**
- * Text Button that can be either Push or Toggle button. Localized, auto-resize
- * \author Lionel Berenguier
- * \author Nevrax France
- * \date 2002
- */
-class CCtrlTextButton : public CCtrlBaseButton
-{
-public:
-
- /// Constructor
- CCtrlTextButton(const TCtorParam ¶m);
-
- // Init part
- virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
-
- virtual void updateCoords();
-
- virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
-
- // Display part
- virtual void draw();
-
- // Hide/Show the text also.
- virtual void setActive(bool state);
-
- // Add also our ViewText
- virtual void onAddToGroup();
-
-
- /// \from CInterfaceElement
- sint32 getMaxUsedW() const;
- sint32 getMinUsedW() const;
-
- // Special Text Colors accessors
- // Colors
- NLMISC::CRGBA getTextColorNormal() const {return _TextColorNormal;}
- void setTextColorNormal(NLMISC::CRGBA v) {_TextColorNormal= v;}
- NLMISC::CRGBA getTextColorPushed() const {return _TextColorPushed;}
- void setTextColorPushed(NLMISC::CRGBA v) {_TextColorPushed= v;}
- NLMISC::CRGBA getTextColorOver() const {return _TextColorOver;}
- void setTextColorOver(NLMISC::CRGBA v) {_TextColorOver= v;}
- // Shadow Colors
- NLMISC::CRGBA getTextShadowColorNormal() const {return _TextShadowColorNormal;}
- void setTextShadowColorNormal(NLMISC::CRGBA v) {_TextShadowColorNormal= v;}
- NLMISC::CRGBA getTextShadowColorPushed() const {return _TextShadowColorPushed;}
- void setTextShadowColorPushed(NLMISC::CRGBA v) {_TextShadowColorPushed= v;}
- NLMISC::CRGBA getTextShadowColorOver() const {return _TextShadowColorOver;}
- void setTextShadowColorOver(NLMISC::CRGBA v) {_TextShadowColorOver= v;}
- // Global Modulate Colors
- bool getTextModulateGlobalColorNormal() const {return _TextModulateGlobalColorNormal;}
- void setTextModulateGlobalColorNormal(bool v) {_TextModulateGlobalColorNormal= v;}
- bool getTextModulateGlobalColorPushed() const {return _TextModulateGlobalColorPushed;}
- void setTextModulateGlobalColorPushed(bool v) {_TextModulateGlobalColorPushed= v;}
- bool getTextModulateGlobalColorOver() const {return _TextModulateGlobalColorOver;}
- void setTextModulateGlobalColorOver(bool v) {_TextModulateGlobalColorOver= v;}
- // Set text (noop if text id)
- void setText (const ucstring &text);
- ucstring getText () const;
-
- void setHardText (const std::string &text);
- std::string getHardText () const;
-
- CViewText* getViewText();
- void setViewText(CViewText* text) {_ViewText=text;}
-
- void setTextX(sint32 x);
- sint32 getTextX() const { return _TextX; }
-
- void setWMargin(sint32 w) { _WMargin = w; }
- sint32 getWMargin() const { return _WMargin; }
-
- sint32 getWMin() const { return _WMin; }
- void setWMin( sint32 wmin ) { _WMin = wmin; }
-
- // Compute Size according to bitmap and Text (Ensure as big as possible button)
- sint32 getWMax() const;
-
- int luaGetViewText(CLuaState &ls);
-
- REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton)
- REFLECT_UCSTRING("uc_hardtext", getText, setText);
- REFLECT_STRING("hardtext", getHardText, setHardText);
- REFLECT_SINT32("text_x", getTextX, setTextX)
- REFLECT_SINT32("wmargin", getWMargin, setWMargin)
- REFLECT_SINT32("wmin", getWMin, setWMin)
- REFLECT_LUA_METHOD("getViewText", luaGetViewText)
- REFLECT_EXPORT_END
-
-protected:
-
- enum {NumTexture= 3};
-
- CViewRenderer::CTextureId _TextureIdNormal[NumTexture];
- CViewRenderer::CTextureId _TextureIdPushed[NumTexture];
- CViewRenderer::CTextureId _TextureIdOver[NumTexture];
-
- // setup
- void setup();
-
-private:
-
- CViewText *_ViewText;
-
- bool _Setuped;
- bool _IsViewTextId;
- bool _ForceTextOver; // text is displayed over the "over" texture
- // Size of Bitmaps
- sint32 _BmpLeftW, _BmpMiddleW, _BmpRightW, _BmpH;
- // Value to add to TextW to get button W.
- sint32 _WMargin;
- // Min W Value
- sint32 _WMin;
- sint32 _TextY;
- sint32 _TextX;
- THotSpot _TextPosRef;
- THotSpot _TextParentPosRef;
- // Special Colors for text
- NLMISC::CRGBA _TextColorNormal;
- NLMISC::CRGBA _TextColorPushed;
- NLMISC::CRGBA _TextColorOver;
- NLMISC::CRGBA _TextShadowColorNormal;
- NLMISC::CRGBA _TextShadowColorPushed;
- NLMISC::CRGBA _TextShadowColorOver;
- bool _TextModulateGlobalColorNormal;
- bool _TextModulateGlobalColorPushed;
- bool _TextModulateGlobalColorOver;
- bool _TextHeaderColor;
-};
-
-#endif // NL_CTRL_TEXT_BUTTON_H
-
-/* End of ctrl_text_button.h */
diff --git a/code/ryzom/client/src/interface_v3/dbgroup_list_sheet_text_share.cpp b/code/ryzom/client/src/interface_v3/dbgroup_list_sheet_text_share.cpp
index d43d8e2f8..18299a803 100644
--- a/code/ryzom/client/src/interface_v3/dbgroup_list_sheet_text_share.cpp
+++ b/code/ryzom/client/src/interface_v3/dbgroup_list_sheet_text_share.cpp
@@ -22,7 +22,7 @@
#include "nel/misc/xml_auto_ptr.h"
#include "interface_manager.h"
#include "view_bitmap.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "../net_manager.h"
#include "../client_sheets/item_sheet.h"
diff --git a/code/ryzom/client/src/interface_v3/group_html.cpp b/code/ryzom/client/src/interface_v3/group_html.cpp
index 51b65d236..d3b09c9e5 100644
--- a/code/ryzom/client/src/interface_v3/group_html.cpp
+++ b/code/ryzom/client/src/interface_v3/group_html.cpp
@@ -35,7 +35,7 @@ extern "C"
#include "nel/gui/ctrl_scroll.h"
#include "nel/gui/ctrl_button.h"
#include "dbctrl_sheet.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "nel/gui/action_handler.h"
#include "group_paragraph.h"
#include "group_editbox.h"
diff --git a/code/ryzom/client/src/interface_v3/group_menu.h b/code/ryzom/client/src/interface_v3/group_menu.h
index 8f87f09a6..bcb24c559 100644
--- a/code/ryzom/client/src/interface_v3/group_menu.h
+++ b/code/ryzom/client/src/interface_v3/group_menu.h
@@ -23,7 +23,7 @@
#include "nel/gui/group_modal.h"
#include "nel/gui/group_submenu_base.h"
#include "nel/gui/view_text.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
namespace NLGUI
{
diff --git a/code/ryzom/client/src/interface_v3/group_tab.h b/code/ryzom/client/src/interface_v3/group_tab.h
index 1e8e8c792..46cc241ab 100644
--- a/code/ryzom/client/src/interface_v3/group_tab.h
+++ b/code/ryzom/client/src/interface_v3/group_tab.h
@@ -21,7 +21,7 @@
#include "nel/misc/types_nl.h"
#include "nel/gui/interface_group.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
// ***************************************************************************
diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp
index b9c9a6df0..8b9fc658d 100644
--- a/code/ryzom/client/src/interface_v3/interface_manager.cpp
+++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp
@@ -56,7 +56,7 @@
// Ctrl
#include "nel/gui/ctrl_scroll.h"
#include "nel/gui/ctrl_button.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
// DBCtrl
#include "dbctrl_sheet.h"
// Group
diff --git a/code/ryzom/client/src/interface_v3/interface_parser.cpp b/code/ryzom/client/src/interface_v3/interface_parser.cpp
index 15cab1fd9..32d48d7d8 100644
--- a/code/ryzom/client/src/interface_v3/interface_parser.cpp
+++ b/code/ryzom/client/src/interface_v3/interface_parser.cpp
@@ -56,7 +56,7 @@
#include "nel/gui/ctrl_button.h"
#include "nel/gui/ctrl_col_pick.h"
#include "nel/gui/ctrl_tooltip.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "group_paragraph.h" // For CCtrlLink
// DBCtrl
#include "dbctrl_sheet.h"
diff --git a/code/ryzom/client/src/interface_v3/interface_pointer.h b/code/ryzom/client/src/interface_v3/interface_pointer.h
index 62605d6e3..c56a36457 100644
--- a/code/ryzom/client/src/interface_v3/interface_pointer.h
+++ b/code/ryzom/client/src/interface_v3/interface_pointer.h
@@ -28,6 +28,7 @@ namespace NLGUI
class CCtrlBaseButton;
class CInterfaceGroup;
class CViewText;
+ class CCtrlTextButton;
}
using namespace NLGUI;
@@ -60,7 +61,7 @@ public:
// Some pointers
typedef CInterfacePtr::TInterfacePtr CInterfaceElementPtr;
typedef CInterfacePtr::TInterfacePtr CInterfaceGroupPtr;
-typedef CInterfacePtr::TInterfacePtr CCtrlTextButtonPtr;
+typedef CInterfacePtr::TInterfacePtr CCtrlTextButtonPtr;
typedef CInterfacePtr::TInterfacePtr CViewTextPtr;
typedef CInterfacePtr::TInterfacePtr CViewTextMenuPtr;
typedef CInterfacePtr::TInterfacePtr CCtrlBasePtr;
diff --git a/code/ryzom/client/src/interface_v3/people_interraction.cpp b/code/ryzom/client/src/interface_v3/people_interraction.cpp
index 81a6cb960..ec9043989 100644
--- a/code/ryzom/client/src/interface_v3/people_interraction.cpp
+++ b/code/ryzom/client/src/interface_v3/people_interraction.cpp
@@ -32,7 +32,7 @@
#include "../string_manager_client.h"
#include "nel/gui/interface_expr.h"
#include "nel/gui/ctrl_button.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "filtered_chat_summary.h"
#include "input_handler_manager.h"
#include "../user_entity.h"
diff --git a/code/ryzom/client/src/interface_v3/register_interface_elements.cpp b/code/ryzom/client/src/interface_v3/register_interface_elements.cpp
index 51bbc1ae6..00959b4d2 100644
--- a/code/ryzom/client/src/interface_v3/register_interface_elements.cpp
+++ b/code/ryzom/client/src/interface_v3/register_interface_elements.cpp
@@ -34,7 +34,7 @@
#include "group_list.h"
#include "dbgroup_select_number.h"
#include "nel/gui/ctrl_button.h"
-#include "ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "nel/gui/ctrl_col_pick.h"
#include "nel/gui/ctrl_draggable.h"
#include "dbctrl_sheet.h"
diff --git a/code/ryzom/client/src/login.cpp b/code/ryzom/client/src/login.cpp
index 842267e67..eb5008ee2 100644
--- a/code/ryzom/client/src/login.cpp
+++ b/code/ryzom/client/src/login.cpp
@@ -39,7 +39,7 @@
#include "interface_v3/group_quick_help.h"
#include "nel/gui/view_text.h"
#include "nel/gui/ctrl_button.h"
-#include "interface_v3/ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "sound_manager.h"
#include "far_tp.h"
diff --git a/code/ryzom/client/src/net_manager.cpp b/code/ryzom/client/src/net_manager.cpp
index 5c1929acd..e1e91377f 100644
--- a/code/ryzom/client/src/net_manager.cpp
+++ b/code/ryzom/client/src/net_manager.cpp
@@ -58,7 +58,7 @@
#include "interface_v3/bot_chat_manager.h"
#include "interface_v3/bot_chat_page_all.h"
#include "nel/gui/view_text_id.h"
-#include "interface_v3/ctrl_text_button.h"
+#include "nel/gui/ctrl_text_button.h"
#include "interface_v3/input_handler_manager.h"
#include "interface_v3/guild_manager.h"
#include "interface_v3/skill_manager.h"