- if (0 == y && offset > 0)
- {
- exit_err(draw_scroll_hint(&win->frame, y, offset + 1, '^'),
- world, err_hint);
- continue;
- }
- else if (win->frame.size.y == y + 1
- && 0 < world->keyswindata->max
- - (win->frame.size.y + offset - 1))
- {
- exit_err(draw_scroll_hint(&win->frame, y,
- world->keyswindata->max
- - (offset + win->frame.size.y) + 2, 'v'),
- world, err_hint);
- continue;
- }
- attri = 0;
- if (y == world->keyswindata->select - offset)
- {
- attri = A_REVERSE;
- if (1 == world->keyswindata->edit)
- {
- attri = attri | A_BLINK;
- }
- }
- keyname = get_keyname(world->keybindings[y + offset].key);
- snprintf(keydesc, keydescwidth, "%-9s", keyname);
- free(keyname);
- for (x = 0; x < win->frame.size.x; x++)
- {
- if (x < strlen(keydesc))
- {
- mvwaddch(win->frame.curses_win, y, x, keydesc[x] | attri);
- }
- else if (strlen(keydesc) < x
- && x < strlen(world->keybindings[y + offset].name)
- + strlen(keydesc) + 1)
- {
- mvwaddch(win->frame.curses_win, y, x,
- world->keybindings[y + offset]
- .name[x - strlen(keydesc) - 1] | attri);
- }
- else
- {
- mvwaddch(win->frame.curses_win, y, x, ' ' | attri);
- }
- }
+ kb_p = wc->kb.kbs;
+ }
+ else if (1 == wc->view)
+ {
+ kb_p = world->kb_wingeom.kbs;
+ }
+ else if (2 == wc->view)
+ {
+ kb_p = world->kb_winkeys.kbs;
+ }
+ uint16_t offset = draw_titled_keybinding_list(world, win, 0, title, kb_p);
+ draw_titled_keybinding_list(world, win, offset + 1, "Global keybindings:",
+ world->kb_global.kbs);
+}
+
+
+
+extern void draw_win_keybindings_global(struct Win * win)
+{
+ char * f_name = "draw_win_keybindings_global()";
+ struct World * world = (struct World *) win->data;
+ draw_kb_view(world, win, f_name, &world->kb_global, 0);
+}
+
+
+
+extern void draw_win_keybindings_winconf_geometry(struct Win * win)
+{
+ char * f_name = "draw_win_keybindings_winconf_geometry()";
+ struct World * world = (struct World *) win->data;
+ draw_kb_view(world, win, f_name, &world->kb_wingeom, 0);
+}
+
+
+
+extern void draw_win_keybindings_winconf_keybindings(struct Win * win)
+{
+ char * f_name = "draw_win_keybindings_winconf_keybindings()";
+ struct World * world = (struct World *) win->data;
+ draw_kb_view(world, win, f_name, &world->kb_winkeys, 0);
+}
+
+
+
+extern void draw_winconf_keybindings(struct Win * win)
+{
+ char * f_name = "draw_winconf_keybindings()";
+ struct World * world = (struct World *) win->data;
+ struct WinConf * wc = get_winconf_by_win(world, win);
+ char * title = "Window's keybindings:";
+ uint8_t title_space = strlen(title) / win->frame.size.x + 2;
+ mvwaddstr(win->frame.curses_win, 0, 0, title);
+ draw_kb_view(world, win, f_name, &wc->kb, title_space);
+}
+
+
+
+extern void draw_winconf_geometry(struct Win * win)
+{
+ struct World * world = (struct World *) win->data;
+ struct WinConf * wcp = get_winconf_by_win(world, win);
+ char * title = "Window's geometry:\n";
+ char * h_d = "\nWidth to save: ";
+ char * h_pos = " (height in cells)";
+ char * h_neg = " (negative diff: cells to maximum height)";
+ char * w_d = "\n\nHeight to save: ";
+ char * w_pos = " (width in cells)";
+ char * w_neg = " (negative diff: cells to maximum width)";
+ char * h_t = h_pos;
+ char * w_t = w_pos;
+ if (1 == wcp->height_type)
+ {
+ h_t = h_neg;
+ }
+ if (1 == wcp->width_type)
+ {
+ w_t = w_neg;