summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2018-05-07 20:23:02 +0200
committertrustable-code <krauter.simon@arcor.de>2018-05-07 20:23:02 +0200
commit37e0248d2832c9be9731246b936f3cccfff12cf0 (patch)
tree51ba45e99ed0f376d36c2fa4924e2fa08c33a853 /src
parent84d751b21c76312f1da4dd282505277126cd1f52 (diff)
downloadNiGui-37e0248d2832c9be9731246b936f3cccfff12cf0.tar.gz
NiGui-37e0248d2832c9be9731246b936f3cccfff12cf0.zip
Combine WindowKeyEvent and ControlKeyEvent types to KeyboardEvent
Should be simpler now.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/nigui.nim41
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim8
-rwxr-xr-xsrc/nigui/private/windows/platform_impl.nim11
3 files changed, 23 insertions, 37 deletions
diff --git a/src/nigui.nim b/src/nigui.nim
index 9b419f0..ca69f7f 100755
--- a/src/nigui.nim
+++ b/src/nigui.nim
@@ -163,7 +163,7 @@ type
fOnCloseClick: CloseClickProc
fOnResize: ResizeProc
fOnDropFiles: DropFilesProc
- fOnKeyDown: WindowKeyProc
+ fOnKeyDown: KeyboardProc
# Control base type:
@@ -197,7 +197,7 @@ type
fOnMouseButtonUp: MouseButtonProc
fOnClick: ClickProc
# fOnMouseMove: MouseMoveProc
- fOnKeyDown: ControlKeyProc
+ fOnKeyDown: KeyboardProc
fOnTextChange: TextChangeProc
tag*: string
@@ -234,13 +234,14 @@ type
files*: seq[string]
DropFilesProc* = proc(event: DropFilesEvent)
- WindowKeyEvent* = ref object
+ KeyboardEvent* = ref object
window*: Window
+ control*: Control
key*: Key
unicode*: int
character*: string # UTF-8 character
cancel*: bool
- WindowKeyProc* = proc(event: WindowKeyEvent)
+ KeyboardProc* = proc(event: KeyboardEvent)
# Control events:
@@ -263,14 +264,6 @@ type
control*: Control
ClickProc* = proc(event: ClickEvent)
- ControlKeyEvent* = ref object
- control*: Control
- key*: Key
- unicode*: int
- character*: string # UTF-8 character
- cancel*: bool
- ControlKeyProc* = proc(event: ControlKeyEvent)
-
TextChangeEvent* = ref object
control*: Control
TextChangeProc* = proc(event: TextChangeEvent)
@@ -563,7 +556,7 @@ method closeClick*(window: Window)
method handleResizeEvent*(window: Window, event: ResizeEvent)
-method handleKeyDownEvent*(window: Window, event: WindowKeyEvent)
+method handleKeyDownEvent*(window: Window, event: KeyboardEvent)
method handleDropFilesEvent*(window: Window, event: DropFilesEvent)
@@ -579,8 +572,8 @@ method `onResize=`*(window: Window, callback: ResizeProc)
method onDropFiles*(window: Window): DropFilesProc
method `onDropFiles=`*(window: Window, callback: DropFilesProc)
-method onKeyDown*(window: Window): WindowKeyProc
-method `onKeyDown=`*(window: Window, callback: WindowKeyProc)
+method onKeyDown*(window: Window): KeyboardProc
+method `onKeyDown=`*(window: Window, callback: KeyboardProc)
# ----------------------------------------------------------------------------------------
@@ -710,7 +703,7 @@ method handleMouseButtonUpEvent*(control: Control, event: MouseButtonEvent)
method handleClickEvent*(control: Control, event: ClickEvent)
-method handleKeyDownEvent*(control: Control, event: ControlKeyEvent)
+method handleKeyDownEvent*(control: Control, event: KeyboardEvent)
method handleTextChangeEvent*(control: Control, event: TextChangeEvent)
@@ -729,8 +722,8 @@ method `onMouseButtonUp=`*(control: Control, callback: MouseButtonProc)
method onClick*(control: Control): ClickProc
method `onClick=`*(control: Control, callback: ClickProc)
-method onKeyDown*(control: Control): ControlKeyProc
-method `onKeyDown=`*(control: Control, callback: ControlKeyProc)
+method onKeyDown*(control: Control): KeyboardProc
+method `onKeyDown=`*(control: Control, callback: KeyboardProc)
method onTextChange*(control: Control): TextChangeProc
method `onTextChange=`*(control: Control, callback: TextChangeProc)
@@ -1306,7 +1299,7 @@ method handleDropFilesEvent(window: Window, event: DropFilesEvent) =
if callback != nil:
callback(event)
-method handleKeyDownEvent(window: Window, event: WindowKeyEvent) =
+method handleKeyDownEvent(window: Window, event: KeyboardEvent) =
# can be overriden by custom window
let callback = window.onKeyDown
if callback != nil:
@@ -1324,8 +1317,8 @@ method `onResize=`(window: Window, callback: ResizeProc) = window.fOnResize = ca
method onDropFiles(window: Window): DropFilesProc = window.fOnDropFiles
method `onDropFiles=`(window: Window, callback: DropFilesProc) = window.fOnDropFiles = callback
-method onKeyDown(window: Window): WindowKeyProc = window.fOnKeyDown
-method `onKeyDown=`(window: Window, callback: WindowKeyProc) = window.fOnKeyDown = callback
+method onKeyDown(window: Window): KeyboardProc = window.fOnKeyDown
+method `onKeyDown=`(window: Window, callback: KeyboardProc) = window.fOnKeyDown = callback
@@ -1681,7 +1674,7 @@ method handleClickEvent(control: Control, event: ClickEvent) =
if callback != nil:
callback(event)
-method handleKeyDownEvent(control: Control, event: ControlKeyEvent) =
+method handleKeyDownEvent(control: Control, event: KeyboardEvent) =
# can be implemented by custom control
let callback = control.onKeyDown
if callback != nil:
@@ -1708,8 +1701,8 @@ method `onMouseButtonUp=`(control: Control, callback: MouseButtonProc) = control
method onClick(control: Control): ClickProc = control.fOnClick
method `onClick=`(control: Control, callback: ClickProc) = control.fOnClick = callback
-method onKeyDown(control: Control): ControlKeyProc = control.fOnKeyDown
-method `onKeyDown=`(control: Control, callback: ControlKeyProc) = control.fOnKeyDown = callback
+method onKeyDown(control: Control): KeyboardProc = control.fOnKeyDown
+method `onKeyDown=`(control: Control, callback: KeyboardProc) = control.fOnKeyDown = callback
method onTextChange(control: Control): TextChangeProc = control.fOnTextChange
method `onTextChange=`(control: Control, callback: TextChangeProc) = control.fOnTextChange = callback
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index c1adf55..1b050a7 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -90,7 +90,7 @@ proc pWindowKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointe
window.fKeyPressed = pKeyvalToKey(event.keyval)
if gtk_im_context_filter_keypress(window.fIMContext, event) and window.fKeyPressed == Key_None:
return
- var evt = new WindowKeyEvent
+ var evt = new KeyboardEvent
evt.window = window
evt.key = window.fKeyPressed
if evt.key == Key_None:
@@ -109,7 +109,7 @@ proc pControlKeyPressSignal(widget: pointer, event: var GdkEventKey, data: point
control.fKeyPressed = pKeyvalToKey(event.keyval)
if gtk_im_context_filter_keypress(control.fIMContext, event) and control.fKeyPressed == Key_None:
return
- var evt = new ControlKeyEvent
+ var evt = new KeyboardEvent
evt.control = control
evt.key = control.fKeyPressed
if evt.key == Key_None:
@@ -125,7 +125,7 @@ proc pControlKeyPressSignal(widget: pointer, event: var GdkEventKey, data: point
proc pWindowIMContextCommitSignal(context: pointer, str: cstring, data: pointer) {.cdecl.} =
let window = cast[WindowImpl](data)
- var evt = new WindowKeyEvent
+ var evt = new KeyboardEvent
evt.window = window
evt.character = $str
evt.unicode = evt.character.runeAt(0).toUpper().int
@@ -138,7 +138,7 @@ proc pWindowIMContextCommitSignal(context: pointer, str: cstring, data: pointer)
proc pControlIMContextCommitSignal(context: pointer, str: cstring, data: pointer) {.cdecl.} =
let control = cast[ControlImpl](data)
- var evt = new ControlKeyEvent
+ var evt = new KeyboardEvent
evt.control = control
evt.character = $str
evt.unicode = evt.character.runeAt(0).toUpper().int
diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim
index 6cff721..47b776c 100755
--- a/src/nigui/private/windows/platform_impl.nim
+++ b/src/nigui/private/windows/platform_impl.nim
@@ -232,7 +232,7 @@ proc pVirtualKeyToKey(keyval, scancode: int32): Key =
else: result = cast[Key](keyval.unicodeToUpper)
proc pHandleWMKEYDOWNOrWMCHAR(window: Window, control: Control, unicode: int): bool =
- var windowEvent = new WindowKeyEvent
+ var windowEvent = new KeyboardEvent
windowEvent.window = window
windowEvent.key = pKeyDownKey
if windowEvent.key == Key_None:
@@ -247,7 +247,7 @@ proc pHandleWMKEYDOWNOrWMCHAR(window: Window, control: Control, unicode: int): b
return true
if control != nil:
- var controlEvent = new ControlKeyEvent
+ var controlEvent = new KeyboardEvent
controlEvent.control = control
controlEvent.key = windowEvent.key
controlEvent.unicode = windowEvent.unicode
@@ -265,14 +265,7 @@ proc pHandleWMKEYDOWN(window: Window, control: Control, wParam, lParam: pointer)
# Save the key for WM_CHAR, because WM_CHAR only gets the key combined with the dead key state
var widestring = newString(2)
let scancode = (cast[int32](lParam) and 0x00FF0000) shr 16
-
- # echo scancode
- # echo cast[int](wParam)
-
-
pKeyDownKey = pVirtualKeyToKey(cast[int32](wParam), scancode)
-
-
if cast[int](wParam) == VK_OEM_5:
# When the dead key "^" on German keyboard is pressed, don't call ToUnicode(), because this would destroy the dead key state
pKeyDownKey = Key_Circumflex