From 5cbbb62ce267284f8684a70bab3213552fc49d32 Mon Sep 17 00:00:00 2001 From: Loui Chang Date: Sun, 8 Feb 2015 05:26:36 -0500 Subject: [PATCH 1/2] Fix whitespace Signed-off-by: Loui Chang --- src/line_info.c | 36 +++++++++++------------ src/settings.c | 76 ++++++++++++++++++++++++------------------------- src/settings.h | 18 ++++++------ 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 6c6f872..8ee0a9f 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -502,24 +502,24 @@ bool line_info_onKey(ToxWindow *self, wint_t key) struct history *hst = self->chatwin->hst; bool match = true; - if (key == user_settings->key_half_page_up) { - line_info_page_up(self, hst); - } - else if (key == user_settings->key_half_page_down) { - line_info_page_down(self, hst); - } - else if (key == user_settings->key_scroll_line_up) { - line_info_scroll_up(hst); - } - else if (key == user_settings->key_scroll_line_down) { - line_info_scroll_down(hst); - } - else if (key == user_settings->key_page_bottom) { - line_info_reset_start(self, hst); - } - else { - match = false; - } + if (key == user_settings->key_half_page_up) { + line_info_page_up(self, hst); + } + else if (key == user_settings->key_half_page_down) { + line_info_page_down(self, hst); + } + else if (key == user_settings->key_scroll_line_up) { + line_info_scroll_up(hst); + } + else if (key == user_settings->key_scroll_line_down) { + line_info_scroll_down(hst); + } + else if (key == user_settings->key_page_bottom) { + line_info_reset_start(self, hst); + } + else { + match = false; + } return match; } diff --git a/src/settings.c b/src/settings.c index ff490e0..9d3c7c2 100644 --- a/src/settings.c +++ b/src/settings.c @@ -110,15 +110,15 @@ static const struct keys_strings { /* defines from toxic.h */ static void key_defaults(struct user_settings* settings) { - settings->key_next_tab = T_KEY_NEXT; - settings->key_prev_tab = T_KEY_PREV; - settings->key_scroll_line_up = KEY_PPAGE; - settings->key_scroll_line_down = KEY_NPAGE; - settings->key_half_page_up = T_KEY_C_F; - settings->key_half_page_down = T_KEY_C_V; - settings->key_page_bottom = T_KEY_C_H; - settings->key_peer_list_up = T_KEY_C_LB; - settings->key_peer_list_down = T_KEY_C_RB; + settings->key_next_tab = T_KEY_NEXT; + settings->key_prev_tab = T_KEY_PREV; + settings->key_scroll_line_up = KEY_PPAGE; + settings->key_scroll_line_down = KEY_NPAGE; + settings->key_half_page_up = T_KEY_C_F; + settings->key_half_page_down = T_KEY_C_V; + settings->key_page_bottom = T_KEY_C_H; + settings->key_peer_list_up = T_KEY_C_LB; + settings->key_peer_list_down = T_KEY_C_RB; settings->key_toggle_peerlist = T_KEY_C_B; } @@ -212,7 +212,7 @@ int settings_load(struct user_settings *s, const char *patharg) config_t cfg[1]; config_setting_t *setting; const char *str = NULL; - + /* Load default settings */ ui_defaults(s); tox_defaults(s); @@ -296,41 +296,41 @@ int settings_load(struct user_settings *s, const char *patharg) } } - /* keys */ - if ((setting = config_lookup(cfg, key_strings.self)) != NULL) { - const char* tmp = NULL; - if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp)) - s->key_next_tab = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp)) - s->key_prev_tab = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp)) - s->key_scroll_line_up = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp)) - s->key_scroll_line_down= key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp)) - s->key_half_page_up = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp)) - s->key_half_page_down = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp)) - s->key_page_bottom = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp)) - s->key_peer_list_up = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp)) - s->key_peer_list_down = key_parse(&tmp); - if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp)) - s->key_toggle_peerlist = key_parse(&tmp); - } + /* keys */ + if ((setting = config_lookup(cfg, key_strings.self)) != NULL) { + const char* tmp = NULL; + if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp)) + s->key_next_tab = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp)) + s->key_prev_tab = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp)) + s->key_scroll_line_up = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp)) + s->key_scroll_line_down= key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp)) + s->key_half_page_up = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp)) + s->key_half_page_down = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp)) + s->key_page_bottom = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp)) + s->key_peer_list_up = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp)) + s->key_peer_list_down = key_parse(&tmp); + if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp)) + s->key_toggle_peerlist = key_parse(&tmp); + } #ifdef AUDIO if ((setting = config_lookup(cfg, audio_strings.self)) != NULL) { config_setting_lookup_int(setting, audio_strings.input_device, &s->audio_in_dev); s->audio_in_dev = s->audio_in_dev < 0 || s->audio_in_dev > MAX_DEVICES ? 0 : s->audio_in_dev; - + config_setting_lookup_int(setting, audio_strings.output_device, &s->audio_out_dev); s->audio_out_dev = s->audio_out_dev < 0 || s->audio_out_dev > MAX_DEVICES ? 0 : s->audio_out_dev; - + config_setting_lookup_float(setting, audio_strings.VAD_treshold, &s->VAD_treshold); - } + } #endif #ifdef SOUND_NOTIFY @@ -340,7 +340,7 @@ int settings_load(struct user_settings *s, const char *patharg) if (str && strcasecmp(str, NO_SOUND) != 0) set_sound(error, PACKAGE_DATADIR "/sounds/ToxicError.wav"); } - + if ( !config_setting_lookup_string(setting, sound_strings.user_log_in, &str) || !set_sound(user_log_in, str) ) { if (str && strcasecmp(str, NO_SOUND) != 0) diff --git a/src/settings.h b/src/settings.h index 52e6ddc..6328382 100644 --- a/src/settings.h +++ b/src/settings.h @@ -41,15 +41,15 @@ struct user_settings { char chatlogs_path[PATH_MAX]; char avatar_path[PATH_MAX]; - int key_next_tab; - int key_prev_tab; - int key_scroll_line_up; - int key_scroll_line_down; - int key_half_page_up; - int key_half_page_down; - int key_page_bottom; - int key_peer_list_up; - int key_peer_list_down; + int key_next_tab; + int key_prev_tab; + int key_scroll_line_up; + int key_scroll_line_down; + int key_half_page_up; + int key_half_page_down; + int key_page_bottom; + int key_peer_list_up; + int key_peer_list_down; int key_toggle_peerlist; #ifdef AUDIO From 38a0f6fae47251bcdc4e0a213b50738c1f005121 Mon Sep 17 00:00:00 2001 From: Loui Chang Date: Sun, 8 Feb 2015 07:49:05 -0500 Subject: [PATCH 2/2] Make little action indicators on each output line configurable. Also added a new DISCONNECTION line info type. Signed-off-by: Loui Chang --- doc/toxic.conf.5 | 24 ++++++++++++++++++++++-- doc/toxic.conf.5.asc | 12 ++++++++++++ misc/toxic.conf.example | 12 ++++++++++++ src/chat.c | 2 +- src/groupchat.c | 2 +- src/line_info.c | 37 +++++++++++++++++++++++++++++-------- src/line_info.h | 1 + src/prompt.c | 2 +- src/settings.c | 27 +++++++++++++++++++++++++++ src/settings.h | 13 +++++++++++++ 10 files changed, 119 insertions(+), 13 deletions(-) diff --git a/doc/toxic.conf.5 b/doc/toxic.conf.5 index 3fb2aee..fa30e86 100644 --- a/doc/toxic.conf.5 +++ b/doc/toxic.conf.5 @@ -2,12 +2,12 @@ .\" Title: toxic.conf .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 2014-10-08 +.\" Date: 2015-02-08 .\" Manual: Toxic Manual .\" Source: toxic __VERSION__ .\" Language: English .\" -.TH "TOXIC\&.CONF" "5" "2014\-10\-08" "toxic __VERSION__" "Toxic Manual" +.TH "TOXIC\&.CONF" "5" "2015\-02\-08" "toxic __VERSION__" "Toxic Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -105,6 +105,26 @@ Show welcome message on startup\&. true or false .RS 4 Maximum lines for chat window history\&. Integer value\&. (for example: 700) .RE +.PP +\fBline_join\fR +.RS 4 +Indicator for when someone connects or joins a group\&. Three characters max for line_ settings\&. +.RE +.PP +\fBline_quit\fR +.RS 4 +Indicator for when someone disconnects or leaves a group\&. +.RE +.PP +\fBline_alert\fR +.RS 4 +Indicator for alert messages\&. +.RE +.PP +\fBline_normal\fR +.RS 4 +Indicator for normal messages\&. +.RE .RE .PP \fBaudio\fR diff --git a/doc/toxic.conf.5.asc b/doc/toxic.conf.5.asc index 05ae202..4643405 100644 --- a/doc/toxic.conf.5.asc +++ b/doc/toxic.conf.5.asc @@ -66,6 +66,18 @@ OPTIONS *history_size*;; Maximum lines for chat window history. Integer value. (for example: 700) + *line_join*;; + Indicator for when someone connects or joins a group. + Three characters max for line_ settings. + + *line_quit*;; + Indicator for when someone disconnects or leaves a group. + + *line_alert*;; + Indicator for alert messages. + + *line_normal*;; + Indicator for normal messages. *audio*:: Configuration related to audio devices. diff --git a/misc/toxic.conf.example b/misc/toxic.conf.example index 29d6abf..7b8e352 100644 --- a/misc/toxic.conf.example +++ b/misc/toxic.conf.example @@ -28,6 +28,18 @@ ui = { // maximum lines for chat window history history_size=700; + + // Indicator for display when someone connects or joins a group. + line_join="-->"; + + // Indicator for display when someone disconnects or leaves a group. + line_quit="<--"; + + // Indicator for alert messages. + line_alert="-!-"; + + // Indicator for normal messages. + line_normal="---"; }; audio = { diff --git a/src/chat.c b/src/chat.c index 88ae56a..e44546d 100644 --- a/src/chat.c +++ b/src/chat.c @@ -205,7 +205,7 @@ static void chat_onConnectionChange(ToxWindow *self, Tox *m, int32_t num, uint8_ chat_stop_file_senders(num); msg = "has gone offline"; - line_info_add(self, timefrmt, nick, NULL, CONNECTION, 0, RED, msg); + line_info_add(self, timefrmt, nick, NULL, DISCONNECTION, 0, RED, msg); write_to_log(msg, nick, ctx->log, true); } } diff --git a/src/groupchat.c b/src/groupchat.c index e568947..5360bc9 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -505,7 +505,7 @@ static void groupchat_onGroupNamelistChange(ToxWindow *self, Tox *m, int groupnu case TOX_CHAT_CHANGE_PEER_DEL: event = "has left the room"; - line_info_add(self, timefrmt, (char *) oldpeername, NULL, CONNECTION, 0, RED, event); + line_info_add(self, timefrmt, (char *) oldpeername, NULL, DISCONNECTION, 0, RED, event); if (groupchats[self->num].side_pos > 0) --groupchats[self->num].side_pos; diff --git a/src/line_info.c b/src/line_info.c index 8ee0a9f..d3be1ae 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -156,23 +156,27 @@ void line_info_add(ToxWindow *self, const char *timestr, const char *name1, cons switch (type) { case IN_ACTION: case OUT_ACTION: - len += 5; + len += strlen(user_settings->line_normal) + 2; break; case IN_MSG: case OUT_MSG: - len += 6; + len += strlen(user_settings->line_normal) + 3; break; case CONNECTION: - len += 5; + len += strlen(user_settings->line_join) + 2; + break; + + case DISCONNECTION: + len += strlen(user_settings->line_quit) + 2; break; case SYS_MSG: break; case NAME_CHANGE: - len += 4; + len += strlen(user_settings->line_alert) + 1; break; case PROMPT: @@ -309,7 +313,7 @@ void line_info_print(ToxWindow *self) nameclr = CYAN; wattron(win, COLOR_PAIR(nameclr)); - wprintw(win, "--- %s: ", line->name1); + wprintw(win, "%s %s: ", user_settings->line_normal, line->name1); wattroff(win, COLOR_PAIR(nameclr)); if (line->msg[0] == '>') @@ -342,7 +346,7 @@ void line_info_print(ToxWindow *self) wattroff(win, COLOR_PAIR(BLUE)); wattron(win, COLOR_PAIR(YELLOW)); - wprintw(win, "--- %s %s", line->name1, line->msg); + wprintw(win, "%s %s %s", user_settings->line_normal, line->name1, line->msg); wattroff(win, COLOR_PAIR(YELLOW)); if (type == OUT_ACTION && timed_out(line->timestamp, get_unix_time(), NOREAD_FLAG_TIMEOUT)) { @@ -399,7 +403,24 @@ void line_info_print(ToxWindow *self) wattroff(win, COLOR_PAIR(BLUE)); wattron(win, COLOR_PAIR(line->colour)); - wprintw(win, "%s ", line->colour == RED ? "<--" : "-->"); + wprintw(win, "%s ", user_settings->line_join); + + wattron(win, A_BOLD); + wprintw(win, "%s ", line->name1); + wattroff(win, A_BOLD); + + wprintw(win, "%s\n", line->msg); + wattroff(win, COLOR_PAIR(line->colour)); + + break; + + case DISCONNECTION: + wattron(win, COLOR_PAIR(BLUE)); + wprintw(win, "%s", line->timestr); + wattroff(win, COLOR_PAIR(BLUE)); + + wattron(win, COLOR_PAIR(line->colour)); + wprintw(win, "%s ", user_settings->line_quit); wattron(win, A_BOLD); wprintw(win, "%s ", line->name1); @@ -416,7 +437,7 @@ void line_info_print(ToxWindow *self) wattroff(win, COLOR_PAIR(BLUE)); wattron(win, COLOR_PAIR(MAGENTA)); - wprintw(win, "-!- "); + wprintw(win, "%s ", user_settings->line_alert); wattron(win, A_BOLD); wprintw(win, "%s", line->name1); wattroff(win, A_BOLD); diff --git a/src/line_info.h b/src/line_info.h index cb91365..7bd1aa8 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -41,6 +41,7 @@ enum { OUT_ACTION_READ, /* same as OUT_MSG_READ but for actions */ PROMPT, CONNECTION, + DISCONNECTION, NAME_CHANGE, } LINE_TYPE; diff --git a/src/prompt.c b/src/prompt.c index a580c1f..10af01e 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -357,7 +357,7 @@ static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int32_t friendnum "Toxic", "%s has come online", nick ); } else { msg = "has gone offline"; - line_info_add(self, timefrmt, nick, NULL, CONNECTION, 0, RED, msg); + line_info_add(self, timefrmt, nick, NULL, DISCONNECTION, 0, RED, msg); write_to_log(msg, nick, ctx->log, true); if (self->active_box != -1) diff --git a/src/settings.c b/src/settings.c index 9d3c7c2..cd8385f 100644 --- a/src/settings.c +++ b/src/settings.c @@ -55,6 +55,11 @@ static struct ui_strings { const char* show_typing_self; const char* show_typing_other; const char* show_welcome_msg; + + const char* line_join; + const char* line_quit; + const char* line_alert; + const char* line_normal; } ui_strings = { "ui", "timestamps", @@ -66,6 +71,10 @@ static struct ui_strings { "show_typing_self", "show_typing_other", "show_welcome_msg", + "line_join", + "line_quit", + "line_alert", + "line_normal", }; static void ui_defaults(struct user_settings* settings) @@ -79,6 +88,11 @@ static void ui_defaults(struct user_settings* settings) settings->show_typing_self = SHOW_TYPING_ON; settings->show_typing_other = SHOW_TYPING_ON; settings->show_welcome_msg = SHOW_WELCOME_MSG_ON; + + snprintf(settings->line_join, LINE_HINT_MAX + 1, "%s", LINE_JOIN); + snprintf(settings->line_quit, LINE_HINT_MAX + 1, "%s", LINE_QUIT); + snprintf(settings->line_alert, LINE_HINT_MAX + 1, "%s", LINE_ALERT); + snprintf(settings->line_normal, LINE_HINT_MAX + 1, "%s", LINE_NORMAL); } static const struct keys_strings { @@ -262,6 +276,19 @@ int settings_load(struct user_settings *s, const char *patharg) config_setting_lookup_bool(setting, ui_strings.show_welcome_msg, &s->show_welcome_msg); config_setting_lookup_int(setting, ui_strings.time_format, &s->time); s->time = s->time == TIME_24 || s->time == TIME_12 ? s->time : TIME_24; /* Check defaults */ + + if ( config_setting_lookup_string(setting, ui_strings.line_join, &str) ) { + snprintf(s->line_join, sizeof(s->line_join), "%s", str); + } + if ( config_setting_lookup_string(setting, ui_strings.line_quit, &str) ) { + snprintf(s->line_quit, sizeof(s->line_quit), "%s", str); + } + if ( config_setting_lookup_string(setting, ui_strings.line_alert, &str) ) { + snprintf(s->line_alert, sizeof(s->line_alert), "%s", str); + } + if ( config_setting_lookup_string(setting, ui_strings.line_normal, &str) ) { + snprintf(s->line_normal, sizeof(s->line_normal), "%s", str); + } } /* paths */ diff --git a/src/settings.h b/src/settings.h index 6328382..1cc9e13 100644 --- a/src/settings.h +++ b/src/settings.h @@ -25,6 +25,9 @@ #include +/* Represents line_* hints max strlen */ +#define LINE_HINT_MAX 3 + /* holds user setting values */ struct user_settings { int autolog; /* boolean */ @@ -37,6 +40,11 @@ struct user_settings { int show_typing_other; /* boolean */ int show_welcome_msg; /* boolean */ + char line_join[LINE_HINT_MAX + 1]; + char line_quit[LINE_HINT_MAX + 1]; + char line_alert[LINE_HINT_MAX + 1]; + char line_normal[LINE_HINT_MAX + 1]; + char download_path[PATH_MAX]; char chatlogs_path[PATH_MAX]; char avatar_path[PATH_MAX]; @@ -84,5 +92,10 @@ enum { DFLT_HST_SIZE = 700, } settings_values; +#define LINE_JOIN "-->" +#define LINE_QUIT "<--" +#define LINE_ALERT "-!-" +#define LINE_NORMAL "---" + int settings_load(struct user_settings *s, const char *patharg); #endif /* #define SETTINGS_H */