diff --git a/ChangeLog b/ChangeLog index 009105327..fde29a8b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu -v0.4.1-dev, 2013-02-26 +v0.4.1-dev, 2013-03-03 This document lists all changes for each version. @@ -14,6 +14,7 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] Version 0.4.1 (under dev!) -------------------------- +* core: add count for groups, nicks, and total in nicklist * core: allow read of array in hdata without using index * core: add option "dirs" for command /debug * core: fix detection of iconv with cmake on OS X (bug #38321) diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt index ad10264fa..c83461dc7 100644 --- a/doc/en/weechat_plugin_api.en.txt +++ b/doc/en/weechat_plugin_api.en.txt @@ -9965,6 +9965,9 @@ Arguments: ** 'nicklist_case_sensitive': 1 if nicks are case sensitive, otherwise 0 ** 'nicklist_max_length': max length for a nick ** 'nicklist_display_groups': 1 if groups are displayed, otherwise 0 +** 'nicklist_count': number of nicks and groups in nicklist +** 'nicklist_groups_count': number of groups in nicklist +** 'nicklist_nicks_count': number of nicks in nicklist ** 'nicklist_visible_count': number of nicks/groups displayed ** 'input': 1 if input is enabled, otherwise 0 ** 'input_get_unknown_commands': 1 if unknown commands are sent to input diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt index 68f816c09..45b232975 100644 --- a/doc/fr/weechat_plugin_api.fr.txt +++ b/doc/fr/weechat_plugin_api.fr.txt @@ -10129,6 +10129,9 @@ Paramètres : sinon 0 ** 'nicklist_max_length' : longueur maxi d'un pseudo ** 'nicklist_display_groups' : 1 si les groupes sont affichés, sinon 0 +** 'nicklist_count' : nombre de pseudos et groupes dans la liste de pseudos +** 'nicklist_groups_count' : nombre de groupes dans la liste de pseudos +** 'nicklist_nicks_count' : nombre de pseudos dans la liste de pseudos ** 'nicklist_visible_count' : nombre de pseudos/groupes affichés ** 'input' : 1 si la zone de saisie est activée, sinon 0 ** 'input_get_unknown_commands' : 1 si les commandes inconnues sont envoyées diff --git a/doc/it/weechat_plugin_api.it.txt b/doc/it/weechat_plugin_api.it.txt index ace0fddc9..b22fc6684 100644 --- a/doc/it/weechat_plugin_api.it.txt +++ b/doc/it/weechat_plugin_api.it.txt @@ -10093,6 +10093,12 @@ Argomenti: altrimenti 0 ** 'nicklist_max_length': lunghezza massima per un nick ** 'nicklist_display_groups': 1 se i gruppi vengono visualizzati, altrimenti 0 +// TRANSLATION MISSING +** 'nicklist_count': number of nicks and groups in nicklist +// TRANSLATION MISSING +** 'nicklist_groups_count': number of groups in nicklist +// TRANSLATION MISSING +** 'nicklist_nicks_count': number of nicks in nicklist ** 'nicklist_visible_count': numero di nick/gruppi visualizzati ** 'input': 1 se l'input è abilitato, altrimenti 0 ** 'input_get_unknown_commands': 1 se i comandi sconosciuti vengono inviati diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index e5ec36266..0dbeb0111 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -78,6 +78,7 @@ char *gui_buffer_properties_get_integer[] = "num_displayed", "active", "print_hooks_enabled", "lines_hidden", "prefix_max_length", "time_for_each_line", "nicklist", "nicklist_case_sensitive", "nicklist_max_length", "nicklist_display_groups", + "nicklist_count", "nicklist_groups_count", "nicklist_nicks_count", "nicklist_visible_count", "input", "input_get_unknown_commands", "input_size", "input_length", "input_pos", "input_1st_display", "num_history", "text_search", "text_search_exact", "text_search_found", @@ -494,6 +495,9 @@ gui_buffer_new (struct t_weechat_plugin *plugin, new_buffer->nicklist_root = NULL; new_buffer->nicklist_max_length = 0; new_buffer->nicklist_display_groups = 1; + new_buffer->nicklist_count = 0; + new_buffer->nicklist_groups_count = 0; + new_buffer->nicklist_nicks_count = 0; new_buffer->nicklist_visible_count = 0; new_buffer->nickcmp_callback = NULL; new_buffer->nickcmp_callback_data = NULL; @@ -868,6 +872,12 @@ gui_buffer_get_integer (struct t_gui_buffer *buffer, const char *property) return buffer->nicklist_max_length; else if (string_strcasecmp (property, "nicklist_display_groups") == 0) return buffer->nicklist_display_groups; + else if (string_strcasecmp (property, "nicklist_count") == 0) + return buffer->nicklist_count; + else if (string_strcasecmp (property, "nicklist_groups_count") == 0) + return buffer->nicklist_groups_count; + else if (string_strcasecmp (property, "nicklist_nicks_count") == 0) + return buffer->nicklist_nicks_count; else if (string_strcasecmp (property, "nicklist_visible_count") == 0) return buffer->nicklist_visible_count; else if (string_strcasecmp (property, "input") == 0) @@ -3185,6 +3195,9 @@ gui_buffer_hdata_buffer_cb (void *data, const char *hdata_name) HDATA_VAR(struct t_gui_buffer, nicklist_root, POINTER, 0, NULL, "nick_group"); HDATA_VAR(struct t_gui_buffer, nicklist_max_length, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, nicklist_display_groups, INTEGER, 0, NULL, NULL); + HDATA_VAR(struct t_gui_buffer, nicklist_count, INTEGER, 0, NULL, NULL); + HDATA_VAR(struct t_gui_buffer, nicklist_groups_count, INTEGER, 0, NULL, NULL); + HDATA_VAR(struct t_gui_buffer, nicklist_nicks_count, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, nicklist_visible_count, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, nickcmp_callback, POINTER, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, nickcmp_callback_data, POINTER, 0, NULL, NULL); @@ -3351,6 +3364,12 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist, return 0; if (!infolist_new_var_integer (ptr_item, "nicklist_max_length", buffer->nicklist_max_length)) return 0; + if (!infolist_new_var_integer (ptr_item, "nicklist_count", buffer->nicklist_count)) + return 0; + if (!infolist_new_var_integer (ptr_item, "nicklist_groups_count", buffer->nicklist_groups_count)) + return 0; + if (!infolist_new_var_integer (ptr_item, "nicklist_nicks_count", buffer->nicklist_nicks_count)) + return 0; if (!infolist_new_var_integer (ptr_item, "nicklist_visible_count", buffer->nicklist_visible_count)) return 0; if (!infolist_new_var_string (ptr_item, "title", buffer->title)) @@ -3542,6 +3561,9 @@ gui_buffer_print_log () log_printf (" nicklist_root . . . . . : 0x%lx", ptr_buffer->nicklist_root); log_printf (" nicklist_max_length . . : %d", ptr_buffer->nicklist_max_length); log_printf (" nicklist_display_groups : %d", ptr_buffer->nicklist_display_groups); + log_printf (" nicklist_count. . . . . : %d", ptr_buffer->nicklist_count); + log_printf (" nicklist_groups_count . : %d", ptr_buffer->nicklist_groups_count); + log_printf (" nicklist_nicks_count. . : %d", ptr_buffer->nicklist_nicks_count); log_printf (" nicklist_visible_count. : %d", ptr_buffer->nicklist_visible_count); log_printf (" nickcmp_callback. . . . : 0x%lx", ptr_buffer->nickcmp_callback); log_printf (" nickcmp_callback_data . : 0x%lx", ptr_buffer->nickcmp_callback_data); diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h index 9cc93de7c..e1704cf9f 100644 --- a/src/gui/gui-buffer.h +++ b/src/gui/gui-buffer.h @@ -113,6 +113,9 @@ struct t_gui_buffer struct t_gui_nick_group *nicklist_root; /* pointer to groups root */ int nicklist_max_length; /* max length for a nick */ int nicklist_display_groups; /* display groups ? */ + int nicklist_count; /* number of nicks/groups */ + int nicklist_groups_count; /* number of groups */ + int nicklist_nicks_count; /* number of nicks */ int nicklist_visible_count; /* number of nicks/groups to display */ int (*nickcmp_callback)(void *data, /* called to compare nicks (search */ struct t_gui_buffer *buffer, /* in nicklist) */ diff --git a/src/gui/gui-nicklist.c b/src/gui/gui-nicklist.c index be6fdb484..d03fe3175 100644 --- a/src/gui/gui-nicklist.c +++ b/src/gui/gui-nicklist.c @@ -247,6 +247,8 @@ gui_nicklist_add_group (struct t_gui_buffer *buffer, gui_nicklist_insert_group_sorted (&(new_group->parent->children), &(new_group->parent->last_child), new_group); + buffer->nicklist_count++; + buffer->nicklist_groups_count++; } else { @@ -409,6 +411,9 @@ gui_nicklist_add_nick (struct t_gui_buffer *buffer, gui_nicklist_insert_nick_sorted (new_nick->group, new_nick); + buffer->nicklist_count++; + buffer->nicklist_nicks_count++; + if (visible) buffer->nicklist_visible_count++; @@ -455,6 +460,9 @@ gui_nicklist_remove_nick (struct t_gui_buffer *buffer, if (nick->prefix_color) free (nick->prefix_color); + buffer->nicklist_count--; + buffer->nicklist_nicks_count--; + if (nick->visible) { if (buffer->nicklist_visible_count > 0) @@ -510,6 +518,9 @@ gui_nicklist_remove_group (struct t_gui_buffer *buffer, (group->parent)->children = group->next_group; if ((group->parent)->last_child == group) (group->parent)->last_child = group->prev_group; + + buffer->nicklist_count--; + buffer->nicklist_groups_count--; } else {