Add GUI frontend

This commit is contained in:
2021-08-25 21:18:24 -07:00
parent cbcefb149e
commit b7bd385c43
11 changed files with 536 additions and 8 deletions

65
cmd/itgui/time.go Normal file
View File

@@ -0,0 +1,65 @@
package main
import (
"encoding/json"
"net"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/itd/internal/types"
)
func timeTab(parent fyne.Window) *fyne.Container {
timeEntry := widget.NewEntry()
timeEntry.SetText(time.Now().Format(time.RFC1123))
currentBtn := widget.NewButton("Set Current", func() {
timeEntry.SetText(time.Now().Format(time.RFC1123))
setTime(true)
})
timeBtn := widget.NewButton("Set", func() {
parsedTime, err := time.Parse(time.RFC1123, timeEntry.Text)
if err != nil {
guiErr(err, "Error parsing time string", parent)
return
}
setTime(false, parsedTime)
})
return container.NewVBox(
layout.NewSpacer(),
timeEntry,
currentBtn,
timeBtn,
layout.NewSpacer(),
)
}
// setTime sets the first element in the variadic parameter
// if current is false, otherwise, it sets the current time.
func setTime(current bool, t ...time.Time) error {
conn, err := net.Dial("unix", SockPath)
if err != nil {
return err
}
var data string
if current {
data = "now"
} else {
data = t[0].Format(time.RFC3339)
}
defer conn.Close()
err = json.NewEncoder(conn).Encode(types.Request{
Type: types.ReqTypeSetTime,
Data: data,
})
if err != nil {
return err
}
return nil
}