View-Only
This commit is contained in:
@@ -43,6 +43,8 @@ type ScreenHome struct {
|
|||||||
menuLayout *w.TopMenuLayout
|
menuLayout *w.TopMenuLayout
|
||||||
menu *w.Menu
|
menu *w.Menu
|
||||||
|
|
||||||
|
openPdsEntry *w.Field
|
||||||
|
|
||||||
layout *w.LinearLayout
|
layout *w.LinearLayout
|
||||||
columns *w.LinearLayout
|
columns *w.LinearLayout
|
||||||
|
|
||||||
@@ -55,14 +57,11 @@ type ScreenHome struct {
|
|||||||
expandedEntries map[string]interface{}
|
expandedEntries map[string]interface{}
|
||||||
recordIdsToNSIDs map[string]syntax.NSID
|
recordIdsToNSIDs map[string]syntax.NSID
|
||||||
|
|
||||||
alert *w.Alert
|
|
||||||
alertLayout *w.LinearLayout
|
|
||||||
|
|
||||||
cli *w.Cli
|
cli *w.Cli
|
||||||
|
|
||||||
|
doOpen bool
|
||||||
isLoading bool
|
isLoading bool
|
||||||
loading *w.Spinner
|
loading *w.Spinner
|
||||||
loadingFrame *w.Text
|
|
||||||
pdsStatus *w.Text
|
pdsStatus *w.Text
|
||||||
|
|
||||||
cursor int
|
cursor int
|
||||||
@@ -75,11 +74,14 @@ func (s *ScreenHome) Init(a *App) {
|
|||||||
s.expandedEntries = make(map[string]interface{})
|
s.expandedEntries = make(map[string]interface{})
|
||||||
s.recordIdsToNSIDs = make(map[string]syntax.NSID)
|
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.isLoading = false
|
||||||
s.loadingFrame.SetText("┤ ├")
|
|
||||||
s.loadingFrame.SetPos(w.Coord{X: 1, Y: 1})
|
|
||||||
s.pdsStatus = w.NewText("home.pdsstatus", s.style.Foreground(tcell.ColorRed))
|
s.pdsStatus = w.NewText("home.pdsstatus", s.style.Foreground(tcell.ColorRed))
|
||||||
s.pdsStatus.SetText("𐄂")
|
s.pdsStatus.SetText("𐄂")
|
||||||
s.pdsStatus.SetPos(w.Coord{X: 2, Y: 1})
|
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.cli = w.NewCli("home.cli", s.style)
|
||||||
s.initCli()
|
s.initCli()
|
||||||
|
s.cli.SetVisible(false)
|
||||||
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.layout = w.NewLinearLayout("home.layout", s.style)
|
s.layout = w.NewLinearLayout("home.layout", s.style)
|
||||||
|
|
||||||
@@ -107,7 +105,7 @@ func (s *ScreenHome) Init(a *App) {
|
|||||||
s.pdsListing.SetBorder(
|
s.pdsListing.SetBorder(
|
||||||
[]rune{'─', '┬', '│', '┴', '─', '└', '│', '┌', '├', '─', '┤', '┬', '│', '┴', '┼'},
|
[]rune{'─', '┬', '│', '┴', '─', '└', '│', '┌', '├', '─', '┤', '┬', '│', '┴', '┼'},
|
||||||
)
|
)
|
||||||
s.pdsListing.SetTitle("─── No PDS Loaded")
|
s.pdsListing.SetTitle(" ")
|
||||||
s.pdsListing.SetOnSelect(s.selectPdsListingEntry)
|
s.pdsListing.SetOnSelect(s.selectPdsListingEntry)
|
||||||
s.pdsListing.SetOnChange(s.updateJsonView)
|
s.pdsListing.SetOnChange(s.updateJsonView)
|
||||||
s.pdsListing.SetVimMode(viper.GetBool(data.KeyVimMode))
|
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 {
|
func (s *ScreenHome) HandleKey(ev *tcell.EventKey) bool {
|
||||||
if s.alert.Visible() {
|
|
||||||
return s.alert.HandleKey(ev)
|
|
||||||
}
|
|
||||||
if ev.Key() == tcell.KeyF12 {
|
if ev.Key() == tcell.KeyF12 {
|
||||||
s.toggleCli()
|
s.toggleCli()
|
||||||
return true
|
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)
|
return s.menuLayout.HandleKey(ev)
|
||||||
}
|
}
|
||||||
@@ -147,12 +153,19 @@ func (s *ScreenHome) HandleTime(ev *tcell.EventTime) {
|
|||||||
s.loading.HandleTime(ev)
|
s.loading.HandleTime(ev)
|
||||||
}
|
}
|
||||||
func (s *ScreenHome) Draw() {
|
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)
|
s.a.DrawWidget(s.menuLayout)
|
||||||
|
if s.doOpen {
|
||||||
|
s.a.DrawWidget(s.openPdsEntry)
|
||||||
|
}
|
||||||
|
|
||||||
// These are outside of the menuLayout
|
// These are outside of the menuLayout
|
||||||
//s.a.DrawWidget(s.loadingFrame)
|
if s.isLoading {
|
||||||
//s.a.DrawWidget(s.loading)
|
s.a.DrawWidget(s.loading)
|
||||||
//s.a.DrawWidget(s.pdsStatus)
|
}
|
||||||
}
|
}
|
||||||
func (s *ScreenHome) Exit() error { return nil }
|
func (s *ScreenHome) Exit() error { return nil }
|
||||||
func (s *ScreenHome) Log(t string, a ...any) {
|
func (s *ScreenHome) Log(t string, a ...any) {
|
||||||
@@ -168,7 +181,13 @@ func (s *ScreenHome) initMenu() {
|
|||||||
}
|
}
|
||||||
s.menuLayout.AddMenuItems(
|
s.menuLayout.AddMenuItems(
|
||||||
s.menuLayout.CreateMenuItem("file", "File", nil, 'f',
|
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.CreateMenuItem("file.reloadpds", "Reload PDS", func() bool {
|
||||||
|
s.menuLayout.ToggleMenu()
|
||||||
if s.activePds == nil {
|
if s.activePds == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -181,6 +200,7 @@ func (s *ScreenHome) initMenu() {
|
|||||||
),
|
),
|
||||||
s.menuLayout.CreateMenuItem("settings", "Settings", nil, 's',
|
s.menuLayout.CreateMenuItem("settings", "Settings", nil, 's',
|
||||||
s.menuLayout.CreateMenuItem("settings.vimmode", vimText, func() bool {
|
s.menuLayout.CreateMenuItem("settings.vimmode", vimText, func() bool {
|
||||||
|
s.menuLayout.ToggleMenu()
|
||||||
viper.Set(data.KeyVimMode, !viper.GetBool(data.KeyVimMode))
|
viper.Set(data.KeyVimMode, !viper.GetBool(data.KeyVimMode))
|
||||||
viper.WriteConfig()
|
viper.WriteConfig()
|
||||||
s.update()
|
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() {
|
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))
|
s.pdsListing.SetVimMode(viper.GetBool(data.KeyVimMode))
|
||||||
vimMI := s.menuLayout.FindItem("settings.vimmode")
|
vimMI := s.menuLayout.FindItem("settings.vimmode")
|
||||||
var vimText = "Enable Vim Mode"
|
var vimText = "Enable Vim Mode"
|
||||||
@@ -265,6 +271,7 @@ func (s *ScreenHome) cliGetPds(args ...string) bool {
|
|||||||
s.cli.Log(err.Error())
|
s.cli.Log(err.Error())
|
||||||
s.isLoading = false
|
s.isLoading = false
|
||||||
}
|
}
|
||||||
|
s.doOpen = false
|
||||||
s.cli.Log("Retrieved: %s (%s)", pds.AtId, pds.Did)
|
s.cli.Log("Retrieved: %s (%s)", pds.AtId, pds.Did)
|
||||||
s.activePds = pds
|
s.activePds = pds
|
||||||
s.expandedEntries = make(map[string]interface{})
|
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
|
go 1.25.1
|
||||||
|
|
||||||
require (
|
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/bluesky-social/indigo v0.0.0-20260120225912-12d69fa4d209
|
||||||
github.com/gdamore/tcell v1.4.1
|
github.com/gdamore/tcell v1.4.1
|
||||||
github.com/ipfs/go-cid v0.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.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 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.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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
|
|||||||
Reference in New Issue
Block a user