diff --git a/modules/todoist/display.go b/modules/todoist/display.go index ca4aeaba2..fa839f719 100644 --- a/modules/todoist/display.go +++ b/modules/todoist/display.go @@ -19,7 +19,7 @@ func (widget *Widget) display() { title := fmt.Sprintf("[green]%s[white]", proj.Project.Name) _, _, width, _ := widget.View.GetRect() - str := widget.settings.common.SigilStr(len(widget.projects), widget.idx, width) + "\n" + str := widget.settings.common.SigilStr(len(widget.projects), widget.Idx, width) + "\n" maxLen := proj.LongestLine() diff --git a/modules/todoist/keyboard.go b/modules/todoist/keyboard.go index b06cfccfd..34479d3b1 100644 --- a/modules/todoist/keyboard.go +++ b/modules/todoist/keyboard.go @@ -6,14 +6,14 @@ func (widget *Widget) initializeKeyboardControls() { widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") widget.SetKeyboardChar("c", widget.Close, "Close item") widget.SetKeyboardChar("d", widget.Delete, "Delete item") - widget.SetKeyboardChar("h", widget.PreviousProject, "Select previous project") + widget.SetKeyboardChar("h", widget.Prev, "Select previous project") widget.SetKeyboardChar("j", widget.Up, "Select previous item") widget.SetKeyboardChar("k", widget.Down, "Select next item") - widget.SetKeyboardChar("l", widget.NextProject, "Select next project") + widget.SetKeyboardChar("l", widget.Next, "Select next project") widget.SetKeyboardChar("r", widget.Refresh, "Refresh widget") widget.SetKeyboardKey(tcell.KeyDown, widget.Down, "Select next item") - widget.SetKeyboardKey(tcell.KeyLeft, widget.PreviousProject, "Select previous project") - widget.SetKeyboardKey(tcell.KeyRight, widget.NextProject, "Select next project") + widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous project") + widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next project") widget.SetKeyboardKey(tcell.KeyUp, widget.Up, "Select previous item") } diff --git a/modules/todoist/widget.go b/modules/todoist/widget.go index a6dae460a..9600e627b 100644 --- a/modules/todoist/widget.go +++ b/modules/todoist/widget.go @@ -11,8 +11,8 @@ import ( type Widget struct { wtf.KeyboardWidget wtf.TextWidget + wtf.MultiSourceWidget - idx int projects []*Project settings *Settings } @@ -20,8 +20,9 @@ type Widget struct { // NewWidget creates a new instance of a widget func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ - KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), - TextWidget: wtf.NewTextWidget(app, settings.common, true), + KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), + TextWidget: wtf.NewTextWidget(app, settings.common, true), + MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "project", "projects"), settings: settings, } @@ -31,6 +32,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * widget.initializeKeyboardControls() widget.View.SetInputCapture(widget.InputCapture) + widget.SetDisplayFunction(widget.display) widget.KeyboardWidget.SetView(widget.View) @@ -40,7 +42,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * /* -------------------- Exported Functions -------------------- */ func (widget *Widget) CurrentProject() *Project { - return widget.ProjectAt(widget.idx) + return widget.ProjectAt(widget.Idx) } func (widget *Widget) ProjectAt(idx int) *Project { @@ -51,24 +53,6 @@ func (widget *Widget) ProjectAt(idx int) *Project { return widget.projects[idx] } -func (w *Widget) NextProject() { - w.idx = w.idx + 1 - if w.idx == len(w.projects) { - w.idx = 0 - } - - w.display() -} - -func (w *Widget) PreviousProject() { - w.idx = w.idx - 1 - if w.idx < 0 { - w.idx = len(w.projects) - 1 - } - - w.display() -} - func (w *Widget) Refresh() { if w.Disabled() || w.CurrentProject() == nil { return diff --git a/wtf/utils.go b/wtf/utils.go index fc743dec4..7334e073c 100644 --- a/wtf/utils.go +++ b/wtf/utils.go @@ -6,6 +6,7 @@ import ( "os/exec" "regexp" "runtime" + "strconv" "strings" "github.com/wtfutil/wtf/utils" @@ -149,7 +150,12 @@ func ToStrs(slice []interface{}) []string { results := []string{} for _, val := range slice { - results = append(results, val.(string)) + switch val.(type) { + case int: + results = append(results, strconv.Itoa(val.(int))) + case string: + results = append(results, val.(string)) + } } return results