summaryrefslogtreecommitdiffstats
path: root/pkg/gui/reset_menu_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-02-16 08:59:48 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-02-16 09:57:49 +1100
commit5b1f60b7eb2b2a73f582b2add0843cc26068bae5 (patch)
tree0d87906ef5b998c35c0309352ecbdcc80ef9881b /pkg/gui/reset_menu_panel.go
parent2e1344f6118e9fb9173c1b4ea7225e4766167c06 (diff)
refactor create reset menu logic
Diffstat (limited to 'pkg/gui/reset_menu_panel.go')
-rw-r--r--pkg/gui/reset_menu_panel.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/pkg/gui/reset_menu_panel.go b/pkg/gui/reset_menu_panel.go
new file mode 100644
index 000000000..10f2705dc
--- /dev/null
+++ b/pkg/gui/reset_menu_panel.go
@@ -0,0 +1,43 @@
+package gui
+
+import (
+ "fmt"
+
+ "github.com/fatih/color"
+)
+
+func (gui *Gui) createResetMenu(ref string) error {
+ strengths := []string{"soft", "mixed", "hard"}
+ menuItems := make([]*menuItem, len(strengths))
+ for i, strength := range strengths {
+ innerStrength := strength
+ menuItems[i] = &menuItem{
+ displayStrings: []string{
+ fmt.Sprintf("%s reset", strength),
+ color.New(color.FgRed).Sprint(
+ fmt.Sprintf("reset --%s %s", strength, ref),
+ ),
+ },
+ onPress: func() error {
+ if err := gui.GitCommand.ResetToCommit(ref, innerStrength); err != nil {
+ return err
+ }
+
+ if err := gui.refreshCommits(gui.g); err != nil {
+ return err
+ }
+ if err := gui.refreshFiles(); err != nil {
+ return err
+ }
+ if err := gui.resetOrigin(gui.getCommitsView()); err != nil {
+ return err
+ }
+
+ gui.State.Panels.Commits.SelectedLine = 0
+ return gui.handleCommitSelect(gui.g, gui.getCommitsView())
+ },
+ }
+ }
+
+ return gui.createMenu(fmt.Sprintf("%s %s", gui.Tr.SLocalize("resetTo"), ref), menuItems, createMenuOptions{showCancel: true})
+}