diff options
Diffstat (limited to 'pkg/gui/gui.go')
| -rw-r--r-- | pkg/gui/gui.go | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 0598383..0cf9458 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -41,15 +41,15 @@ type mode struct { } // ModeID is the mode indicator for the gui -type ModeID int8 +type ModeID string const ( // FetchMode puts the gui in fetch state - FetchMode ModeID = 0 + FetchMode ModeID = "fetch" // PullMode puts the gui in pull state - PullMode ModeID = 1 + PullMode ModeID = "pull" // MergeMode puts the gui in merge state - MergeMode ModeID = 2 + MergeMode ModeID = "merge" ) var ( @@ -70,10 +70,11 @@ var ( mergeMode = mode{ModeID: MergeMode, DisplayString: "Merge", CommandString: "merge"} mainViews = []viewFeature{mainViewFeature, remoteViewFeature, remoteBranchViewFeature, branchViewFeature, commitViewFeature} + modes = []mode{fetchMode, pullMode, mergeMode} ) // NewGui creates a Gui opject and fill it's state related entites -func NewGui(directoies []string) (*Gui, error) { +func NewGui(mode string, directoies []string) (*Gui, error) { initialState := guiState{ Directories: directoies, Mode: fetchMode, @@ -82,6 +83,12 @@ func NewGui(directoies []string) (*Gui, error) { gui := &Gui{ State: initialState, } + for _, m := range modes { + if string(m.ModeID) == mode { + gui.State.Mode = m + break + } + } return gui, nil } @@ -194,6 +201,22 @@ func (gui *Gui) layout(g *gocui.Gui) error { return nil } +// focus to next view +func (gui *Gui) nextMainView(g *gocui.Gui, v *gocui.View) error { + if err := gui.nextViewOfGroup(g, v, mainViews); err != nil { + return err + } + return nil +} + +// focus to previous view +func (gui *Gui) previousMainView(g *gocui.Gui, v *gocui.View) error { + if err := gui.previousViewOfGroup(g, v, mainViews); err != nil { + return err + } + return nil +} + // quit from the gui and end its loop func (gui *Gui) quit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit |
