diff options
| author | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2018-12-05 01:47:24 +0300 |
|---|---|---|
| committer | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2018-12-05 01:47:24 +0300 |
| commit | 9ccbe66ac26b90e636aa97623a48aca4c27d7fb3 (patch) | |
| tree | 46a28bb6910648b9d8696e481e17868a3dda0cb7 | |
| parent | added sorting (diff) | |
| download | gitbatch-9ccbe66ac26b90e636aa97623a48aca4c27d7fb3.tar.gz | |
select all feature added
| -rw-r--r-- | pkg/gui/keybindings.go | 16 | ||||
| -rw-r--r-- | pkg/gui/mainview.go | 90 |
2 files changed, 85 insertions, 21 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 3a96221..5905f2f 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -151,6 +151,22 @@ func (gui *Gui) generateKeybindings() error { Vital: true, }, { View: mainViewFeature.Name, + Key: gocui.KeyCtrlSpace, + Modifier: gocui.ModNone, + Handler: gui.markAllRepositories, + Display: "ctrl + space", + Description: "Add all to queue", + Vital: false, + }, { + View: mainViewFeature.Name, + Key: gocui.KeyBackspace2, + Modifier: gocui.ModNone, + Handler: gui.unmarkAllRepositories, + Display: "backspace", + Description: "Remove all from queue", + Vital: false, + }, { + View: mainViewFeature.Name, Key: 'n', Modifier: gocui.ModNone, Handler: gui.sortByName, diff --git a/pkg/gui/mainview.go b/pkg/gui/mainview.go index 6911c69..36f5825 100644 --- a/pkg/gui/mainview.go +++ b/pkg/gui/mainview.go @@ -93,36 +93,52 @@ func (gui *Gui) getSelectedRepository() *git.RepoEntity { return gui.State.Repositories[cy+oy] } +// adds given entity to job queue +func (gui *Gui) addToQueue(entity *git.RepoEntity) error { + var jt queue.JobType + switch mode := gui.State.Mode.ModeID; mode { + case FetchMode: + jt = queue.Fetch + case PullMode: + jt = queue.Pull + case MergeMode: + jt = queue.Merge + default: + return nil + } + err := gui.State.Queue.AddJob(&queue.Job{ + JobType: jt, + Entity: entity, + }) + if err != nil { + return err + } + entity.State = git.Queued + return nil +} + +// removes given entity from job queue +func (gui *Gui) removeFromQueue(entity *git.RepoEntity) error { + err := gui.State.Queue.RemoveFromQueue(entity) + if err != nil { + return err + } + entity.State = git.Available + return nil +} + // marking repository is simply adding the repostirory into the queue. the // function does take its current state into account before adding it func (gui *Gui) markRepository(g *gocui.Gui, v *gocui.View) error { r := gui.getSelectedRepository() if r.State == git.Available || r.State == git.Success { - var jt queue.JobType - switch mode := gui.State.Mode.ModeID; mode { - case FetchMode: - jt = queue.Fetch - case PullMode: - jt = queue.Pull - case MergeMode: - jt = queue.Merge - default: - return nil - } - err := gui.State.Queue.AddJob(&queue.Job{ - JobType: jt, - Entity: r, - }) - if err != nil { + if err := gui.addToQueue(r); err !=nil { return err } - r.State = git.Queued } else if r.State == git.Queued { - err := gui.State.Queue.RemoveFromQueue(r) - if err != nil { - return err + if err := gui.removeFromQueue(r); err !=nil { + return err } - r.State = git.Available } else { return nil } @@ -130,6 +146,38 @@ func (gui *Gui) markRepository(g *gocui.Gui, v *gocui.View) error { return nil } +// add all remaining repositories into the queue. the function does take its +// current state into account before adding it +func (gui *Gui) markAllRepositories(g *gocui.Gui, v *gocui.View) error { + for _, r := range gui.State.Repositories { + if r.State == git.Available || r.State == git.Success { + if err := gui.addToQueue(r); err !=nil { + return err + } + } else { + continue + } + } + gui.refreshMain(g) + return nil +} + +// remove all repositories from the queue. the function does take its +// current state into account before removing it +func (gui *Gui) unmarkAllRepositories(g *gocui.Gui, v *gocui.View) error { + for _, r := range gui.State.Repositories { + if r.State == git.Queued { + if err := gui.removeFromQueue(r); err !=nil { + return err + } + } else { + continue + } + } + gui.refreshMain(g) + return nil +} + // refresh the main view and re-render the repository representations func (gui *Gui) refreshMain(g *gocui.Gui) error { mainView, err := g.View(mainViewFeature.Name) |
