View-Only
This commit is contained in:
@@ -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{})
|
||||
|
||||
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module git.bullercodeworks.com/brian/expds
|
||||
go 1.25.1
|
||||
|
||||
require (
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.1
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.3
|
||||
github.com/bluesky-social/indigo v0.0.0-20260120225912-12d69fa4d209
|
||||
github.com/gdamore/tcell v1.4.1
|
||||
github.com/ipfs/go-cid v0.4.1
|
||||
|
||||
4
go.sum
4
go.sum
@@ -6,6 +6,10 @@ git.bullercodeworks.com/brian/tcell-widgets v0.2.0 h1:f6ZYHdz/lZsIHf770dviuRenWA
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.0/go.mod h1:3TlKbuGjY8nrKL5Qcp28h+KnEsXBl3iCwACTy79bdPg=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.1 h1:f7rvveTXf2U3XdTbL/1h3lSPt3NnKa7dCgzXYeMX/Go=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.1/go.mod h1:3TlKbuGjY8nrKL5Qcp28h+KnEsXBl3iCwACTy79bdPg=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.2 h1:DcZYyGMv5U/TGSAj8CpxfrYufPa2SPYsncd7Fnl8EGg=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.2/go.mod h1:3TlKbuGjY8nrKL5Qcp28h+KnEsXBl3iCwACTy79bdPg=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.3 h1:/57GmrSDru27lhkm13q/sh2xLryayvQcp7MrSpixIKo=
|
||||
git.bullercodeworks.com/brian/tcell-widgets v0.2.3/go.mod h1:3TlKbuGjY8nrKL5Qcp28h+KnEsXBl3iCwACTy79bdPg=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
|
||||
Reference in New Issue
Block a user