clean up some things

remove redundant g argument
pull/372/head
Jesse Duffield 2 years ago
parent a9d1694853
commit 46de6b365d

@ -28,6 +28,14 @@ gui:
- blue
returnImmediately: false
wrapMainPanel: true
# Side panel width as a ratio of the screen's width
sidePanelWidth: 0.333
# Determines whether we show the bottom line (the one containing keybinding
# info and the status of the app).
showBottomLine: true
# When true, increases vertical space used by focused side panel,
# creating an accordion effect
expandFocusedSidePanel: false
logs:
timestamps: false
since: '60m'

@ -122,7 +122,8 @@ type GuiConfig struct {
// info and the status of the app).
ShowBottomLine bool `yaml:"showBottomLine"`
// When true, ensures that the focused side panel always takes up the full vertical space
// When true, increases vertical space used by focused side panel,
// creating an accordion effect
ExpandFocusedSidePanel bool `yaml:"expandFocusedSidePanel"`
}

@ -73,7 +73,7 @@ func (gui *Gui) WithWaitingStatus(name string, f func() error) error {
if err := f(); err != nil {
gui.g.Update(func(g *gocui.Gui) error {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
})
}
}()

@ -63,17 +63,6 @@ func (gui *Gui) getWindowDimensions(informationStr string, appStatus string) map
return boxlayout.ArrangeWindows(root, 0, 0, width, height)
}
func MergeMaps[K comparable, V any](maps ...map[K]V) map[K]V {
result := map[K]V{}
for _, currMap := range maps {
for key, value := range currMap {
result[key] = value
}
}
return result
}
func (gui *Gui) getMidSectionWeights() (int, int) {
currentWindow := gui.currentStaticWindowName()
@ -203,16 +192,3 @@ func (gui *Gui) sidePanelChildren(width int, height int) []*boxlayout.Box {
})
}
}
func (gui *Gui) currentSideWindowName() string {
// we expect that there is a side window somewhere in the view stack, so we will search from top to bottom
for idx := range gui.State.ViewStack {
reversedIdx := len(gui.State.ViewStack) - 1 - idx
viewName := gui.State.ViewStack[reversedIdx]
if lo.Contains(gui.sideViewNames(), viewName) {
return viewName
}
}
return gui.initiallyFocusedViewName()
}

@ -62,14 +62,14 @@ func (gui *Gui) getConfirmationPanelDimensions(g *gocui.Gui, wrap bool, prompt s
height/2 + panelHeight/2
}
func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title string, handleConfirm func(*gocui.Gui, *gocui.View) error) error {
func (gui *Gui) createPromptPanel(title string, handleConfirm func(*gocui.Gui, *gocui.View) error) error {
gui.onNewPopupPanel()
err := gui.prepareConfirmationPanel(title, "", false)
if err != nil {
return err
}
gui.Views.Confirmation.Editable = true
return gui.setKeyBindings(g, handleConfirm, nil)
return gui.setKeyBindings(gui.g, handleConfirm, nil)
}
func (gui *Gui) prepareConfirmationPanel(title, prompt string, hasLoader bool) error {
@ -143,7 +143,7 @@ func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*go
return nil
}
func (gui *Gui) createErrorPanel(g *gocui.Gui, message string) error {
func (gui *Gui) createErrorPanel(message string) error {
colorFunction := color.New(color.FgRed).SprintFunc()
coloredMessage := colorFunction(strings.TrimSpace(message))
return gui.createConfirmationPanel(gui.Tr.ErrorTitle, coloredMessage, nil, nil)

@ -197,7 +197,7 @@ func (gui *Gui) renderContainerStats(container *commands.Container) error {
contents, err := container.RenderStats(width)
if err != nil {
_ = gui.createErrorPanel(gui.g, err.Error())
_ = gui.createErrorPanel(err.Error())
}
gui.reRenderStringMain(contents)
@ -415,7 +415,7 @@ func (gui *Gui) handleContainersRemoveMenu(g *gocui.Gui, v *gocui.View) error {
})
}, nil)
}
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})
@ -433,7 +433,7 @@ func (gui *Gui) PauseContainer(container *commands.Container) error {
}
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.refreshContainersAndServices()
@ -458,7 +458,7 @@ func (gui *Gui) handleContainerStop(g *gocui.Gui, v *gocui.View) error {
return gui.createConfirmationPanel(gui.Tr.Confirm, gui.Tr.StopContainer, func(g *gocui.Gui, v *gocui.View) error {
return gui.WithWaitingStatus(gui.Tr.StoppingStatus, func() error {
if err := container.Stop(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -474,7 +474,7 @@ func (gui *Gui) handleContainerRestart(g *gocui.Gui, v *gocui.View) error {
return gui.WithWaitingStatus(gui.Tr.RestartingStatus, func() error {
if err := container.Restart(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -489,7 +489,7 @@ func (gui *Gui) handleContainerAttach(g *gocui.Gui, v *gocui.View) error {
c, err := container.Attach()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.runSubprocess(c)
@ -500,7 +500,7 @@ func (gui *Gui) handlePruneContainers() error {
return gui.WithWaitingStatus(gui.Tr.PruningStatus, func() error {
err := gui.DockerCommand.PruneContainers()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})

@ -58,7 +58,7 @@ func (gui *Gui) createCommandMenu(customCommands []config.CustomCommand, command
return gui.WithWaitingStatus(waitingStatus, func() error {
if err := gui.OSCommand.RunCommand(option.command); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})

@ -269,7 +269,7 @@ func (gui *Gui) Run() error {
gui.Log.Warn(err)
continue
}
_ = gui.createErrorPanel(gui.g, err.Error())
_ = gui.createErrorPanel(err.Error())
}
}()
@ -407,7 +407,7 @@ func (gui *Gui) handleDonate(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) editFile(filename string) error {
cmd, err := gui.OSCommand.EditFile(filename)
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.runSubprocess(cmd)
@ -415,13 +415,13 @@ func (gui *Gui) editFile(filename string) error {
func (gui *Gui) openFile(filename string) error {
if err := gui.OSCommand.OpenFile(filename); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
}
func (gui *Gui) handleCustomCommand(g *gocui.Gui, v *gocui.View) error {
return gui.createPromptPanel(g, v, gui.Tr.CustomCommandTitle, func(g *gocui.Gui, v *gocui.View) error {
return gui.createPromptPanel(gui.Tr.CustomCommandTitle, func(g *gocui.Gui, v *gocui.View) error {
command := gui.trimmedContent(v)
return gui.runSubprocess(gui.OSCommand.RunCustomCommand(command))
})

@ -250,7 +250,7 @@ func (gui *Gui) handleImagesRemoveMenu(g *gocui.Gui, v *gocui.View) error {
}
configOptions := options[index].configOptions
if cerr := Image.Remove(configOptions); cerr != nil {
return gui.createErrorPanel(gui.g, cerr.Error())
return gui.createErrorPanel(cerr.Error())
}
return nil
@ -264,7 +264,7 @@ func (gui *Gui) handlePruneImages() error {
return gui.WithWaitingStatus(gui.Tr.PruningStatus, func() error {
err := gui.DockerCommand.PruneImages()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.refreshImages()
})

@ -109,7 +109,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
return view, err
}
for _, viewName := range []string{"project", "services", "containers", "images", "volumes", "options", "information", "appStatus", "main", "limit"} {
for _, viewName := range gui.controlledBoundsViewNames() {
_, err := setViewFromDimensions(viewName, viewName)
if err != nil && err.Error() != UNKNOWN_VIEW_ERROR_MSG {
return err

@ -221,7 +221,7 @@ func (gui *Gui) handleProjectPrevContext(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleViewAllLogs(g *gocui.Gui, v *gocui.View) error {
c, err := gui.DockerCommand.ViewAllLogs()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.runSubprocess(c)

@ -240,7 +240,7 @@ func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error {
return gui.createConfirmationPanel(gui.Tr.Confirm, gui.Tr.StopService, func(g *gocui.Gui, v *gocui.View) error {
return gui.WithWaitingStatus(gui.Tr.StoppingStatus, func() error {
if err := service.Stop(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -256,7 +256,7 @@ func (gui *Gui) handleServiceRestart(g *gocui.Gui, v *gocui.View) error {
return gui.WithWaitingStatus(gui.Tr.RestartingStatus, func() error {
if err := service.Restart(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -271,7 +271,7 @@ func (gui *Gui) handleServiceStart(g *gocui.Gui, v *gocui.View) error {
return gui.WithWaitingStatus(gui.Tr.StartingStatus, func() error {
if err := service.Start(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -285,12 +285,12 @@ func (gui *Gui) handleServiceAttach(g *gocui.Gui, v *gocui.View) error {
}
if service.Container == nil {
return gui.createErrorPanel(gui.g, gui.Tr.NoContainers)
return gui.createErrorPanel(gui.Tr.NoContainers)
}
c, err := service.Attach()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.runSubprocess(c)
@ -304,7 +304,7 @@ func (gui *Gui) handleServiceRenderLogsToMain(g *gocui.Gui, v *gocui.View) error
c, err := service.ViewLogs()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return gui.runSubprocess(c)
@ -336,7 +336,7 @@ func (gui *Gui) handleServiceRestartMenu(g *gocui.Gui, v *gocui.View) error {
f: func() error {
return gui.WithWaitingStatus(gui.Tr.RestartingStatus, func() error {
if err := service.Restart(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})
@ -351,7 +351,7 @@ func (gui *Gui) handleServiceRestartMenu(g *gocui.Gui, v *gocui.View) error {
f: func() error {
return gui.WithWaitingStatus(gui.Tr.RestartingStatus, func() error {
if err := gui.OSCommand.RunCommand(recreateCommand); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})
@ -385,7 +385,7 @@ func (gui *Gui) createServiceCommandMenu(options []*commandOption, status string
}
return gui.WithWaitingStatus(status, func() error {
if err := gui.OSCommand.RunCommand(options[index].command); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
@ -447,7 +447,7 @@ func (gui *Gui) handleServicesExecShell(g *gocui.Gui, v *gocui.View) error {
container := service.Container
if container == nil {
return gui.createErrorPanel(gui.g, gui.Tr.NoContainers)
return gui.createErrorPanel(gui.Tr.NoContainers)
}
return gui.containerExecShell(container)
@ -461,7 +461,7 @@ func (gui *Gui) handleServicesOpenInBrowserCommand(g *gocui.Gui, v *gocui.View)
container := service.Container
if container == nil {
return gui.createErrorPanel(gui.g, gui.Tr.NoContainers)
return gui.createErrorPanel(gui.Tr.NoContainers)
}
return gui.openContainerInBrowser(container)

@ -17,27 +17,23 @@ func (gui *Gui) runSubprocess(cmd *exec.Cmd) error {
defer gui.Mutexes.SubprocessMutex.Unlock()
if err := gui.g.Suspend(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
gui.PauseBackgroundThreads = true
cmdErr := gui.runCommand(cmd)
gui.runCommand(cmd)
if err := gui.g.Resume(); err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
gui.PauseBackgroundThreads = false
if cmdErr != nil {
return gui.createErrorPanel(gui.g, cmdErr.Error())
}
return nil
}
func (gui *Gui) runCommand(cmd *exec.Cmd) error {
func (gui *Gui) runCommand(cmd *exec.Cmd) {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stdout
cmd.Stdin = os.Stdin
@ -67,6 +63,4 @@ func (gui *Gui) runCommand(cmd *exec.Cmd) error {
cmd.Stderr = ioutil.Discard
gui.promptToReturn()
return nil
}

@ -153,7 +153,6 @@ func (gui *Gui) pushView(name string) {
})
gui.State.ViewStack = append(gui.State.ViewStack, name)
gui.Log.Warnf("Just pushed %s. View stack is now "+strings.Join(gui.State.ViewStack, ", "), name)
}
// excludes popups
@ -170,6 +169,22 @@ func (gui *Gui) currentStaticViewName() string {
return gui.initiallyFocusedViewName()
}
func (gui *Gui) currentSideViewName() string {
gui.Mutexes.ViewStackMutex.Lock()
defer gui.Mutexes.ViewStackMutex.Unlock()
// we expect that there is a side window somewhere in the view stack, so we will search from top to bottom
for idx := range gui.State.ViewStack {
reversedIdx := len(gui.State.ViewStack) - 1 - idx
viewName := gui.State.ViewStack[reversedIdx]
if lo.Contains(gui.sideViewNames(), viewName) {
return viewName
}
}
return gui.initiallyFocusedViewName()
}
// if the cursor down past the last item, move it to the last line
// nolint:unparam
func (gui *Gui) focusPoint(selectedX int, selectedY int, lineCount int, v *gocui.View) {

@ -3,7 +3,6 @@ package gui
import (
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/samber/lo"
)
type Views struct {
@ -28,12 +27,6 @@ type viewNameMapping struct {
name string
}
func (gui *Gui) orderedViews() []*gocui.View {
return lo.Map(gui.orderedViewNameMappings(), func(v viewNameMapping, _ int) *gocui.View {
return *v.viewPtr
})
}
func (gui *Gui) orderedViewNameMappings() []viewNameMapping {
return []viewNameMapping{
// first layer. Ordering within this layer does not matter because there are
@ -131,3 +124,8 @@ func (gui *Gui) getInformationContent() string {
func (gui *Gui) popupViewNames() []string {
return []string{"confirmation", "menu"}
}
// these views have their position and size determined by arrangement.go
func (gui *Gui) controlledBoundsViewNames() []string {
return []string{"project", "services", "containers", "images", "volumes", "options", "information", "appStatus", "main", "limit"}
}

@ -229,7 +229,7 @@ func (gui *Gui) handleVolumesRemoveMenu(g *gocui.Gui, v *gocui.View) error {
}
return gui.WithWaitingStatus(gui.Tr.RemovingStatus, func() error {
if cerr := volume.Remove(options[index].force); cerr != nil {
return gui.createErrorPanel(gui.g, cerr.Error())
return gui.createErrorPanel(cerr.Error())
}
return nil
})
@ -243,7 +243,7 @@ func (gui *Gui) handlePruneVolumes() error {
return gui.WithWaitingStatus(gui.Tr.PruningStatus, func() error {
err := gui.DockerCommand.PruneVolumes()
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
return gui.createErrorPanel(err.Error())
}
return nil
})

@ -1,12 +1,16 @@
package gui
func (gui *Gui) currentWindow() string {
// at the moment, we only have one view per window in lazydocker, so we
// are using the view name as the window name
return gui.currentViewName()
}
// func (gui *Gui) currentWindow() string {
// // at the moment, we only have one view per window in lazydocker, so we
// // are using the view name as the window name
// return gui.currentViewName()
// }
// excludes popups
func (gui *Gui) currentStaticWindowName() string {
return gui.currentStaticViewName()
}
func (gui *Gui) currentSideWindowName() string {
return gui.currentSideViewName()
}

Loading…
Cancel
Save