View-Only

This commit is contained in:
2026-01-23 15:08:09 -06:00
parent 86ab7e55f3
commit a64184aecf
3 changed files with 54 additions and 43 deletions

View File

@@ -43,6 +43,8 @@ type ScreenHome struct {
menuLayout *w.TopMenuLayout
menu *w.Menu
openPdsEntry *w.Field
layout *w.LinearLayout
columns *w.LinearLayout
@@ -55,15 +57,12 @@ type ScreenHome struct {
expandedEntries map[string]interface{}
recordIdsToNSIDs map[string]syntax.NSID
alert *w.Alert
alertLayout *w.LinearLayout
cli *w.Cli
isLoading bool
loading *w.Spinner
loadingFrame *w.Text
pdsStatus *w.Text
doOpen bool
isLoading bool
loading *w.Spinner
pdsStatus *w.Text
cursor int
}
@@ -75,11 +74,14 @@ func (s *ScreenHome) Init(a *App) {
s.expandedEntries = make(map[string]interface{})
s.recordIdsToNSIDs = make(map[string]syntax.NSID)
s.isLoading = true
s.openPdsEntry = w.NewField("home.openpds.field", s.style)
s.openPdsEntry.SetLabel("ID")
s.openPdsEntry.SetActive(true)
s.openPdsEntry.SetPos(w.Coord{X: 2, Y: 1})
s.openPdsEntry.SetSize(w.Coord{X: 20, Y: 1})
s.doOpen = true
s.loadingFrame = w.NewText("home.loadingframe", s.style)
s.loadingFrame.SetText("┤ ├")
s.loadingFrame.SetPos(w.Coord{X: 1, Y: 1})
s.isLoading = false
s.pdsStatus = w.NewText("home.pdsstatus", s.style.Foreground(tcell.ColorRed))
s.pdsStatus.SetText("𐄂")
s.pdsStatus.SetPos(w.Coord{X: 2, Y: 1})
@@ -92,11 +94,7 @@ func (s *ScreenHome) Init(a *App) {
s.cli = w.NewCli("home.cli", s.style)
s.initCli()
s.alert = w.NewAlert("home.alert", s.style)
s.alert.SetVisible(false)
s.alertLayout = w.NewLinearLayout("home.alertlayout", s.style)
s.alertLayout.Add(s.alert)
s.cli.SetVisible(false)
s.layout = w.NewLinearLayout("home.layout", s.style)
@@ -107,7 +105,7 @@ func (s *ScreenHome) Init(a *App) {
s.pdsListing.SetBorder(
[]rune{'─', '┬', '│', '┴', '─', '└', '│', '┌', '├', '─', '┤', '┬', '│', '┴', '┼'},
)
s.pdsListing.SetTitle("─── No PDS Loaded")
s.pdsListing.SetTitle(" ")
s.pdsListing.SetOnSelect(s.selectPdsListingEntry)
s.pdsListing.SetOnChange(s.updateJsonView)
s.pdsListing.SetVimMode(viper.GetBool(data.KeyVimMode))
@@ -132,13 +130,21 @@ func (s *ScreenHome) HandleResize(ev *tcell.EventResize) {
}
func (s *ScreenHome) HandleKey(ev *tcell.EventKey) bool {
if s.alert.Visible() {
return s.alert.HandleKey(ev)
}
if ev.Key() == tcell.KeyF12 {
s.toggleCli()
return true
}
if s.doOpen {
if ev.Key() == tcell.KeyCtrlU {
s.openPdsEntry.SetValue("")
return true
}
if ev.Key() == tcell.KeyEnter {
return s.cliGetPds("getpds", s.openPdsEntry.Value())
}
return s.openPdsEntry.HandleKey(ev)
}
return s.menuLayout.HandleKey(ev)
}
@@ -147,12 +153,19 @@ func (s *ScreenHome) HandleTime(ev *tcell.EventTime) {
s.loading.HandleTime(ev)
}
func (s *ScreenHome) Draw() {
if s.doOpen {
s.menuLayout.SetStyle(s.style.Foreground(tcell.ColorGray))
}
s.menuLayout.SetStyle(s.style)
s.a.DrawWidget(s.menuLayout)
if s.doOpen {
s.a.DrawWidget(s.openPdsEntry)
}
// These are outside of the menuLayout
//s.a.DrawWidget(s.loadingFrame)
//s.a.DrawWidget(s.loading)
//s.a.DrawWidget(s.pdsStatus)
if s.isLoading {
s.a.DrawWidget(s.loading)
}
}
func (s *ScreenHome) Exit() error { return nil }
func (s *ScreenHome) Log(t string, a ...any) {
@@ -168,7 +181,13 @@ func (s *ScreenHome) initMenu() {
}
s.menuLayout.AddMenuItems(
s.menuLayout.CreateMenuItem("file", "File", nil, 'f',
s.menuLayout.CreateMenuItem("file.openpds", "Open PDS", func() bool {
s.menuLayout.ToggleMenu()
s.doOpen = true
return true
}, 'o'),
s.menuLayout.CreateMenuItem("file.reloadpds", "Reload PDS", func() bool {
s.menuLayout.ToggleMenu()
if s.activePds == nil {
return false
}
@@ -181,6 +200,7 @@ func (s *ScreenHome) initMenu() {
),
s.menuLayout.CreateMenuItem("settings", "Settings", nil, 's',
s.menuLayout.CreateMenuItem("settings.vimmode", vimText, func() bool {
s.menuLayout.ToggleMenu()
viper.Set(data.KeyVimMode, !viper.GetBool(data.KeyVimMode))
viper.WriteConfig()
s.update()
@@ -190,26 +210,12 @@ func (s *ScreenHome) initMenu() {
)
}
func (s *ScreenHome) setPdsStatusLoading() {
s.loading.SetVisible(true)
s.pdsStatus.SetVisible(false)
s.pdsStatus.SetStyle(s.style.Foreground(tcell.ColorLime))
s.pdsStatus.SetText(" ")
}
func (s *ScreenHome) setPdsStatusGood() {
s.loading.SetVisible(false)
s.pdsStatus.SetVisible(true)
s.pdsStatus.SetStyle(s.style.Foreground(tcell.ColorLime))
s.pdsStatus.SetText("✔")
}
func (s *ScreenHome) setPdsStatusBad() {
s.loading.SetVisible(false)
s.pdsStatus.SetVisible(true)
s.pdsStatus.SetStyle(s.style.Foreground(tcell.ColorRed))
s.pdsStatus.SetText("𐄂")
}
func (s *ScreenHome) update() {
if s.doOpen {
s.menuLayout.SetWidget(s.openPdsEntry)
} else {
s.menuLayout.SetWidget(s.layout)
}
s.pdsListing.SetVimMode(viper.GetBool(data.KeyVimMode))
vimMI := s.menuLayout.FindItem("settings.vimmode")
var vimText = "Enable Vim Mode"
@@ -265,6 +271,7 @@ func (s *ScreenHome) cliGetPds(args ...string) bool {
s.cli.Log(err.Error())
s.isLoading = false
}
s.doOpen = false
s.cli.Log("Retrieved: %s (%s)", pds.AtId, pds.Did)
s.activePds = pds
s.expandedEntries = make(map[string]interface{})