summaryrefslogtreecommitdiff
path: root/lineedit.go
diff options
context:
space:
mode:
Diffstat (limited to 'lineedit.go')
-rw-r--r--lineedit.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/lineedit.go b/lineedit.go
new file mode 100644
index 0000000..a8c9057
--- /dev/null
+++ b/lineedit.go
@@ -0,0 +1,58 @@
+// 14 february 2014
+//package ui
+package main
+
+import (
+ "sync"
+)
+
+// A LineEdit is a control which allows you to enter a single line of text.
+type LineEdit struct {
+ // TODO Typing event
+
+ lock sync.Mutex
+ created bool
+ sysData *sysData
+ initText string
+}
+
+// NewLineEdit makes a new LineEdit with the specified text.
+func NewLineEdit(text string) *LineEdit {
+ return &LineEdit{
+ sysData: mksysdata(c_lineedit),
+ initText: text,
+ }
+}
+
+// TODO SetText
+
+// Text returns the LineEdit's text.
+func (l *LineEdit) Text() (string, error) {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+
+ if l.created {
+ return l.sysData.text()
+ }
+ return l.initText, nil
+}
+
+// TODO adorn errors with what failed
+func (l *LineEdit) make(window *sysData) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+
+ err := l.sysData.make(l.initText, 300, 300, window)
+ if err != nil {
+ return err
+ }
+ l.created = true
+ return nil
+}
+
+func (l *LineEdit) setRect(x int, y int, width int, height int) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+
+ return l.sysData.setRect(x, y, width, height)
+}