From f7d96b0779c05a0fd5b0adead9f186be058b298a Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Thu, 5 Sep 2013 00:47:33 -0400 Subject: [PATCH] define curses colours and replace magic numbers --- src/chat.c | 80 ++++++++++++++++++++++----------------------- src/friendlist.c | 12 +++---- src/main.c | 10 +++--- src/prompt.c | 8 ++--- src/toxic_windows.h | 10 ++++++ src/windows.c | 28 ++++++++-------- 6 files changed, 79 insertions(+), 69 deletions(-) diff --git a/src/chat.c b/src/chat.c index 5b99f70..e13ba74 100644 --- a/src/chat.c +++ b/src/chat.c @@ -55,9 +55,9 @@ static void chat_onMessage(ToxWindow *self, Tox *m, int num, uint8_t *msg, uint1 msg[len-1] = '\0'; nick[TOX_MAX_NAME_LENGTH-1] = '\0'; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); wattron(ctx->history, COLOR_PAIR(4)); wprintw(ctx->history, "%s: ", nick); wattroff(ctx->history, COLOR_PAIR(4)); @@ -75,9 +75,9 @@ void chat_onConnectionChange(ToxWindow *self, Tox *m, int num, uint8_t status) if (ctx->friendnum != num) return; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); if (status == 1) wprintw(ctx->history, "* Chat partner has come online\n"); @@ -98,13 +98,13 @@ static void chat_onAction(ToxWindow *self, Tox *m, int num, uint8_t *action, uin action[len - 1] = '\0'; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); - wattron(ctx->history, COLOR_PAIR(5)); + wattron(ctx->history, COLOR_PAIR(YELLOW)); wprintw(ctx->history, "* %s %s\n", nick, action); - wattroff(ctx->history, COLOR_PAIR(5)); + wattroff(ctx->history, COLOR_PAIR(YELLOW)); self->blink = true; beep(); @@ -118,9 +118,9 @@ static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t if (ctx->friendnum != num) return; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); nick[len - 1] = '\0'; snprintf(self->title, sizeof(self->title), "[%s]", nick); @@ -136,31 +136,31 @@ static void chat_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS if (ctx->friendnum != num) return; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); switch(status) { case TOX_USERSTATUS_NONE: wprintw(ctx->history, "* Chat partner set status to "); - wattron(ctx->history, COLOR_PAIR(1)); + wattron(ctx->history, COLOR_PAIR(GREEN)); wprintw(ctx->history, "[Online]\n"); - wattroff(ctx->history, COLOR_PAIR(1)); + wattroff(ctx->history, COLOR_PAIR(GREEN)); break; case TOX_USERSTATUS_BUSY: wprintw(ctx->history, "* Chat partner set status to "); - wattron(ctx->history, COLOR_PAIR(3)); + wattron(ctx->history, COLOR_PAIR(RED)); wprintw(ctx->history, "[Busy]\n"); - wattroff(ctx->history, COLOR_PAIR(3)); + wattroff(ctx->history, COLOR_PAIR(RED)); break; case TOX_USERSTATUS_AWAY: wprintw(ctx->history, "* Chat partner set status to "); - wattron(ctx->history, COLOR_PAIR(5)); + wattron(ctx->history, COLOR_PAIR(YELLOW)); wprintw(ctx->history, "[Away]\n"); - wattroff(ctx->history, COLOR_PAIR(5)); + wattroff(ctx->history, COLOR_PAIR(YELLOW)); break; } } @@ -176,9 +176,9 @@ static void chat_onStatusMessageChange(ToxWindow *self, int num, uint8_t *status status[len - 1] = '\0'; if (strncmp(status, "Online", strlen("status"))) { /* Ignore default "Online" message */ - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "* Chat partner changed personal note to: %s\n", status); } } @@ -286,18 +286,18 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key) uint8_t selfname[TOX_MAX_NAME_LENGTH]; tox_getselfname(m, selfname, sizeof(selfname)); - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); - wattron(ctx->history, COLOR_PAIR(1)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); + wattron(ctx->history, COLOR_PAIR(GREEN)); wprintw(ctx->history, "%s: ", selfname); - wattroff(ctx->history, COLOR_PAIR(1)); + wattroff(ctx->history, COLOR_PAIR(GREEN)); wprintw(ctx->history, "%s\n", line); if (tox_sendmessage(m, ctx->friendnum, (uint8_t *) line, strlen(line) + 1) == 0) { - wattron(ctx->history, COLOR_PAIR(3)); + wattron(ctx->history, COLOR_PAIR(RED)); wprintw(ctx->history, " * Failed to send message.\n"); - wattroff(ctx->history, COLOR_PAIR(3)); + wattroff(ctx->history, COLOR_PAIR(RED)); } } } @@ -345,21 +345,21 @@ void execute(ToxWindow *self, ChatContext *ctx, Tox *m, char *cmd) action++; - wattron(ctx->history, COLOR_PAIR(2)); + wattron(ctx->history, COLOR_PAIR(CYAN)); wprintw(ctx->history, "[%02d:%02d:%02d] ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattroff(ctx->history, COLOR_PAIR(2)); + wattroff(ctx->history, COLOR_PAIR(CYAN)); uint8_t selfname[TOX_MAX_NAME_LENGTH]; tox_getselfname(m, selfname, sizeof(selfname)); - wattron(ctx->history, COLOR_PAIR(5)); + wattron(ctx->history, COLOR_PAIR(YELLOW)); wprintw(ctx->history, "* %s %s\n", selfname, action); - wattroff(ctx->history, COLOR_PAIR(5)); + wattroff(ctx->history, COLOR_PAIR(YELLOW)); if (tox_sendaction(m, ctx->friendnum, (uint8_t *) action, strlen(action) + 1) == 0) { - wattron(ctx->history, COLOR_PAIR(3)); + wattron(ctx->history, COLOR_PAIR(RED)); wprintw(ctx->history, " * Failed to send action\n"); - wattroff(ctx->history, COLOR_PAIR(3)); + wattroff(ctx->history, COLOR_PAIR(RED)); } } @@ -379,25 +379,25 @@ void execute(ToxWindow *self, ChatContext *ctx, Tox *m, char *cmd) if (!strncmp(status, "online", strlen("online"))) { status_kind = TOX_USERSTATUS_NONE; wprintw(ctx->history, "Status set to "); - wattron(ctx->history, COLOR_PAIR(1)); + wattron(ctx->history, COLOR_PAIR(GREEN)); wprintw(ctx->history, "[Online]\n"); - wattroff(ctx->history, COLOR_PAIR(1)); + wattroff(ctx->history, COLOR_PAIR(GREEN)); } else if (!strncmp(status, "away", strlen("away"))) { status_kind = TOX_USERSTATUS_AWAY; wprintw(ctx->history, "Status set to "); - wattron(ctx->history, COLOR_PAIR(5)); + wattron(ctx->history, COLOR_PAIR(YELLOW)); wprintw(ctx->history, "[Away]\n"); - wattroff(ctx->history, COLOR_PAIR(5)); + wattroff(ctx->history, COLOR_PAIR(YELLOW)); } else if (!strncmp(status, "busy", strlen("busy"))) { status_kind = TOX_USERSTATUS_BUSY; wprintw(ctx->history, "Status set to "); - wattron(ctx->history, COLOR_PAIR(3)); + wattron(ctx->history, COLOR_PAIR(RED)); wprintw(ctx->history, "[Busy]\n"); - wattroff(ctx->history, COLOR_PAIR(3)); + wattroff(ctx->history, COLOR_PAIR(RED)); } else { @@ -480,7 +480,7 @@ static void chat_onInit(ToxWindow *self, Tox *m) void print_help(ChatContext *self) { - wattron(self->history, COLOR_PAIR(2) | A_BOLD); + wattron(self->history, COLOR_PAIR(CYAN) | A_BOLD); wprintw(self->history, "Commands:\n"); wattroff(self->history, A_BOLD); @@ -494,7 +494,7 @@ void print_help(ChatContext *self) wprintw(self->history, " /quit or /exit : Exit Toxic\n"); wprintw(self->history, " /help : Print this message again\n\n"); - wattroff(self->history, COLOR_PAIR(2)); + wattroff(self->history, COLOR_PAIR(CYAN)); } ToxWindow new_chat(Tox *m, int friendnum) diff --git a/src/friendlist.c b/src/friendlist.c index a5befb4..f79267b 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -180,10 +180,10 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m) if (num_friends == 0) { wprintw(self->window, "Empty. Add some friends! :-)\n"); } else { - wattron(self->window, COLOR_PAIR(2) | A_BOLD); + wattron(self->window, COLOR_PAIR(CYAN) | A_BOLD); wprintw(self->window, " Open chat with up/down keys and enter.\n"); wprintw(self->window, " Delete friends with the backspace key.\n\n"); - wattroff(self->window, COLOR_PAIR(2) | A_BOLD); + wattroff(self->window, COLOR_PAIR(CYAN) | A_BOLD); } int i; @@ -197,17 +197,17 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m) if (friends[i].online) { TOX_USERSTATUS status = friends[i].status; - int colour = 7; /* Invalid or other errors default to black */ + int colour = WHITE; switch(status) { case TOX_USERSTATUS_NONE: - colour = 1; + colour = GREEN; break; case TOX_USERSTATUS_AWAY: - colour = 5; + colour = YELLOW; break; case TOX_USERSTATUS_BUSY: - colour = 3; + colour = RED; break; } diff --git a/src/main.c b/src/main.c index 77bcee2..c74cb34 100644 --- a/src/main.c +++ b/src/main.c @@ -71,6 +71,7 @@ static void init_term() if (has_colors()) { start_color(); + init_pair(0, COLOR_WHITE, COLOR_BLACK); init_pair(1, COLOR_GREEN, COLOR_BLACK); init_pair(2, COLOR_CYAN, COLOR_BLACK); init_pair(3, COLOR_RED, COLOR_BLACK); @@ -79,7 +80,6 @@ static void init_term() init_pair(6, COLOR_MAGENTA, COLOR_BLACK); init_pair(7, COLOR_BLACK, COLOR_BLACK); init_pair(8, COLOR_BLACK, COLOR_WHITE); - } refresh(); @@ -398,17 +398,17 @@ int main(int argc, char *argv[]) load_data(m, DATA_FILE); if (f_flag == -1) { - attron(COLOR_PAIR(3) | A_BOLD); + attron(COLOR_PAIR(RED) | A_BOLD); wprintw(prompt->window, "You passed '-f' without giving an argument.\n" "defaulting to 'data' for a keyfile...\n"); - attroff(COLOR_PAIR(3) | A_BOLD); + attroff(COLOR_PAIR(RED) | A_BOLD); } if (config_err) { - attron(COLOR_PAIR(3) | A_BOLD); + attron(COLOR_PAIR(RED) | A_BOLD); wprintw(prompt->window, "Unable to determine configuration directory.\n" "defaulting to 'data' for a keyfile...\n"); - attroff(COLOR_PAIR(3) | A_BOLD); + attroff(COLOR_PAIR(RED) | A_BOLD); } while (true) { diff --git a/src/prompt.c b/src/prompt.c index cc62a1d..913c169 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -243,7 +243,7 @@ void cmd_quit(ToxWindow *self, Tox *m, int argc, char **argv) void cmd_help(ToxWindow *self, Tox *m, int argc, char **argv) { wclear(self->window); - wattron(self->window, COLOR_PAIR(2) | A_BOLD); + wattron(self->window, COLOR_PAIR(CYAN) | A_BOLD); wprintw(self->window, "Commands:\n"); wattroff(self->window, A_BOLD); @@ -264,7 +264,7 @@ void cmd_help(ToxWindow *self, Tox *m, int argc, char **argv) wprintw(self->window, " * Use the TAB key to navigate through the tabs.\n\n"); wattroff(self->window, A_BOLD); - wattroff(self->window, COLOR_PAIR(2)); + wattroff(self->window, COLOR_PAIR(CYAN)); } void cmd_msg(ToxWindow *self, Tox *m, int argc, char **argv) @@ -530,9 +530,9 @@ static void prompt_onDraw(ToxWindow *self, Tox *m) --y; } - wattron(self->window, COLOR_PAIR(1)); + wattron(self->window, COLOR_PAIR(GREEN)); mvwprintw(self->window, y, 0, "# "); - wattroff(self->window, COLOR_PAIR(1)); + wattroff(self->window, COLOR_PAIR(GREEN)); mvwprintw(self->window, y, 2, "%s", prompt_buf); wclrtoeol(self->window); wrefresh(self->window); diff --git a/src/toxic_windows.h b/src/toxic_windows.h index ec188cb..23aa4ae 100644 --- a/src/toxic_windows.h +++ b/src/toxic_windows.h @@ -24,6 +24,16 @@ #define TOXICVER "NOVER" //Use the -D flag to set this #endif +/* Curses foreground colours (background is black) */ +#define WHITE 0 +#define GREEN 1 +#define CYAN 2 +#define RED 3 +#define BLUE 4 +#define YELLOW 5 +#define MAGENTA 6 +#define BLACK 7 + typedef struct ToxWindow_ ToxWindow; struct ToxWindow_ { diff --git a/src/windows.c b/src/windows.c index 71feecd..a184148 100644 --- a/src/windows.c +++ b/src/windows.c @@ -17,7 +17,7 @@ static ToxWindow *active_window; static ToxWindow *prompt; static Tox *m; -#define unknown_name "Unknown" +#define UNKNOWN_NAME "Unknown" /* CALLBACKS START */ void on_request(uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata) @@ -46,7 +46,7 @@ void on_connectionchange(Tox *m, int friendnumber, uint8_t status, void *userdat tox_getname(m, friendnumber, (uint8_t *) &nick); if (!nick[0]) - snprintf(nick, sizeof(nick), "%s", unknown_name); + snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); if (status == 1) wprintw(prompt->window, "\n%s has come online\n", nick, friendnumber); @@ -99,7 +99,7 @@ void on_statusmessagechange(Tox *m, int friendnumber, uint8_t *string, uint16_t tox_getname(m, friendnumber, (uint8_t *) &nick); if (!nick[0]) - snprintf(nick, sizeof(nick), "%s", unknown_name); + snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); wprintw(prompt->window, "\n%s set note to: %s\n", nick, string); } @@ -118,7 +118,7 @@ void on_statuschange(Tox *m, int friendnumber, TOX_USERSTATUS status, void *user tox_getname(m, friendnumber, (uint8_t *) &nick); if (!nick[0]) - snprintf(nick, sizeof(nick), "%s", unknown_name); + snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME); switch(status) { case TOX_USERSTATUS_NONE: @@ -127,16 +127,16 @@ void on_statuschange(Tox *m, int friendnumber, TOX_USERSTATUS status, void *user case TOX_USERSTATUS_BUSY: wprintw(prompt->window, "\n%s set status to ", nick); - wattron(prompt->window, COLOR_PAIR(3)); + wattron(prompt->window, COLOR_PAIR(RED)); wprintw(prompt->window, "[Busy]\n"); - wattroff(prompt->window, COLOR_PAIR(3)); + wattroff(prompt->window, COLOR_PAIR(RED)); break; case TOX_USERSTATUS_AWAY: wprintw(prompt->window, "\n%s set status to ", nick); - wattron(prompt->window, COLOR_PAIR(5)); + wattron(prompt->window, COLOR_PAIR(YELLOW)); wprintw(prompt->window, "[Away]\n"); - wattroff(prompt->window, COLOR_PAIR(5)); + wattroff(prompt->window, COLOR_PAIR(YELLOW)); break; } @@ -247,15 +247,15 @@ static void draw_bar() static int odd = 0; int blinkrate = 30; - attron(COLOR_PAIR(4)); + attron(COLOR_PAIR(BLUE)); mvhline(LINES - 2, 0, '_', COLS); - attroff(COLOR_PAIR(4)); + attroff(COLOR_PAIR(BLUE)); move(LINES - 1, 0); - attron(COLOR_PAIR(4) | A_BOLD); + attron(COLOR_PAIR(BLUE) | A_BOLD); printw(" TOXIC " TOXICVER " |"); - attroff(COLOR_PAIR(4) | A_BOLD); + attroff(COLOR_PAIR(BLUE) | A_BOLD); int i; @@ -267,13 +267,13 @@ static void draw_bar() odd = (odd + 1) % blinkrate; if (windows[i].blink && (odd < (blinkrate / 2))) - attron(COLOR_PAIR(3)); + attron(COLOR_PAIR(RED)); clrtoeol(); printw(" %s", windows[i].title); if (windows[i].blink && (odd < (blinkrate / 2))) - attroff(COLOR_PAIR(3)); + attroff(COLOR_PAIR(RED)); if (windows + i == active_window) { attroff(A_BOLD);