diff options
-rw-r--r-- | client/i18n/en_us.h | 26 | ||||
-rw-r--r-- | client/setup.c | 1 | ||||
-rw-r--r-- | client/strings.c | 11 | ||||
-rw-r--r-- | client/strings.h | 4 | ||||
-rw-r--r-- | client/ui.c | 11 | ||||
-rw-r--r-- | client/ui.h | 17 | ||||
-rw-r--r-- | client/ui_dirc.c | 2 | ||||
-rw-r--r-- | client/ui_start.c | 7 | ||||
-rw-r--r-- | client/ui_tabbar.c | 25 |
9 files changed, 90 insertions, 14 deletions
diff --git a/client/i18n/en_us.h b/client/i18n/en_us.h index 5547db5..ff3ae91 100644 --- a/client/i18n/en_us.h +++ b/client/i18n/en_us.h @@ -17,3 +17,29 @@ #define W2_UI_MODE_MAZE "maze" #define W2_UI_MODE_SCAL "sensor calibration" #define W2_UI_MODE_SPIN "wet floor simulation" +#define W2_UI_TAB_LABEL_START "info" +#define W2_UI_TAB_LABEL_DIRC "direct control" +#define W2_UI_TAB_LABEL_ERRCATCH "logs" +#define W2_UI_TAB_LABEL_MCFG "map" +#define W2_UI_TAB_LABEL_ORDERS "orders" +#define W2_UI_TAB_LABEL_MODE "set mode" +#define W2_UI_TAB_START_MESSAGE "" \ + "welcome to the wall-e2 console application!\n" \ + "this is client version " W2_BUILD_STR "\n" \ + "\n" \ + "this application is functionally similar to a BIOS.\n" \ + "here's a brief summary of keyboard commands:\n" \ + "\n" \ + "<left>/<right>, <h>/<l> switch tabs\n" \ + "<up>/<down>, <j>/<k> select option\n" \ + "<enter>, <i> edit option\n" \ + "<home>, <g> scroll to top\n" \ + "<end>, <G> scroll to bottom\n" \ + "<escape> back\n" \ + "<q> exit\n" \ + "\n" \ + "tab shortcuts:\n" \ + "<N> info <o> orders\n" \ + "<S> logs <M> set mode\n" \ + "<d> direct control <m> map\n" + diff --git a/client/setup.c b/client/setup.c index 22f7e4c..e51965f 100644 --- a/client/setup.c +++ b/client/setup.c @@ -36,6 +36,7 @@ void w2_client_setup(int argc, char **argv) { w2_strings_init(); w2_cmd_setup_handlers(); + w2_ui_tabbar_init(); w2_send_info(); diff --git a/client/strings.c b/client/strings.c index a119d9a..720f7b8 100644 --- a/client/strings.c +++ b/client/strings.c @@ -1,6 +1,7 @@ #include "strings.h" char *g_w2_mode_strings[W2_MODE_COUNT]; +char *g_w2_tab_strings[W2_UI_TAB_COUNT]; void w2_strings_modes_init() { g_w2_mode_strings[W2_M_CHRG] = W2_UI_MODE_CHRG; @@ -12,4 +13,12 @@ void w2_strings_modes_init() { g_w2_mode_strings[W2_M_SPIN] = W2_UI_MODE_SPIN; } -void w2_strings_init() { w2_strings_modes_init(); } +void w2_strings_tabs_init() { + g_w2_tab_strings[W2_UI_TAB_START] = W2_UI_TAB_LABEL_START; + g_w2_tab_strings[W2_UI_TAB_DIRC] = W2_UI_TAB_LABEL_DIRC; +} + +void w2_strings_init() { + w2_strings_modes_init(); + w2_strings_tabs_init(); +} diff --git a/client/strings.h b/client/strings.h index 0085228..ec1f415 100644 --- a/client/strings.h +++ b/client/strings.h @@ -2,9 +2,9 @@ #include "../shared/modes.h" #include "i18n.h" - -#define W2_STRINGS_MODE_MAP_BUFFER_SIZE 32 +#include "ui.h" extern char *g_w2_mode_strings[W2_MODE_COUNT]; +extern char *g_w2_tab_strings[W2_UI_TAB_COUNT]; void w2_strings_init(); diff --git a/client/ui.c b/client/ui.c index 7731215..a1d15ad 100644 --- a/client/ui.c +++ b/client/ui.c @@ -15,8 +15,8 @@ WINDOW *g_w2_ui_pad_tabbar; WINDOW *g_w2_ui_pad_body; unsigned int g_w2_ui_width = 0; unsigned int g_w2_ui_height = 0; -void (*g_w2_ui_current_tab)(bool first) = &w2_ui_dirc; -void (*g_w2_ui_last_tab)(bool first) = NULL; +w2_e_ui_tab g_w2_ui_current_tab = W2_UI_TAB_START; +w2_e_ui_tab g_w2_ui_last_tab; void w2_wmvaddstr(WINDOW *win, unsigned int y, unsigned int x, char *str) { wmove(win, y, x); @@ -38,7 +38,7 @@ void w2_ui_main() { void w2_ui_paint() { w2_ui_paint_statusbar(); if (w2_timer_end(W2_TIMER_UPDATE) >= (1000 / W2_UI_UPDATE_FPS)) { - (*g_w2_ui_current_tab)(g_w2_ui_last_tab != g_w2_ui_current_tab); + (*g_w2_tab_ptrs[g_w2_ui_current_tab])(g_w2_ui_last_tab != g_w2_ui_current_tab); g_w2_ui_last_tab = g_w2_ui_current_tab; w2_timer_start(W2_TIMER_UPDATE); } @@ -78,8 +78,3 @@ void w2_ui_paint_statusbar() { mvaddnstr(3, 0, temp, g_w2_ui_width); } -void w2_ui_paint_tabbar() { - char temp[g_w2_ui_width]; - sprintf(temp, "-- tab bar here --"); - w2_wmvaddstr(g_w2_ui_pad_tabbar, 0, g_w2_ui_width / 2 - strlen(temp) / 2, temp); -} diff --git a/client/ui.h b/client/ui.h index a4c4ed1..cbf18ee 100644 --- a/client/ui.h +++ b/client/ui.h @@ -5,12 +5,19 @@ #define W2_UI_UPDATE_FPS (60) +#define W2_UI_TAB_COUNT 2 +typedef enum { + W2_UI_TAB_START = 0, + W2_UI_TAB_DIRC = 1, +} w2_e_ui_tab; + extern WINDOW *g_w2_ui_win; extern WINDOW *g_w2_ui_pad_tabbar; extern WINDOW *g_w2_ui_pad_body; extern unsigned int g_w2_ui_width; extern unsigned int g_w2_ui_height; -extern void (*g_w2_ui_current_tab)(bool first); +extern void (*g_w2_tab_ptrs[W2_UI_TAB_COUNT])(bool first); +extern w2_e_ui_tab g_w2_ui_current_tab; /** update terminal props */ void w2_ui_update(); @@ -26,7 +33,13 @@ void w2_ui_paint_statusbar(); /** draw tab bar */ void w2_ui_paint_tabbar(); -void w2_ui_dirc(bool first); +void w2_ui_tabbar_init(); + +void w2_ui_tab_dirc(bool first); +void w2_ui_tab_start(bool first); void w2_wmvaddstr(WINDOW *win, unsigned int y, unsigned int x, char *str); void w2_wmvaddnstr(WINDOW *win, unsigned int y, unsigned int x, char *str, unsigned int len); + + + diff --git a/client/ui_dirc.c b/client/ui_dirc.c index c23134b..d275ddf 100644 --- a/client/ui_dirc.c +++ b/client/ui_dirc.c @@ -86,7 +86,7 @@ void w2_ui_dirc_paint(int left, int right) { "<space> send dirc mode command"); } -void w2_ui_dirc(bool first) { +void w2_ui_tab_dirc(bool first) { if (first) w2_ui_dirc_init(); int ch = 0; unsigned int lb = 0; diff --git a/client/ui_start.c b/client/ui_start.c new file mode 100644 index 0000000..b656c35 --- /dev/null +++ b/client/ui_start.c @@ -0,0 +1,7 @@ +#include "ui.h" +#include "i18n.h" + +void w2_ui_tab_start(bool first) { + refresh(); + w2_wmvaddstr(g_w2_ui_pad_body, 0, 0, W2_UI_TAB_START_MESSAGE); +} diff --git a/client/ui_tabbar.c b/client/ui_tabbar.c new file mode 100644 index 0000000..fc43db9 --- /dev/null +++ b/client/ui_tabbar.c @@ -0,0 +1,25 @@ +#include <stdlib.h> +#include <string.h> + +#include "ui.h" + +unsigned int g_w2_ui_tabbar_scroll = 0; +unsigned int g_w2_ui_tabbar_lengths[W2_UI_TAB_COUNT]; +void (*g_w2_tab_ptrs[W2_UI_TAB_COUNT])(bool first); + +void w2_ui_tabbar_init() { + g_w2_tab_ptrs[W2_UI_TAB_START] = &w2_ui_tab_start; + g_w2_tab_ptrs[W2_UI_TAB_DIRC] = &w2_ui_tab_dirc; +} + +char* w2_ui_tabbar_format_tab(char* name, bool selected) { + char* ret_val = malloc(strlen(name) + 3); + printf("%c%s%c", selected ? '[' : ' ', name, selected ? ']' : ' '); + return ret_val; +} + +void w2_ui_paint_tabbar() { + char temp[g_w2_ui_width]; + sprintf(temp, "-- tab bar here --"); + w2_wmvaddstr(g_w2_ui_pad_tabbar, 0, g_w2_ui_width / 2 - strlen(temp) / 2, temp); +} |