diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-14 15:00:59 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-14 15:00:59 -0500 |
| commit | 681afdf0adfc42c64cf5dd898ec17988a31f9cb7 (patch) | |
| tree | eb4c357433cb361db4f5328a1b3fb058feab5d86 /lineedit.go | |
| parent | fbba8a581c1f0af9bc26baec02552f3453bca8f8 (diff) | |
Added LineEdit.
Diffstat (limited to 'lineedit.go')
| -rw-r--r-- | lineedit.go | 58 |
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) +} |
