summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorJulian Hurst <ark@mansus.space>2025-03-17 23:13:06 +0100
committerJulian Hurst <ark@mansus.space>2025-03-17 23:13:06 +0100
commita574b7a367956efca0e0a13123bc60c98b9908c9 (patch)
tree56399fb7c4fada35b5990ce94950827aef484980 /cmd
parent0d0186d63712472a037cf510812e68774c73c12f (diff)
downloadhare-tui-a574b7a367956efca0e0a13123bc60c98b9908c9.tar.gz
Initial scrolllist and input support
Diffstat (limited to 'cmd')
-rw-r--r--cmd/scrolllist.ha52
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/scrolllist.ha b/cmd/scrolllist.ha
new file mode 100644
index 0000000..6b631fc
--- /dev/null
+++ b/cmd/scrolllist.ha
@@ -0,0 +1,52 @@
+use tui;
+use tui::layout;
+use tui::widget;
+use tui::widget::list;
+use unix::tty;
+use io;
+use fmt;
+use time;
+
+export fn main() void = {
+ const state = tui::init()!;
+ defer tui::finish(&state);
+ let li = list::newscrolllist(&state, (1, 1), tty::ttysize {
+ rows = 2u16,
+ columns = 50u16,
+ },
+ &widget::style {
+ border = true,
+ colorfg = widget::color::REDFG,
+ colorbg = widget::color::REDBG,
+ },"hello", "world", "bye", "world")!;
+
+ let l = layout::newvlayout(&li);
+ defer l.layout.finish(&l);
+ l.layout.print(&l);
+
+ for (true) {
+ const r = tui::read(&state)!;
+ if (r == 'j') {
+ list::down(&li);
+ };
+ if (r == 'k') {
+ list::up(&li);
+ };
+ if (r == 'K') {
+ list::frameup(&li);
+ };
+ if (r == 'J') {
+ list::framedown(&li);
+ };
+ if (r == 'g') {
+ list::top(&li);
+ };
+ if (r == 'G') {
+ list::bottom(&li);
+ };
+ if (r == 'q') {
+ break;
+ };
+ l.layout.print(&l);
+ };
+};