summaryrefslogtreecommitdiff
path: root/src/nigui/private/gtk3/platform_impl.nim
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2017-08-08 19:01:18 +0200
committertrustable-code <krauter.simon@arcor.de>2017-08-08 19:01:18 +0200
commitd7666326125cc7c2c3867f744c47d7021b8e7e85 (patch)
tree7a8fc83b428fb26f7ef72aa9ad1cb73b743cdefe /src/nigui/private/gtk3/platform_impl.nim
parent77f5e8b4e5f9a1e52e798f7a3e5841c8cfbea5e9 (diff)
downloadNiGui-d7666326125cc7c2c3867f744c47d7021b8e7e85.tar.gz
NiGui-d7666326125cc7c2c3867f744c47d7021b8e7e85.zip
Add clipboard functions
Diffstat (limited to 'src/nigui/private/gtk3/platform_impl.nim')
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index 32473bf..00fd9d8 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -20,6 +20,9 @@ var pLastMouseButtonDownControl: ControlImpl
var pLastMouseButtonDownControlX: int
var pLastMouseButtonDownControlY: int
+var pClipboardPtr: pointer
+var pClipboardText: string
+
proc pRaiseGError(error: ptr GError) =
if error == nil:
raiseError("Unkown error")
@@ -278,6 +281,8 @@ proc pSetDragDest(widget: pointer) =
proc init(app: App) =
gtk_init(nil, nil)
+ pClipboardPtr = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)
+
# Determine default styles:
var window = gtk_window_new(GTK_WINDOW_TOPLEVEL)
var context = gtk_widget_get_style_context(window)
@@ -294,6 +299,21 @@ proc processEvents(app: App) =
while gtk_events_pending() == 1:
discard gtk_main_iteration()
+proc pClipboardTextReceivedFunc(clipboard: pointer, text: cstring, data: pointer): bool {.cdecl.} =
+ pClipboardText = $text
+ if pClipboardText == nil:
+ pClipboardText = ""
+
+proc clipboardText(app: App): string =
+ pClipboardText = nil
+ gtk_clipboard_request_text(pClipboardPtr, pClipboardTextReceivedFunc, nil)
+ while pClipboardText == nil:
+ discard gtk_main_iteration()
+ result = pClipboardText
+
+proc `clipboardText=`(app: App, text: string) =
+ gtk_clipboard_set_text(pClipboardPtr, text, text.len.cint)
+
# ----------------------------------------------------------------------------------------
# Dialogs