summaryrefslogtreecommitdiff
path: root/pkg/gui/mainview.go
diff options
context:
space:
mode:
authorIbrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>2018-12-05 02:19:41 +0300
committerGitHub <noreply@github.com>2018-12-05 02:19:41 +0300
commit5c481dfe96fc40b8b7ad4fdc63fa0968e6832939 (patch)
tree6442b45aeac0e88e83656e871c0e0872d59e4044 /pkg/gui/mainview.go
parentDevelop (#20) (diff)
downloadgitbatch-5c481dfe96fc40b8b7ad4fdc63fa0968e6832939.tar.gz
Develop (#23)
* restyle on repository selection * restyle continued on selections * added initial logging to git package * reverse scrolling on commits implemented * queue converted to first in first out principle * added sorting * select all feature added * code reuse improved and added scrolling to controls view * update readme
Diffstat (limited to 'pkg/gui/mainview.go')
-rw-r--r--pkg/gui/mainview.go92
1 files changed, 70 insertions, 22 deletions
diff --git a/pkg/gui/mainview.go b/pkg/gui/mainview.go
index e9bd1f3..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]
}
-// marking repostiry is simply adding the repostirory into the queue. the
+// 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)