summaryrefslogtreecommitdiff
path: root/lineedit.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-14 15:00:59 -0500
committerPietro Gagliardi <[email protected]>2014-02-14 15:00:59 -0500
commit681afdf0adfc42c64cf5dd898ec17988a31f9cb7 (patch)
treeeb4c357433cb361db4f5328a1b3fb058feab5d86 /lineedit.go
parentfbba8a581c1f0af9bc26baec02552f3453bca8f8 (diff)
Added LineEdit.
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)
+}