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:
parent
c63d92a1f7
commit
4a30de5d51
15
todo/list.go
15
todo/list.go
@ -1,8 +1,6 @@
|
|||||||
package todo
|
package todo
|
||||||
|
|
||||||
import (
|
import ()
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
type List struct {
|
type List struct {
|
||||||
Items []*Item
|
Items []*Item
|
||||||
@ -19,7 +17,6 @@ func (list *List) Add(text string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
list.Items = append([]*Item{&item}, list.Items...)
|
list.Items = append([]*Item{&item}, list.Items...)
|
||||||
fmt.Println("added")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (list *List) Delete() {
|
func (list *List) Delete() {
|
||||||
@ -77,6 +74,16 @@ func (list *List) Unselect() {
|
|||||||
list.selected = -1
|
list.selected = -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (list *List) Update(text string) {
|
||||||
|
item := list.Selected()
|
||||||
|
|
||||||
|
if item == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
item.Text = text
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------- Sort Interface -------------------- */
|
/* -------------------- Sort Interface -------------------- */
|
||||||
|
|
||||||
func (list *List) Len() int {
|
func (list *List) Len() int {
|
||||||
|
@ -66,15 +66,22 @@ func (widget *Widget) editItem() {
|
|||||||
SetButtonsAlign(tview.AlignCenter).
|
SetButtonsAlign(tview.AlignCenter).
|
||||||
SetButtonTextColor(tview.Styles.PrimaryTextColor)
|
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() {
|
form.AddButton("Save", func() {
|
||||||
fld := form.GetFormItem(0)
|
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.pages.RemovePage("modal")
|
||||||
widget.app.SetFocus(widget.View)
|
widget.app.SetFocus(widget.View)
|
||||||
widget.persist()
|
|
||||||
widget.display()
|
widget.display()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -87,7 +94,37 @@ func (widget *Widget) editItem() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Widget) newItem() {
|
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() {
|
func (widget *Widget) init() {
|
||||||
@ -194,25 +231,3 @@ func (widget *Widget) persist() {
|
|||||||
panic(err)
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -17,6 +17,10 @@ type FocusTracker struct {
|
|||||||
// Next sets the focus on the next widget in the widget list. If the current widget is
|
// Next sets the focus on the next widget in the widget list. If the current widget is
|
||||||
// the last widget, sets focus on the first widget.
|
// the last widget, sets focus on the first widget.
|
||||||
func (tracker *FocusTracker) Next() {
|
func (tracker *FocusTracker) Next() {
|
||||||
|
//if tracker.widgetHasFocus() == false {
|
||||||
|
//return
|
||||||
|
//}
|
||||||
|
|
||||||
tracker.blur(tracker.Idx)
|
tracker.blur(tracker.Idx)
|
||||||
tracker.increment()
|
tracker.increment()
|
||||||
tracker.focus(tracker.Idx)
|
tracker.focus(tracker.Idx)
|
||||||
@ -30,12 +34,16 @@ func (tracker *FocusTracker) None() {
|
|||||||
// Prev sets the focus on the previous widget in the widget list. If the current widget is
|
// Prev sets the focus on the previous widget in the widget list. If the current widget is
|
||||||
// the last widget, sets focus on the last widget.
|
// the last widget, sets focus on the last widget.
|
||||||
func (tracker *FocusTracker) Prev() {
|
func (tracker *FocusTracker) Prev() {
|
||||||
|
//if tracker.widgetHasFocus() == false {
|
||||||
|
//return
|
||||||
|
//}
|
||||||
|
|
||||||
tracker.blur(tracker.Idx)
|
tracker.blur(tracker.Idx)
|
||||||
tracker.decrement()
|
tracker.decrement()
|
||||||
tracker.focus(tracker.Idx)
|
tracker.focus(tracker.Idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------- Exported Functions -------------------- */
|
/* -------------------- Unexported Functions -------------------- */
|
||||||
|
|
||||||
func (tracker *FocusTracker) blur(idx int) {
|
func (tracker *FocusTracker) blur(idx int) {
|
||||||
view := tracker.Widgets[idx].TextView()
|
view := tracker.Widgets[idx].TextView()
|
||||||
@ -64,3 +72,15 @@ func (tracker *FocusTracker) increment() {
|
|||||||
tracker.Idx = 0
|
tracker.Idx = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// widgetHasFocus returns true if one of the widgets currently has the app's focus,
|
||||||
|
// false if none of them do (ie: perhaps a modal dialog currently has it instead)
|
||||||
|
//func (tracker *FocusTracker) widgetHasFocus() bool {
|
||||||
|
//for _, widget := range tracker.Widgets {
|
||||||
|
//if widget.TextView() == tracker.App.GetFocus() {
|
||||||
|
//return true
|
||||||
|
//}
|
||||||
|
//}
|
||||||
|
|
||||||
|
//return false
|
||||||
|
//}
|
||||||
|
@ -66,6 +66,7 @@ func NamesFromEmails(emails []string) []string {
|
|||||||
return names
|
return names
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OpenFile opens the file defined in `path` via the operating system
|
||||||
func OpenFile(path string) {
|
func OpenFile(path string) {
|
||||||
confDir, _ := ConfigDir()
|
confDir, _ := ConfigDir()
|
||||||
filePath := fmt.Sprintf("%s/%s", confDir, path)
|
filePath := fmt.Sprintf("%s/%s", confDir, path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user