Mercurial > hg > nnchat
annotate ui.c @ 503:bac3f9af112c
More work on curses cleanup. Almost working now.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 02 Jun 2012 20:03:08 +0300 |
parents | ca88945d8eda |
children | 60e04709ce0f |
rev | line source |
---|---|
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2 * NNChat - Custom chat client for NewbieNudes.com chatrooms |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
3 * Written by Matti 'ccr' Hämäläinen |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
4 * (C) Copyright 2008-2012 Tecnic Software productions (TNSP) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
5 */ |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 #include "util.h" |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 #include "ui.h" |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
9 #define STATUS_YPOS 0 |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
10 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 nn_window_t *chatWindows[SET_MAX_WINDOWS], |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
12 *currWin = NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 BOOL cursesInit = FALSE; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
15 int cursorVisible = ERR, |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
16 scrWidth, scrHeight; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
17 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
18 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 static nn_window_t *nn_window_new(const char *id) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
20 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
21 nn_window_t *res = th_calloc(1, sizeof(nn_window_t)); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
22 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
23 if (res == NULL) return NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 res->data = th_ringbuf_new(NN_BACKBUF_LEN, th_free); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
26 if (res->data == NULL) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
28 th_free(res); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 return NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
31 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
32 res->id = th_strdup(id); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
33 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
34 return res; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
38 static void nn_window_free(nn_window_t *win) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
40 if (win != NULL) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
41 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 th_ringbuf_free(win->data); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 th_free(win->id); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 th_free(win); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
49 nn_window_t *nnwin_main_window() |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 return chatWindows[0]; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
53 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 nn_window_t *nnwin_get(const int index) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 if (index >= 1 && index <= SET_MAX_WINDOWS) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 return chatWindows[index - 1]; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 else |
495 | 60 return NULL; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 BOOL nnwin_init(int delay) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 { |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
66 // Sanity check the terminal size |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
67 if (LINES < 0 || LINES > 1000) LINES = 24; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
68 if (COLS < 0 || COLS > 1000) COLS = 80; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
70 // Initialize (n)curses library and terminal settings |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 initscr(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 raw(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
73 keypad(stdscr, TRUE); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 noecho(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 meta(stdscr, TRUE); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 timeout(delay); |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
77 scrollok(stdscr, FALSE); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
78 cursorVisible = curs_set(1); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
80 if (has_colors()) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 start_color(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
83 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
84 init_pair( 1, COLOR_RED, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 init_pair( 2, COLOR_GREEN, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 init_pair( 3, COLOR_YELLOW, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 init_pair( 4, COLOR_BLUE, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
88 init_pair( 5, COLOR_MAGENTA, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 init_pair( 6, COLOR_CYAN, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 init_pair( 7, COLOR_WHITE, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 init_pair( 8, COLOR_BLACK, COLOR_BLACK); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
92 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 init_pair(10, COLOR_BLACK, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 init_pair(11, COLOR_WHITE, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 init_pair(12, COLOR_GREEN, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
96 init_pair(13, COLOR_YELLOW, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 init_pair(14, COLOR_BLUE, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 init_pair(15, COLOR_MAGENTA, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 init_pair(16, COLOR_CYAN, COLOR_RED); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 cursesInit = TRUE; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
103 nnwin_reset(); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 #ifdef PDCURSES |
495 | 106 PDC_set_title("NNChat v" NN_VERSION); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
107 #endif |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
108 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 memset(chatWindows, 0, sizeof(chatWindows)); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 chatWindows[0] = nn_window_new(NULL); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 currWin = chatWindows[0]; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
112 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
113 return TRUE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
115 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
116 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
117 void nnwin_shutdown() |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
119 int i; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
120 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
121 for (i = 0; i < SET_MAX_WINDOWS; i++) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
122 nn_window_free(chatWindows[i]); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
123 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
124 if (cursesInit) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 if (cursorVisible != ERR) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
127 curs_set(cursorVisible); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
128 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
129 endwin(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
130 THMSG(1, "NCurses deinitialized.\n"); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
132 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
133 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
134 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
135 void nnwin_reset(void) |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
136 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
137 getmaxyx(stdscr, scrHeight, scrWidth); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
138 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
139 |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
140 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
141 nn_window_t *nnwin_find(const char *id) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
143 int i; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
144 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
145 for (i = 0; i < SET_MAX_WINDOWS; i++) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
146 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
147 if (chatWindows[i] != NULL && |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
148 chatWindows[i]->id != NULL && |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
149 th_strcasecmp(id, chatWindows[i]->id) == 0) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
150 return chatWindows[i]; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
151 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
152 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
153 return NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
154 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
155 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
156 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
157 BOOL nnwin_open(const char *name, BOOL curwin) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
158 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 int i; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
160 nn_window_t *res; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
161 if (name == NULL) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
162 return FALSE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
164 if ((res = nn_window_new(name)) == NULL) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
165 return FALSE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
166 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 for (i = 1; i < SET_MAX_WINDOWS; i++) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 if (chatWindows[i] == NULL) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 res->num = i; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 chatWindows[i] = res; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
172 if (curwin) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 currWin = res; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
174 return TRUE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
175 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
176 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 return FALSE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
180 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
181 void nnwin_close(nn_window_t *win) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
182 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
183 int i; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
184 if (win == NULL) return; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
185 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
186 for (i = 1; i < SET_MAX_WINDOWS; i++) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
187 { |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
188 if (chatWindows[i] == win) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
189 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
190 chatWindows[i] = NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
191 nn_window_free(win); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
192 return; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
193 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
194 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
195 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
196 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
197 static BOOL nnwin_get_color(char const **s, int *col) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
198 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
199 int val = 0; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
200 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
201 while (**s >= '0' && **s <= '9') |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
202 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
203 val *= 10; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
204 val += (**s - '0'); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
205 (*s)++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
206 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
207 if (**s != '½') |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
208 return FALSE; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
209 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
210 if (val < 9) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
211 *col = A_DIM | COLOR_PAIR(val); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
212 else if (val < 30) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
213 *col = A_BOLD | COLOR_PAIR(val - 9); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
214 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
215 return TRUE; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
216 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
217 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
218 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
219 #define QPUTCH(ch) th_vputch(&(win->line->buf), &(win->line->bufsize), &(win->line->len), ch) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
220 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
221 int nnwin_print(nn_window_t *win, const char *fmt) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
222 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
223 const char *s = fmt; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
224 int col = 0; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
225 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
226 while (*s) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
227 { |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
228 if (win->line == NULL) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
229 { |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
230 win->line = th_calloc(1, sizeof(nn_line_t)); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
231 if (win->line == NULL) |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
232 return -15; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
233 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
234 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
235 if (*s == '½') |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
236 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
237 s++; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
238 if (*s == '½') |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
239 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
240 QPUTCH(*s); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
241 QPUTCH(*s); |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
242 win->line->chlen++; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
243 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
244 else |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
245 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
246 if (!nnwin_get_color(&s, &col)) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
247 return -1; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
248 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
249 QPUTCH('½'); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
250 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
251 if (!th_growbuf(&(win->line->buf), &(win->line->bufsize), &(win->line->len), sizeof(int))) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
252 return -2; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
253 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
254 memcpy(win->line->buf + win->line->len, &col, sizeof(int)); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
255 win->line->len += sizeof(int); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
256 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
257 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
258 else if (*s == '\n') |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
259 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
260 QPUTCH(0); |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
261 th_ringbuf_add(win->data, win->line); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
262 win->line = NULL; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
263 win->dirty = TRUE; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
264 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
265 else if (*s != '\r') |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
266 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
267 QPUTCH((unsigned char) *s == 255 ? ' ' : *s); |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
268 win->line->chlen++; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
269 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
270 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
271 s++; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
272 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
273 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
274 return 0; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
275 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
276 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
277 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
278 char *nnwin_prompt_requester(const char *info, BOOL allowEmpty) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
279 { |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
280 char tmpBuf[512], *ptr; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
281 int curSave = curs_set(1); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
282 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
283 echo(); |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
284 waddstr(stdscr, info); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
285 wgetnstr(stdscr, tmpBuf, sizeof(tmpBuf) - 1); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
286 noecho(); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
287 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
288 if (curSave != ERR) |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
289 curs_set(curSave); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
290 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
291 str_trim_right(tmpBuf); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
292 ptr = str_trim_left(tmpBuf); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
293 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
294 if (allowEmpty || ptr[0]) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
295 return th_strdup(ptr); |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
296 else |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
297 return NULL; |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
298 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
299 |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
300 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
301 static void nnwin_print_str(WINDOW *win, const char *fmt, BOOL clip) |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
302 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
303 const char *s = fmt; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
304 int col = 0; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
305 while (*s) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
306 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
307 if (clip && getcurx(win) >= getmaxx(win)) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
308 return; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
309 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
310 if (*s == '½') |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
311 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
312 s++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
313 if (*s == '½') |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
314 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
315 waddch(win, ((unsigned char) *s) | col); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
316 s++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
317 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
318 else |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
319 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
320 if (!nnwin_get_color(&s, &col)) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
321 return; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
322 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
323 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
324 else |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
325 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
326 waddch(win, ((unsigned char) *s) | col); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
327 s++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
328 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
329 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
330 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
331 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
332 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
333 void nnwin_update(BOOL force, nn_editbuf_t *ebuf, char *username, int usercolor) |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
334 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
335 int sx, sy; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
336 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
337 // Save cursor position |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
338 getyx(stdscr, sy, sx); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
339 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
340 // Clear screen if forced or main or editbuf are dirty |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
341 if (force || (currWin != NULL && currWin->dirty) || (ebuf != NULL && ebuf->dirty)) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
342 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
343 wattrset(stdscr, A_NORMAL); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
344 wbkgdset(stdscr, COLOR_PAIR(0)); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
345 werase(stdscr); |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
346 force = TRUE; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
347 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
348 |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
349 // Check if update is forced or if the window is dirty |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
350 if (currWin != NULL && (force || currWin->dirty)) |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
351 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
352 int y, offs; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
353 qringbuf_t *buf = currWin->data; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
354 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
355 for (y = scrHeight - 4, offs = buf->size - 1 - currWin->pos; offs >= 0 && y > 0; offs--) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
356 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
357 nn_line_t *line = buf->data[offs]; |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
358 if (line != NULL) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
359 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
360 const char *s = line->buf; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
361 int col = 0; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
362 y -= 1 + (line->chlen / scrWidth); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
363 wmove(stdscr, y, 0); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
364 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
365 while (*s) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
366 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
367 if (*s == '½') |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
368 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
369 s++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
370 if (*s == '½') |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
371 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
372 waddch(stdscr, ((unsigned char) *s) | col); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
373 s++; |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
374 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
375 else |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
376 { |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
377 memcpy(&col, s, sizeof(int)); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
378 s += sizeof(int); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
379 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
380 } |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
381 else |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
382 { |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
383 waddch(stdscr, ((unsigned char) *s) | col); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
384 s++; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
385 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
386 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
387 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
388 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
389 |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
390 currWin->dirty = FALSE; |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
391 } |
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
392 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
393 // Update statusline |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
394 { |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
395 char tmpStamp[32], tmpStr[128]; |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
396 int i; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
397 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
398 str_get_timestamp(tmpStamp, sizeof(tmpStamp), "%H:%M:%S"); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
399 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
400 #if 0 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
401 snprintf(tmpStr, sizeof(tmpStr), |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
402 " ½10½%s½13½ | ½16½%s½13½ | ½11½#%06x½13½ | WIN: %d: %s / %d | ½11½", |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
403 tmpStamp, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
404 username, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
405 usercolor, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
406 currWin->num + 1, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
407 currWin->id != NULL ? currWin->id : "MAIN", |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
408 currWin->pos); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
409 #else |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
410 snprintf(tmpStr, sizeof(tmpStr), |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
411 " %s | %s | #%06x | WIN: %d: %s / %d | ", |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
412 tmpStamp, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
413 username, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
414 usercolor, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
415 currWin->num + 1, |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
416 currWin->id != NULL ? currWin->id : "MAIN", |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
417 currWin->pos); |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
418 #endif |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
419 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
420 wmove(stdscr, scrHeight - 4, 0); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
421 wbkgdset(stdscr, COLOR_PAIR(10)); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
422 wclrtoeol(stdscr); |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
423 nnwin_print_str(stdscr, tmpStr, TRUE); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
424 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
425 for (i = 0; i < SET_MAX_WINDOWS; i++) |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
426 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
427 if (chatWindows[i] != NULL && chatWindows[i]->dirty) |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
428 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
429 snprintf(tmpStr, sizeof(tmpStr), "%d ", i + 1); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
430 waddstr(stdscr, tmpStr); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
431 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
432 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
433 } |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
434 |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
435 // Restore cursor position |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
436 wmove(stdscr, sy, sx); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
437 |
503
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
438 // Update editbuf if needed |
bac3f9af112c
More work on curses cleanup. Almost working now.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
439 if (ebuf != NULL && (force || ebuf->dirty)) |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
440 { |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
441 int yoffs = ebuf->pos / scrWidth, |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
442 xoffs = ebuf->pos % scrWidth; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
443 char *tmp; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
444 |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
445 ebuf->dirty = FALSE; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
446 ebuf->data[ebuf->len] = 0; |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
447 tmp = nn_username_decode(th_strdup(ebuf->data)); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
448 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
449 wmove(stdscr, scrHeight - 3, 0); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
450 wattrset(stdscr, A_NORMAL); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
451 wbkgdset(stdscr, COLOR_PAIR(0)); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
452 waddnstr(stdscr, tmp, ebuf->len); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
453 wmove(stdscr, scrHeight - 3 + yoffs, xoffs); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
454 |
501
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
455 th_free(tmp); |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
456 } |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
457 |
ca88945d8eda
Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents:
496
diff
changeset
|
458 wrefresh(stdscr); |
466
796508f828f6
Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
459 } |