Add tab keybinding to move to next row or next page

pull/49/head
Miguel Mota 4 years ago
parent 3f185334ca
commit c8803f703c

@ -309,6 +309,7 @@ Key|Action
<kbd>Enter</kbd>|Toggle chart for highlighted coin
<kbd>Esc</kbd>|Quit view
<kbd>Space</kbd>|Toggle coin as favorite
<kbd>Tab</kbd>|Move down or next page
<kbd>Ctrl</kbd>+<kbd>c</kbd>|Quit application
<kbd>Ctrl</kbd>+<kbd>d</kbd>|Jump page down (vim inspired)
<kbd>Ctrl</kbd>+<kbd>f</kbd>|Search
@ -488,6 +489,7 @@ refresh_rate = 60
r = "sort_column_rank"
s = "sort_column_symbol"
space = "toggle_favorite"
tab = "move_down_or_next_page"
t = "sort_column_total_supply"
u = "sort_column_last_updated"
v = "sort_column_24h_volume"
@ -526,6 +528,8 @@ Action|Description
`move_to_page_visible_middle_row`|Move to middle visible row on page
`move_up`|Move one row up
`move_down`|Move one row down
`move_down_or_next_page`|Move one row down or to next page if at last row
`move_up_or_previous_page`|Move one row up or to previous page if at first row
`next_chart_range`|Select next chart date range (e.g. 3D → 7D)
`next_page`|Go to next page
`open_link`|Open row link

@ -337,6 +337,10 @@ func (ct *Cointop) keybindings(g *gocui.Gui) error {
fn = ct.keyfn(ct.EnlargeChart)
case "shorten_chart":
fn = ct.keyfn(ct.ShortenChart)
case "move_down_or_next_page":
fn = ct.keyfn(ct.CursorDownOrNextPage)
case "move_up_or_previous_page":
fn = ct.keyfn(ct.CursorUpOrPreviousPage)
default:
fn = ct.keyfn(ct.noop)
}

@ -169,6 +169,7 @@ func (ct *Cointop) navigateFirstLine() error {
if err := ct.Views.Table.Backing().SetCursor(cx, 0); err != nil {
return err
}
ct.RowChanged()
return nil
}
@ -195,6 +196,7 @@ func (ct *Cointop) navigateLastLine() error {
if err := ct.Views.Table.Backing().SetCursor(cx, sy-1); err != nil {
return err
}
ct.RowChanged()
return nil
}
@ -286,6 +288,24 @@ func (ct *Cointop) nextPage() error {
return nil
}
func (ct *Cointop) nextPageTop() error {
ct.debuglog("nextPageTop()")
ct.nextPage()
ct.navigateFirstLine()
return nil
}
func (ct *Cointop) prevPageTop() error {
ct.debuglog("prevtPageTop()")
ct.prevPage()
ct.navigateLastLine()
return nil
}
func (ct *Cointop) firstPage() error {
ct.debuglog("firstPage()")
@ -326,7 +346,7 @@ func (ct *Cointop) isFirstPage() bool {
func (ct *Cointop) isLastPage() bool {
ct.debuglog("isLastPage()")
return ct.State.page == ct.totalPages()
return ct.State.page == ct.totalPages()-1
}
func (ct *Cointop) isPageFirstLine() bool {
@ -408,3 +428,47 @@ func (ct *Cointop) highlightRow(idx int) error {
return nil
}
// CursorDownOrNextPage ...
func (ct *Cointop) CursorDownOrNextPage() error {
ct.debuglog("CursorDownOrNextPage()")
if ct.isLastRow() {
if ct.isLastPage() {
return nil
}
if err := ct.nextPageTop(); err != nil {
return err
}
return nil
}
if err := ct.cursorDown(); err != nil {
return err
}
return nil
}
// CursorUpOrPreviousPage ...
func (ct *Cointop) CursorUpOrPreviousPage() error {
ct.debuglog("CursorUpOrPreviousPage()")
if ct.isFirstRow() {
if ct.isFirstPage() {
return nil
}
if err := ct.prevPageTop(); err != nil {
return err
}
return nil
}
if err := ct.cursorUp(); err != nil {
return err
}
return nil
}

@ -13,6 +13,7 @@ func DefaultShortcuts() map[string]string {
"enter": "toggle_row_chart",
"esc": "quit_view",
"space": "toggle_favorite",
"tab": "move_down_or_next_page",
"ctrl+c": "quit",
"ctrl+C": "quit",
"ctrl+d": "page_down",

Loading…
Cancel
Save