From f8e3f12ab02b528f2a05a4f713d7af7ea8e44b42 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 11 Dec 2015 20:37:59 -0500 Subject: LET'S GET THIS FINAL REWRITE EVER STARTED --- prev/uitask_unix.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 prev/uitask_unix.go (limited to 'prev/uitask_unix.go') diff --git a/prev/uitask_unix.go b/prev/uitask_unix.go new file mode 100644 index 0000000..136d609 --- /dev/null +++ b/prev/uitask_unix.go @@ -0,0 +1,52 @@ +// +build !windows,!darwin + +// 7 july 2014 + +package ui + +import ( + "fmt" + "unsafe" +) + +// #cgo pkg-config: gtk+-3.0 +// #cgo CFLAGS: --std=c99 +// #include "gtk_unix.h" +// extern gboolean xdoissue(gpointer data); +import "C" + +func uiinit() error { + var err *C.GError = nil // redundant in Go, but let's explicitly assign it anyway + + // gtk_init_with_args() gives us error info (thanks chpe in irc.gimp.net/#gtk+) + // don't worry about GTK+'s command-line arguments; they're also available as environment variables (thanks mclasen in irc.gimp.net/#gtk+) + result := C.gtk_init_with_args(nil, nil, nil, nil, nil, &err) + if result == C.FALSE { + return fmt.Errorf("error actually initilaizing GTK+: %s", fromgstr(err.message)) + } + return nil +} + +func uimsgloop() { + C.gtk_main() +} + +func uistop() { + C.gtk_main_quit() +} + +func issue(f *func()) { + C.gdk_threads_add_idle(C.GSourceFunc(C.xdoissue), C.gpointer(unsafe.Pointer(f))) +} + +//export xdoissue +func xdoissue(data C.gpointer) C.gboolean { + perform(unsafe.Pointer(data)) + return C.FALSE // don't repeat +} + +//export doissue +func doissue(data unsafe.Pointer) { + // for the modal queue functions + perform(data) +} -- cgit v1.2.3