From 1854b8e33aca8d08991243825ccfd11fdb24a693 Mon Sep 17 00:00:00 2001 From: dfighter1985 Date: Thu, 21 Jun 2012 22:20:02 +0200 Subject: [PATCH] CHANGED: #1471 CCtrlTextButton is now part of NELGUI library, and is under NLGUI namespace. --- code/nel/include/nel/gui/ctrl_text_button.h | 166 ++++++ code/nel/src/gui/ctrl_text_button.cpp | 552 ++++++++++++++++++ code/ryzom/client/src/client_chat_manager.cpp | 2 +- code/ryzom/client/src/game_context_menu.cpp | 2 +- code/ryzom/client/src/game_context_menu.h | 2 +- .../src/interface_v3/bot_chat_page_trade.cpp | 2 +- .../src/interface_v3/ctrl_text_button.cpp | 545 ----------------- .../src/interface_v3/ctrl_text_button.h | 165 ------ .../dbgroup_list_sheet_text_share.cpp | 2 +- .../client/src/interface_v3/group_html.cpp | 2 +- .../client/src/interface_v3/group_menu.h | 2 +- .../ryzom/client/src/interface_v3/group_tab.h | 2 +- .../src/interface_v3/interface_manager.cpp | 2 +- .../src/interface_v3/interface_parser.cpp | 2 +- .../src/interface_v3/interface_pointer.h | 3 +- .../src/interface_v3/people_interraction.cpp | 2 +- .../register_interface_elements.cpp | 2 +- code/ryzom/client/src/login.cpp | 2 +- code/ryzom/client/src/net_manager.cpp | 2 +- 19 files changed, 734 insertions(+), 725 deletions(-) create mode 100644 code/nel/include/nel/gui/ctrl_text_button.h create mode 100644 code/nel/src/gui/ctrl_text_button.cpp delete mode 100644 code/ryzom/client/src/interface_v3/ctrl_text_button.cpp delete mode 100644 code/ryzom/client/src/interface_v3/ctrl_text_button.h 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"