mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-03 00:57:52 +02:00
continue refactor of menu panel
This commit is contained in:
@ -15,7 +15,7 @@ func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error {
|
|||||||
|
|
||||||
menuItems := []*menuItem{
|
menuItems := []*menuItem{
|
||||||
{
|
{
|
||||||
displayStrings: []string{gui.Tr.SLocalize("discardAllChanges")},
|
displayString: gui.Tr.SLocalize("discardAllChanges"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
if err := gui.GitCommand.DiscardAllFileChanges(file); err != nil {
|
if err := gui.GitCommand.DiscardAllFileChanges(file); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -27,7 +27,7 @@ func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error {
|
|||||||
|
|
||||||
if file.HasStagedChanges && file.HasUnstagedChanges {
|
if file.HasStagedChanges && file.HasUnstagedChanges {
|
||||||
menuItems = append(menuItems, &menuItem{
|
menuItems = append(menuItems, &menuItem{
|
||||||
displayStrings: []string{gui.Tr.SLocalize("discardUnstagedChanges")},
|
displayString: gui.Tr.SLocalize("discardUnstagedChanges"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
if err := gui.GitCommand.DiscardUnstagedFileChanges(file); err != nil {
|
if err := gui.GitCommand.DiscardUnstagedFileChanges(file); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type menuItem struct {
|
type menuItem struct {
|
||||||
|
displayString string
|
||||||
displayStrings []string
|
displayStrings []string
|
||||||
onPress func() error
|
onPress func() error
|
||||||
}
|
}
|
||||||
@ -62,8 +63,12 @@ func (gui *Gui) createMenuNew(title string, items []*menuItem, createMenuOptions
|
|||||||
|
|
||||||
stringArrays := make([][]string, len(items))
|
stringArrays := make([][]string, len(items))
|
||||||
for i, item := range items {
|
for i, item := range items {
|
||||||
|
if item.displayStrings == nil {
|
||||||
|
stringArrays[i] = []string{item.displayString}
|
||||||
|
} else {
|
||||||
stringArrays[i] = item.displayStrings
|
stringArrays[i] = item.displayStrings
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
list := utils.RenderDisplayStrings(stringArrays)
|
list := utils.RenderDisplayStrings(stringArrays)
|
||||||
|
|
||||||
|
@ -3,8 +3,6 @@ package gui
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-errors/errors"
|
|
||||||
|
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazygit/pkg/utils"
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||||
)
|
)
|
||||||
@ -38,19 +36,23 @@ func (gui *Gui) getBindings(v *gocui.View) []*Binding {
|
|||||||
func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error {
|
||||||
bindings := gui.getBindings(v)
|
bindings := gui.getBindings(v)
|
||||||
|
|
||||||
handleMenuPress := func(index int) error {
|
menuItems := make([]*menuItem, len(bindings))
|
||||||
if bindings[index].Key == nil {
|
|
||||||
|
for i, binding := range bindings {
|
||||||
|
innerBinding := binding // note to self, never close over loop variables
|
||||||
|
menuItems[i] = &menuItem{
|
||||||
|
displayStrings: []string{GetKeyDisplay(innerBinding.Key), innerBinding.Description},
|
||||||
|
onPress: func() error {
|
||||||
|
if innerBinding.Key == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if index >= len(bindings) {
|
if err := gui.handleMenuClose(g, v); err != nil {
|
||||||
return errors.New("Index is greater than size of bindings")
|
|
||||||
}
|
|
||||||
err := gui.handleMenuClose(g, v)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return bindings[index].Handler(g, v)
|
return innerBinding.Handler(g, v)
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return gui.createMenu(strings.Title(gui.Tr.SLocalize("menu")), bindings, len(bindings), handleMenuPress)
|
return gui.createMenuNew(strings.Title(gui.Tr.SLocalize("menu")), menuItems, createMenuOptions{})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user