diff options
Diffstat (limited to 'multilineentry.go')
| -rw-r--r-- | multilineentry.go | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/multilineentry.go b/multilineentry.go deleted file mode 100644 index 88a75c4..0000000 --- a/multilineentry.go +++ /dev/null @@ -1,97 +0,0 @@ -// 12 december 2015 - -// TODO typing in entry in OS X crashes libui -// I've had similar issues with checkboxes on libui -// something's wrong with NSMapTable - -package ui - -import ( - "unsafe" -) - -// #include "ui.h" -// extern void doMultilineEntryOnChanged(uiMultilineEntry *, void *); -// // see golang/go#19835 -// typedef void (*multilineEntryCallback)(uiMultilineEntry *, void *); -import "C" - -// MultilineEntry is a Control that represents a space that the user -// can type multiple lines of text into. -type MultilineEntry struct { - ControlBase - e *C.uiMultilineEntry - onChanged func(*MultilineEntry) -} - -func finishNewMultilineEntry(ee *C.uiMultilineEntry) *MultilineEntry { - m := new(MultilineEntry) - - m.e = ee - - C.uiMultilineEntryOnChanged(m.e, C.multilineEntryCallback(C.doMultilineEntryOnChanged), nil) - - m.ControlBase = NewControlBase(m, uintptr(unsafe.Pointer(m.e))) - return m -} - -// NewMultilineEntry creates a new MultilineEntry. -// The MultilineEntry soft-word-wraps and has no horizontal -// scrollbar. -func NewMultilineEntry() *MultilineEntry { - return finishNewMultilineEntry(C.uiNewMultilineEntry()) -} - -// NewNonWrappingMultilineEntry creates a new MultilineEntry. -// The MultilineEntry does not word-wrap and thus has horizontal -// scrollbar. -func NewNonWrappingMultilineEntry() *MultilineEntry { - return finishNewMultilineEntry(C.uiNewNonWrappingMultilineEntry()) -} - -// Text returns the MultilineEntry's text. -func (m *MultilineEntry) Text() string { - ctext := C.uiMultilineEntryText(m.e) - text := C.GoString(ctext) - C.uiFreeText(ctext) - return text -} - -// SetText sets the MultilineEntry's text to text. -func (m *MultilineEntry) SetText(text string) { - ctext := C.CString(text) - C.uiMultilineEntrySetText(m.e, ctext) - freestr(ctext) -} - -// Append adds text to the end of the MultilineEntry's text. -// TODO selection and scroll behavior -func (m *MultilineEntry) Append(text string) { - ctext := C.CString(text) - C.uiMultilineEntryAppend(m.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 (m *MultilineEntry) OnChanged(f func(*MultilineEntry)) { - m.onChanged = f -} - -//export doMultilineEntryOnChanged -func doMultilineEntryOnChanged(ee *C.uiMultilineEntry, data unsafe.Pointer) { - m := ControlFromLibui(uintptr(unsafe.Pointer(ee))).(*MultilineEntry) - if m.onChanged != nil { - m.onChanged(m) - } -} - -// ReadOnly returns whether the MultilineEntry can be changed. -func (m *MultilineEntry) ReadOnly() bool { - return tobool(C.uiMultilineEntryReadOnly(m.e)) -} - -// SetReadOnly sets whether the MultilineEntry can be changed. -func (m *MultilineEntry) SetReadOnly(ro bool) { - C.uiMultilineEntrySetReadOnly(m.e, frombool(ro)) -} |
