summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-07-07 13:40:51 -0400
committerPietro Gagliardi <[email protected]>2014-07-07 13:40:51 -0400
commit0c5f5a3ac0b8f4ee0de924dfbdc2db07fcb16f53 (patch)
tree0ceb0fda5406ac4736293d0486ef343d6759803e
parent409ecf8ca73754a7987d87dac9057fbac9349f24 (diff)
Added GetNewButton as a helper function and split the other controls to xcontrols pending their addition.
-rw-r--r--redo/controls.go82
-rw-r--r--redo/xcontrols73
2 files changed, 81 insertions, 74 deletions
diff --git a/redo/controls.go b/redo/controls.go
index ad788b3..3c750cb 100644
--- a/redo/controls.go
+++ b/redo/controls.go
@@ -23,81 +23,15 @@ type Button interface {
SetText(text string) *Request
}
-// NewButton creates a new Button with the given label text.
-func NewButton(text string) Button {
+// NewButton returns a Request to create a new Button with the given label text.
+func NewButton(text string) *Request {
return newButton(text)
}
-// Checkbox is a clickable box that indicates some Boolean value.
-type Checkbox interface {
- Control
-
- // OnClicked sets the event handler for when the Checkbox is clicked (to change its toggle state).
- // TODO change to OnCheckChanged or OnToggled?
- OnClicked(func(d Doer))
-
- // Text and SetText are Requests that get and set the Checkbox's label text.
- Text() *Request
- SetText(text string) *Request
-
- // Checked and SetChecked are Requests that get and set the Checkbox's check state.
- Checked() *Request
- SetChecked(checked bool) *Request
-}
-
-// NewCheckbox creates a new Checkbox with the given label text.
-// The Checkbox will be initially unchecked.
-func NewCheckbox(text string) Checkbox {
- return newCheckbox(text)
-}
-
-// Combobox is a drop-down list from which one item can be selected.
-// Each item of a Combobox is a text string.
-// The Combobox can optionally be editable, in which case the user can type in a selection not in the list.
-// [TODO If an item is selected in an editable Combobox, the edit field will be changed ot reflect the selection.]
-type Combobox interface {
- Control
-
- // TODO events
-
- // Append, InsertBefore, and Delete are Requests that change the Combobox's list.
- // InsertBefore and Delete panic if the index passed in is out of range.
- Append(item string) *Request
- InsertBefore(item string, before int) *Request
- Delete(index int) *Request
-
- // SelectedIndex and SelectedText are Requests that return the current Combobox selection, either as the index into the list or as its label.
- // SelectedIndex returns -1 and SelectedText returns an empty string if no selection has been made.
- // If the Combobox is editable, SelectedIndex returns -1 if the user has entered their own string, in which case SelectedText will return that string.
- SelectedIndex() *Request
- SelectedText() *Request
-
- // SelectIndex is a Request that selects an index from the list.
- // SelectIndex panics if the given index is out of range.
- // [TODO SelectText or SetCustomText]
- SelectIndex(index int) *Request
-
- // Len is a Request that returns the number of items in the list.
- // At is a Request that returns a given item's text.
- // At panics if the given index is out of range.
- Len() *Request
- At(index int) *Request
+// GetNewButton is like NewButton but sends the Request along the given Doer and returns the resultant Button.
+// Example:
+// b := ui.GetNewButton(ui.Do, "OK")
+func GetNewButton(c Doer, text string) Button {
+ c <- newButton(text)
+ return (<-c.resp).(Button)
}
-
-// NewCombobox creates a new Combobox with the given items.
-// The Checkbox will have nothing selected initially.
-func NewCombobox(items ...string) Combobox {
- return newCombobox(items)
-}
-
-// NewEditableCombobox creates a new editable Combobox with the given items.
-// The Combobox will have nothing selected initially and no custom text initially.
-func NewEditableCombobox(items ...string) Combobox {
- return newEditableCombobox(items)
-}
-
-// LineEdit
-// Label
-// Listox
-// ProgressBar
-// (Area, Stack, and Grid will remain in their own file)
diff --git a/redo/xcontrols b/redo/xcontrols
new file mode 100644
index 0000000..974c958
--- /dev/null
+++ b/redo/xcontrols
@@ -0,0 +1,73 @@
+// Checkbox is a clickable box that indicates some Boolean value.
+type Checkbox interface {
+ Control
+
+ // OnClicked sets the event handler for when the Checkbox is clicked (to change its toggle state).
+ // TODO change to OnCheckChanged or OnToggled?
+ OnClicked(func(d Doer))
+
+ // Text and SetText are Requests that get and set the Checkbox's label text.
+ Text() *Request
+ SetText(text string) *Request
+
+ // Checked and SetChecked are Requests that get and set the Checkbox's check state.
+ Checked() *Request
+ SetChecked(checked bool) *Request
+}
+
+// NewCheckbox creates a new Checkbox with the given label text.
+// The Checkbox will be initially unchecked.
+func NewCheckbox(text string) Checkbox {
+ return newCheckbox(text)
+}
+
+// Combobox is a drop-down list from which one item can be selected.
+// Each item of a Combobox is a text string.
+// The Combobox can optionally be editable, in which case the user can type in a selection not in the list.
+// [TODO If an item is selected in an editable Combobox, the edit field will be changed ot reflect the selection.]
+type Combobox interface {
+ Control
+
+ // TODO events
+
+ // Append, InsertBefore, and Delete are Requests that change the Combobox's list.
+ // InsertBefore and Delete panic if the index passed in is out of range.
+ Append(item string) *Request
+ InsertBefore(item string, before int) *Request
+ Delete(index int) *Request
+
+ // SelectedIndex and SelectedText are Requests that return the current Combobox selection, either as the index into the list or as its label.
+ // SelectedIndex returns -1 and SelectedText returns an empty string if no selection has been made.
+ // If the Combobox is editable, SelectedIndex returns -1 if the user has entered their own string, in which case SelectedText will return that string.
+ SelectedIndex() *Request
+ SelectedText() *Request
+
+ // SelectIndex is a Request that selects an index from the list.
+ // SelectIndex panics if the given index is out of range.
+ // [TODO SelectText or SetCustomText]
+ SelectIndex(index int) *Request
+
+ // Len is a Request that returns the number of items in the list.
+ // At is a Request that returns a given item's text.
+ // At panics if the given index is out of range.
+ Len() *Request
+ At(index int) *Request
+}
+
+// NewCombobox creates a new Combobox with the given items.
+// The Checkbox will have nothing selected initially.
+func NewCombobox(items ...string) Combobox {
+ return newCombobox(items)
+}
+
+// NewEditableCombobox creates a new editable Combobox with the given items.
+// The Combobox will have nothing selected initially and no custom text initially.
+func NewEditableCombobox(items ...string) Combobox {
+ return newEditableCombobox(items)
+}
+
+// LineEdit
+// Label
+// Listox
+// ProgressBar
+// (Area, Stack, and Grid will remain in their own file)