diff options
| author | trustable-code <krauter.simon@arcor.de> | 2018-05-07 20:23:02 +0200 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2018-05-07 20:23:02 +0200 |
| commit | 37e0248d2832c9be9731246b936f3cccfff12cf0 (patch) | |
| tree | 51ba45e99ed0f376d36c2fa4924e2fa08c33a853 /src | |
| parent | 84d751b21c76312f1da4dd282505277126cd1f52 (diff) | |
| download | NiGui-37e0248d2832c9be9731246b936f3cccfff12cf0.tar.gz NiGui-37e0248d2832c9be9731246b936f3cccfff12cf0.zip | |
Combine WindowKeyEvent and ControlKeyEvent types to KeyboardEvent
Should be simpler now.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/nigui.nim | 41 | ||||
| -rwxr-xr-x | src/nigui/private/gtk3/platform_impl.nim | 8 | ||||
| -rwxr-xr-x | src/nigui/private/windows/platform_impl.nim | 11 |
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 |
