From 9a4d0b8b47407136d9a996dd6a3c3a17b8bfcbf9 Mon Sep 17 00:00:00 2001 From: emersion Date: Sun, 19 Jun 2016 18:14:23 +0200 Subject: [PATCH 1/2] Rename static_windows_*.o files to .syso --- link_windows_386.go | 2 +- link_windows_amd64.go | 2 +- static_windows_386.o => static_windows_386.syso | Bin static_windows_amd64.o => static_windows_amd64.syso | Bin 4 files changed, 2 insertions(+), 2 deletions(-) rename static_windows_386.o => static_windows_386.syso (100%) rename static_windows_amd64.o => static_windows_amd64.syso (100%) diff --git a/link_windows_386.go b/link_windows_386.go index 3ea6183..f223ae1 100644 --- a/link_windows_386.go +++ b/link_windows_386.go @@ -2,7 +2,7 @@ package ui -// #cgo LDFLAGS: ${SRCDIR}/static_windows_386.o ${SRCDIR}/libui_windows_386.a ${SRCDIR}/libui_windows_386.res.o +// #cgo LDFLAGS: ${SRCDIR}/libui_windows_386.a ${SRCDIR}/libui_windows_386.res.o // /* note the order; also note the lack of uuid */ // #cgo LDFLAGS: -luser32 -lkernel32 -lusp10 -lgdi32 -lcomctl32 -luxtheme -lmsimg32 -lcomdlg32 -ld2d1 -ldwrite -lole32 -loleaut32 -loleacc -static -static-libgcc -static-libstdc++ import "C" diff --git a/link_windows_amd64.go b/link_windows_amd64.go index 1992ae7..515bbd1 100644 --- a/link_windows_amd64.go +++ b/link_windows_amd64.go @@ -2,7 +2,7 @@ package ui -// #cgo LDFLAGS: ${SRCDIR}/static_windows_amd64.o ${SRCDIR}/libui_windows_amd64.a ${SRCDIR}/libui_windows_amd64.res.o +// #cgo LDFLAGS: ${SRCDIR}/libui_windows_amd64.a ${SRCDIR}/libui_windows_amd64.res.o // /* note the order; also note the lack of uuid */ // #cgo LDFLAGS: -luser32 -lkernel32 -lusp10 -lgdi32 -lcomctl32 -luxtheme -lmsimg32 -lcomdlg32 -ld2d1 -ldwrite -lole32 -loleaut32 -loleacc -static -static-libgcc -static-libstdc++ import "C" diff --git a/static_windows_386.o b/static_windows_386.syso similarity index 100% rename from static_windows_386.o rename to static_windows_386.syso diff --git a/static_windows_amd64.o b/static_windows_amd64.syso similarity index 100% rename from static_windows_amd64.o rename to static_windows_amd64.syso From 63d16cdb0f65a25cd36833790fa3321ba0453a89 Mon Sep 17 00:00:00 2001 From: Jan Kusniar Date: Tue, 21 Jun 2016 14:26:28 +0200 Subject: [PATCH 2/2] MultilineEntry added --- multilineentry.go | 137 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 multilineentry.go diff --git a/multilineentry.go b/multilineentry.go new file mode 100644 index 0000000..9154fa8 --- /dev/null +++ b/multilineentry.go @@ -0,0 +1,137 @@ +// multiline entry + +package ui + +import ( + "unsafe" +) + +// #include "ui.h" +// extern void doMultilineEntryOnChanged(uiMultilineEntry*, void *); +// static inline void realuiMultilineEntryOnChanged(uiMultilineEntry *e) +// { +// uiMultilineEntryOnChanged(e, doMultilineEntryOnChanged, NULL); +// } +import "C" + +// no need to lock this; only the GUI thread can access it +var mEntries = make(map[*C.uiMultilineEntry]*MultilineEntry) + +// MultilineEntry is a Control that represents a space that the user can +// type multiple lines of text into. +type MultilineEntry struct { + c *C.uiControl + e *C.uiMultilineEntry + + onChanged func(*MultilineEntry) +} + +// NewMultilineEntry creates a new MultilineEntry. +func NewMultilineEntry() *MultilineEntry { + e := new(MultilineEntry) + + e.e = C.uiNewMultilineEntry() + e.c = (*C.uiControl)(unsafe.Pointer(e.e)) + + C.realuiMultilineEntryOnChanged(e.e) + mEntries[e.e] = e + + return e +} + +// NewMultilineNonWrappingEntry creates a new MultilineEntry. +func NewMultilineNonWrappingEntry() *MultilineEntry { + e := new(MultilineEntry) + + e.e = C.uiNewNonWrappingMultilineEntry() + e.c = (*C.uiControl)(unsafe.Pointer(e.e)) + + C.realuiMultilineEntryOnChanged(e.e) + mEntries[e.e] = e + + return e +} + +// Destroy destroys the MultilineEntry. +func (e *MultilineEntry) Destroy() { + delete(mEntries, e.e) + C.uiControlDestroy(e.c) +} + +// LibuiControl returns the libui uiControl pointer that backs +// the Window. This is only used by package ui itself and should +// not be called by programs. +func (e *MultilineEntry) LibuiControl() uintptr { + return uintptr(unsafe.Pointer(e.c)) +} + +// Handle returns the OS-level handle associated with this MultilineEntry. +func (e *MultilineEntry) Handle() uintptr { + return uintptr(C.uiControlHandle(e.c)) +} + +// Show shows the MultilineEntry. +func (e *MultilineEntry) Show() { + C.uiControlShow(e.c) +} + +// Hide hides the MultilineEntry. +func (e *MultilineEntry) Hide() { + C.uiControlHide(e.c) +} + +// Enable enables the MultilineEntry. +func (e *MultilineEntry) Enable() { + C.uiControlEnable(e.c) +} + +// Disable disables the MultilineEntry. +func (e *MultilineEntry) Disable() { + C.uiControlDisable(e.c) +} + +// Text returns the MultilineEntry's text. +func (e *MultilineEntry) Text() string { + ctext := C.uiMultilineEntryText(e.e) + text := C.GoString(ctext) + C.uiFreeText(ctext) + return text +} + +// SetText sets the MultilineEntry's text to text. +func (e *MultilineEntry) SetText(text string) { + ctext := C.CString(text) + C.uiMultilineEntrySetText(e.e, ctext) + freestr(ctext) +} + +// Append text to the MultilineEntry's text. +func (e *MultilineEntry) Append(text string) { + ctext := C.CString(text) + C.uiMultilineEntryAppend(e.e, ctext) + freestr(ctext) +} + +// OnChanged registers f to be run when the user makes a change to +// the MultilineEntry. Only one function can be registered at a time. +func (e *MultilineEntry) OnChanged(f func(*MultilineEntry)) { + e.onChanged = f +} + +//export doMultilineEntryOnChanged +func doMultilineEntryOnChanged(ee *C.uiMultilineEntry, data unsafe.Pointer) { + e := mEntries[ee] + if e.onChanged != nil { + e.onChanged(e) + } +} + +// ReadOnly returns whether the MultilineEntry can be changed. +func (e *MultilineEntry) ReadOnly() bool { + return tobool(C.uiMultilineEntryReadOnly(e.e)) +} + +// SetReadOnly sets whether the MultilineEntry can be changed. +func (e *MultilineEntry) SetReadOnly(ro bool) { + C.uiMultilineEntrySetReadOnly(e.e, frombool(ro)) +}