annotate ui.h @ 623:118276b60667

More work towards using th-libs th_network module.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 21 Jun 2014 02:40:51 +0300
parents bb6b07b44800
children 46fcab5ff44e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
581
97a49a6cc959 Bump copyright year.
Matti Hamalainen <ccr@tnsp.org>
parents: 571
diff changeset
4 * (C) Copyright 2008-2013 Tecnic Software productions (TNSP)
466
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 #ifndef LIBNNUI_H
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 #define LIBNNUI_H
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8
468
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
9 #ifdef __WIN32
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
10 #define SET_DELAY (0)
468
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
11 // Undefine because both windows.h and curses.h #define it
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
12 #undef MOUSE_MOVED
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
13 #else
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
14 #define SET_DELAY (5)
468
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
15 #endif
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
16
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 #ifdef HAVE_NCURSES_H
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 #include <ncurses.h>
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 #else
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 #include <curses.h>
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21 #endif
554
13901e9be15b Implement daily logs for room logs.
Matti Hamalainen <ccr@tnsp.org>
parents: 541
diff changeset
22 #include <time.h>
468
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
23 #include "th_types.h"
607bd4491e79 Fix win32 build.
Matti Hamalainen <ccr@tnsp.org>
parents: 466
diff changeset
24 #include "th_string.h"
623
118276b60667 More work towards using th-libs th_network module.
Matti Hamalainen <ccr@tnsp.org>
parents: 622
diff changeset
25 #include "th_network.h"
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
27 #define SET_MAX_WINDOWS (32)
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 #define NN_BACKBUF_LEN (512) // Backbuffer size (in lines)
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
30
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
31 typedef struct
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
32 {
504
60e04709ce0f Refactor window backbuffer to use integer as internal storage to simplify
Matti Hamalainen <ccr@tnsp.org>
parents: 501
diff changeset
33 int *buf;
60e04709ce0f Refactor window backbuffer to use integer as internal storage to simplify
Matti Hamalainen <ccr@tnsp.org>
parents: 501
diff changeset
34 size_t len, bufsize;
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
35 } nn_line_t;
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
36
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
37
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 typedef struct
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 qringbuf_t *data; // "Backbuffer" data for this window
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41 int pos; // Current position in the window, 0 = real time
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 BOOL dirty;
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
44 int num;
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 char *id; // Chatter ID, NULL = main window
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
47 nn_line_t *line;
541
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
48
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
49 // Logging
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
50 char *logFilename;
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
51 FILE *logFile;
554
13901e9be15b Implement daily logs for room logs.
Matti Hamalainen <ccr@tnsp.org>
parents: 541
diff changeset
52 time_t logPrevMsgTime;
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 } 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
54
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
56 typedef struct
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
57 {
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
58 time_t prevKeepAlive;
571
3ae357fd34bb Rename quit-related internal variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 554
diff changeset
59 BOOL insertMode, isError, update, mask, done;
622
bb6b07b44800 Network code is being generalized into a th-libs module.
Matti Hamalainen <ccr@tnsp.org>
parents: 581
diff changeset
60 th_conn_t *conn;
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
61 void (*debugMsg)(const char *fmt, ...);
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
62 } nn_editstate_t;
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
63
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
64
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 extern nn_window_t *currWin;
571
3ae357fd34bb Rename quit-related internal variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 554
diff changeset
66 extern BOOL appCursesInit, appQuitFlag;
509
942eea564b15 Fix backbuffer offset manipulation, prevents a segfault.
Matti Hamalainen <ccr@tnsp.org>
parents: 504
diff changeset
67 extern int scrHeight, scrWidth;
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
69 BOOL nnwin_init(int delay);
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
70 void nnwin_shutdown();
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
71 void nnwin_reset(void);
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
73 void nnwin_update(BOOL force, BOOL mask, nn_editbuf_t *ebuf, char *optUserName, int optUserColor);
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
75 nn_window_t * nnwin_main_window();
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
76 nn_window_t * nnwin_get(const int index);
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
77 nn_window_t * nnwin_find(const char *id);
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
78 void nnwin_set_current(nn_window_t *);
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
80 BOOL nnwin_open(const char *name, BOOL curwin);
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
81 void nnwin_close(nn_window_t *win);
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82
501
ca88945d8eda Begin work on integrating the removal of ncurses "windowing" and transition
Matti Hamalainen <ccr@tnsp.org>
parents: 493
diff changeset
83 int nnwin_print(nn_window_t *win, const char *fmt);
513
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
84
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
85 void nnwin_input_process(nn_editbuf_t *editBuf, nn_editstate_t *editState,
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
86 BOOL (*callback)(int, nn_editbuf_t *, nn_editstate_t *));
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
87
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
88 char * nnwin_prompt_requester(BOOL allowEmpty, nn_editstate_t *,
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
89 BOOL (*callback)(int, nn_editbuf_t *, nn_editstate_t *),
ef5a2aa8382b Refactor input handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 509
diff changeset
90 void (*update)(nn_editbuf_t *, nn_editstate_t *));
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91
541
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
92
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
93 BOOL nn_log_open(nn_window_t *win);
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
94 void nn_log_close(nn_window_t *win);
44f67ec5e945 Improve logging facilities. Private chats in query windows are now logged
Matti Hamalainen <ccr@tnsp.org>
parents: 513
diff changeset
95
466
796508f828f6 Refactor much of the "windowing" UI code into a new module, ui.[ch]
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 #endif