mirror of https://github.com/edouardparis/lntop
refac cursor
parent
1d570872f0
commit
f432f613d5
@ -0,0 +1,84 @@
|
||||
package cursor
|
||||
|
||||
type View interface {
|
||||
Cursor() (int, int)
|
||||
Origin() (int, int)
|
||||
Speed() (int, int, int, int)
|
||||
SetCursor(int, int) error
|
||||
SetOrigin(int, int) error
|
||||
}
|
||||
|
||||
func Down(v View) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
cx, cy := v.Cursor()
|
||||
_, _, sy, _ := v.Speed()
|
||||
err := v.SetCursor(cx, cy+sy)
|
||||
if err != nil {
|
||||
ox, oy := v.Origin()
|
||||
err := v.SetOrigin(ox, oy+sy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Up(v View) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
_, _, _, sy := v.Speed()
|
||||
err := v.SetCursor(cx, cy-sy)
|
||||
if err != nil && oy >= sy {
|
||||
err := v.SetOrigin(ox, oy-sy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Right(v View) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
cx, cy := v.Cursor()
|
||||
sx, _, _, _ := v.Speed()
|
||||
err := v.SetCursor(cx+sx, cy)
|
||||
if err != nil {
|
||||
ox, oy := v.Origin()
|
||||
err := v.SetOrigin(ox+sx, oy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Left(v View) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
_, sx, _, _ := v.Speed()
|
||||
err := v.SetCursor(cx-sx, cy)
|
||||
if err != nil {
|
||||
err := v.SetCursor(0, cy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if ox >= sx-cx {
|
||||
err := v.SetOrigin(ox-sx+cx, oy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
package views
|
||||
|
||||
import "github.com/jroimartin/gocui"
|
||||
|
||||
func cursorDown(v *gocui.View, speed int) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
cx, cy := v.Cursor()
|
||||
err := v.SetCursor(cx, cy+speed)
|
||||
if err != nil {
|
||||
ox, oy := v.Origin()
|
||||
err := v.SetOrigin(ox, oy+speed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cursorUp(v *gocui.View, speed int) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
err := v.SetCursor(cx, cy-speed)
|
||||
if err != nil && oy >= speed {
|
||||
err := v.SetOrigin(ox, oy-speed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cursorRight(v *gocui.View, speed int) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
cx, cy := v.Cursor()
|
||||
err := v.SetCursor(cx+speed, cy)
|
||||
if err != nil {
|
||||
ox, oy := v.Origin()
|
||||
err := v.SetOrigin(ox+speed, oy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cursorLeft(v *gocui.View, speed int) error {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
err := v.SetCursor(cx-speed, cy)
|
||||
if err != nil {
|
||||
err := v.SetCursor(0, cy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if ox >= speed-cx {
|
||||
err := v.SetOrigin(ox-speed+cx, oy)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue