code / btui

Lines2.2K C1.2K Python549 Markdown219 make156 Lua49
(79 lines)
1 /*
2 * This file contains a basic example of BTUI C API usage.
3 */
5 #include <stdio.h>
6 #include "btui.h"
8 int main(void)
9 {
10 btui_t *bt = btui_create(BTUI_MODE_TUI);
11 if (!bt) return 1;
12 int done = 0;
13 int x = 1, y = 1;
14 while (!done) {
15 const char *title = "BTUI C Demo";
16 int w = (int)strlen(title);
17 int center = (bt->width - w) / 2;
19 btui_set_attributes(bt, BTUI_FG_BLUE | BTUI_BG_NORMAL);
20 btui_draw_shadow(bt, center-2, 0, w+4, 3);
22 btui_set_attributes(bt, BTUI_BG_BLUE | BTUI_FG_BLACK);
23 btui_fill_box(bt, center-2, 0, w+4, 3);
25 btui_move_cursor(bt, center, 1);
26 btui_printf(bt, "%s", title);
27 btui_set_attributes(bt, BTUI_NORMAL);
29 btui_set_attributes(bt, BTUI_BOLD);
30 btui_move_cursor(bt, 0, bt->height-2);
31 btui_printf(bt, "Press 'q' to quit");
32 btui_set_attributes(bt, BTUI_NORMAL);
34 btui_set_attributes(bt, BTUI_FAINT);
35 btui_move_cursor(bt, bt->width-16, bt->height-2);
36 btui_printf(bt, "Size = %dx%d", bt->width, bt->height);
37 btui_set_attributes(bt, BTUI_NORMAL);
39 btui_flush(bt);
41 int mouse_x = -1, mouse_y = -1;
42 int key = btui_getkey(bt, -1, &mouse_x, &mouse_y);
43 btui_clear(bt, BTUI_CLEAR_SCREEN);
44 switch (key) {
45 case 'q': case KEY_CTRL_C: done = 1; break;
46 case KEY_CTRL_Z:
47 btui_suspend(bt);
48 break;
49 case -1: break;
50 case KEY_ARROW_DOWN:
51 btui_scroll(bt, 1, bt->height-1, +1);
52 break;
53 case KEY_ARROW_UP:
54 btui_scroll(bt, 1, bt->height-1, -1);
55 break;
56 default: {
57 if (mouse_x != -1) {
58 x = mouse_x - 15;
59 y = mouse_y;
61 char buf[256] = {0};
62 btui_keyname(key, buf);
64 btui_set_fg_hex(bt, 0xacff40);
65 btui_draw_linebox(bt, x, y, 30, 1);
67 btui_move_cursor(bt, x, y);
68 btui_set_fg_hex(bt, 0xacff40);
69 btui_printf(bt, " Pressed: %s ", buf);
71 btui_set_attributes(bt, BTUI_NORMAL);
72 fflush(bt->out);
73 break;
77 btui_disable(bt);
78 return 0;