home · contact · privacy
Client: Shorten strings whose width does not fit well into compact size.
[plomrogue] / src / client / draw_wins.c
index 04927db9af9d076f3ad092feb284074a7af1fe02..d075d7ab1f8d27ff4e7dacb82de163cdcf49ae32 100644 (file)
@@ -1,5 +1,6 @@
 /* src/client/draw_wins.c */
 
+#define _POSIX_C_SOURCE 200809L /* strdup() */
 #include "draw_wins.h"
 #include <ncurses.h> /* typedefs attr_t, chtype, define A_REVERSE */
 #include <stddef.h> /* NULL */
@@ -52,7 +53,7 @@ static void add_text_with_linebreaks(struct Win * win, char * text);
 static void draw_text_from_bottom(struct Win * win, char * text);
 
 /* Return a properly formatted keybinding list line for "kb". */
-static char * get_kb_line(struct KeyBinding * kb, uint8_t linebreak_type);
+static char * get_kb_line(struct KeyBinding * kb);
 
 /* Draw from line "start" on config view for keybindings defined at "kb". */
 static void draw_keybinding_config(struct Win * win, struct KeyBindingDB * kbdb,
@@ -254,20 +255,13 @@ static void draw_text_from_bottom(struct Win * win, char * text)
 
 
 
-static char * get_kb_line(struct KeyBinding * kb, uint8_t linebreak_type)
+static char * get_kb_line(struct KeyBinding * kb)
 {
     char * f_name = "get_kb_line()";
     char * keyname = get_keyname_to_keycode(kb->keycode);
-    char * format = "%-9s %s";
-    uint16_t first_size = 9;
-    if (1 != linebreak_type)
-    {
-        format = "%s: %s";
-        first_size = strlen(keyname) + 1;
-    }
-    uint16_t size = first_size + 1 + strlen(kb->command->dsc_long) + 1;
+    uint16_t size = strlen(keyname) + 3 + strlen(kb->command->dsc_long) + 1;
     char * kb_line = try_malloc(size, f_name);
-    sprintf(kb_line, format, keyname, kb->command->dsc_long);
+    sprintf(kb_line, "%s - %s", keyname, kb->command->dsc_long);
     free(keyname);
     return kb_line;
 }
@@ -295,7 +289,7 @@ static void draw_keybinding_config(struct Win * win, struct KeyBindingDB * kbdb,
             }
             win->center.y = win->winmap_size.y;
         }
-        char * kb_line = get_kb_line(&kbdb->kbs[kb_n], win->linebreak);
+        char * kb_line = get_kb_line(&kbdb->kbs[kb_n]);
         add_line(win, kb_line, attri, &offset, (kbdb->n_of_kbs == kb_n + 1));
         free(kb_line);
     }
@@ -309,7 +303,7 @@ static void draw_titled_keybinding_list(char * title, struct Win * win,
 {
     uint8_t state = 0;
     uint16_t kb_n = 0;
-    for (; (0 == state || kb_n < kbdb->n_of_kbs); kb_n++)
+    while (0 == state || kb_n < kbdb->n_of_kbs)
     {
         if (0 == state)
         {
@@ -318,9 +312,10 @@ static void draw_titled_keybinding_list(char * title, struct Win * win,
             state = 1 + (0 == kbdb->n_of_kbs);
             continue;
         }
-        char * kb_line = get_kb_line(&kbdb->kbs[kb_n], win->linebreak);
+        char * kb_line = get_kb_line(&kbdb->kbs[kb_n]);
         add_line(win, kb_line, 0, offset, (last * kbdb->n_of_kbs == kb_n + 1));
         free(kb_line);
+        kb_n++;
     }
     if (2 == state)
     {
@@ -402,7 +397,7 @@ extern void draw_win_inventory(struct Win * win)
 
 extern void draw_win_available_keybindings(struct Win * win)
 {
-    char * title = "Active window's keybindings:";
+    char * title = "Active window's keys:";
     struct KeyBindingDB * kbdb;
     struct Win * win_active = get_win_by_id(world.winDB.active);
     if     (0 == win_active->view)
@@ -420,7 +415,7 @@ extern void draw_win_available_keybindings(struct Win * win)
     uint16_t offset = 0;
     draw_titled_keybinding_list(title, win, &offset, 0, kbdb);
     add_line(win, " ", 0, &offset, 0);
-    title = "Global keybindings:";
+    title = "Global keys:";
     draw_titled_keybinding_list(title, win, &offset, 1, &world.kb_global);
 }
 
@@ -453,7 +448,7 @@ extern void draw_win_keybindings_winconf_keybindings(struct Win * win)
 
 extern void draw_winconf_keybindings(struct Win * win)
 {
-    char * title = "Window's keybindings:";
+    char * title = "Window's keys:";
     uint16_t offset = 0;
     add_line(win, title, 0, &offset, 0);
     add_line(win, " ", 0, &offset, 0);