Added persistence
This commit is contained in:
parent
78b9f1f2e7
commit
23d6ad2ab9
@ -25,11 +25,8 @@ func New(app *tview.Application) *tview.TextView {
|
||||
func refresh(app *tview.Application, view *tview.TextView) {
|
||||
tick := time.NewTicker(interval)
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-tick.C:
|
||||
view.SetText(time.Now().Format(format))
|
||||
app.Draw()
|
||||
}
|
||||
for range tick.C {
|
||||
view.SetText(time.Now().Format(format))
|
||||
app.Draw()
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package editor
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/rivo/tview"
|
||||
)
|
||||
@ -9,6 +12,50 @@ func New(app *tview.Application) *tview.TextArea {
|
||||
view := tview.NewTextArea()
|
||||
view.SetBackgroundColor(tcell.ColorDefault)
|
||||
view.SetTextStyle(tcell.StyleDefault)
|
||||
view.SetText("Having been erased,\nThe document you're seeking\nMust now be retyped.", true)
|
||||
view.SetBorderPadding(0, 0, 1, 1)
|
||||
source := "Having been erased,\nThe document you're seeking\nMust now be retyped."
|
||||
|
||||
home, err := os.UserHomeDir()
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(filepath.Join(home, ".dash"))
|
||||
|
||||
if err == nil {
|
||||
source = string(data)
|
||||
}
|
||||
|
||||
view.SetText(source, true)
|
||||
|
||||
view.SetChangedFunc(func() {
|
||||
source = view.GetText()
|
||||
markDirty(view, true)
|
||||
})
|
||||
|
||||
view.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
||||
if event.Key() == tcell.KeyCtrlS {
|
||||
err := os.WriteFile(filepath.Join(home, ".dash"), []byte(source), 0644)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
markDirty(view, false)
|
||||
return nil
|
||||
}
|
||||
|
||||
return event
|
||||
})
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
func markDirty(view *tview.TextArea, dirty bool) {
|
||||
if dirty {
|
||||
view.SetBackgroundColor(tcell.ColorRed)
|
||||
} else {
|
||||
view.SetBackgroundColor(tcell.ColorDefault)
|
||||
}
|
||||
}
|
||||
|
22
main.go
22
main.go
@ -3,7 +3,7 @@ package main
|
||||
import (
|
||||
"git.akyoto.dev/cli/dash/clock"
|
||||
"git.akyoto.dev/cli/dash/editor"
|
||||
"git.akyoto.dev/cli/dash/empty"
|
||||
//"git.akyoto.dev/cli/dash/empty"
|
||||
"git.akyoto.dev/cli/dash/osinfo"
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/rivo/tview"
|
||||
@ -15,8 +15,8 @@ func main() {
|
||||
header := clock.New(app)
|
||||
main := editor.New(app)
|
||||
footer := osinfo.New(app)
|
||||
left := empty.New(app)
|
||||
right := empty.New(app)
|
||||
//left := empty.New(app)
|
||||
//right := empty.New(app)
|
||||
|
||||
grid := tview.NewGrid()
|
||||
grid.SetRows(3, 0, 3)
|
||||
@ -25,18 +25,20 @@ func main() {
|
||||
grid.SetBackgroundColor(tcell.ColorDefault)
|
||||
|
||||
grid.AddItem(header, 0, 0, 1, 3, 0, 0, false)
|
||||
grid.AddItem(main, 1, 1, 1, 1, 0, 0, false)
|
||||
grid.AddItem(footer, 2, 0, 1, 3, 0, 0, false)
|
||||
|
||||
// Layout for screens narrower than 100 cells (menu and side bar are hidden).
|
||||
grid.AddItem(left, 0, 0, 0, 0, 0, 0, false)
|
||||
grid.AddItem(main, 1, 0, 1, 3, 0, 0, false)
|
||||
grid.AddItem(right, 0, 0, 0, 0, 0, 0, false)
|
||||
//grid.AddItem(left, 0, 0, 0, 0, 0, 0, false)
|
||||
//grid.AddItem(main, 1, 0, 1, 3, 0, 0, false)
|
||||
//grid.AddItem(right, 0, 0, 0, 0, 0, 0, false)
|
||||
|
||||
// Layout for screens wider than 100 cells.
|
||||
grid.AddItem(left, 1, 0, 1, 1, 0, 100, false)
|
||||
grid.AddItem(main, 1, 1, 1, 1, 0, 100, false)
|
||||
grid.AddItem(right, 1, 2, 1, 1, 0, 100, false)
|
||||
// Layout for screens wider than 80 cells.
|
||||
//grid.AddItem(left, 1, 0, 1, 1, 0, 80, false)
|
||||
//grid.AddItem(main, 1, 1, 1, 1, 0, 80, false)
|
||||
//grid.AddItem(right, 1, 2, 1, 1, 0, 80, false)
|
||||
|
||||
app.EnableMouse(true)
|
||||
app.SetRoot(grid, true)
|
||||
app.SetFocus(main)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user