Update dependencies

Resolves #8.
This commit is contained in:
Trevor Slocum 2021-07-10 08:27:07 -07:00
parent 0a993faea6
commit 86bb8d9ff4
7 changed files with 75 additions and 102 deletions

View File

@ -1,3 +1,6 @@
0.3.1
- Update dependencies
0.3.0
- Migrate to code.rocketnine.space

View File

@ -9,10 +9,10 @@ import (
)
var (
app *cview.Application
inputView *cview.InputField
entryList *optionsList
appDetailsView *cview.TextView
app *cview.Application
inputView *cview.InputField
entryList *cview.List
detailView *cview.TextView
closedTUI bool
)
@ -65,8 +65,6 @@ func (r *optionsList) Draw(screen tcell.Screen) {
}
tv := r.TextView
tv.SetBackgroundColor(tcell.ColorDefault)
tv.SetTextColor(tcell.ColorDefault)
tv.SetText(b.String())
tv.Highlight("gmenu")
tv.ScrollToBeginning()
@ -76,6 +74,13 @@ func (r *optionsList) Draw(screen tcell.Screen) {
func initTUI() (*cview.Application, error) {
app = cview.NewApplication()
// TODO this breaks highlighting the line
/*
cview.Styles.PrimitiveBackgroundColor = tcell.ColorDefault
cview.Styles.PrimaryTextColor = tcell.ColorDefault
cview.Styles.ScrollBarColor = tcell.ColorDefault
*/
inputView = cview.NewInputField()
inputView.SetLabel("")
inputView.SetFieldWidth(0)
@ -85,78 +90,41 @@ func initTUI() (*cview.Application, error) {
gmenu.SetInput(text)
})
entryList = newOptionsList(nil)
entryList = cview.NewList()
entryList.ShowSecondaryText(false)
entryList.SetHighlightFullLine(true)
grid := cview.NewGrid()
grid.SetBorders(false)
grid.SetRows(1, -1)
appDetailsView = cview.NewTextView()
appDetailsView.SetTextAlign(cview.AlignLeft)
appDetailsView.SetWrap(true)
appDetailsView.SetWordWrap(true)
appDetailsView.SetBackgroundColor(tcell.ColorDefault)
appDetailsView.SetTextColor(tcell.ColorDefault)
detailView = cview.NewTextView()
detailView.SetTextAlign(cview.AlignLeft)
detailView.SetWrap(true)
detailView.SetWordWrap(true)
if config.HideAppDetails {
grid.SetColumns(-1)
grid.AddItem(inputView, 0, 0, 1, 1, 0, 0, true)
grid.AddItem(entryList, 1, 0, 1, 1, 0, 0, false)
} else {
grid.SetColumns(-1, -1)
box := cview.NewBox()
box.SetVisible(false)
grid.SetColumns(-1, 1, -1)
grid.AddItem(inputView, 0, 0, 1, 2, 0, 0, true)
grid.AddItem(entryList, 1, 0, 1, 1, 0, 0, false)
grid.AddItem(appDetailsView, 1, 1, 1, 1, 0, 0, false)
grid.AddItem(box, 1, 1, 1, 1, 0, 0, false)
grid.AddItem(detailView, 1, 2, 1, 1, 0, 0, false)
}
app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
defer app.QueueUpdateDraw(updateEntryInfo)
if event.Key() == tcell.KeyUp {
if entryList.origin > 0 && entryList.selected == entryList.origin {
entryList.origin--
}
if entryList.selected > 0 {
entryList.selected--
}
event = nil
} else if event.Key() == tcell.KeyDown {
if entryList.selected < len(entryList.options)-1 {
entryList.selected++
if entryList.selected > entryList.origin+entryList.shown-1 {
entryList.origin++
}
}
event = nil
} else if event.Key() == tcell.KeyPgUp {
if entryList.origin == 0 {
entryList.selected = 0
return nil
}
entryList.origin -= entryList.shown - 2
if entryList.origin < 0 {
entryList.origin = 0
}
entryList.selected = entryList.origin
return nil
} else if event.Key() == tcell.KeyPgDn {
numEntries := len(gmenu.FilteredEntries)
if entryList.origin >= numEntries-entryList.shown {
entryList.selected = numEntries - 1
return nil
}
entryList.origin += entryList.shown - 2
if entryList.origin > numEntries-entryList.shown {
entryList.origin = numEntries - entryList.shown
}
entryList.selected = entryList.origin
if event.Key() == tcell.KeyUp || event.Key() == tcell.KeyDown || event.Key() == tcell.KeyPgUp || event.Key() == tcell.KeyPgDn {
entryList.InputHandler()(event, func(p cview.Primitive) {
app.SetFocus(p)
})
return nil
} else if event.Key() == tcell.KeyEnter || event.Rune() == '\n' {
runInTerminal := event.Modifiers()&tcell.ModAlt > 0
@ -173,8 +141,15 @@ func initTUI() (*cview.Application, error) {
app.SetRoot(grid, true)
go gmenu.HandleInput(updateEntries)
updateEntries("")
go gmenu.HandleInput(func(input string) {
gmenu.FilterEntries()
app.QueueUpdateDraw(updateEntryInfo)
})
gmenu.SetInput("")
app.SetFocus(entryList)
return app, nil
}

View File

@ -5,6 +5,7 @@ import (
"fmt"
"strings"
"code.rocketnine.space/tslocum/cview"
"code.rocketnine.space/tslocum/desktop"
"code.rocketnine.space/tslocum/gmenu/pkg/gmenu"
"github.com/kballard/go-shellquote"
@ -13,17 +14,18 @@ import (
func updateEntries(input string) {
gmenu.FilterEntries()
entryList.selected = 0
entryList.origin = 0
defer app.QueueUpdateDraw(updateEntryInfo)
entryList.Clear()
entryList.SetCurrentItem(0)
entryList.SetOffset(0, 0)
entryList.options = nil
for _, entry := range gmenu.FilteredEntries {
entryList.options = append(entryList.options, entry.Label)
entryList.AddItem(cview.NewListItem(entry.Label))
}
if input != "" {
entryList.options = append(entryList.options, input)
entryList.AddItem(cview.NewListItem(input))
}
app.QueueUpdateDraw(updateEntryInfo)
}
func selectedIndex() int {
@ -31,7 +33,7 @@ func selectedIndex() int {
return -1
}
return entryList.selected
return entryList.GetCurrentItemIndex()
}
func selectedEntry() *desktop.Entry {
@ -64,7 +66,7 @@ func updateEntryInfo() {
comLine = "Shell command"
}
appDetailsView.SetText(exLine + "\n\n" + comLine)
detailView.SetText(exLine + "\n\n" + comLine)
}
func listSelect(runInTerminal bool) error {

View File

@ -19,9 +19,6 @@ func initWindow(application *gtk.Application) *gtk.ApplicationWindow {
w.Connect("destroy", func() {
os.Exit(0)
})
if err != nil {
log.Fatal("failed to create application window:", err)
}
w.SetTitle("gmenu")
w.SetDecorated(false)

View File

@ -83,7 +83,7 @@ func load() {
f := func() {
updateList(input)
}
glib.IdleAdd(f)
glib.IdleAddPriority(glib.PRIORITY_HIGH_IDLE, f)
})
loaded <- true

14
go.mod
View File

@ -3,13 +3,11 @@ module code.rocketnine.space/tslocum/gmenu
go 1.12
require (
code.rocketnine.space/tslocum/cview v1.5.4
code.rocketnine.space/tslocum/desktop v0.1.5
github.com/gdamore/tcell/v2 v2.2.1-0.20210305060500-f4d402906fa3
github.com/gotk3/gotk3 v0.5.3-0.20210405165307-86f85cbecd0b
code.rocketnine.space/tslocum/cview v1.5.6
code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298
github.com/gdamore/tcell/v2 v2.3.11
github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/lithammer/fuzzysearch v1.1.1
github.com/mattn/go-isatty v0.0.12
golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0 // indirect
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 // indirect
github.com/lithammer/fuzzysearch v1.1.2
github.com/mattn/go-isatty v0.0.13
)

40
go.sum
View File

@ -1,44 +1,42 @@
code.rocketnine.space/tslocum/cbind v0.1.5 h1:i6NkeLLNPNMS4NWNi3302Ay3zSU6MrqOT+yJskiodxE=
code.rocketnine.space/tslocum/cbind v0.1.5/go.mod h1:LtfqJTzM7qhg88nAvNhx+VnTjZ0SXBJtxBObbfBWo/M=
code.rocketnine.space/tslocum/cview v1.5.4 h1:zBUFAanViudrAw8ZCqNxaufqrYL6a7F1AkkIClXIzYo=
code.rocketnine.space/tslocum/cview v1.5.4/go.mod h1:JjgoZi3b528SaV923oQq14PGUCTE/g/6iggnDUxsChE=
code.rocketnine.space/tslocum/desktop v0.1.5 h1:GXZpPo8KH8M24Juu0F/UTfXgOnya0MAAnCQByBpFGz4=
code.rocketnine.space/tslocum/desktop v0.1.5/go.mod h1:6IwP59rJ44vga/frr123meFdpWU0xMZlTq8gcOhVKGI=
code.rocketnine.space/tslocum/cview v1.5.6 h1:W0HJFIIgly3LzYoTitZIIaYDDqW0u/qmA0B6jWzw6R0=
code.rocketnine.space/tslocum/cview v1.5.6/go.mod h1:RogJMObbKuGiP8+9WsFsHpPeQQqgkCXgvTLxh7IH5eE=
code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298 h1:tuG22JOMMVlMl+ofRGIJFCTwzs+CclO/XZh7qEPXnzk=
code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298/go.mod h1:6IwP59rJ44vga/frr123meFdpWU0xMZlTq8gcOhVKGI=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/tcell/v2 v2.2.0/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU=
github.com/gdamore/tcell/v2 v2.2.1-0.20210305060500-f4d402906fa3 h1:PqyGpJlv98ynqEPq5MMiT+hcUPPvIomSS0Rnmy5Tl9A=
github.com/gdamore/tcell/v2 v2.2.1-0.20210305060500-f4d402906fa3/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU=
github.com/gotk3/gotk3 v0.5.3-0.20210405165307-86f85cbecd0b h1:KXbrFonfNw1xdc2CeUWYPMir0wXr8ejQlKlClQxM1Lc=
github.com/gotk3/gotk3 v0.5.3-0.20210405165307-86f85cbecd0b/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
github.com/gdamore/tcell/v2 v2.3.11 h1:ECO6WqHGbKZ3HrSL7bG/zArMCmLaNr5vcjjMVnLHpzc=
github.com/gdamore/tcell/v2 v2.3.11/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU=
github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774 h1:IJZW/ruK8Z0nDlpJ4Qj4Ekm2mR39OR0/eFY1pVRaDbM=
github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/lithammer/fuzzysearch v1.1.1 h1:8F9OAV2xPuYblToVohjanztdnPjbtA0MLgMvDKQ0Z08=
github.com/lithammer/fuzzysearch v1.1.1/go.mod h1:H2bng+w5gsR7NlfIJM8ElGZI0sX6C/9uzGqicVXGU6c=
github.com/lithammer/fuzzysearch v1.1.2 h1:ePUtm14xKxbpCxozcFbIDRtvANxnVnE+RKpJUqkr2gA=
github.com/lithammer/fuzzysearch v1.1.2/go.mod h1:v6tYW/9kpfV6LNcweXdSjQsfCku/1M/oObmSox1fzP8=
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210309040221-94ec62e08169/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0 h1:g9s1Ppvvun/fI+BptTMj909BBIcGrzQ32k9FNlcevOE=
golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210317153231-de623e64d2a6/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 h1:VqE9gduFZ4dbR7XoL77lHFp0/DyDUBKSXK7CMFkVcV0=
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=