core: add signals and hsignals for nicklist events

New signals: nicklist_group_removing and nicklist_nick_removing.
New hsignals: nicklist_group_added, nicklist_nick_added, nicklist_group_removing,
nicklist_nick_removing, nicklist_group_changed, nicklist_nick_changed.
v2.8-utf8proc
Sebastien Helleu 2013-03-08 23:13:58 +01:00
parent fced67b459
commit 9fdeef247e
5 changed files with 231 additions and 12 deletions

View File

@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
v0.4.1-dev, 2013-03-07
v0.4.1-dev, 2013-03-08
This document lists all changes for each version.
@ -14,6 +14,8 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
Version 0.4.1 (under dev!)
--------------------------
* core: add signals nicklist_{group|nick}_removing and hsignals
nicklist_{group|nick}_{added|removing|changed}
* 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

View File

@ -7896,6 +7896,11 @@ Arguments:
string: buffer pointer + "," + group name |
group changed in nicklist
| weechat | nicklist_group_removing +
(_new in version 0.4.1_) |
string: buffer pointer + "," + group name |
removing group from nicklist
| weechat | nicklist_group_removed +
(_new in version 0.3.2_) |
string: buffer pointer + "," + group name |
@ -7911,6 +7916,11 @@ Arguments:
string: buffer pointer + "," + nick name |
nick changed in nicklist
| weechat | nicklist_nick_removing +
(_new in version 0.4.1_) |
string: buffer pointer + "," + nick name |
removing nick from nicklist
| weechat | nicklist_nick_removed +
(_new in version 0.3.2_) |
string: buffer pointer + "," + nick name |
@ -8286,12 +8296,56 @@ Arguments:
* 'signal': signal to catch, can begin or end with "*"
(priority allowed, see note about <<hook_priority,priority>>):
[width="100%",cols="^1,^3,5",options="header"]
[width="100%",cols="^1,^3,5,5",options="header"]
|========================================
| Plugin | Signal | Arguments
| Plugin | Signal | Arguments | Description
| irc | irc_redirection_xxx_yyy ^(1)^ |
redirection output (see <<hsignal_irc_redirect_command>>)
| irc | irc_redirection_xxx_yyy ^(1)^ +
(_new in version 0.3.4_) |
see <<hsignal_irc_redirect_command,hsignal_irc_redirect_command>> |
redirection output
| weechat | nicklist_group_added +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
group added in nicklist
| weechat | nicklist_nick_added +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
nick added in nicklist
| weechat | nicklist_group_removing +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
removing group from nicklist
| weechat | nicklist_nick_removing +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
removing nick from nicklist
| weechat | nicklist_group_changed +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
group changed in nicklist
| weechat | nicklist_nick_changed +
(_new in version 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
nick changed in nicklist
|========================================
[NOTE]

View File

@ -8009,6 +8009,11 @@ Paramètres :
chaîne : pointeur tampon + "," + nom du groupe |
groupe modifié dans la liste des pseudos
| weechat | nicklist_group_removing +
(_nouveau dans la version 0.4.1_) |
chaîne : pointeur tampon + "," + nom du groupe |
suppression du groupe de la liste des pseudos
| weechat | nicklist_group_removed +
(_nouveau dans la version 0.3.2_) |
chaîne : pointeur tampon + "," + nom du groupe |
@ -8024,6 +8029,11 @@ Paramètres :
chaîne : pointeur tampon + "," + pseudo |
pseudo modifié dans la liste des pseudos
| weechat | nicklist_nick_removing +
(_nouveau dans la version 0.4.1_) |
chaîne : pointeur tampon + "," + pseudo |
suppression du pseudo de la liste des pseudos
| weechat | nicklist_nick_removed +
(_nouveau dans la version 0.3.2_) |
chaîne : pointeur tampon + "," + pseudo |
@ -8408,12 +8418,55 @@ Paramètres :
* 'signal' : signal à intercepter, peut commencer ou se terminer par "*"
(priorité autorisée, voir la note sur la <<hook_priority,priorité>>) :
[width="100%",cols="^1,^3,5",options="header"]
[width="100%",cols="^1,^3,5,5",options="header"]
|========================================
| Extension | Signal | Paramètres
| Extension | Signal | Paramètres | Description
| irc | irc_redirection_xxx_yyy ^(1)^ |
| irc | irc_redirection_xxx_yyy ^(1)^ +
(_nouveau dans la version 0.3.4_) |
sortie de la redirection (voir <<hsignal_irc_redirect_command>>)
| weechat | nicklist_group_added +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : groupe parent +
'group' ('struct t_gui_nick_group *') : groupe |
group added in nicklist
| weechat | nicklist_nick_added +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : groupe parent +
'nick' ('struct t_gui_nick *') : pseudo |
nick added in nicklist
| weechat | nicklist_group_removing +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : groupe parent +
'group' ('struct t_gui_nick_group *') : groupe |
removing group from nicklist
| weechat | nicklist_nick_removing +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : groupe parent +
'nick' ('struct t_gui_nick *') : pseudo |
removing nick from nicklist
| weechat | nicklist_group_changed +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : groupe parent +
'group' ('struct t_gui_nick_group *') : groupe |
group changed in nicklist
| weechat | nicklist_nick_changed +
(_nouveau dans la version 0.4.1_) |
'buffer' ('struct t_gui_buffer *') : tampon +
'parent_group' ('struct t_gui_nick_group *') : parent +
'nick' ('struct t_gui_nick *') : pseudo |
nick changed in nicklist
|========================================
[NOTE]

View File

@ -7976,6 +7976,12 @@ Argomenti:
string: buffer pointer + "," + group name |
group changed in nicklist
// TRANSLATION MISSING
| weechat | nicklist_group_removing +
(_novità nella versione 0.4.1_) |
string: buffer pointer + "," + group name |
removing group from nicklist
// TRANSLATION MISSING
| weechat | nicklist_group_removed +
(_novità nella versione 0.3.2_) |
@ -7994,6 +8000,12 @@ Argomenti:
string: buffer pointer + "," + nick name |
nick changed in nicklist
// TRANSLATION MISSING
| weechat | nicklist_nick_removing +
(_novità nella versione 0.4.1_) |
string: buffer pointer + "," + nick name |
removing nick from nicklist
// TRANSLATION MISSING
| weechat | nicklist_nick_removed +
(_novità nella versione 0.3.2_) |
@ -8387,12 +8399,62 @@ Argomenti:
* 'signal': segnale da catturare, può iniziare o terminare con "*"
(priorità consentita, consultare la nota a proposito di <<hook_priority,priority>>):
[width="100%",cols="^1,^3,5",options="header"]
[width="100%",cols="^1,^3,5,5",options="header"]
|========================================
| Plugin | Segnale | Argomenti
| Plugin | Segnale | Argomenti | Descrizione
| irc | irc_redirection_xxx_yyy ^(1)^ |
redirection output (consultare <<hsignal_irc_redirect_command>>)
| irc | irc_redirection_xxx_yyy ^(1)^ +
(_novità nella versione 0.3.4_) |
consultare <<hsignal_irc_redirect_command,hsignal_irc_redirect_command>> |
redirection output
// TRANSLATION MISSING
| weechat | nicklist_group_added +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
group added in nicklist
// TRANSLATION MISSING
| weechat | nicklist_nick_added +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
nick added in nicklist
// TRANSLATION MISSING
| weechat | nicklist_group_removing +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
removing group from nicklist
// TRANSLATION MISSING
| weechat | nicklist_nick_removing +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
removing nick from nicklist
// TRANSLATION MISSING
| weechat | nicklist_group_changed +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'group' ('struct t_gui_nick_group *'): group |
group changed in nicklist
// TRANSLATION MISSING
| weechat | nicklist_nick_changed +
(_novità nella versione 0.4.1_) |
'buffer' ('struct t_gui_buffer *'): buffer +
'parent_group' ('struct t_gui_nick_group *'): parent group +
'nick' ('struct t_gui_nick *'): nick |
nick changed in nicklist
|========================================
[NOTE]

View File

@ -35,6 +35,7 @@
#include "../core/weechat.h"
#include "../core/wee-config.h"
#include "../core/wee-hashtable.h"
#include "../core/wee-hdata.h"
#include "../core/wee-hook.h"
#include "../core/wee-infolist.h"
@ -47,6 +48,9 @@
#include "gui-color.h"
struct t_hashtable *gui_nicklist_hsignal = NULL;
/*
* Sends a signal when something has changed in nicklist.
*/
@ -79,6 +83,40 @@ gui_nicklist_send_signal (const char *signal, struct t_gui_buffer *buffer,
}
}
/*
* Sends a hsignal when something will change or has changed in nicklist.
*/
void
gui_nicklist_send_hsignal (const char *signal, struct t_gui_buffer *buffer,
struct t_gui_nick_group *group,
struct t_gui_nick *nick)
{
if (!gui_nicklist_hsignal)
{
gui_nicklist_hsignal = hashtable_new (32,
WEECHAT_HASHTABLE_STRING,
WEECHAT_HASHTABLE_POINTER,
NULL,
NULL);
}
if (!gui_nicklist_hsignal)
return;
hashtable_remove_all (gui_nicklist_hsignal);
hashtable_set (gui_nicklist_hsignal, "buffer", buffer);
hashtable_set (gui_nicklist_hsignal, "parent_group",
(group) ? group->parent : nick->group);
if (group)
hashtable_set (gui_nicklist_hsignal, "group", group);
if (nick)
hashtable_set (gui_nicklist_hsignal, "nick", nick);
hook_hsignal_send (signal, gui_nicklist_hsignal);
}
/*
* Searches for position of a group (to keep nicklist sorted).
*/
@ -259,6 +297,7 @@ gui_nicklist_add_group (struct t_gui_buffer *buffer,
buffer->nicklist_visible_count++;
gui_nicklist_send_signal ("nicklist_group_added", buffer, name);
gui_nicklist_send_hsignal ("nicklist_group_added", buffer, new_group, NULL);
return new_group;
}
@ -421,6 +460,7 @@ gui_nicklist_add_nick (struct t_gui_buffer *buffer,
gui_buffer_ask_chat_refresh (buffer, 1);
gui_nicklist_send_signal ("nicklist_nick_added", buffer, name);
gui_nicklist_send_hsignal ("nicklist_nick_added", buffer, NULL, new_nick);
return new_nick;
}
@ -440,6 +480,9 @@ gui_nicklist_remove_nick (struct t_gui_buffer *buffer,
nick_removed = (nick->name) ? strdup (nick->name) : NULL;
gui_nicklist_send_signal ("nicklist_nick_removing", buffer, nick_removed);
gui_nicklist_send_hsignal ("nicklist_nick_removing", buffer, NULL, nick);
/* remove nick from list */
if (nick->prev_nick)
(nick->prev_nick)->next_nick = nick->next_nick;
@ -507,6 +550,9 @@ gui_nicklist_remove_group (struct t_gui_buffer *buffer,
gui_nicklist_remove_nick (buffer, group->nicks);
}
gui_nicklist_send_signal ("nicklist_group_removing", buffer, group_removed);
gui_nicklist_send_hsignal ("nicklist_group_removing", buffer, group, NULL);
if (group->parent)
{
/* remove group from list */
@ -855,6 +901,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
{
gui_nicklist_send_signal ("nicklist_group_changed", buffer,
group->name);
gui_nicklist_send_hsignal ("nicklist_group_changed", buffer, group, NULL);
}
}
@ -979,6 +1026,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
{
gui_nicklist_send_signal ("nicklist_nick_changed", buffer,
nick->name);
gui_nicklist_send_hsignal ("nicklist_nick_changed", buffer, NULL, nick);
}
}