1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-27 21:36:37 +02:00

Use arguments for infolist "nicklist" to return only one nick or group

Format is: nick_xxx or group_xxx to return only nick/group called "xxx".
This commit is contained in:
Sebastien Helleu
2010-02-12 12:50:16 +01:00
parent 8cea059feb
commit 8d25a75200
5 changed files with 105 additions and 46 deletions
+2 -1
View File
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
FlashCode <flashcode@flashtux.org>
v0.3.2-dev, 2010-02-11
v0.3.2-dev, 2010-02-12
Version 0.3.2 (under dev!)
@@ -15,6 +15,7 @@ Version 0.3.2 (under dev!)
* core: add new option weechat.look.time_format to customize default format
for date/time displayed (localized date by default), add function
weechat_util_get_time_string in plugin API (patch #6914)
* core: use arguments for infolist "nicklist" to return only one nick or group
* gui: fix bug with global history, reset pointer to last entry after each user
input (bug #28754)
* api: add "version_number" for function info_get to get WeeChat version as
+1 -1
View File
@@ -135,7 +135,7 @@ upgrade_weechat_save_buffers (struct t_upgrade_file *upgrade_file)
ptr_infolist = infolist_new ();
if (!ptr_infolist)
return 0;
if (!gui_nicklist_add_to_infolist (ptr_infolist, ptr_buffer))
if (!gui_nicklist_add_to_infolist (ptr_infolist, ptr_buffer, NULL))
{
infolist_free (ptr_infolist);
return 0;
+99 -42
View File
@@ -631,6 +631,82 @@ gui_nicklist_compute_visible_count (struct t_gui_buffer *buffer,
buffer->nicklist_visible_count++;
}
/*
* gui_nicklist_add_group_to_infolist: add a group in an infolist
* return 1 if ok, 0 if error
*/
int
gui_nicklist_add_group_to_infolist (struct t_infolist *infolist,
struct t_gui_nick_group *group)
{
struct t_infolist_item *ptr_item;
if (!infolist || !group)
return 0;
ptr_item = infolist_new_item (infolist);
if (!ptr_item)
return 0;
if (!infolist_new_var_string (ptr_item, "type", "group"))
return 0;
if (group->parent)
{
if (!infolist_new_var_string (ptr_item, "parent_name", group->parent->name))
return 0;
}
if (!infolist_new_var_string (ptr_item, "name", group->name))
return 0;
if (!infolist_new_var_string (ptr_item, "color", group->color))
return 0;
if (!infolist_new_var_integer (ptr_item, "visible", group->visible))
return 0;
if (!infolist_new_var_integer (ptr_item, "level", group->level))
return 0;
return 1;
}
/*
* gui_nicklist_add_nick_to_infolist: add a nick in an infolist
* return 1 if ok, 0 if error
*/
int
gui_nicklist_add_nick_to_infolist (struct t_infolist *infolist,
struct t_gui_nick *nick)
{
struct t_infolist_item *ptr_item;
if (!infolist || !nick)
return 0;
ptr_item = infolist_new_item (infolist);
if (!ptr_item)
return 0;
if (!infolist_new_var_string (ptr_item, "type", "nick"))
return 0;
if (nick->group)
{
if (!infolist_new_var_string (ptr_item, "group_name", nick->group->name))
return 0;
}
if (!infolist_new_var_string (ptr_item, "name", nick->name))
return 0;
if (!infolist_new_var_string (ptr_item, "color", nick->color))
return 0;
if (!infolist_new_var_string (ptr_item, "prefix", nick->prefix))
return 0;
if (!infolist_new_var_string (ptr_item, "prefix_color", nick->prefix_color))
return 0;
if (!infolist_new_var_integer (ptr_item, "visible", nick->visible))
return 0;
return 1;
}
/*
* gui_nicklist_add_to_infolist: add a nicklist in an infolist
* return 1 if ok, 0 if error
@@ -638,62 +714,43 @@ gui_nicklist_compute_visible_count (struct t_gui_buffer *buffer,
int
gui_nicklist_add_to_infolist (struct t_infolist *infolist,
struct t_gui_buffer *buffer)
struct t_gui_buffer *buffer,
const char *name)
{
struct t_infolist_item *ptr_item;
struct t_gui_nick_group *ptr_group;
struct t_gui_nick *ptr_nick;
if (!infolist || !buffer)
return 0;
/* add only one nick if asked */
if (name && (strncmp (name, "nick_", 5) == 0))
{
ptr_nick = gui_nicklist_search_nick (buffer, NULL, name + 5);
if (!ptr_nick)
return 0;
return gui_nicklist_add_nick_to_infolist (infolist, ptr_nick);
}
/* add only one group if asked */
if (name && (strncmp (name, "group_", 6) == 0))
{
ptr_group = gui_nicklist_search_group (buffer, NULL, name + 6);
if (!ptr_group)
return 0;
return gui_nicklist_add_group_to_infolist (infolist, ptr_group);
}
ptr_group = NULL;
ptr_nick = NULL;
gui_nicklist_get_next_item (buffer, &ptr_group, &ptr_nick);
while (ptr_group || ptr_nick)
{
ptr_item = infolist_new_item (infolist);
if (!ptr_item)
return 0;
if (ptr_nick)
{
if (!infolist_new_var_string (ptr_item, "type", "nick"))
return 0;
if (ptr_nick->group)
{
if (!infolist_new_var_string (ptr_item, "group_name", ptr_nick->group->name))
return 0;
}
if (!infolist_new_var_string (ptr_item, "name", ptr_nick->name))
return 0;
if (!infolist_new_var_string (ptr_item, "color", ptr_nick->color))
return 0;
if (!infolist_new_var_string (ptr_item, "prefix", ptr_nick->prefix))
return 0;
if (!infolist_new_var_string (ptr_item, "prefix_color", ptr_nick->prefix_color))
return 0;
if (!infolist_new_var_integer (ptr_item, "visible", ptr_nick->visible))
return 0;
}
gui_nicklist_add_nick_to_infolist (infolist, ptr_nick);
else
{
if (!infolist_new_var_string (ptr_item, "type", "group"))
return 0;
if (ptr_group->parent)
{
if (!infolist_new_var_string (ptr_item, "parent_name", ptr_group->parent->name))
return 0;
}
if (!infolist_new_var_string (ptr_item, "name", ptr_group->name))
return 0;
if (!infolist_new_var_string (ptr_item, "color", ptr_group->color))
return 0;
if (!infolist_new_var_integer (ptr_item, "visible", ptr_group->visible))
return 0;
if (!infolist_new_var_integer (ptr_item, "level", ptr_group->level))
return 0;
}
gui_nicklist_add_group_to_infolist (infolist, ptr_group);
gui_nicklist_get_next_item (buffer, &ptr_group, &ptr_nick);
}
+2 -1
View File
@@ -82,7 +82,8 @@ extern char *gui_nicklist_get_group_start (const char *name);
extern void gui_nicklist_compute_visible_count (struct t_gui_buffer *buffer,
struct t_gui_nick_group *group);
extern int gui_nicklist_add_to_infolist (struct t_infolist *infolist,
struct t_gui_buffer *buffer);
struct t_gui_buffer *buffer,
const char *name);
extern void gui_nicklist_print_log (struct t_gui_nick_group *group, int indent);
#endif /* gui-nicklist.h */
+1 -1
View File
@@ -668,7 +668,7 @@ plugin_api_infolist_get_internal (void *data, const char *infolist_name,
ptr_infolist = infolist_new ();
if (ptr_infolist)
{
if (!gui_nicklist_add_to_infolist (ptr_infolist, pointer))
if (!gui_nicklist_add_to_infolist (ptr_infolist, pointer, arguments))
{
infolist_free (ptr_infolist);
return NULL;