char * gui_chat_build_string_message_tags (struct t_gui_line *line) { int i, length; char *buf; length = 64 + 2; if (line->data->message) length += strlen (line->data->message); for (i = 0; i < line->data->tags_count; i++) { length += strlen (line->data->tags_array[i]) + 1; } length += 2; buf = malloc (length); buf[0] = '\0'; if (line->data->message) strcat (buf, line->data->message); strcat (buf, GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS)); strcat (buf, " ["); strcat (buf, GUI_COLOR(GUI_COLOR_CHAT_TAGS)); for (i = 0; i < line->data->tags_count; i++) { strcat (buf, line->data->tags_array[i]); if (i < line->data->tags_count - 1) strcat (buf, ","); } strcat (buf, GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS)); strcat (buf, "]"); return buf; }
void weechat_welcome_message () { if (CONFIG_BOOLEAN(config_startup_display_logo)) { gui_chat_printf (NULL, "%s ___ __ ______________ _____ \n" "%s __ | / /___________ ____/__ /_______ __ /_\n" "%s __ | /| / /_ _ \\ _ \\ / __ __ \\ __ `/ __/\n" "%s __ |/ |/ / / __/ __/ /___ _ / / / /_/ // /_ \n" "%s ____/|__/ \\___/\\___/\\____/ /_/ /_/\\__,_/ \\__/ ", GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK)); } if (CONFIG_BOOLEAN(config_startup_display_version)) { command_version_display (NULL, 0, 0, 0); } if (CONFIG_BOOLEAN(config_startup_display_logo) || CONFIG_BOOLEAN(config_startup_display_version)) { gui_chat_printf (NULL, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"); } }
void secure_buffer_display_data (void *data, struct t_hashtable *hashtable, const void *key, const void *value) { int *line; /* make C compiler happy */ (void) value; line = (int *)data; if (secure_buffer_display_values && (hashtable == secure_hashtable_data)) { gui_chat_printf_y (secure_buffer, (*line)++, " %s%s = %s\"%s%s%s\"", key, GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), GUI_COLOR(GUI_COLOR_CHAT), GUI_COLOR(GUI_COLOR_CHAT_VALUE), value, GUI_COLOR(GUI_COLOR_CHAT)); } else { gui_chat_printf_y (secure_buffer, (*line)++, " %s", key); } }
const char * gui_color_search_config (const char *color_name) { struct t_config_option *ptr_option; if (color_name) { for (ptr_option = weechat_config_section_color->options; ptr_option; ptr_option = ptr_option->next_option) { if (string_strcasecmp (ptr_option->name, color_name) == 0) { if (ptr_option->min < 0) { return gui_color_get_custom ( gui_color_get_name (CONFIG_COLOR(ptr_option))); } return GUI_COLOR(ptr_option->min); } } } /* color not found */ return NULL; }
void gui_chat_prefix_build () { const char *ptr_prefix; char prefix[512], *pos_color; int prefix_color[GUI_CHAT_NUM_PREFIXES] = { GUI_COLOR_CHAT_PREFIX_ERROR, GUI_COLOR_CHAT_PREFIX_NETWORK, GUI_COLOR_CHAT_PREFIX_ACTION, GUI_COLOR_CHAT_PREFIX_JOIN, GUI_COLOR_CHAT_PREFIX_QUIT }; int i; for (i = 0; i < GUI_CHAT_NUM_PREFIXES; i++) { if (gui_chat_prefix[i]) { free (gui_chat_prefix[i]); gui_chat_prefix[i] = NULL; } ptr_prefix = CONFIG_STRING(config_look_prefix[i]); pos_color = strstr (ptr_prefix, "${"); snprintf(prefix, sizeof (prefix), "%s%s\t", (ptr_prefix[0] && (!pos_color || (pos_color > ptr_prefix))) ? GUI_COLOR(prefix_color[i]) : "", ptr_prefix); if (pos_color) gui_chat_prefix[i] = eval_expression (prefix, NULL, NULL, NULL); else gui_chat_prefix[i] = strdup (prefix); } }
void gui_chat_prefix_build () { char prefix[128]; int i; for (i = 0; i < GUI_CHAT_NUM_PREFIXES; i++) { if (gui_chat_prefix[i]) { free (gui_chat_prefix[i]); gui_chat_prefix[i] = NULL; } } snprintf (prefix, sizeof (prefix), "%s%s\t", GUI_COLOR(GUI_COLOR_CHAT_PREFIX_ERROR), CONFIG_STRING(config_look_prefix[GUI_CHAT_PREFIX_ERROR])); gui_chat_prefix[GUI_CHAT_PREFIX_ERROR] = strdup (prefix); snprintf (prefix, sizeof (prefix), "%s%s\t", GUI_COLOR(GUI_COLOR_CHAT_PREFIX_NETWORK), CONFIG_STRING(config_look_prefix[GUI_CHAT_PREFIX_NETWORK])); gui_chat_prefix[GUI_CHAT_PREFIX_NETWORK] = strdup (prefix); snprintf (prefix, sizeof (prefix), "%s%s\t", GUI_COLOR(GUI_COLOR_CHAT_PREFIX_ACTION), CONFIG_STRING(config_look_prefix[GUI_CHAT_PREFIX_ACTION])); gui_chat_prefix[GUI_CHAT_PREFIX_ACTION] = strdup (prefix); snprintf (prefix, sizeof (prefix), "%s%s\t", GUI_COLOR(GUI_COLOR_CHAT_PREFIX_JOIN), CONFIG_STRING(config_look_prefix[GUI_CHAT_PREFIX_JOIN])); gui_chat_prefix[GUI_CHAT_PREFIX_JOIN] = strdup (prefix); snprintf (prefix, sizeof (prefix), "%s%s\t", GUI_COLOR(GUI_COLOR_CHAT_PREFIX_QUIT), CONFIG_STRING(config_look_prefix[GUI_CHAT_PREFIX_QUIT])); gui_chat_prefix[GUI_CHAT_PREFIX_QUIT] = strdup (prefix); }
char * gui_chat_get_time_string (time_t date) { char text_time[128], text_time2[(128*3)+16], text_time_char[2]; char *text_with_color; int i, time_first_digit, time_last_digit, last_color; struct tm *local_time; if (date == 0) return NULL; if (!CONFIG_STRING(config_look_buffer_time_format) || !CONFIG_STRING(config_look_buffer_time_format)[0]) return NULL; local_time = localtime (&date); if (!local_time) return NULL; if (strftime (text_time, sizeof (text_time), CONFIG_STRING(config_look_buffer_time_format), local_time) == 0) return NULL; if (strstr (text_time, "${")) { text_with_color = eval_expression (text_time, NULL, NULL, NULL); if (text_with_color) { if (strcmp (text_time, text_with_color) != 0) return text_with_color; free (text_with_color); } } time_first_digit = -1; time_last_digit = -1; i = 0; while (text_time[i]) { if (isdigit ((unsigned char)text_time[i])) { if (time_first_digit == -1) time_first_digit = i; time_last_digit = i; } i++; } text_time2[0] = '\0'; text_time_char[1] = '\0'; last_color = -1; i = 0; while (text_time[i]) { text_time_char[0] = text_time[i]; if (time_first_digit < 0) { if (last_color != GUI_COLOR_CHAT_TIME) { strcat (text_time2, GUI_COLOR(GUI_COLOR_CHAT_TIME)); last_color = GUI_COLOR_CHAT_TIME; } strcat (text_time2, text_time_char); } else { if ((i < time_first_digit) || (i > time_last_digit)) { if (last_color != GUI_COLOR_CHAT_DELIMITERS) { strcat (text_time2, GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS)); last_color = GUI_COLOR_CHAT_DELIMITERS; } strcat (text_time2, text_time_char); } else { if (isdigit ((unsigned char)text_time[i])) { if (last_color != GUI_COLOR_CHAT_TIME) { strcat (text_time2, GUI_COLOR(GUI_COLOR_CHAT_TIME)); last_color = GUI_COLOR_CHAT_TIME; } strcat (text_time2, text_time_char); } else { if (last_color != GUI_COLOR_CHAT_TIME_DELIMITERS) { strcat (text_time2, GUI_COLOR(GUI_COLOR_CHAT_TIME_DELIMITERS)); last_color = GUI_COLOR_CHAT_TIME_DELIMITERS; } strcat (text_time2, text_time_char); } } } i++; } return strdup (text_time2); }
void gui_color_buffer_display () { int y, i, lines, line, col, color, max_color, num_items; char str_line[1024], str_color[64], str_rgb[64], **items; struct t_gui_color_palette *color_palette; if (!gui_color_buffer) return; gui_buffer_clear (gui_color_buffer); /* set title buffer */ gui_buffer_set_title (gui_color_buffer, _("WeeChat colors | Actions: " "[e] Display extra infos [r] Refresh " "[z] Reset colors [q] Close buffer | " "Keys: [alt-c] Temporarily switch to terminal " "colors")); /* display terminal/colors infos */ y = 0; gui_color_info_term_colors (str_line, sizeof (str_line)); gui_chat_printf_y (gui_color_buffer, y++, "%s", str_line); /* display palette of colors */ y++; if (gui_color_use_term_colors) { gui_color_buffer_display_timer (); y++; } else { gui_chat_printf_y (gui_color_buffer, y++, _("WeeChat color pairs (in use: %d, left: %d):"), gui_color_pairs_used, gui_color_num_pairs - gui_color_pairs_used); } max_color = (gui_color_use_term_colors) ? gui_color_term_colors - 1 : gui_color_num_pairs; if (max_color > 255) max_color = 255; lines = (max_color <= 64) ? 8 : 16; for (line = 0; line < lines; line++) { str_line[0] = '\0'; for (col = 0; col < 16; col++) { color = (col * lines) + line; if (color <= max_color) { if (color == 0) { snprintf (str_color, sizeof (str_color), " "); } else if (gui_color_use_term_colors || (color <= gui_color_pairs_used)) { snprintf (str_color, sizeof (str_color), "%c%c%05d%c%03d%c", GUI_COLOR_COLOR_CHAR, GUI_COLOR_EXTENDED_CHAR, color, (color == 0) ? '<' : ' ', color, (color == 0) ? '>' : ' '); } else { snprintf (str_color, sizeof (str_color), "%s - ", GUI_NO_COLOR); } strcat (str_line, str_color); } else { snprintf (str_color, sizeof (str_color), "%s ", GUI_COLOR(GUI_COLOR_CHAT)); strcat (str_line, str_color); } } gui_chat_printf_y (gui_color_buffer, y++, " %s", str_line); } if (gui_color_buffer_extra_info) { /* display time of last auto reset of color pairs */ y++; gui_chat_printf_y (gui_color_buffer, y++, _("Last auto reset of pairs: %s"), (gui_color_pairs_auto_reset_last == 0) ? "-" : ctime (&gui_color_pairs_auto_reset_last)); /* display WeeChat basic colors */ y++; gui_chat_printf_y (gui_color_buffer, y++, _("WeeChat basic colors:")); str_line[0] = '\0'; for (i = 0; i < GUI_CURSES_NUM_WEECHAT_COLORS; i++) { if (gui_color_use_term_colors) { snprintf (str_color, sizeof (str_color), " %s", gui_weechat_colors[i].string); } else { snprintf (str_color, sizeof (str_color), "%c%c%02d %s", GUI_COLOR_COLOR_CHAR, GUI_COLOR_FG_CHAR, i, gui_weechat_colors[i].string); } if (gui_chat_strlen_screen (str_line) + gui_chat_strlen_screen (str_color) > 80) { gui_chat_printf_y (gui_color_buffer, y++, " %s", str_line); str_line[0] = '\0'; } strcat (str_line, str_color); } if (str_line[0]) { gui_chat_printf_y (gui_color_buffer, y++, " %s", str_line); } /* display nick colors */ y++; gui_chat_printf_y (gui_color_buffer, y++, _("Nick colors:")); items = string_split (CONFIG_STRING(config_color_chat_nick_colors), ",", 0, 0, &num_items); if (items) { str_line[0] = '\0'; for (i = 0; i < num_items; i++) { if (gui_color_use_term_colors) { snprintf (str_color, sizeof (str_color), " %s", items[i]); } else { snprintf (str_color, sizeof (str_color), "%s %s", gui_color_get_custom (items[i]), items[i]); } if (gui_chat_strlen_screen (str_line) + gui_chat_strlen_screen (str_color) > 80) { gui_chat_printf_y (gui_color_buffer, y++, " %s", str_line); str_line[0] = '\0'; } strcat (str_line, str_color); } if (str_line[0]) { gui_chat_printf_y (gui_color_buffer, y++, " %s", str_line); } string_free_split (items); } /* display palette colors */ if (gui_color_hash_palette_color->items_count > 0) { y++; gui_chat_printf_y (gui_color_buffer, y++, _("Color aliases:")); for (i = 1; i <= gui_color_num_pairs; i++) { color_palette = gui_color_palette_get (i); if (color_palette) { str_color[0] = '\0'; if (!gui_color_use_term_colors) { snprintf (str_color, sizeof (str_color), "%c%c%c%05d", GUI_COLOR_COLOR_CHAR, GUI_COLOR_FG_CHAR, GUI_COLOR_EXTENDED_CHAR, i); } str_rgb[0] = '\0'; if ((color_palette->r >= 0) && (color_palette->g >= 0) && (color_palette->b >= 0)) { snprintf (str_rgb, sizeof (str_rgb), " (%d/%d/%d)", color_palette->r, color_palette->g, color_palette->b); } gui_chat_printf_y (gui_color_buffer, y++, " %5d: %s%s%s", i, str_color, (color_palette->alias) ? color_palette->alias : "", str_rgb); } } } /* display content of colors */ if (gui_color_term_color_content) { y++; gui_chat_printf_y (gui_color_buffer, y++, _("Content of colors (r/g/b):")); for (i = 0; i < gui_color_term_colors; i++) { gui_chat_printf_y (gui_color_buffer, y++, " %3d: %4hd / %4hd / %4hd", i, gui_color_term_color_content[i * 3], gui_color_term_color_content[(i* 3) + 1], gui_color_term_color_content[(i* 3) + 2]); } } } }
void weechat_startup_message () { if (weechat_headless) { string_fprintf (stdout, _("WeeChat is running in headless mode " "(Ctrl-C to quit).")); string_fprintf (stdout, "\n"); } if (CONFIG_BOOLEAN(config_startup_display_logo)) { gui_chat_printf ( NULL, "%s ___ __ ______________ _____ \n" "%s __ | / /___________ ____/__ /_______ __ /_\n" "%s __ | /| / /_ _ \\ _ \\ / __ __ \\ __ `/ __/\n" "%s __ |/ |/ / / __/ __/ /___ _ / / / /_/ // /_ \n" "%s ____/|__/ \\___/\\___/\\____/ /_/ /_/\\__,_/ \\__/ ", GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK), GUI_COLOR(GUI_COLOR_CHAT_NICK)); } if (CONFIG_BOOLEAN(config_startup_display_version)) { command_version_display (NULL, 0, 0, 0); } if (CONFIG_BOOLEAN(config_startup_display_logo) || CONFIG_BOOLEAN(config_startup_display_version)) { gui_chat_printf ( NULL, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"); } if (weechat_first_start) { /* message on first run (when weechat.conf is created) */ gui_chat_printf (NULL, ""); gui_chat_printf ( NULL, _("Welcome to WeeChat!\n" "\n" "If you are discovering WeeChat, it is recommended to read at " "least the quickstart guide, and the user's guide if you have " "some time; they explain main WeeChat concepts.\n" "All WeeChat docs are available at: https://weechat.org/doc\n" "\n" "Moreover, there is inline help with /help on all commands and " "options (use Tab key to complete the name).\n" "The command /fset can help to customize WeeChat.\n" "\n" "You can add and connect to an IRC server with /server and " "/connect commands (see /help server).")); gui_chat_printf (NULL, ""); gui_chat_printf (NULL, "---"); gui_chat_printf (NULL, ""); } }
void secure_buffer_display () { int line, count, count_encrypted; if (!secure_buffer) return; gui_buffer_clear (secure_buffer); /* set title buffer */ gui_buffer_set_title (secure_buffer, _("WeeChat secured data (sec.conf) | " "Keys: [alt-v] Toggle values")); line = 0; gui_chat_printf_y (secure_buffer, line++, "Hash algo: %s Cipher: %s Salt: %s", secure_hash_algo_string[CONFIG_INTEGER(secure_config_crypt_hash_algo)], secure_cipher_string[CONFIG_INTEGER(secure_config_crypt_cipher)], (CONFIG_BOOLEAN(secure_config_crypt_salt)) ? _("on") : _("off")); /* display passphrase */ line++; if (secure_passphrase) { if (secure_buffer_display_values) { gui_chat_printf_y (secure_buffer, line++, "%s%s = %s\"%s%s%s\"", _("Passphrase"), GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), GUI_COLOR(GUI_COLOR_CHAT), GUI_COLOR(GUI_COLOR_CHAT_VALUE), secure_passphrase, GUI_COLOR(GUI_COLOR_CHAT)); } else gui_chat_printf_y (secure_buffer, line++, _("Passphrase is set")); } else { gui_chat_printf_y (secure_buffer, line++, _("Passphrase is NOT set")); } /* display secured data */ count = secure_hashtable_data->items_count; count_encrypted = secure_hashtable_data_encrypted->items_count; if (count > 0) { line++; gui_chat_printf_y (secure_buffer, line++, _("Secured data:")); line++; hashtable_map (secure_hashtable_data, &secure_buffer_display_data, &line); } /* display secured data not decrypted */ if (count_encrypted > 0) { line++; gui_chat_printf_y (secure_buffer, line++, _("Secured data STILL ENCRYPTED: (use /secure decrypt, " "see /help secure)")); line++; hashtable_map (secure_hashtable_data_encrypted, &secure_buffer_display_data, &line); } if ((count == 0) && (count_encrypted == 0)) { line++; gui_chat_printf_y (secure_buffer, line++, _("No secured data set")); } }