rpgsheet

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit f61e77ab6fdaca800766af169431e801d0de94a7
parent 17c0c246ce8908671870fc8e00c17aaf844547f6
Author: Skylar Hill <stellarskylark@posteo.net>
Date:   Thu,  2 Jun 2022 02:48:20 -0500

Add description scrolling feature with pageup/pagedown (ctrlJ and ctrlK aren't working for some reason

Diffstat:
Arpgsheet | 0
Msrc/tui.nim | 19++++++++++++++++---
2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/rpgsheet b/rpgsheet Binary files differ. diff --git a/src/tui.nim b/src/tui.nim @@ -39,13 +39,14 @@ proc runTui*(sheet: YamlDocument): void = var selectedByWindow = initTable[string, int]() var itemsByWindow = initTable[string, seq[string]]() var statusText = "" + var descScroll = 0 while true: var tb = newTerminalBuffer(terminalWidth(), terminalHeight()) var bb = newBoxBuffer(tb.width, tb.height) var sbb = newBoxBuffer(tb.width, tb.height) - let descY = tb.height - 7 + let descY = tb.height - 10 var currentTabName: string var currentTabWindows: seq[YamlNode] @@ -82,28 +83,38 @@ proc runTui*(sheet: YamlDocument): void = selectedWindowIndex += 1 else: selectedWindowIndex = currentTabWindows.low + descScroll = 0 of Key.H: if selectedWindowIndex > currentTabWindows.low: selectedWindowIndex -= 1 else: selectedWindowIndex = currentTabWindows.high + descScroll = 0 of Key.J: let win = currentTabWindows[selectedWindowIndex].content if selectedByWindow[win] < itemsByWindow[win].high: selectedByWindow[win] = selectedByWindow[win] + 1 else: selectedByWindow[win] = itemsByWindow[win].low + descScroll = 0 of Key.K: let win = currentTabWindows[selectedWindowIndex].content if selectedByWindow[win] > itemsByWindow[win].low: selectedByWindow[win] = selectedByWindow[win] - 1 else: selectedByWindow[win] = itemsByWindow[win].high + descScroll = 0 of Key.Enter: let win = currentTabWindows[selectedWindowIndex].content let itemList = itemsByWindow[win] let action = itemList[selectedByWindow[win]] statusText = fmt"{fancyDisplay(action, 99)}: {doVerb(action, Roll, sheet)}" + of Key.CtrlJ, Key.PageDown: + descScroll += 1 + of Key.CtrlK, Key.PageUp: + descScroll = + if descScroll == 0: 0 + else: descScroll - 1 else: discard # Write title @@ -194,10 +205,12 @@ proc runTui*(sheet: YamlDocument): void = else: "Press ENTER to roll" tb.write(3, descY + 1, fmt"Value: {val} [{roll}]") if desc != "": - let formattedDesc = desc.wrapWords(maxLineWidth = tb.width - 6) + let formattedDesc = desc.wrapWords(maxLineWidth = min(60, tb.width - 6)) let lines = formattedDesc.splitLines for i in 0..lines.high: - tb.write(3, descY + 2 + i, lines[i]) + if i < descScroll: + continue + tb.write(3, descY + 2 + i - descScroll, lines[i]) tb.write(bb) tb.setForegroundColor(fgBlue)