1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

WIP Very rudimentary modal showing up

This commit is contained in:
Chris Cummer 2018-05-03 08:56:15 -07:00
parent 4727255df6
commit 6ccdbabec9
3 changed files with 80 additions and 13 deletions

View File

@ -39,7 +39,7 @@ func (widget *Widget) openPRs(repo *GithubRepo, username string) string {
user := *pr.User user := *pr.User
if *user.Login == username { if *user.Login == username {
str = str + fmt.Sprintf(" [green]%d[white] %s\n", *pr.Number, *pr.Title) str = str + fmt.Sprintf(" [green]%4d[white] %s\n", *pr.Number, *pr.Title)
} }
} }

View File

@ -15,6 +15,15 @@ import (
// Config is a pointer to the global config object // Config is a pointer to the global config object
var Config *config.Config var Config *config.Config
const helpText = `
Todo
h - Displays the help text
o - Opens the todo file in the operating system
space - checks an item on or off
`
type Widget struct { type Widget struct {
wtf.TextWidget wtf.TextWidget
@ -76,21 +85,17 @@ func (widget *Widget) editItem() {
widget.modalFocus(form) widget.modalFocus(form)
} }
func (widget *Widget) newItem() { func (widget *Widget) help() {
form := widget.modalForm("New:", "") cancelFn := func() {
widget.pages.RemovePage("billboard")
saveFctn := func() {
text := form.GetFormItem(0).(*tview.InputField).GetText()
widget.list.Add(text)
widget.persist()
widget.pages.RemovePage("modal")
widget.app.SetFocus(widget.View) widget.app.SetFocus(widget.View)
widget.display() widget.display()
} }
widget.addButtons(form, saveFctn) billboard := wtf.NewBillboardModal(helpText, cancelFn)
widget.modalFocus(form)
widget.pages.AddPage("billboard", billboard, false, true)
widget.app.SetFocus(billboard)
} }
func (widget *Widget) init() { func (widget *Widget) init() {
@ -110,7 +115,7 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return nil return nil
case "h": case "h":
// Show help menu // Show help menu
fmt.Println("HELP!") widget.help()
return nil return nil
case "j": case "j":
// Select the next item down // Select the next item down
@ -198,6 +203,23 @@ func (widget *Widget) persist() {
} }
} }
func (widget *Widget) newItem() {
form := widget.modalForm("New:", "")
saveFctn := func() {
text := form.GetFormItem(0).(*tview.InputField).GetText()
widget.list.Add(text)
widget.persist()
widget.pages.RemovePage("modal")
widget.app.SetFocus(widget.View)
widget.display()
}
widget.addButtons(form, saveFctn)
widget.modalFocus(form)
}
/* -------------------- Modal Form -------------------- */ /* -------------------- Modal Form -------------------- */
func (widget *Widget) addButtons(form *tview.Form, saveFctn func()) { func (widget *Widget) addButtons(form *tview.Form, saveFctn func()) {

45
wtf/billboard_modal.go Normal file
View File

@ -0,0 +1,45 @@
package wtf
import (
"github.com/gdamore/tcell"
"github.com/rivo/tview"
)
type BillboardModal struct{}
func NewBillboardModal(text string, cancelFn func()) *tview.Frame {
modal := BillboardModal{}
frame := modal.build(cancelFn)
frame.AddText(text, false, tview.AlignLeft, tcell.ColorWhite)
return frame
}
/* -------------------- Unexported Functions -------------------- */
func (modal *BillboardModal) build(cancelFn func()) *tview.Frame {
form := modal.buildForm(cancelFn)
frame := modal.buildFrame(form)
return frame
}
func (modal *BillboardModal) buildForm(cancelFn func()) *tview.Form {
form := tview.NewForm().
SetButtonsAlign(tview.AlignCenter).
SetButtonTextColor(tview.Styles.PrimaryTextColor)
form.AddButton("Cancel", cancelFn)
return form
}
func (modal *BillboardModal) buildFrame(form *tview.Form) *tview.Frame {
frame := tview.NewFrame(form).SetBorders(0, 0, 0, 0, 0, 0)
frame.SetBorder(true)
frame.SetRect(20, 20, 80, 20)
return frame
}