mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-17 13:01:42 +00:00
CHANGED: #1471 CCtrlBaseButton is now part of the NLGUI namespace.
--HG-- branch : gui-refactoring
This commit is contained in:
parent
dfb1f0ed37
commit
bf7d3afd38
9 changed files with 678 additions and 647 deletions
|
@ -22,18 +22,20 @@
|
||||||
#include "nel/gui/ctrl_base.h"
|
#include "nel/gui/ctrl_base.h"
|
||||||
#include "nel/gui/action_handler.h"
|
#include "nel/gui/action_handler.h"
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
/**
|
/**
|
||||||
* Base Class For Buttons.
|
* Base Class For Buttons.
|
||||||
* \author Lionel Berenguier
|
* \author Lionel Berenguier
|
||||||
* \author Nevrax France
|
* \author Nevrax France
|
||||||
* \date 2003
|
* \date 2003
|
||||||
*/
|
*/
|
||||||
class CCtrlBaseButton : public CCtrlBase
|
class CCtrlBaseButton : public CCtrlBase
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum EType { PushButton = 0, ToggleButton, RadioButton, ButtonTypeCount };
|
enum EType { PushButton = 0, ToggleButton, RadioButton, ButtonTypeCount };
|
||||||
|
|
||||||
/// Constructor
|
/// Constructor
|
||||||
|
@ -161,7 +163,7 @@ public:
|
||||||
REFLECT_LUA_METHOD("runLeftClickAction", luaRunLeftClickAction);
|
REFLECT_LUA_METHOD("runLeftClickAction", luaRunLeftClickAction);
|
||||||
REFLECT_EXPORT_END
|
REFLECT_EXPORT_END
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
EType _Type;
|
EType _Type;
|
||||||
|
|
||||||
// State
|
// State
|
||||||
|
@ -246,8 +248,9 @@ protected:
|
||||||
// call it at draw
|
// call it at draw
|
||||||
void updateOver(bool &lastOver);
|
void updateOver(bool &lastOver);
|
||||||
virtual void elementCaptured(CCtrlBase *capturedElement);
|
virtual void elementCaptured(CCtrlBase *capturedElement);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif // NL_CTRL_BASE_BUTTON_H
|
#endif // NL_CTRL_BASE_BUTTON_H
|
||||||
|
|
||||||
|
|
|
@ -26,19 +26,22 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
|
namespace
|
||||||
// ***************************************************************************
|
|
||||||
static const uint KEY_REPEAT_MIN = 100;
|
|
||||||
static const uint KEY_REPEAT_MAX = 750;
|
|
||||||
|
|
||||||
|
|
||||||
sint64 CCtrlBaseButton::_LastLeftClickDate = 0;
|
|
||||||
NLMISC::CRefPtr<CCtrlBaseButton> CCtrlBaseButton::_LastLeftClickButton;
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
CCtrlBaseButton::CCtrlBaseButton(const TCtorParam ¶m) : CCtrlBase(param), _Type(ToggleButton)
|
|
||||||
{
|
{
|
||||||
|
const uint KEY_REPEAT_MIN = 100;
|
||||||
|
const uint KEY_REPEAT_MAX = 750;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
|
||||||
|
sint64 CCtrlBaseButton::_LastLeftClickDate = 0;
|
||||||
|
NLMISC::CRefPtr<CCtrlBaseButton> CCtrlBaseButton::_LastLeftClickButton;
|
||||||
|
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
CCtrlBaseButton::CCtrlBaseButton(const TCtorParam ¶m) : CCtrlBase(param), _Type(ToggleButton)
|
||||||
|
{
|
||||||
_Pushed = _Over = false;
|
_Pushed = _Over = false;
|
||||||
_Frozen = false;
|
_Frozen = false;
|
||||||
_FrozenHalfTone = true;
|
_FrozenHalfTone = true;
|
||||||
|
@ -57,13 +60,13 @@ CCtrlBaseButton::CCtrlBaseButton(const TCtorParam ¶m) : CCtrlBase(param), _T
|
||||||
_AHOnClockTick = NULL;
|
_AHOnClockTick = NULL;
|
||||||
_AHOnLeftLongClick = NULL;
|
_AHOnLeftLongClick = NULL;
|
||||||
_AHOnLeftDblClick = NULL;
|
_AHOnLeftDblClick = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCtrlBaseButton::parse (xmlNodePtr cur,CInterfaceGroup * parentGroup)
|
bool CCtrlBaseButton::parse (xmlNodePtr cur,CInterfaceGroup * parentGroup)
|
||||||
{
|
{
|
||||||
CXMLAutoPtr prop;
|
CXMLAutoPtr prop;
|
||||||
|
|
||||||
//try to get props that can be inherited from groups
|
//try to get props that can be inherited from groups
|
||||||
|
@ -182,22 +185,22 @@ bool CCtrlBaseButton::parse (xmlNodePtr cur,CInterfaceGroup * parentGroup)
|
||||||
_FrozenHalfTone = convertBool(prop);
|
_FrozenHalfTone = convertBool(prop);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::setModulateGlobalColorAll(bool state)
|
void CCtrlBaseButton::setModulateGlobalColorAll(bool state)
|
||||||
{
|
{
|
||||||
setModulateGlobalColor(state);
|
setModulateGlobalColor(state);
|
||||||
setModulateGlobalColorNormal(state);
|
setModulateGlobalColorNormal(state);
|
||||||
setModulateGlobalColorPushed(state);
|
setModulateGlobalColorPushed(state);
|
||||||
setModulateGlobalColorOver(state);
|
setModulateGlobalColorOver(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
||||||
{
|
{
|
||||||
if (CCtrlBase::handleEvent(event)) return true;
|
if (CCtrlBase::handleEvent(event)) return true;
|
||||||
if (!_Active || _Frozen)
|
if (!_Active || _Frozen)
|
||||||
return false;
|
return false;
|
||||||
|
@ -357,11 +360,11 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::initRBRef()
|
void CCtrlBaseButton::initRBRef()
|
||||||
{
|
{
|
||||||
if (_RBRef != NULL) return;
|
if (_RBRef != NULL) return;
|
||||||
nlassert(_Parent);
|
nlassert(_Parent);
|
||||||
const vector<CCtrlBase*> &vCB = _Parent->getControls();
|
const vector<CCtrlBase*> &vCB = _Parent->getControls();
|
||||||
|
@ -378,22 +381,22 @@ void CCtrlBaseButton::initRBRef()
|
||||||
// If we are the first radio button of the group and not added
|
// If we are the first radio button of the group and not added
|
||||||
if (i == vCB.size())
|
if (i == vCB.size())
|
||||||
_RBRef = &this->_RBRefBut;
|
_RBRef = &this->_RBRefBut;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::initRBRefFromRadioButton(CCtrlBaseButton * pBut)
|
void CCtrlBaseButton::initRBRefFromRadioButton(CCtrlBaseButton * pBut)
|
||||||
{
|
{
|
||||||
if(pBut && pBut->_Type == RadioButton)
|
if(pBut && pBut->_Type == RadioButton)
|
||||||
{
|
{
|
||||||
_RBRef = &(pBut->_RBRefBut);
|
_RBRef = &(pBut->_RBRefBut);
|
||||||
_RBRefBut=NULL;
|
_RBRefBut=NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::setPushed (bool state)
|
void CCtrlBaseButton::setPushed (bool state)
|
||||||
{
|
{
|
||||||
_Pushed = state;
|
_Pushed = state;
|
||||||
|
|
||||||
if (_Type == RadioButton && _RBRef)
|
if (_Type == RadioButton && _RBRef)
|
||||||
|
@ -408,38 +411,38 @@ void CCtrlBaseButton::setPushed (bool state)
|
||||||
*_RBRef = NULL; // After that : All radio buttons are NOT pushed
|
*_RBRef = NULL; // After that : All radio buttons are NOT pushed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::setFrozen (bool state)
|
void CCtrlBaseButton::setFrozen (bool state)
|
||||||
{
|
{
|
||||||
_Frozen = state;
|
_Frozen = state;
|
||||||
if (_Frozen)
|
if (_Frozen)
|
||||||
{
|
{
|
||||||
_Pushed = false;
|
_Pushed = false;
|
||||||
_Over = false;
|
_Over = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::setFrozenHalfTone(bool enabled)
|
void CCtrlBaseButton::setFrozenHalfTone(bool enabled)
|
||||||
{
|
{
|
||||||
_FrozenHalfTone = enabled;
|
_FrozenHalfTone = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::unselect()
|
void CCtrlBaseButton::unselect()
|
||||||
{
|
{
|
||||||
if (_Type == RadioButton)
|
if (_Type == RadioButton)
|
||||||
{
|
{
|
||||||
if (_RBRef) *_RBRef = NULL;
|
if (_RBRef) *_RBRef = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::updateOver(bool &lastOver)
|
void CCtrlBaseButton::updateOver(bool &lastOver)
|
||||||
{
|
{
|
||||||
if (!CWidgetManager::getInstance()->isMouseHandlingEnabled())
|
if (!CWidgetManager::getInstance()->isMouseHandlingEnabled())
|
||||||
{
|
{
|
||||||
_Over = false;
|
_Over = false;
|
||||||
|
@ -476,22 +479,22 @@ void CCtrlBaseButton::updateOver(bool &lastOver)
|
||||||
_Over = false;
|
_Over = false;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::elementCaptured(CCtrlBase *capturedElement)
|
void CCtrlBaseButton::elementCaptured(CCtrlBase *capturedElement)
|
||||||
{
|
{
|
||||||
// if not me, then reset my '_Over'
|
// if not me, then reset my '_Over'
|
||||||
if (capturedElement != this)
|
if (capturedElement != this)
|
||||||
{
|
{
|
||||||
_Over = false;
|
_Over = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CCtrlBaseButton::runLeftClickAction()
|
void CCtrlBaseButton::runLeftClickAction()
|
||||||
{
|
{
|
||||||
if(_AHOnLeftClick != NULL)
|
if(_AHOnLeftClick != NULL)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -500,16 +503,18 @@ void CCtrlBaseButton::runLeftClickAction()
|
||||||
CAHManager::getInstance()->runActionHandler (_AHOnLeftClick, this, _AHLeftClickParams);
|
CAHManager::getInstance()->runActionHandler (_AHOnLeftClick, this, _AHLeftClickParams);
|
||||||
//pIM->submitEvent ("button_click:"+getId());
|
//pIM->submitEvent ("button_click:"+getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
int CCtrlBaseButton::luaRunLeftClickAction(CLuaState &ls)
|
int CCtrlBaseButton::luaRunLeftClickAction(CLuaState &ls)
|
||||||
{
|
{
|
||||||
const char *funcName = "onLeftClick";
|
const char *funcName = "onLeftClick";
|
||||||
CLuaIHM::checkArgCount(ls, funcName, 0);
|
CLuaIHM::checkArgCount(ls, funcName, 0);
|
||||||
|
|
||||||
runLeftClickAction();
|
runLeftClickAction();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,14 @@
|
||||||
#include "game_share/skills.h"
|
#include "game_share/skills.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
class CDBCtrlSheet;
|
class CDBCtrlSheet;
|
||||||
class CCtrlBaseButton;
|
|
||||||
class CSBrickSheet;
|
class CSBrickSheet;
|
||||||
class CViewBitmap;
|
class CViewBitmap;
|
||||||
class CViewText;
|
class CViewText;
|
||||||
|
|
|
@ -22,11 +22,13 @@
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
#include "nel/gui/interface_group.h"
|
#include "nel/gui/interface_group.h"
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
class CViewText;
|
class CViewText;
|
||||||
class CCtrlBaseButton;
|
|
||||||
class CGroupMenu;
|
class CGroupMenu;
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
|
@ -23,9 +23,12 @@
|
||||||
#include "list_sheet_base.h"
|
#include "list_sheet_base.h"
|
||||||
#include "dbctrl_sheet.h"
|
#include "dbctrl_sheet.h"
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
class CCtrlBaseButton;
|
|
||||||
class CCtrlScroll;
|
class CCtrlScroll;
|
||||||
class CGroupContainer;
|
class CGroupContainer;
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,15 @@
|
||||||
#include "nel/gui/interface_group.h"
|
#include "nel/gui/interface_group.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
class CViewBitmap;
|
class CViewBitmap;
|
||||||
class CViewText;
|
class CViewText;
|
||||||
class CCtrlBaseButton;
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
|
@ -23,9 +23,13 @@
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
#include "nel/gui/interface_group.h"
|
#include "nel/gui/interface_group.h"
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
class CGroupList;
|
class CGroupList;
|
||||||
class CCtrlScroll;
|
class CCtrlScroll;
|
||||||
class CCtrlBaseButton;
|
|
||||||
|
|
||||||
// Can be used to build a chat window or anything that displays sequences of strings
|
// Can be used to build a chat window or anything that displays sequences of strings
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace NLGUI
|
||||||
{
|
{
|
||||||
class CInterfaceElement;
|
class CInterfaceElement;
|
||||||
class CCtrlBase;
|
class CCtrlBase;
|
||||||
|
class CCtrlBaseButton;
|
||||||
class CInterfaceGroup;
|
class CInterfaceGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +63,7 @@ typedef CInterfacePtr<class CCtrlTextButton>::TInterfacePtr CCtrlTextButtonPtr;
|
||||||
typedef CInterfacePtr<class CViewText>::TInterfacePtr CViewTextPtr;
|
typedef CInterfacePtr<class CViewText>::TInterfacePtr CViewTextPtr;
|
||||||
typedef CInterfacePtr<class CViewTextMenu>::TInterfacePtr CViewTextMenuPtr;
|
typedef CInterfacePtr<class CViewTextMenu>::TInterfacePtr CViewTextMenuPtr;
|
||||||
typedef CInterfacePtr<CCtrlBase>::TInterfacePtr CCtrlBasePtr;
|
typedef CInterfacePtr<CCtrlBase>::TInterfacePtr CCtrlBasePtr;
|
||||||
typedef CInterfacePtr<class CCtrlBaseButton>::TInterfacePtr CCtrlBaseButtonPtr;
|
typedef CInterfacePtr<CCtrlBaseButton>::TInterfacePtr CCtrlBaseButtonPtr;
|
||||||
typedef CInterfacePtr<class CGroupContainer>::TInterfacePtr CGroupContainerPtr;
|
typedef CInterfacePtr<class CGroupContainer>::TInterfacePtr CGroupContainerPtr;
|
||||||
|
|
||||||
#endif // NL_INTERFACE_POINTER_H
|
#endif // NL_INTERFACE_POINTER_H
|
||||||
|
|
|
@ -25,9 +25,13 @@ extern "C"
|
||||||
#include "WWWInit.h"
|
#include "WWWInit.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CCtrlBaseButton;
|
||||||
|
}
|
||||||
|
|
||||||
class CGroupList;
|
class CGroupList;
|
||||||
class CCtrlScroll;
|
class CCtrlScroll;
|
||||||
class CCtrlBaseButton;
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue