summaryrefslogtreecommitdiffstats
path: root/pkg/gui/confirmation_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-08-25 15:55:49 +1000
committerJesse Duffield <jessedduffield@gmail.com>2018-08-25 17:32:34 +1000
commit21f6e9ba87e3513973a62b81e67de253dc8afcde (patch)
tree6cf786783de0fd38ecd014f04cb33aef5541433b /pkg/gui/confirmation_panel.go
parentf24c95aedec785985dfcd98ff3997152c193bd3e (diff)
auto-updates
Diffstat (limited to 'pkg/gui/confirmation_panel.go')
-rw-r--r--pkg/gui/confirmation_panel.go51
1 files changed, 30 insertions, 21 deletions
diff --git a/pkg/gui/confirmation_panel.go b/pkg/gui/confirmation_panel.go
index 9d91b53bc..17ca62b01 100644
--- a/pkg/gui/confirmation_panel.go
+++ b/pkg/gui/confirmation_panel.go
@@ -58,20 +58,30 @@ func (gui *Gui) getConfirmationPanelDimensions(g *gocui.Gui, prompt string) (int
func (gui *Gui) createPromptPanel(g *gocui.Gui, currentView *gocui.View, title string, handleConfirm func(*gocui.Gui, *gocui.View) error) error {
gui.onNewPopupPanel()
- // only need to fit one line
- x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(g, "")
- if confirmationView, err := g.SetView("confirmation", x0, y0, x1, y1, 0); err != nil {
+ confirmationView, err := gui.prepareConfirmationPanel(currentView, title, "")
+ if err != nil {
+ return err
+ }
+ confirmationView.Editable = true
+ return gui.setKeyBindings(g, handleConfirm, nil)
+}
+
+func (gui *Gui) prepareConfirmationPanel(currentView *gocui.View, title, prompt string) (*gocui.View, error) {
+ x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(gui.g, prompt)
+ confirmationView, err := gui.g.SetView("confirmation", x0, y0, x1, y1, 0)
+ if err != nil {
if err != gocui.ErrUnknownView {
- return err
+ return nil, err
}
-
- confirmationView.Editable = true
confirmationView.Title = title
confirmationView.FgColor = gocui.ColorWhite
- gui.switchFocus(g, currentView, confirmationView)
- return gui.setKeyBindings(g, handleConfirm, nil)
}
- return nil
+ confirmationView.Clear()
+
+ if err := gui.switchFocus(gui.g, currentView, confirmationView); err != nil {
+ return nil, err
+ }
+ return confirmationView, nil
}
func (gui *Gui) onNewPopupPanel() {
@@ -93,18 +103,15 @@ func (gui *Gui) createConfirmationPanel(g *gocui.Gui, currentView *gocui.View, t
gui.Log.Error(errMessage)
}
}
- x0, y0, x1, y1 := gui.getConfirmationPanelDimensions(g, prompt)
- if confirmationView, err := g.SetView("confirmation", x0, y0, x1, y1, 0); err != nil {
- if err != gocui.ErrUnknownView {
- return err
- }
- confirmationView.Title = title
- confirmationView.FgColor = gocui.ColorWhite
- gui.renderString(g, "confirmation", prompt)
- gui.switchFocus(g, currentView, confirmationView)
- return gui.setKeyBindings(g, handleConfirm, handleClose)
+ confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt)
+ if err != nil {
+ return err
}
- return nil
+ confirmationView.Editable = false
+ if err := gui.renderString(g, "confirmation", prompt); err != nil {
+ return err
+ }
+ return gui.setKeyBindings(g, handleConfirm, handleClose)
})
return nil
}
@@ -131,7 +138,9 @@ func (gui *Gui) setKeyBindings(g *gocui.Gui, handleConfirm, handleClose func(*go
"keyBindConfirm": "enter",
},
)
- gui.renderString(g, "options", actions)
+ if err := gui.renderString(g, "options", actions); err != nil {
+ return err
+ }
if err := g.SetKeybinding("confirmation", gocui.KeyEnter, gocui.ModNone, gui.wrappedConfirmationFunction(handleConfirm)); err != nil {
return err
}