From f54fd34cb32016d3468e9fda5b25efc02f1a9176 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Sun, 28 Aug 2011 23:03:31 -0300 Subject: [PATCH] enable enter/escape actions for windows --- TODO | 1 + modules/core/messagebox/messagebox.lua | 4 ++++ modules/mainmenu/ui/charlist.otui | 7 +++---- modules/mainmenu/ui/entergamewindow.otui | 2 ++ src/framework/ui/uilineedit.cpp | 8 -------- src/framework/ui/uilineedit.h | 1 - src/framework/ui/uiwindow.cpp | 22 ++++++++++++++++++++++ src/framework/ui/uiwindow.h | 1 + 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index b97c29d4..a1742d29 100644 --- a/TODO +++ b/TODO @@ -4,3 +4,4 @@ hotkeys events in lua make password text edit hidden load modules from zip packages ip/host/rsa configuration +review directories search \ No newline at end of file diff --git a/modules/core/messagebox/messagebox.lua b/modules/core/messagebox/messagebox.lua index 3f81f531..b47da380 100644 --- a/modules/core/messagebox/messagebox.lua +++ b/modules/core/messagebox/messagebox.lua @@ -33,6 +33,8 @@ function MessageBox.create(title, text, flags) box.onOk() box:destroy() end + window.onEnter = buttonRight.onClick + window.onEscape = buttonRight.onClick elseif flags == MessageBoxCancel then buttonRight:setText("Cancel") box.onCancel = EmptyFunction @@ -40,6 +42,8 @@ function MessageBox.create(title, text, flags) box.onCancel() box:destroy() end + window.onEnter = buttonRight.onClick + window.onEscape = buttonRight.onClick end box.window = window diff --git a/modules/mainmenu/ui/charlist.otui b/modules/mainmenu/ui/charlist.otui index fabb155d..b7776b17 100644 --- a/modules/mainmenu/ui/charlist.otui +++ b/modules/mainmenu/ui/charlist.otui @@ -16,6 +16,8 @@ MainWindow id: charactersWindow title: Charlist size: 250 250 + onEnter: EnterGame_characterWindow_okClicked() + onEscape: function(self) self:destroy() end TextList id: charactersList @@ -63,7 +65,4 @@ MainWindow anchors.bottom: parent.bottom margin.bottom: 16 margin.right: 16 - onClick: | - function(self) - self:getParent():destroy() - end \ No newline at end of file + onClick: function(self) self:getParent():destroy() end \ No newline at end of file diff --git a/modules/mainmenu/ui/entergamewindow.otui b/modules/mainmenu/ui/entergamewindow.otui index 85031f5f..ee2956d8 100644 --- a/modules/mainmenu/ui/entergamewindow.otui +++ b/modules/mainmenu/ui/entergamewindow.otui @@ -2,6 +2,8 @@ MainWindow id: enterGameWindow title: Enter Game size: 236 160 + onEnter: EnterGame_connectToLoginServer() + onEscape: function(self) self:destroy() end LargerLabel text: Account name diff --git a/src/framework/ui/uilineedit.cpp b/src/framework/ui/uilineedit.cpp index 4cbc44d9..89cb0cba 100644 --- a/src/framework/ui/uilineedit.cpp +++ b/src/framework/ui/uilineedit.cpp @@ -33,8 +33,6 @@ UILineEdit::UILineEdit() m_startRenderPos = 0; m_textHorizontalMargin = 3; blinkCursor(); - - m_onAction = [this]() { this->callLuaField("onAction"); }; } void UILineEdit::render() @@ -365,9 +363,6 @@ void UILineEdit::onStyleApply(const OTMLNodePtr& styleNode) if(node->tag() == "text") { setText(node->value()); setCursorPos(m_text.length()); - } else if(node->tag() == "onAction") { - g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]"); - luaSetField(node->tag()); } } } @@ -406,9 +401,6 @@ bool UILineEdit::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers) else if(keyCode == Fw::KeyTab) { if(UIWidgetPtr parent = getParent()) parent->focusNextChild(Fw::TabFocusReason); - } else if(keyCode == Fw::KeyReturn || keyCode == Fw::KeyEnter) { - if(m_onAction) - m_onAction(); } else if(keyChar != 0) appendCharacter(keyChar); else diff --git a/src/framework/ui/uilineedit.h b/src/framework/ui/uilineedit.h index 70c625d5..c2bf9c53 100644 --- a/src/framework/ui/uilineedit.h +++ b/src/framework/ui/uilineedit.h @@ -67,7 +67,6 @@ private: int m_startRenderPos; int m_cursorTicks; int m_textHorizontalMargin; - SimpleCallback m_onAction; std::vector m_glyphsCoords; std::vector m_glyphsTexCoords; diff --git a/src/framework/ui/uiwindow.cpp b/src/framework/ui/uiwindow.cpp index 4f284e20..0e5295ed 100644 --- a/src/framework/ui/uiwindow.cpp +++ b/src/framework/ui/uiwindow.cpp @@ -85,6 +85,14 @@ void UIWindow::onStyleApply(const OTMLNodePtr& styleNode) else if(node->tag() == "title") { setTitle(node->value()); } + else if(node->tag() == "onEnter") { + g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]"); + luaSetField(node->tag()); + } + else if(node->tag() == "onEscape") { + g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]"); + luaSetField(node->tag()); + } } } @@ -145,3 +153,17 @@ bool UIWindow::onMouseMove(const Point& mousePos, const Point& mouseMoved) } return UIWidget::onMouseMove(mousePos, mouseMoved); } + +bool UIWindow::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers) +{ + if(keyboardModifiers == Fw::KeyboardNoModifier) { + if(keyCode == Fw::KeyReturn || keyCode == Fw::KeyEnter) { + if(callLuaField("onEnter")) + return true; + } else if(keyCode == Fw::KeyEscape) { + if(callLuaField("onEscape")) + return true; + } + } + return UIWidget::onKeyPress(keyCode, keyChar, keyboardModifiers); +} diff --git a/src/framework/ui/uiwindow.h b/src/framework/ui/uiwindow.h index d5ac836d..30ddb99a 100644 --- a/src/framework/ui/uiwindow.h +++ b/src/framework/ui/uiwindow.h @@ -41,6 +41,7 @@ protected: virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button); virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button); virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved); + virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers); private: std::string m_title;