summaryrefslogtreecommitdiff
path: root/pkg/gui/mainview.go
diff options
context:
space:
mode:
authorIbrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>2019-01-01 14:32:26 +0300
committerIbrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>2019-01-01 14:32:26 +0300
commitf5bc05b6af765a72bbaa6cc72854681718221c5e (patch)
tree955430848cdffce6cf4cbf91fc0577825f9fc4e2 /pkg/gui/mainview.go
parentswitch esc keybinding to q, add home/end buttons to repository nav and fic a ... (diff)
downloadgitbatch-f5bc05b6af765a72bbaa6cc72854681718221c5e.tar.gz
add page up page down controls on the repo view
Diffstat (limited to 'pkg/gui/mainview.go')
-rw-r--r--pkg/gui/mainview.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/pkg/gui/mainview.go b/pkg/gui/mainview.go
index 109d066..869b334 100644
--- a/pkg/gui/mainview.go
+++ b/pkg/gui/mainview.go
@@ -132,6 +132,51 @@ func (gui *Gui) cursorEnd(g *gocui.Gui, v *gocui.View) error {
return gui.renderMain()
}
+// moves cursor down for a page size
+func (gui *Gui) pageDown(g *gocui.Gui, v *gocui.View) error {
+ if v != nil {
+ ox, oy := v.Origin()
+ cx, _ := v.Cursor()
+ _, vy := v.Size()
+ lr := len(gui.State.Repositories)
+ if oy+vy >= lr-vy {
+ if err := v.SetOrigin(ox, lr-vy); err != nil {
+ return err
+ }
+ } else if err := v.SetOrigin(ox, oy+vy); err != nil {
+ return err
+ }
+ if err := v.SetCursor(cx, 0); err != nil {
+ return err
+ }
+ }
+ return gui.renderMain()
+}
+
+// moves cursor up for a page size
+func (gui *Gui) pageUp(g *gocui.Gui, v *gocui.View) error {
+ if v != nil {
+ ox, oy := v.Origin()
+ cx, cy := v.Cursor()
+ _, vy := v.Size()
+ if oy == 0 || oy+cy < vy {
+ if err := v.SetOrigin(ox, 0); err != nil {
+ return err
+ }
+ } else if oy <= vy {
+ if err := v.SetOrigin(ox, oy+cy-vy); err != nil {
+ return err
+ }
+ } else if err := v.SetOrigin(ox, oy-vy); err != nil {
+ return err
+ }
+ if err := v.SetCursor(cx, 0); err != nil {
+ return err
+ }
+ }
+ return gui.renderMain()
+}
+
// returns the entity at cursors position by taking its position in the gui's
// slice of repositories. Since it is not a %100 percent safe methodology it may
// rrequire a better implementation or the slice's order must be synchronized