mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Rough draft of adding new items to Todo
This commit is contained in:
15
todo/list.go
15
todo/list.go
@@ -1,8 +1,6 @@
|
||||
package todo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
import ()
|
||||
|
||||
type List struct {
|
||||
Items []*Item
|
||||
@@ -19,7 +17,6 @@ func (list *List) Add(text string) {
|
||||
}
|
||||
|
||||
list.Items = append([]*Item{&item}, list.Items...)
|
||||
fmt.Println("added")
|
||||
}
|
||||
|
||||
func (list *List) Delete() {
|
||||
@@ -77,6 +74,16 @@ func (list *List) Unselect() {
|
||||
list.selected = -1
|
||||
}
|
||||
|
||||
func (list *List) Update(text string) {
|
||||
item := list.Selected()
|
||||
|
||||
if item == nil {
|
||||
return
|
||||
}
|
||||
|
||||
item.Text = text
|
||||
}
|
||||
|
||||
/* -------------------- Sort Interface -------------------- */
|
||||
|
||||
func (list *List) Len() int {
|
||||
|
||||
@@ -66,15 +66,22 @@ func (widget *Widget) editItem() {
|
||||
SetButtonsAlign(tview.AlignCenter).
|
||||
SetButtonTextColor(tview.Styles.PrimaryTextColor)
|
||||
|
||||
form.AddInputField("New text:", widget.selectedText(), 60, nil, nil)
|
||||
form.AddInputField("Edit item:", widget.list.Selected().Text, 60, nil, nil)
|
||||
|
||||
form.AddButton("Save", func() {
|
||||
fld := form.GetFormItem(0)
|
||||
text := fld.(*tview.InputField).GetText()
|
||||
|
||||
widget.updateItem(fld.(*tview.InputField).GetText())
|
||||
widget.list.Update(text)
|
||||
widget.persist()
|
||||
widget.pages.RemovePage("modal")
|
||||
widget.app.SetFocus(widget.View)
|
||||
widget.display()
|
||||
})
|
||||
|
||||
form.AddButton("Cancel", func() {
|
||||
widget.pages.RemovePage("modal")
|
||||
widget.app.SetFocus(widget.View)
|
||||
widget.persist()
|
||||
widget.display()
|
||||
})
|
||||
|
||||
@@ -87,7 +94,37 @@ func (widget *Widget) editItem() {
|
||||
}
|
||||
|
||||
func (widget *Widget) newItem() {
|
||||
_, _, w, h := widget.View.GetInnerRect()
|
||||
|
||||
form := tview.NewForm().
|
||||
SetButtonsAlign(tview.AlignCenter).
|
||||
SetButtonTextColor(tview.Styles.PrimaryTextColor)
|
||||
|
||||
form.AddInputField("New item:", "", 60, nil, nil)
|
||||
|
||||
form.AddButton("Save", func() {
|
||||
fld := form.GetFormItem(0)
|
||||
text := fld.(*tview.InputField).GetText()
|
||||
|
||||
widget.list.Add(text)
|
||||
widget.persist()
|
||||
widget.pages.RemovePage("modal")
|
||||
widget.app.SetFocus(widget.View)
|
||||
widget.display()
|
||||
})
|
||||
|
||||
form.AddButton("Cancel", func() {
|
||||
widget.pages.RemovePage("modal")
|
||||
widget.app.SetFocus(widget.View)
|
||||
widget.display()
|
||||
})
|
||||
|
||||
frame := tview.NewFrame(form).SetBorders(0, 0, 0, 0, 0, 0)
|
||||
frame.SetBorder(true)
|
||||
frame.SetRect(w+20, h+2, 80, 7)
|
||||
|
||||
widget.pages.AddPage("modal", frame, false, true)
|
||||
widget.app.SetFocus(frame)
|
||||
}
|
||||
|
||||
func (widget *Widget) init() {
|
||||
@@ -194,25 +231,3 @@ func (widget *Widget) persist() {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (widget *Widget) selectedText() string {
|
||||
selectedItem := widget.list.Selected()
|
||||
|
||||
if selectedItem == nil {
|
||||
return ""
|
||||
} else {
|
||||
return selectedItem.Text
|
||||
}
|
||||
}
|
||||
|
||||
func (widget *Widget) updateItem(text string) {
|
||||
selectedItem := widget.list.Selected()
|
||||
|
||||
if selectedItem == nil {
|
||||
// Create a new item
|
||||
widget.list.Add(text)
|
||||
} else {
|
||||
// Update the text of the existing item
|
||||
selectedItem.Text = text
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user