CHANGED: #1471 CGroupEditBox no longer depends on CGroupContainer, and CInputHandlerManager.
--HG-- branch : gui-refactoring
This commit is contained in:
parent
c746f81499
commit
3213e52b60
5 changed files with 36 additions and 39 deletions
|
@ -86,6 +86,9 @@ namespace NLGUI
|
||||||
uint8 getCurrentContentAlpha() const{ return _CurrentContentAlpha; }
|
uint8 getCurrentContentAlpha() const{ return _CurrentContentAlpha; }
|
||||||
|
|
||||||
virtual bool isGrayed() const{ return false; }
|
virtual bool isGrayed() const{ return false; }
|
||||||
|
virtual bool getTouchFlag(bool clearFlag) const{ return false; }
|
||||||
|
virtual void backupPosition(){}
|
||||||
|
virtual void restorePosition(){}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void triggerAlphaSettingsChangedAH();
|
void triggerAlphaSettingsChangedAH();
|
||||||
|
|
|
@ -14,21 +14,17 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "stdpch.h"
|
|
||||||
|
|
||||||
#include "group_editbox.h"
|
#include "group_editbox.h"
|
||||||
#include "interface_manager.h"
|
|
||||||
#include "input_handler_manager.h"
|
|
||||||
#include "nel/misc/command.h"
|
#include "nel/misc/command.h"
|
||||||
#include "nel/gui/view_text.h"
|
#include "nel/gui/view_text.h"
|
||||||
#include "nel/misc/xml_auto_ptr.h"
|
#include "nel/misc/xml_auto_ptr.h"
|
||||||
#include "nel/gui/interface_options.h"
|
#include "nel/gui/interface_options.h"
|
||||||
#include "dbctrl_sheet.h"
|
#include "nel/gui/ctrl_draggable.h"
|
||||||
#include "group_container.h"
|
#include "nel/gui/group_container_base.h"
|
||||||
#include "../time_client.h"
|
|
||||||
#include "nel/gui/lua_ihm.h"
|
#include "nel/gui/lua_ihm.h"
|
||||||
|
#include "nel/gui/widget_manager.h"
|
||||||
|
#include "nel/gui/view_renderer.h"
|
||||||
|
#include "nel/gui/db_manager.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
@ -41,6 +37,7 @@ using namespace NL3D;
|
||||||
|
|
||||||
sint32 CGroupEditBox::_SelectCursorPos = 0;
|
sint32 CGroupEditBox::_SelectCursorPos = 0;
|
||||||
CGroupEditBox *CGroupEditBox::_MenuFather = NULL;
|
CGroupEditBox *CGroupEditBox::_MenuFather = NULL;
|
||||||
|
CGroupEditBox::IComboKeyHandler* CGroupEditBox::comboKeyHandler = NULL;
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -93,7 +90,6 @@ CGroupEditBox::CGroupEditBox(const TCtorParam ¶m) :
|
||||||
CGroupEditBox::~CGroupEditBox()
|
CGroupEditBox::~CGroupEditBox()
|
||||||
{
|
{
|
||||||
if (this == _CurrSelection) _CurrSelection = NULL;
|
if (this == _CurrSelection) _CurrSelection = NULL;
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() == this || CWidgetManager::getInstance()->getOldCaptureKeyboard() == this)
|
if (CWidgetManager::getInstance()->getCaptureKeyboard() == this || CWidgetManager::getInstance()->getOldCaptureKeyboard() == this)
|
||||||
{
|
{
|
||||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||||
|
@ -106,8 +102,6 @@ bool CGroupEditBox::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
|
||||||
if(!CInterfaceGroup::parse(cur, parentGroup))
|
if(!CInterfaceGroup::parse(cur, parentGroup))
|
||||||
return false;
|
return false;
|
||||||
CXMLAutoPtr prop;
|
CXMLAutoPtr prop;
|
||||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
|
||||||
|
|
||||||
if (! CInterfaceGroup::parse(cur,parentGroup) )
|
if (! CInterfaceGroup::parse(cur,parentGroup) )
|
||||||
{
|
{
|
||||||
|
@ -216,7 +210,6 @@ bool CGroupEditBox::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
|
||||||
void CGroupEditBox::draw ()
|
void CGroupEditBox::draw ()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||||
//
|
//
|
||||||
/*CRGBA col;
|
/*CRGBA col;
|
||||||
|
@ -296,7 +289,7 @@ void CGroupEditBox::draw ()
|
||||||
// Display the cursor if needed
|
// Display the cursor if needed
|
||||||
if (CWidgetManager::getInstance()->getCaptureKeyboard () == this)
|
if (CWidgetManager::getInstance()->getCaptureKeyboard () == this)
|
||||||
{
|
{
|
||||||
_BlinkTime += DT;
|
_BlinkTime += 0.0025f;
|
||||||
if (_BlinkTime > 0.25f)
|
if (_BlinkTime > 0.25f)
|
||||||
{
|
{
|
||||||
_BlinkTime = fmodf(_BlinkTime, 0.25f);
|
_BlinkTime = fmodf(_BlinkTime, 0.25f);
|
||||||
|
@ -566,7 +559,6 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
|
||||||
break;
|
break;
|
||||||
// OTHER
|
// OTHER
|
||||||
default:
|
default:
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
if ((rEDK.getChar() == KeyRETURN) && !_WantReturn)
|
if ((rEDK.getChar() == KeyRETURN) && !_WantReturn)
|
||||||
{
|
{
|
||||||
// update historic.
|
// update historic.
|
||||||
|
@ -583,7 +575,6 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
|
||||||
|
|
||||||
_CursorPos = 0;
|
_CursorPos = 0;
|
||||||
// loose the keyboard focus
|
// loose the keyboard focus
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
if (NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:ENTER_DONT_QUIT_CB")->getValue32() == 0)
|
if (NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:ENTER_DONT_QUIT_CB")->getValue32() == 0)
|
||||||
{
|
{
|
||||||
if(_LooseFocusOnEnter)
|
if(_LooseFocusOnEnter)
|
||||||
|
@ -717,7 +708,6 @@ void CGroupEditBox::handleEventString(const NLGUI::CEventDescriptorKey &rEDK)
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
bool CGroupEditBox::undo()
|
bool CGroupEditBox::undo()
|
||||||
{
|
{
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
||||||
if (!_CanUndo) return false;
|
if (!_CanUndo) return false;
|
||||||
_ModifiedInputString = _InputString;
|
_ModifiedInputString = _InputString;
|
||||||
|
@ -732,7 +722,6 @@ bool CGroupEditBox::undo()
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
bool CGroupEditBox::redo()
|
bool CGroupEditBox::redo()
|
||||||
{
|
{
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
||||||
if (!_CanRedo) return false;
|
if (!_CanRedo) return false;
|
||||||
setInputString(_ModifiedInputString);
|
setInputString(_ModifiedInputString);
|
||||||
|
@ -748,11 +737,10 @@ void CGroupEditBox::triggerOnChangeAH()
|
||||||
{
|
{
|
||||||
_CanUndo = true;
|
_CanUndo = true;
|
||||||
_CanRedo = false;
|
_CanRedo = false;
|
||||||
|
|
||||||
if (!_AHOnChange.empty())
|
if (!_AHOnChange.empty())
|
||||||
{
|
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
CAHManager::getInstance()->runActionHandler(_AHOnChange, this, _ParamsOnChange);
|
CAHManager::getInstance()->runActionHandler(_AHOnChange, this, _ParamsOnChange);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -856,8 +844,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Look into the input handler Manager if the key combo has to be considered as handled
|
// Look into the input handler Manager if the key combo has to be considered as handled
|
||||||
CInputHandlerManager *pIH= CInputHandlerManager::getInstance();
|
if( ( CGroupEditBox::comboKeyHandler != NULL ) && comboKeyHandler->isComboKeyChat(rEDK) )
|
||||||
if( pIH->isComboKeyChat(rEDK) )
|
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -871,8 +858,6 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
||||||
/////////////////
|
/////////////////
|
||||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||||
|
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
|
|
||||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
||||||
{
|
{
|
||||||
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
|
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
|
||||||
|
@ -880,7 +865,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
||||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||||
if (!_ListMenuRight.empty())
|
if (!_ListMenuRight.empty())
|
||||||
{
|
{
|
||||||
if (CDBCtrlSheet::getDraggedSheet() == NULL)
|
if (CCtrlDraggable::getDraggedSheet() == NULL)
|
||||||
{
|
{
|
||||||
_MenuFather = this;
|
_MenuFather = this;
|
||||||
CWidgetManager::getInstance()->enableModalWindow (this, _ListMenuRight);
|
CWidgetManager::getInstance()->enableModalWindow (this, _ListMenuRight);
|
||||||
|
@ -1069,7 +1054,7 @@ void CGroupEditBox::updateCoords()
|
||||||
|
|
||||||
if (_BackupFatherContainerPos)
|
if (_BackupFatherContainerPos)
|
||||||
{
|
{
|
||||||
CGroupContainer *gc = static_cast< CGroupContainer* >( getEnclosingContainer() );
|
CGroupContainerBase *gc = static_cast< CGroupContainerBase* >( getEnclosingContainer() );
|
||||||
|
|
||||||
if (gc && !gc->getTouchFlag(true))
|
if (gc && !gc->getTouchFlag(true))
|
||||||
{
|
{
|
||||||
|
@ -1301,13 +1286,10 @@ void CGroupEditBox::setCommand(const ucstring &command, bool execute)
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CGroupEditBox::makeTopWindow()
|
void CGroupEditBox::makeTopWindow()
|
||||||
{
|
{
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
CInterfaceGroup *root = getRootWindow();
|
CInterfaceGroup *root = getRootWindow();
|
||||||
if(root)
|
if(root)
|
||||||
{
|
|
||||||
CWidgetManager::getInstance()->setTopWindow(root);
|
CWidgetManager::getInstance()->setTopWindow(root);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
void CGroupEditBox::clearAllEditBox()
|
void CGroupEditBox::clearAllEditBox()
|
||||||
|
@ -1405,10 +1387,8 @@ void CGroupEditBox::elementCaptured(CCtrlBase *capturedElement)
|
||||||
void CGroupEditBox::onKeyboardCaptureLost()
|
void CGroupEditBox::onKeyboardCaptureLost()
|
||||||
{
|
{
|
||||||
if (!_AHOnFocusLost.empty())
|
if (!_AHOnFocusLost.empty())
|
||||||
{
|
|
||||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
|
||||||
CAHManager::getInstance()->runActionHandler(_AHOnFocusLost, this, _AHOnFocusLostParams);
|
CAHManager::getInstance()->runActionHandler(_AHOnFocusLost, this, _AHOnFocusLostParams);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
@ -1428,7 +1408,6 @@ void CGroupEditBox::setFocusOnText()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// else set the focus
|
// else set the focus
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
||||||
|
|
||||||
_CurrSelection = this;
|
_CurrSelection = this;
|
||||||
|
@ -1454,7 +1433,6 @@ int CGroupEditBox::luaCancelFocusOnText(CLuaState &ls)
|
||||||
const char *funcName = "cancelFocusOnText";
|
const char *funcName = "cancelFocusOnText";
|
||||||
CLuaIHM::checkArgCount(ls, funcName, 0);
|
CLuaIHM::checkArgCount(ls, funcName, 0);
|
||||||
|
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
if (CWidgetManager::getInstance()->getCaptureKeyboard()==this || CWidgetManager::getInstance()->getOldCaptureKeyboard()==this)
|
if (CWidgetManager::getInstance()->getCaptureKeyboard()==this || CWidgetManager::getInstance()->getOldCaptureKeyboard()==this)
|
||||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||||
|
|
||||||
|
@ -1490,7 +1468,6 @@ void CGroupEditBox::setFrozen (bool state)
|
||||||
// if frozen, loose the focus
|
// if frozen, loose the focus
|
||||||
if(_Frozen)
|
if(_Frozen)
|
||||||
{
|
{
|
||||||
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
|
||||||
// stop capture and selection
|
// stop capture and selection
|
||||||
CWidgetManager::getInstance()->setCaptureKeyboard (NULL);
|
CWidgetManager::getInstance()->setCaptureKeyboard (NULL);
|
||||||
if(_CurrSelection==this) _CurrSelection = NULL;
|
if(_CurrSelection==this) _CurrSelection = NULL;
|
||||||
|
|
|
@ -33,8 +33,16 @@ namespace NLGUI
|
||||||
class CGroupEditBox : public CGroupEditBoxBase
|
class CGroupEditBox : public CGroupEditBoxBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum TEntryType { Text, Integer, PositiveInteger, Float, PositiveFloat, Alpha, AlphaNum, AlphaNumSpace, Password, Filename, PlayerName }; // the type of entry this edit bot can deal with
|
|
||||||
|
class IComboKeyHandler
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual ~IComboKeyHandler(){}
|
||||||
|
virtual bool isComboKeyChat( const NLGUI::CEventDescriptorKey &edk ) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TEntryType { Text, Integer, PositiveInteger, Float, PositiveFloat, Alpha, AlphaNum, AlphaNumSpace, Password, Filename, PlayerName }; // the type of entry this edit bot can deal with
|
||||||
|
|
||||||
DECLARE_UI_CLASS( CGroupEditBox )
|
DECLARE_UI_CLASS( CGroupEditBox )
|
||||||
/// Constructor
|
/// Constructor
|
||||||
CGroupEditBox(const TCtorParam ¶m);
|
CGroupEditBox(const TCtorParam ¶m);
|
||||||
|
@ -341,6 +349,12 @@ private:
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static IComboKeyHandler *comboKeyHandler;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void setComboKeyHandler( IComboKeyHandler *handler ){ comboKeyHandler = handler; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,11 +67,13 @@ CInputHandlerManager::CInputHandlerManager()
|
||||||
_RecoverFocusLost = false;
|
_RecoverFocusLost = false;
|
||||||
|
|
||||||
inputHandler.setListener( CInterfaceManager::getInstance() );
|
inputHandler.setListener( CInterfaceManager::getInstance() );
|
||||||
|
CGroupEditBox::setComboKeyHandler( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
CInputHandlerManager::~CInputHandlerManager()
|
CInputHandlerManager::~CInputHandlerManager()
|
||||||
{
|
{
|
||||||
|
CGroupEditBox::setComboKeyHandler( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ********************************************************************************************
|
// ********************************************************************************************
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "nel/gui/event_descriptor.h"
|
#include "nel/gui/event_descriptor.h"
|
||||||
#include "nel/gui/input_handler.h"
|
#include "nel/gui/input_handler.h"
|
||||||
|
#include "group_editbox.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,7 +41,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
class CInputHandlerManager : public NLMISC::IEventListener
|
class CInputHandlerManager : public NLMISC::IEventListener, public CGroupEditBox::IComboKeyHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// The EventServer Filled with Filtered Messages the InterfaceManager didn't cactch
|
/// The EventServer Filled with Filtered Messages the InterfaceManager didn't cactch
|
||||||
|
|
Loading…
Reference in a new issue