diff options
| author | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
| commit | f8e3f12ab02b528f2a05a4f713d7af7ea8e44b42 (patch) | |
| tree | 82dedf4d37f0f6d31e88ebb2ca1ce6499dead261 /prev/common_unix.go | |
| parent | e34c561ed5bedeb180437ec165882b98d70d38c1 (diff) | |
LET'S GET THIS FINAL REWRITE EVER STARTED
Diffstat (limited to 'prev/common_unix.go')
| -rw-r--r-- | prev/common_unix.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/prev/common_unix.go b/prev/common_unix.go new file mode 100644 index 0000000..d88afbb --- /dev/null +++ b/prev/common_unix.go @@ -0,0 +1,56 @@ +// +build !windows,!darwin + +// 7 july 2014 + +package ui + +import ( + "unsafe" +) + +// #include "gtk_unix.h" +// /* because cgo doesn't like g_signal_connect() */ +// void gSignalConnect(gpointer obj, gchar *sig, GCallback callback, gpointer data) +// { +// g_signal_connect(obj, sig, callback, data); +// } +// void gSignalConnectAfter(gpointer obj, gchar *sig, GCallback callback, gpointer data) +// { +// g_signal_connect_after(obj, sig, callback, data); +// } +import "C" + +func fromgstr(s *C.gchar) string { + return C.GoString((*C.char)(unsafe.Pointer(s))) +} + +func togstr(s string) *C.gchar { + return (*C.gchar)(unsafe.Pointer(C.CString(s))) +} + +func freegstr(s *C.gchar) { + C.free(unsafe.Pointer(s)) +} + +func fromgbool(b C.gboolean) bool { + return b != C.FALSE +} + +func togbool(b bool) C.gboolean { + if b == true { + return C.TRUE + } + return C.FALSE +} + +func g_signal_connect(object C.gpointer, name string, to C.GCallback, data C.gpointer) { + cname := togstr(name) + defer freegstr(cname) + C.gSignalConnect(object, cname, to, data) +} + +func g_signal_connect_after(object C.gpointer, name string, to C.GCallback, data C.gpointer) { + cname := togstr(name) + defer freegstr(cname) + C.gSignalConnectAfter(object, cname, to, data) +} |
