mirror of https://gitee.com/openkylin/genmai.git
完成编写光标移动的功能
This commit is contained in:
parent
37b94cf560
commit
b58b5cb920
|
@ -108,7 +108,7 @@ func (fr *FrameReport)SetDetailLayout(g *gocui.Gui) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////
|
||||
// navigation
|
||||
func (fr *FrameReport)NextView(g *gocui.Gui, v *gocui.View) error {
|
||||
var rc error
|
||||
|
@ -159,9 +159,57 @@ func (fr *FrameReport)PreSummary(g *gocui.Gui, v *gocui.View) error {
|
|||
}
|
||||
/* */
|
||||
func (fr *FrameReport)CursorDown(g *gocui.Gui, v *gocui.View) error {
|
||||
if (nil != v) {
|
||||
cx, cy := v.Cursor()
|
||||
ox, oy := v.Origin()
|
||||
ok, _ := fr.movable(v, oy+cy+1)
|
||||
|
||||
if ( ! ok) {
|
||||
return nil
|
||||
} // if ( ! ok ..
|
||||
|
||||
rc := v.SetCursor(cx, (cy + 1) )
|
||||
/* */
|
||||
if (nil != rc) {
|
||||
rc = v.SetOrigin(ox, (oy + 1) )
|
||||
/* */
|
||||
if (nil != rc) {
|
||||
return rc
|
||||
} // if (nil != ...
|
||||
} // if (nil != ...
|
||||
|
||||
rc = fr.onMovingCursorRedrawView(g, v)
|
||||
/* */
|
||||
if (nil != rc) {
|
||||
return rc
|
||||
} // if (nil != ...
|
||||
} // if (nil != ...
|
||||
|
||||
//cx, cy := v.Cursor()
|
||||
//ox, oy := v.Origin()
|
||||
|
||||
// TODO:debug
|
||||
// A_DE
|
||||
|
||||
return nil
|
||||
}
|
||||
func (fr *FrameReport)CursorUp(g *gocui.Gui, v *gocui.View) error {
|
||||
if (nil != v) {
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
|
||||
rc := v.SetCursor(cx, cy-1)
|
||||
if ( (nil != rc) &&
|
||||
(0 < oy) ) {
|
||||
rc = v.SetOrigin(ox, oy-1)
|
||||
if (nil != rc) {
|
||||
return rc
|
||||
} // if (nil != ...
|
||||
} // if ( (nil != rc ..
|
||||
} // if (nil != ...
|
||||
_ = fr.onMovingCursorRedrawView(g, v)
|
||||
|
||||
/* */
|
||||
return nil
|
||||
}
|
||||
func (fr *FrameReport)CursorPageDown(g *gocui.Gui, v *gocui.View) error {
|
||||
|
@ -171,3 +219,54 @@ func (fr *FrameReport)CursorPageUp(g *gocui.Gui, v *gocui.View) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////
|
||||
// Utils
|
||||
func (fr *FrameReport)movable(v *gocui.View, nextY int) (ok bool, yLimit int) {
|
||||
switch ( v.Name() ) {
|
||||
case FRAMEREPORTVIEW_VIEWNAME_SIDE:
|
||||
yLimit = len(fr.reports) - 1
|
||||
/* */
|
||||
if (yLimit < nextY) {
|
||||
return false, yLimit
|
||||
} // if (yLimit ...
|
||||
/* */
|
||||
return true, yLimit
|
||||
case FRAMEREPORTVIEW_VIEWNAME_SUMMARY:
|
||||
yLimit = len(fr.vulnInfos) - 1
|
||||
if (yLimit < nextY) {
|
||||
return false, yLimit
|
||||
} // if (yLimit ...
|
||||
/* */
|
||||
return true, yLimit
|
||||
case FRAMEREPORTVIEW_VIEWNAME_DETAIL:
|
||||
// TODO:
|
||||
return false, 0
|
||||
default:
|
||||
return true, 0
|
||||
} // switch ( ...
|
||||
}
|
||||
|
||||
// redraw views
|
||||
func (fr *FrameReport)onMovingCursorRedrawView(g *gocui.Gui, v *gocui.View) error {
|
||||
switch ( v.Name() ) {
|
||||
case FRAMEREPORTVIEW_VIEWNAME_SUMMARY:
|
||||
if rc := fr.redrawDetail(g); (nil != rc) {
|
||||
return rc
|
||||
} // if rc := ...
|
||||
case FRAMEREPORTVIEW_VIEWNAME_SIDE:
|
||||
// TODO
|
||||
} // switch ( v.Name() ...
|
||||
return nil
|
||||
}
|
||||
|
||||
func (fr *FrameReport)redrawDetail(g *gocui.Gui) error {
|
||||
rc := g.DeleteView(FRAMEREPORTVIEW_VIEWNAME_DETAIL)
|
||||
/* */
|
||||
if (nil != rc) {
|
||||
return rc
|
||||
} // if (nil ...
|
||||
|
||||
return fr.SetDetailLayout(g)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue