diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2019-02-16 12:03:22 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2019-02-16 12:03:22 +1100 |
commit | daca07eacac8bc5cb7bcf65a762ed5093f2b8a82 (patch) | |
tree | 731ef3b60a94696bff3e431205b9f1b19fb3a858 /pkg/gui/confirmation_panel.go | |
parent | 34acaf7ac4bc284f511924e65522e22c18b73a2f (diff) |
add loading panel
Diffstat (limited to 'pkg/gui/confirmation_panel.go')
-rw-r--r-- | pkg/gui/confirmation_panel.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/pkg/gui/confirmation_panel.go b/pkg/gui/confirmation_panel.go index 212565895..51ad711cb 100644 --- a/pkg/gui/confirmation_panel.go +++ b/pkg/gui/confirmation_panel.go @@ -63,7 +63,7 @@ func (gui *Gui) getConfirmationPanelDimensions(g *gocui.Gui, wrap bool, prompt s func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title string, handleConfirm func(*gocui.Gui, *gocui.View) error) error { gui.onNewPopupPanel() - confirmationView, err := gui.prepareConfirmationPanel(currentView, title, "") + confirmationView, err := gui.prepareConfirmationPanel(currentView, title, "", false) if err != nil { return err } @@ -71,13 +71,14 @@ func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title s return gui.setKeyBindings(g, handleConfirm, nil) } -func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt string) (*gocui.View, error) { +func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt string, hasLoader bool) (*gocui.View, error) { x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(gui.g, true, prompt) confirmationView, err := gui.g.SetView("confirmation", x0, y0, x1, y1, 0) if err != nil { - if err != gocui.ErrUnknownView { + if err.Error() != "unknown view" { return nil, err } + confirmationView.HasLoader = hasLoader confirmationView.Title = title confirmationView.Wrap = true confirmationView.FgColor = gocui.ColorWhite @@ -97,8 +98,16 @@ func (gui *Gui) onNewPopupPanel() { } } +func (gui *Gui) createLoaderPanel(g *gocui.Gui, currentView *gocui.View, prompt string) error { + return gui.createPopupPanel(g, currentView, "", prompt, true, nil, nil) +} + // it is very important that within this function we never include the original prompt in any error messages, because it may contain e.g. a user password func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, title, prompt string, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { + return gui.createPopupPanel(g, currentView, title, prompt, false, handleConfirm, handleClose) +} + +func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, prompt string, hasLoader bool, handleConfirm, handleClose func(*gocui.Gui, *gocui.View) error) error { gui.onNewPopupPanel() g.Update(func(g *gocui.Gui) error { // delete the existing confirmation panel if it exists @@ -113,7 +122,7 @@ func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, t gui.Log.Error(errMessage) } } - confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt) + confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt, hasLoader) if err != nil { return err } @@ -144,7 +153,7 @@ func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*go } func (gui *Gui) createMessagePanel(g *gocui.Gui, currentView *gocui.View, title, prompt string) error { - return gui.createConfirmationPanel(g, currentView, title, prompt, nil, nil) + return gui.createPopupPanel(g, currentView, title, prompt, false, nil, nil) } // createSpecificErrorPanel allows you to create an error popup, specifying the |