diff options
45 files changed, 3219 insertions, 453 deletions
@@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu <flashcode@flashtux.org> -v0.3.4-dev, 2010-10-30 +v0.3.4-dev, 2010-11-06 Version 0.3.4 (under dev!) @@ -29,6 +29,10 @@ Version 0.3.4 (under dev!) nicklist_group_get_integer, nicklist_group_get_string, nicklist_group_get_pointer, nicklist_group_set, nicklist_nick_get_integer, nicklist_nick_get_string, nicklist_nick_get_pointer, nicklist_nick_set +* irc: add command /notify, new options irc.look.notify_tags_ison, + irc.look.notify_tags_whois, irc.network.notify_check_ison, + irc.network.notify_check_whois, new option "notify" in servers, new infolist + "irc_notify" (task #5441) * irc: add new option irc.look.nick_color_force (task #7374) * irc: improve nick prefixes, all modes (even unknown) are used with PREFIX value from message 005 diff --git a/doc/de/autogen/plugin_api/completions.txt b/doc/de/autogen/plugin_api/completions.txt index 489199381..177be93cb 100644 --- a/doc/de/autogen/plugin_api/completions.txt +++ b/doc/de/autogen/plugin_api/completions.txt @@ -18,6 +18,8 @@ | irc | irc_msg_part | Standardnachricht beim Verlassen (/part) eines IRC-Channels +| irc | irc_notify_nicks | nicks in notify list + | irc | irc_privates | Private auf allen IRC Servern | irc | irc_server | aktueller IRC-Server diff --git a/doc/de/autogen/plugin_api/infolists.txt b/doc/de/autogen/plugin_api/infolists.txt index 397076ff0..e69571e81 100644 --- a/doc/de/autogen/plugin_api/infolists.txt +++ b/doc/de/autogen/plugin_api/infolists.txt @@ -10,6 +10,8 @@ | irc | irc_nick | Liste der Nicks im IRC-Channel | Nick Pointer (optional) | Server,Channel,Nick (Channel und Nick sind optional) +| irc | irc_notify | list of notify | notify pointer (optional) | Servername (darf mit einem "*" als Platzhalter beginnen oder enden) (optional) + | irc | irc_server | Liste der IRC-Server | Server Pointer (optional) | Servername (darf mit einem "*" als Platzhalter beginnen oder enden) (optional) | logger | logger_buffer | Liste der protokollierten Buffer | Logger Pointer (optional) | - diff --git a/doc/de/autogen/user/irc_commands.txt b/doc/de/autogen/user/irc_commands.txt index da3963086..52b9e79c6 100644 --- a/doc/de/autogen/user/irc_commands.txt +++ b/doc/de/autogen/user/irc_commands.txt @@ -151,21 +151,21 @@ ........................................ Ignoriert Nicks/Hosts von Channels oder Servern - list: zeigt an, wer/was ignoriert wird - add: füge eine Ignorierung hinzu - del: entferne eine Ignorierung - number: Nummer der Ignorierung die entfernt werden soll (nutze "list" ) - -all: entfernt alle Einträge - nick/host: Nick oder Host der ignoriert werden soll: Syntax ist "re:regex" oder "mask" (mask ist eine Zeichenkette in der mittels "*" (Joker) ein oder mehrere Zeichen ersetzt werden können) - server: interner Name des Server, in dem die Ignorierung statt finden soll - channel: Name des Channel, in dem die Ignorierung statt finden soll + list: list all ignores + add: add an ignore + del: delete an ignore + number: number of ignore to delete (look at list to find it) + -all: delete all ignores + nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars) + server: internal server name where ignore is working + channel: channel name where ignore is working - Beispiele: - ignoriert den Nick "toto": + Examples: + ignore nick "toto" everywhere: /ignore add toto - ignoriert den Host "toto@domain.com" auf dem freenode Server: + ignore host "toto@domain.com" on freenode server: /ignore add toto@domain.com freenode - ignoriert den Host "toto*@*.domain.com" im Chat freenode/#weechat: + ignore host "toto*@*.domain.com" on freenode/#weechat: /ignore add toto*@*.domain.com freenode #weechat ........................................ @@ -364,6 +364,29 @@ Text: zu sendender Text ........................................ +• *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`:: + +........................................ + add a notification for presence or away status of nicks on servers + + add: add a notification + nick: nickname + server: internal server name (by default current server) + -away: notify when away message is changed (by doing whois on nick) + del: delete a notification + -all: delete all notifications + + Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer). + + Examples: + notify when "toto" joins/quits current server: + /notify add toto + notify when "toto" joins/quits freenode server: + /notify add toto freenode + notify when "toto" is away or back on freenode server: + /notify add toto freenode -away +........................................ + • *`/op`* `Nickname [Nickname]`:: ........................................ diff --git a/doc/de/autogen/user/irc_options.txt b/doc/de/autogen/user/irc_options.txt index 6a239da5a..94d4b8a14 100644 --- a/doc/de/autogen/user/irc_options.txt +++ b/doc/de/autogen/user/irc_options.txt @@ -218,6 +218,16 @@ ** Typ: integer ** Werte: auto, never, always (Standardwert: `auto`) +* *irc.look.notify_tags_ison* +** Beschreibung: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"` +** Typ: Zeichenkette +** Werte: beliebige Zeichenkette (Standardwert: `"notify_message"`) + +* *irc.look.notify_tags_whois* +** Beschreibung: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"` +** Typ: Zeichenkette +** Werte: beliebige Zeichenkette (Standardwert: `"notify_message"`) + * *irc.look.part_closes_buffer* ** Beschreibung: `Schließt den Buffer wenn "/part" im Channel ausgeführt wird` ** Typ: boolesch @@ -298,6 +308,16 @@ ** Typ: integer ** Werte: 1 .. 3600 (Standardwert: `1`) +* *irc.network.notify_check_ison* +** Beschreibung: `interval between two checks for notify with IRC command "ison" (in minutes)` +** Typ: integer +** Werte: 1 .. 10080 (Standardwert: `1`) + +* *irc.network.notify_check_whois* +** Beschreibung: `interval between two checks for notify with IRC command "whois" (in minutes)` +** Typ: integer +** Werte: 1 .. 10080 (Standardwert: `5`) + * *irc.network.send_unknown_commands* ** Beschreibung: `Sende unbekannte Befehle an den Server` ** Typ: boolesch @@ -398,6 +418,11 @@ ** Typ: Zeichenkette ** Werte: beliebige Zeichenkette (Standardwert: `""`) +* *irc.server_default.notify* +** Beschreibung: `notify list for server (you should not change this option but use /notify command instead)` +** Typ: Zeichenkette +** Werte: beliebige Zeichenkette (Standardwert: `""`) + * *irc.server_default.password* ** Beschreibung: `Passwort für den Server` ** Typ: Zeichenkette diff --git a/doc/en/autogen/plugin_api/completions.txt b/doc/en/autogen/plugin_api/completions.txt index 85dc06699..f9ab6bc73 100644 --- a/doc/en/autogen/plugin_api/completions.txt +++ b/doc/en/autogen/plugin_api/completions.txt @@ -18,6 +18,8 @@ | irc | irc_msg_part | default part message for IRC channel +| irc | irc_notify_nicks | nicks in notify list + | irc | irc_privates | privates on all IRC servers | irc | irc_server | current IRC server diff --git a/doc/en/autogen/plugin_api/infolists.txt b/doc/en/autogen/plugin_api/infolists.txt index ddbd46de1..5fc908948 100644 --- a/doc/en/autogen/plugin_api/infolists.txt +++ b/doc/en/autogen/plugin_api/infolists.txt @@ -10,6 +10,8 @@ | irc | irc_nick | list of nicks for an IRC channel | nick pointer (optional) | server,channel,nick (channel and nick are optional) +| irc | irc_notify | list of notify | notify pointer (optional) | server name (can start or end with "*" as wildcard) (optional) + | irc | irc_server | list of IRC servers | server pointer (optional) | server name (can start or end with "*" as wildcard) (optional) | logger | logger_buffer | list of logger buffers | logger pointer (optional) | - diff --git a/doc/en/autogen/user/irc_commands.txt b/doc/en/autogen/user/irc_commands.txt index 97c9b2ab5..b225c4918 100644 --- a/doc/en/autogen/user/irc_commands.txt +++ b/doc/en/autogen/user/irc_commands.txt @@ -152,8 +152,8 @@ ignore nicks/hosts from servers or channels list: list all ignores - add: add a ignore - del: del a ignore + add: add an ignore + del: delete an ignore number: number of ignore to delete (look at list to find it) -all: delete all ignores nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars) @@ -364,6 +364,29 @@ text: text to send ........................................ +• *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`:: + +........................................ + add a notification for presence or away status of nicks on servers + + add: add a notification + nick: nickname + server: internal server name (by default current server) + -away: notify when away message is changed (by doing whois on nick) + del: delete a notification + -all: delete all notifications + + Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer). + + Examples: + notify when "toto" joins/quits current server: + /notify add toto + notify when "toto" joins/quits freenode server: + /notify add toto freenode + notify when "toto" is away or back on freenode server: + /notify add toto freenode -away +........................................ + • *`/op`* `nickname [nickname]`:: ........................................ diff --git a/doc/en/autogen/user/irc_options.txt b/doc/en/autogen/user/irc_options.txt index 7020680a0..85be17fca 100644 --- a/doc/en/autogen/user/irc_options.txt +++ b/doc/en/autogen/user/irc_options.txt @@ -218,6 +218,16 @@ ** type: integer ** values: auto, never, always (default value: `auto`) +* *irc.look.notify_tags_ison* +** description: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"` +** type: string +** values: any string (default value: `"notify_message"`) + +* *irc.look.notify_tags_whois* +** description: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"` +** type: string +** values: any string (default value: `"notify_message"`) + * *irc.look.part_closes_buffer* ** description: `close buffer when /part is issued on a channel` ** type: boolean @@ -298,6 +308,16 @@ ** type: integer ** values: 1 .. 3600 (default value: `1`) +* *irc.network.notify_check_ison* +** description: `interval between two checks for notify with IRC command "ison" (in minutes)` +** type: integer +** values: 1 .. 10080 (default value: `1`) + +* *irc.network.notify_check_whois* +** description: `interval between two checks for notify with IRC command "whois" (in minutes)` +** type: integer +** values: 1 .. 10080 (default value: `5`) + * *irc.network.send_unknown_commands* ** description: `send unknown commands to server` ** type: boolean @@ -398,6 +418,11 @@ ** type: string ** values: any string (default value: `""`) +* *irc.server_default.notify* +** description: `notify list for server (you should not change this option but use /notify command instead)` +** type: string +** values: any string (default value: `""`) + * *irc.server_default.password* ** description: `password for server` ** type: string diff --git a/doc/fr/autogen/plugin_api/completions.txt b/doc/fr/autogen/plugin_api/completions.txt index e84b1614f..4f07b8f11 100644 --- a/doc/fr/autogen/plugin_api/completions.txt +++ b/doc/fr/autogen/plugin_api/completions.txt @@ -18,6 +18,8 @@ | irc | irc_msg_part | message de fin par défaut pour le canal IRC +| irc | irc_notify_nicks | pseudos dans la liste de notifications + | irc | irc_privates | privés sur tous les serveurs IRC | irc | irc_server | serveur IRC courant diff --git a/doc/fr/autogen/plugin_api/infolists.txt b/doc/fr/autogen/plugin_api/infolists.txt index a203d3311..7003324e5 100644 --- a/doc/fr/autogen/plugin_api/infolists.txt +++ b/doc/fr/autogen/plugin_api/infolists.txt @@ -10,6 +10,8 @@ | irc | irc_nick | liste des pseudos pour un canal IRC | pointeur vers le pseudo (optionnel) | serveur,canal,pseudo (canal et pseudo sont optionnels) +| irc | irc_notify | liste des notifications | pointeur vers la notification (optionnel) | nom de serveur (peut démarrer ou se terminer par "*" comme joker) (optionnel) + | irc | irc_server | liste des serveurs IRC | pointeur vers le serveur (optionnel) | nom de serveur (peut démarrer ou se terminer par "*" comme joker) (optionnel) | logger | logger_buffer | liste des enregistreurs de tampons (loggers) | pointeur vers le logger (optionnel) | - diff --git a/doc/fr/autogen/user/irc_commands.txt b/doc/fr/autogen/user/irc_commands.txt index d59d8db25..765df74cd 100644 --- a/doc/fr/autogen/user/irc_commands.txt +++ b/doc/fr/autogen/user/irc_commands.txt @@ -364,6 +364,29 @@ texte: texte à envoyer ........................................ +• *`/notify`* `[add pseudo [serveur [-away]]] | [del pseudo|-all [serveur]]`:: + +........................................ + ajoute une notification de présence ou de statut d'absence pour des pseudos sur les serveurs + + add: ajoute une notification + pasudo: pseudo + serveur: nom interne du serveur (par défaut le serveur courant) + -away: notifie quand le message d'absence est changé (en faisant un whois sur le pseudo) + del: supprime une notification + -all: supprime toutes les notifications + + Sans paramètre, cette commande affiche les notifications pour le serveur courant (ou tous les serveurs si la commande est exécutée sur le tampon "core"). + + Exemples: + notifie quand "toto" rejoint/quitte le serveur courant: + /notify add toto + notifie quand "toto" rejoint/quitte le serveur freenode: + /notify add toto freenode + notifie quand "toto" est absent ou de retour sur le serveur freenode: + /notify add toto freenode -away +........................................ + • *`/op`* `pseudo [pseudo]`:: ........................................ diff --git a/doc/fr/autogen/user/irc_options.txt b/doc/fr/autogen/user/irc_options.txt index 6dfabc4e9..51973d371 100644 --- a/doc/fr/autogen/user/irc_options.txt +++ b/doc/fr/autogen/user/irc_options.txt @@ -218,6 +218,16 @@ ** type: entier ** valeurs: auto, never, always (valeur par défaut: `auto`) +* *irc.look.notify_tags_ison* +** description: `liste des tags (séparés par des virgules) utilisés dans les messages affichés par notify lorsqu'un pseudo a rejoint ou quitté le serveur (résultat de la commande ison), par exemple: "notify_highlight", "notify_message" ou "notify_private"` +** type: chaîne +** valeurs: toute chaîne (valeur par défaut: `"notify_message"`) + +* *irc.look.notify_tags_whois* +** description: `liste des tags (séparés par des virgules) utilisés dans les messages affichés par notify lorsque le status d'absence d'un pseudo change (résultat de la commande whois), par exemple: "notify_highlight", "notify_message" ou "notify_private"` +** type: chaîne +** valeurs: toute chaîne (valeur par défaut: `"notify_message"`) + * *irc.look.part_closes_buffer* ** description: `fermer le tampon lorsque /part est exécuté sur un canal` ** type: booléen @@ -298,6 +308,16 @@ ** type: entier ** valeurs: 1 .. 3600 (valeur par défaut: `1`) +* *irc.network.notify_check_ison* +** description: `intervalle entre deux vérifications de notification avec la commande IRC "ison" (en minutes)` +** type: entier +** valeurs: 1 .. 10080 (valeur par défaut: `1`) + +* *irc.network.notify_check_whois* +** description: `intervalle entre deux vérifications de notification avec la commande IRC "whois" (en minutes)` +** type: entier +** valeurs: 1 .. 10080 (valeur par défaut: `5`) + * *irc.network.send_unknown_commands* ** description: `envoie les commandes inconnues au serveur` ** type: booléen @@ -398,6 +418,11 @@ ** type: chaîne ** valeurs: toute chaîne (valeur par défaut: `""`) +* *irc.server_default.notify* +** description: `liste de notifications pour le serveur (vous ne devriez pas changer cette option mais utiliser la commande /notify)` +** type: chaîne +** valeurs: toute chaîne (valeur par défaut: `""`) + * *irc.server_default.password* ** description: `mot de passe pour le serveur` ** type: chaîne diff --git a/doc/it/autogen/plugin_api/completions.txt b/doc/it/autogen/plugin_api/completions.txt index a2189f144..245f9e1f5 100644 --- a/doc/it/autogen/plugin_api/completions.txt +++ b/doc/it/autogen/plugin_api/completions.txt @@ -18,6 +18,8 @@ | irc | irc_msg_part | messaggio di uscita predefinito per il canale IRC +| irc | irc_notify_nicks | nicks in notify list + | irc | irc_privates | privati su tutti i server IRC | irc | irc_server | server IRC corrente diff --git a/doc/it/autogen/plugin_api/infolists.txt b/doc/it/autogen/plugin_api/infolists.txt index 0c035d019..d9e57c79e 100644 --- a/doc/it/autogen/plugin_api/infolists.txt +++ b/doc/it/autogen/plugin_api/infolists.txt @@ -10,6 +10,8 @@ | irc | irc_nick | elenco dei nick per un canale IRC | puntatore al nick (opzionale) | server,canale,nick (canale e nick sono opzionali) +| irc | irc_notify | list of notify | notify pointer (optional) | nome server (può iniziare o terminare con "*" come carattere jolly) (opzionale) + | irc | irc_server | elenco di server IRC | puntatore al server (opzionale) | nome server (può iniziare o terminare con "*" come carattere jolly) (opzionale) | logger | logger_buffer | elenco dei buffer logger | puntatore al logger (opzionale) | - diff --git a/doc/it/autogen/user/irc_commands.txt b/doc/it/autogen/user/irc_commands.txt index d957d78ef..6682995af 100644 --- a/doc/it/autogen/user/irc_commands.txt +++ b/doc/it/autogen/user/irc_commands.txt @@ -151,22 +151,22 @@ ........................................ ignora nick/host dai server o dai canali - list: elenca tutti gli ignore - add: aggiungi un ignore - del: elimina un ignore - numero: numero di ignore da eliminare (nella lista) - all: elimina tutti gli ignore - nick/host: nick o host da ignorare: la sintassi è "re:regex" o "mask" (una mask è una stringa con alcuni "*" per sostituire uno o più caratteri) - server: nome interno del server dove l'ignore è attivo - canale: nome del canale dove l'ignore è attivo + list: list all ignores + add: add an ignore + del: delete an ignore + number: number of ignore to delete (look at list to find it) + -all: delete all ignores + nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars) + server: internal server name where ignore is working + channel: channel name where ignore is working - Esempi: - ignora nick "tizio" su tutti gli host/canali: - /ignore add tizio - ignora l'host "tizio@dominio.com" sul server freenode: - /ignore add tizio@dominio.com freenode - ignora l'host "tizio*@*.dominio.com" su freenode/#weechat: - /ignore add tizio*@*.dominio.com freenode #weechat + Examples: + ignore nick "toto" everywhere: + /ignore add toto + ignore host "toto@domain.com" on freenode server: + /ignore add toto@domain.com freenode + ignore host "toto*@*.domain.com" on freenode/#weechat: + /ignore add toto*@*.domain.com freenode #weechat ........................................ • *`/info`* `[obiettivo]`:: @@ -364,6 +364,29 @@ testo: testo da inviare ........................................ +• *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`:: + +........................................ + add a notification for presence or away status of nicks on servers + + add: add a notification + nick: nickname + server: internal server name (by default current server) + -away: notify when away message is changed (by doing whois on nick) + del: delete a notification + -all: delete all notifications + + Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer). + + Examples: + notify when "toto" joins/quits current server: + /notify add toto + notify when "toto" joins/quits freenode server: + /notify add toto freenode + notify when "toto" is away or back on freenode server: + /notify add toto freenode -away +........................................ + • *`/op`* `nick [nick]`:: ........................................ diff --git a/doc/it/autogen/user/irc_options.txt b/doc/it/autogen/user/irc_options.txt index 15a1a685f..a9e084edd 100644 --- a/doc/it/autogen/user/irc_options.txt +++ b/doc/it/autogen/user/irc_options.txt @@ -218,6 +218,16 @@ ** tipo: intero ** valori: auto, never, always (valore predefinito: `auto`) +* *irc.look.notify_tags_ison* +** descrizione: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"` +** tipo: stringa +** valori: qualsiasi stringa (valore predefinito: `"notify_message"`) + +* *irc.look.notify_tags_whois* +** descrizione: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"` +** tipo: stringa +** valori: qualsiasi stringa (valore predefinito: `"notify_message"`) + * *irc.look.part_closes_buffer* ** descrizione: `chiude buffer quando viene digitato /part nel canale` ** tipo: bool @@ -298,6 +308,16 @@ ** tipo: intero ** valori: 1 .. 3600 (valore predefinito: `1`) +* *irc.network.notify_check_ison* +** descrizione: `interval between two checks for notify with IRC command "ison" (in minutes)` +** tipo: intero +** valori: 1 .. 10080 (valore predefinito: `1`) + +* *irc.network.notify_check_whois* +** descrizione: `interval between two checks for notify with IRC command "whois" (in minutes)` +** tipo: intero +** valori: 1 .. 10080 (valore predefinito: `5`) + * *irc.network.send_unknown_commands* ** descrizione: `invia comandi sconosciuti al server` ** tipo: bool @@ -398,6 +418,11 @@ ** tipo: stringa ** valori: qualsiasi stringa (valore predefinito: `""`) +* *irc.server_default.notify* +** descrizione: `notify list for server (you should not change this option but use /notify command instead)` +** tipo: stringa +** valori: qualsiasi stringa (valore predefinito: `""`) + * *irc.server_default.password* ** descrizione: `password per il server` ** tipo: stringa diff --git a/po/POTFILES.in b/po/POTFILES.in index 4b148a8f9..a60c58950 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -137,6 +137,8 @@ ./src/plugins/irc/irc-msgbuffer.h ./src/plugins/irc/irc-nick.c ./src/plugins/irc/irc-nick.h +./src/plugins/irc/irc-notify.c +./src/plugins/irc/irc-notify.h ./src/plugins/irc/irc-protocol.c ./src/plugins/irc/irc-protocol.h ./src/plugins/irc/irc-raw.c @@ -20,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-08-07 10:46+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:16+0100\n" "Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Czech\n" @@ -3209,6 +3209,41 @@ msgstr "" msgid "Notice" msgstr "" +#, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: příkaz \"%s\" nemůže být spuštěn v irc bufferu (server nebo kanál)" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: ignorování již existuje" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: přepínám adresu na %s/%d" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: chyba při přidávání ignorování" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "%s: všechny ignorování byly smazány" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s: žádné ignorování v seznamu" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "%s: ignorování smazáno" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: ignorování nenalezeno" + #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: nemohu vytvořít nový soukromý buffer\"%s\"" @@ -3519,10 +3554,11 @@ msgstr "ignorovat přezdívky/hosty na serveru nebo kanálu" msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" +#, fuzzy msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3843,6 +3879,33 @@ msgstr "" "přezdívka: uživatel, kterému poslat notifikaci\n" " text: text, který poslat" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +#, fuzzy +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "dát status operátora kanálu přezdívce (přezdívkám)" @@ -4347,6 +4410,10 @@ msgstr "výchozí odchozí zpráva pro IRC kanál" msgid "numbers for defined ignores" msgstr "čísla pro definované ignorování" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s: žádné ignorování v seznamu" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4521,6 +4588,11 @@ msgstr "" "výchozí zpráva při uknočnení (odpojení od serveru) (\"%v\" bude nahrazeno " "verzí WeeChat v řetězci)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: chyba při vytváření serveru \"%s\"" @@ -4655,6 +4727,18 @@ msgstr "" "zobrazovat upozornění jako soukromé zprávy (pokud je automaticky, použije se " "soukromý buffer, kdy existuje)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "zavřít buffer, když je na kanálu spuštěn /part" @@ -4750,6 +4834,17 @@ msgstr "" "maximální délka prodlevy automatíckého znovupřipojení k serveru (v " "sekundách, 0 = žádné maximum)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "pokud je off, jsou barvy v příchozích zprávách ignorovány" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"povolit uživateli posílat barvy se speciálními kódy (ctrl-c + kód a " +"volitelná barva: b=tlustě, cxx=barva, cxx,yy=barva+pozadí, u=podtržené, " +"r=obrácené)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "interval mezi dvěmi knotrolami pro lag (v sekundách, 0 = nikdy nekontrolovat)" @@ -4766,19 +4861,23 @@ msgid "" msgstr "" "interval mezi dvěmi knotrolami pro lag, kdyz se lag zvětšuje (v sekundách)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "pokud je off, jsou barvy v příchozích zprávách ignorovány" +msgid "send unknown commands to server" +msgstr "posílat neznámé příkazy na server" +#, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"povolit uživateli posílat barvy se speciálními kódy (ctrl-c + kód a " -"volitelná barva: b=tlustě, cxx=barva, cxx,yy=barva+pozadí, u=podtržené, " -"r=obrácené)" +"interval mezi dvěmi knotrolami pro nepřítomnost (v minutách, 0 = nikdy " +"nekontrolovat)" -msgid "send unknown commands to server" -msgstr "posílat neznámé příkazy na server" +#, fuzzy +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"interval mezi dvěmi knotrolami pro nepřítomnost (v minutách, 0 = nikdy " +"nekontrolovat)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -4941,6 +5040,14 @@ msgstr "seznam pro IRC ignorování" msgid "ignore pointer (optional)" msgstr "ignorovat ukazatel (volitelné)" +#, fuzzy +msgid "list of notify" +msgstr "seznam konfiguračních možností" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "ukazatel přezdívky (volitelné)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: nejste připojen k serveru" @@ -4949,6 +5056,46 @@ msgstr "%s%s: nejste připojen k serveru" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: tenhle buffer není kanál!" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "Xfer seznam:" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "Xfer seznam:" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s%s byl vykopnut %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s%s byl vykopnut %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s[%s%s%s]%s je pryč: %s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%sTéma pro %s%s%s v \"%s%s\"" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s[%s%s%s]%s je pryč: %s" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -6934,23 +7081,3 @@ msgstr "" msgid "Pointer" msgstr "Ukazatel" - -#~ msgid "open new channels near server" -#~ msgstr "otevřít nový kanál poblíž serveru" - -#~ msgid "open new privates near server" -#~ msgstr "otevřít nový soukromý rozhovor poblíž serveru" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "%s%s: adresa pro server \"%s\" není definována, nemohu se připojit" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s%s: buffer IRC serveru \"%s\", kanálu \"%s\" nenalezen" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "seznam xfer" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Seznam proxy:" @@ -22,8 +22,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.3-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-10-30 00:12+0100\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Nils G.\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: \n" @@ -3354,6 +3354,42 @@ msgstr "" msgid "Notice" msgstr "Hinweis" +#, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: Der Befehl \"%s\" kann nur im IRC-Buffer ausgeführt werden (Server " +"oder Channel)" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: Diese /ignore-Regel existiert bereits" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: Wechsel Adresse zu %s/%d" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: Fehler beim hinzufügen mittels /ignore-Befehl" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "%s: Alle /ignore-Regeln gelöscht" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s Keine /ignore-Regel gefunden" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "%s: /ignore-Regel gelöscht" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: /ignore-Regel nicht gefunden" + #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: Kann keinen neuen privaten Buffer \"%s\" erzeugen" @@ -3673,10 +3709,11 @@ msgstr "Ignoriert Nicks/Hosts von Channels oder Servern" msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" +#, fuzzy msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3999,6 +4036,33 @@ msgstr "" "Nickname: Empfänger der Nachricht\n" " Text: zu sendender Text" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +#, fuzzy +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "Channel-Operator Status an Nicknamen verleihen" @@ -4510,6 +4574,10 @@ msgstr "Standardnachricht beim Verlassen (/part) eines IRC-Channels" msgid "numbers for defined ignores" msgstr "Anzahl für festgelegte /ignores" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s Keine /ignore-Regel gefunden" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4703,6 +4771,11 @@ msgstr "" "Standardnachricht beim Beenden (Verbindung zum Server trennen) (\"%v\": wird " "durch die WeeChat-Version ersetzt)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: Fehler bei der Erstellung des Servers \"%s\"" @@ -4854,6 +4927,18 @@ msgstr "" "Zeigt Notizen als private Nachricht an (wird die \"auto\" Option verwendet " "dann wird ein privater Buffer genutzt, falls vorhanden)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "Schließt den Buffer wenn \"/part\" im Channel ausgeführt wird" @@ -4965,6 +5050,18 @@ msgstr "" "maximale Verzögerung bei der automatischen wiederverbindung zum Server (in " "Sekunden, 0 = keine Begrenzung)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "" +"Falls deaktiviert, werden Farben-Codes von eingehenden Nachrichten ignoriert." + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"Erlaube Benutzern, spezielle Codes zu versenden (ctrl-c + Code und optional " +"Farbe: b=fett, cxx=Farbe, cxx,yy=Farbe+Hintergrund, u=unterstrichen, " +"r=invertiert)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "Intervall zwischen zwei Lag-Überprüfungen (in Sekunden, 0 = keine " @@ -4985,20 +5082,23 @@ msgstr "" "Intervall zwischen zwei Aktualisierungen des Lag-Items, wenn die " "Verzögerungszeit sich erhöht (in Sekunden)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "" -"Falls deaktiviert, werden Farben-Codes von eingehenden Nachrichten ignoriert." +msgid "send unknown commands to server" +msgstr "Sende unbekannte Befehle an den Server" +#, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"Erlaube Benutzern, spezielle Codes zu versenden (ctrl-c + Code und optional " -"Farbe: b=fett, cxx=Farbe, cxx,yy=Farbe+Hintergrund, u=unterstrichen, " -"r=invertiert)" +"Überprüft die Abwesenheit (/away) der Nutzer, in dem angegebenen Intervall " +"(in Minuten, 0 = nicht überprüfen)" -msgid "send unknown commands to server" -msgstr "Sende unbekannte Befehle an den Server" +#, fuzzy +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"Überprüft die Abwesenheit (/away) der Nutzer, in dem angegebenen Intervall " +"(in Minuten, 0 = nicht überprüfen)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -5161,6 +5261,14 @@ msgstr "Liste von ignorierten IRCs" msgid "ignore pointer (optional)" msgstr "Ignore Pointer (optional)" +#, fuzzy +msgid "list of notify" +msgstr "Liste der Optionen" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "Nick Pointer (optional)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: Es besteht keine Verbindung zum Server" @@ -5169,6 +5277,46 @@ msgstr "%s%s: Es besteht keine Verbindung zum Server" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: Dieser Buffer ist kein Channel!" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "Transfer-Liste:" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "Transfer-Liste:" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s%s hat %s%s%s gekickt" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s%s hat %s%s%s gekickt" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s[%s%s%s]%s ist abwesend: %s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%sDas Topic von %s%s%s lautet: \"%s%s\"" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s[%s%s%s]%s ist abwesend: %s" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -7219,17 +7367,3 @@ msgstr "Hashtable (Ausgabe)" msgid "Pointer" msgstr "Pointer" - -#~ msgid "open new channels near server" -#~ msgstr "Öffne neue Channels neben dem Server-Buffer" - -#~ msgid "open new privates near server" -#~ msgstr "Öffne neue private Channels neben dem Server-Buffer" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "" -#~ "%s%s: Adresse für den Server \"%s\" nicht definiert, Verbindung wird " -#~ "nicht hergestellt" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s%s: Keinen Buffer für IRC Server \"%s\", Channel \"%s\" gefunden" @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-08-07 10:46+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Spanish\n" @@ -3254,6 +3254,42 @@ msgstr "" msgid "Notice" msgstr "" +#, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: el comando \"%s\" debe ser ejecutado en un buffer irc (canal o " +"servidor)" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: ya se encuentra ignorado" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: cambiando dirección a %s/%d" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: error al actualizar la lista de ignorados" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "%s: lista de ignorados borrada" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s: lista de ignorados vacía" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "%s: borrado de la lista de ignorados" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: no se encontró el ignorado" + #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: no es posible crear la conversación privada \"%s\"" @@ -3567,10 +3603,11 @@ msgstr "ignorar apodos/hosts en servidores o canales" msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" msgstr "[list] | [add [re:]apodo/host [servidor [canal]]] | [del número|-all]" +#, fuzzy msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3891,6 +3928,33 @@ msgstr "" " apodo: apodo del destinatario\n" " texto: texto a enviar" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +#, fuzzy +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[list] | [add [re:]apodo/host [servidor [canal]]] | [del número|-all]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "dar el estado de operador del canal a el/los usuario(s)" @@ -4399,6 +4463,10 @@ msgstr "mensaje de abandono por defecto" msgid "numbers for defined ignores" msgstr "números para los ignores definidos" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s: lista de ignorados vacía" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4575,6 +4643,11 @@ msgstr "" "mensaje de salida por defecto (cuando se desconecta del servidor) (\"%v\" " "será reemplazado por la versión de WeeChat)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: error al crear el servidor \"%s\"" @@ -4713,6 +4786,18 @@ msgstr "" "mostrar avisos como mensajes privados (si es auto, usa un buffer privado si " "lo encuentra)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "cerrar el buffer cuando /part es usado en un canal" @@ -4807,6 +4892,19 @@ msgstr "" msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)" msgstr "retraso máximo para la autoreconexión (en segundos, 0 = sin máximo)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "" +"cuando se desactiva, los códigos de color se ignoran en los mensajes " +"entrantes" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"permitir al usuario enviar colores con códigos especiales (ctrl-c + un " +"código y color opcional: b=negrita, cxx,yy=color+fondo, u=subrayado, " +"r=invertido)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "intervalo entre dos comprobaciones de retraso (en segundos, 0 = nunca " @@ -4826,21 +4924,21 @@ msgstr "" "intervalo de refresco para el elemento de lag, cuando este aumenta (en " "segundos)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "" -"cuando se desactiva, los códigos de color se ignoran en los mensajes " -"entrantes" +msgid "send unknown commands to server" +msgstr "envía comandos desconocidos al servidor" +#, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"permitir al usuario enviar colores con códigos especiales (ctrl-c + un " -"código y color opcional: b=negrita, cxx,yy=color+fondo, u=subrayado, " -"r=invertido)" +"intervalo entre dos comprobaciones de ausencia (en minutos, 0 = no comprobar)" -msgid "send unknown commands to server" -msgstr "envía comandos desconocidos al servidor" +#, fuzzy +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"intervalo entre dos comprobaciones de ausencia (en minutos, 0 = no comprobar)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -5004,6 +5102,14 @@ msgstr "lista de IRC ignores" msgid "ignore pointer (optional)" msgstr "puntero del ignore (opcional)" +#, fuzzy +msgid "list of notify" +msgstr "lista de opciones" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "puntero del apodo (opcional)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: no estas conectado a ningún servidor" @@ -5012,6 +5118,46 @@ msgstr "%s%s: no estas conectado a ningún servidor" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: ¡este buffer no es un canal!" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "Lista de transferencias:" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "Lista de transferencias:" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s%s ha expulsado %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s%s ha expulsado %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s[%s%s%s]%s está ausente: %s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%sEl tema para %s%s%s es \"%s%s\"" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s[%s%s%s]%s está ausente: %s" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -7023,52 +7169,3 @@ msgstr "" msgid "Pointer" msgstr "Puntero" - -#~ msgid "open new channels near server" -#~ msgstr "abrir nuevos canales cerca del servidor" - -#~ msgid "open new privates near server" -#~ msgstr "abrir nuevas conversaciones privadas cerca del servidor" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "" -#~ "%s%s: dirección sin definir para el servidor \"%s\", no es posible " -#~ "conectarse" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "" -#~ "%s%s: buffer no encontrado para el servidor IRC \"%s\", canal \"%s\"" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "lista de transferencias" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Lista de proxies:" - -#~ msgid "text color for prefix #1 in nicklist" -#~ msgstr "color para el prefijo #1 en la lista de apodos" - -#~ msgid "text color for prefix #2 in nicklist" -#~ msgstr "color para el prefijo #2 en la lista de apodos" - -#~ msgid "text color for prefix #3 in nicklist" -#~ msgstr "color para el prefijo #3 en la lista de apodos" - -#~ msgid "text color for prefix #4 in nicklist" -#~ msgstr "color para el prefijo #4 en la lista de apodos" - -#~ msgid "text color for prefix #5 in nicklist" -#~ msgstr "color para el prefijo #5 en la lista de apodos" - -#~ msgid "" -#~ "channel: channel name to join\n" -#~ " key: key to join the channel" -#~ msgstr "" -#~ "canal: canal a unirse\n" -#~ "clave: clave para unirse al canal" - -#, fuzzy -#~ msgid "color for buffer name when connected using SSL to server" -#~ msgstr "%s%s: no estas conectado a ningún servidor" @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-10-29 22:59+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 22:53+0100\n" "Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: French\n" @@ -3300,6 +3300,42 @@ msgid "Notice" msgstr "Notice" #, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: le serveur doit être spécifié car vous n'êtes pas sur un serveur ou un " +"canal irc" + +#, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: la notification existe déjà" + +#, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: notification ajoutée pour %s%s" + +#, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: erreur d'ajout de la notification" + +#, c-format +msgid "%s: all notifications deleted" +msgstr "%s: notifications supprimées" + +#, c-format +msgid "%s: no notification in list" +msgstr "%s: pas de notification dans la liste" + +#, c-format +msgid "%s: notification deleted" +msgstr "%s: notification supprimée" + +#, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: notification non trouvée" + +#, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: impossible de créer le tampon privé \"%s\"" @@ -3614,8 +3650,8 @@ msgstr "[list] | [add [re:]pseudo/hote [server [channel]]] | [del numéro|-all]" msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3938,6 +3974,53 @@ msgstr "" " pseudo: pseudo cible pour la notice\n" " texte: texte à envoyer" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" +"ajoute une notification de présence ou de statut d'absence pour des pseudos " +"sur les serveurs" + +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[add pseudo [serveur [-away]]] | [del pseudo|-all [serveur]]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" +" add: ajoute une notification\n" +" pasudo: pseudo\n" +"serveur: nom interne du serveur (par défaut le serveur courant)\n" +" -away: notifie quand le message d'absence est changé (en faisant un whois " +"sur le pseudo)\n" +" del: supprime une notification\n" +" -all: supprime toutes les notifications\n" +"\n" +"Sans paramètre, cette commande affiche les notifications pour le serveur " +"courant (ou tous les serveurs si la commande est exécutée sur le tampon " +"\"core\").\n" +"\n" +"Exemples:\n" +" notifie quand \"toto\" rejoint/quitte le serveur courant:\n" +" /notify add toto\n" +" notifie quand \"toto\" rejoint/quitte le serveur freenode:\n" +" /notify add toto freenode\n" +" notifie quand \"toto\" est absent ou de retour sur le serveur freenode:\n" +" /notify add toto freenode -away" + msgid "give channel operator status to nickname(s)" msgstr "donner le statut opérateur à un/des pseudo(s)" @@ -4446,6 +4529,9 @@ msgstr "message de fin par défaut pour le canal IRC" msgid "numbers for defined ignores" msgstr "numéros pour les ignores définis" +msgid "nicks in notify list" +msgstr "pseudos dans la liste de notifications" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4627,6 +4713,13 @@ msgstr "" "message de fin par défaut (lors de la déconnexion du serveur) (\"%v\" sera " "remplacé par la version de WeeChat dans la chaîne)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" +"liste de notifications pour le serveur (vous ne devriez pas changer cette " +"option mais utiliser la commande /notify)" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: erreur de création du serveur \"%s\"" @@ -4774,6 +4867,26 @@ msgstr "" "afficher les notices comme des messages privés (si auto, utilise le tampon " "privé s'il est trouvé)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" +"liste des tags (séparés par des virgules) utilisés dans les messages " +"affichés par notify lorsqu'un pseudo a rejoint ou quitté le serveur " +"(résultat de la commande ison), par exemple: \"notify_highlight\", " +"\"notify_message\" ou \"notify_private\"" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" +"liste des tags (séparés par des virgules) utilisés dans les messages " +"affichés par notify lorsque le status d'absence d'un pseudo change (résultat " +"de la commande whois), par exemple: \"notify_highlight\", \"notify_message\" " +"ou \"notify_private\"" + msgid "close buffer when /part is issued on a channel" msgstr "fermer le tampon lorsque /part est exécuté sur un canal" @@ -4873,6 +4986,17 @@ msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)" msgstr "" "délai maximum d'autoreconnection au serveur (en secondes, 0 = pas de maximum)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "si désactivé, les codes couleurs des messages entrants sont ignorés" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (ctrl-" +"c + un code et une couleur optionnelle: b=gras, cxx=couleur, cxx,yy=couleur" +"+fond, u=souligné, r=inversé)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "intervalle entre deux vérifications du lag (en secondes, 0 = ne jamais " @@ -4892,19 +5016,21 @@ msgstr "" "intervalle entre deux rafraichissements du lag, lorsque le lag augmente (en " "secondes)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "si désactivé, les codes couleurs des messages entrants sont ignorés" +msgid "send unknown commands to server" +msgstr "envoie les commandes inconnues au serveur" msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (ctrl-" -"c + un code et une couleur optionnelle: b=gras, cxx=couleur, cxx,yy=couleur" -"+fond, u=souligné, r=inversé)" +"intervalle entre deux vérifications de notification avec la commande IRC " +"\"ison\" (en minutes)" -msgid "send unknown commands to server" -msgstr "envoie les commandes inconnues au serveur" +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"intervalle entre deux vérifications de notification avec la commande IRC " +"\"whois\" (en minutes)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -5065,6 +5191,12 @@ msgstr "liste des ignores IRC" msgid "ignore pointer (optional)" msgstr "pointeur vers l'ignore (optionnel)" +msgid "list of notify" +msgstr "liste des notifications" + +msgid "notify pointer (optional)" +msgstr "pointeur vers la notification (optionnel)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: vous n'êtes pas connecté au serveur" @@ -5073,6 +5205,45 @@ msgstr "%s%s: vous n'êtes pas connecté au serveur" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: ce tampon n'est pas un canal !" +msgid "offline" +msgstr "déconnecté" + +msgid "online" +msgstr "connecté" + +#, c-format +msgid "Notify list for %s%s%s:" +msgstr "Liste de notifications pour %s%s%s:" + +msgid "Notify list is empty on this server" +msgstr "La liste de notifications est vide sur ce serveur" + +msgid "Notify list for all servers:" +msgstr "Liste de notifications pour tous les serveurs:" + +msgid "Notify list is empty on all servers" +msgstr "La liste de notifications est vide sur tous les serveurs" + +#, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%snotify: %s%s%s a rejoint %s%s" + +#, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%snotify: %s%s%s a quitté %s%s" + +#, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%snotify: %s%s%s est maintenant absent: \"%s\"" + +#, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%snotify: %s%s%s est de retour" + +#, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%snotify: %s%s%s est toujours absent: \"%s\"" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -7100,23 +7271,3 @@ msgstr "Hashtable (sortie)" msgid "Pointer" msgstr "Pointeur" - -#~ msgid "" -#~ "display full away message in away bar item (if not set, display " -#~ "translated string \"away\")" -#~ msgstr "" -#~ "afficher le message complet d'absence dans l'objet de barre d'absence (si " -#~ "non défini, affiche la chaîne tra" - -#~ msgid "open new channels near server" -#~ msgstr "ouvrir les nouveaux canaux près du serveur" - -#~ msgid "open new privates near server" -#~ msgstr "ouvrir les nouveaux privés près du serveur" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "" -#~ "%s%s: adresses non définies pour le serveur \"%s\", connexion impossible" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s%s: tampon non trouvé pour le serveur IRC \"%s\", canal \"%s\"" @@ -20,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-08-07 10:46+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Hungarian\n" @@ -3021,6 +3021,40 @@ msgid "Notice" msgstr "" #, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "%s \"%s\" parancs nem futtatható a szerverablakban\n" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s az ignore már létezik\n" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s IP-cím nem található\n" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s nincs elég memória az információs pult üzenethez\n" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "a felhasználók le lettek tiltva" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s nem található ilyen mellőzés\n" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "Nincs mellőzés megadva.\n" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "aláírás nem található" + +#, fuzzy, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s nem sikerült új privát ablakot nyitni \"%s\"\n" @@ -3308,8 +3342,8 @@ msgstr "" msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3589,6 +3623,32 @@ msgstr "" " név: felhasználó akinek az üzenetet küldjük\n" "szöveg: az üzenet szövege" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + #, fuzzy msgid "give channel operator status to nickname(s)" msgstr "operátori jogok biztosítása felhasználó(k)nak" @@ -4128,6 +4188,10 @@ msgstr "felhasználók listája a szobában" msgid "numbers for defined ignores" msgstr "" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s nem található ilyen mellőzés\n" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4299,6 +4363,11 @@ msgstr "" "alapértelmezett kilépő üzenet (a '%v' változó a WeeChat verziójára " "cserélődik)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, fuzzy, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s nincs elég memória az információs pult üzenethez\n" @@ -4426,6 +4495,18 @@ msgid "" "display notices as private messages (if auto, use private buffer if found)" msgstr "figyelmeztetések privát üzenetként való mutatása" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "" @@ -4514,6 +4595,17 @@ msgstr "" msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)" msgstr "" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "ha ki van kapcsolva, " + +#, fuzzy +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"színküldés engedélyezése speciális karakterekkel (^Cb=félkövér, ^Ccxx=szín, " +"^Cxx,yy=szín+háttérszín ^Cu=aláhúzás, ^Cr=fordított)" + #, fuzzy msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)" @@ -4531,20 +4623,20 @@ msgid "" "seconds)" msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "ha ki van kapcsolva, " +#, fuzzy +msgid "send unknown commands to server" +msgstr "ismeretlen parancsok küldése az IRC szervernek" #, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" -msgstr "" -"színküldés engedélyezése speciális karakterekkel (^Cb=félkövér, ^Ccxx=szín, " -"^Cxx,yy=szín+háttérszín ^Cu=aláhúzás, ^Cr=fordított)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" +msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)" #, fuzzy -msgid "send unknown commands to server" -msgstr "ismeretlen parancsok küldése az IRC szervernek" +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)" #, fuzzy, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -4721,6 +4813,14 @@ msgstr "IRC szerver portja" msgid "ignore pointer (optional)" msgstr "" +#, fuzzy +msgid "list of notify" +msgstr "konfigurációs paraméterek beállítása" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "Beállítások mentése a lemezre\n" + #, fuzzy, c-format msgid "%s%s: you are not connected to server" msgstr "%s nincs csatlakozva szerverhez!\n" @@ -4729,6 +4829,46 @@ msgstr "%s nincs csatlakozva szerverhez!\n" msgid "%s%s: this buffer is not a channel!" msgstr "Ez az ablak nem egy szoba!\n" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "hotlist törlése" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "hotlist törlése" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s kirúgta %s%s%s-t a(z) %s%s szobából" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s kirúgta %s%s%s-t a(z) %s%s szobából" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s%s távol: %s\n" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "A %s%s%s szoba témája: " + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s%s távol: %s\n" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -6676,54 +6816,3 @@ msgstr "" #, fuzzy msgid "Pointer" msgstr "perc" - -#, fuzzy -#~ msgid "open new channels near server" -#~ msgstr "az új szobák/privát beszélgetések a szerverhez közel nyíljanak" - -#, fuzzy -#~ msgid "open new privates near server" -#~ msgstr "az új szobák/privát beszélgetések a szerverhez közel nyíljanak" - -#, fuzzy -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s név \"%s\" nem található a \"%s\" parancshoz\n" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "Aliaszok listája:\n" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Aliaszok listája:\n" - -#, fuzzy -#~ msgid "text color for prefix #1 in nicklist" -#~ msgstr "név színe" - -#, fuzzy -#~ msgid "text color for prefix #2 in nicklist" -#~ msgstr "név színe" - -#, fuzzy -#~ msgid "text color for prefix #3 in nicklist" -#~ msgstr "név színe" - -#, fuzzy -#~ msgid "text color for prefix #4 in nicklist" -#~ msgstr "név színe" - -#, fuzzy -#~ msgid "text color for prefix #5 in nicklist" -#~ msgstr "név színe" - -#~ msgid "" -#~ "channel: channel name to join\n" -#~ " key: key to join the channel" -#~ msgstr "" -#~ "szoba: a szoba neve, ahová csatlakozni szeretnénk\n" -#~ "kulcs: a csatlakozáshoz szükséges kulcs" - -#, fuzzy -#~ msgid "color for buffer name when connected using SSL to server" -#~ msgstr "%s nincs csatlakozva szerverhez!\n" @@ -20,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-10-30 20:30+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Italian\n" @@ -3272,6 +3272,42 @@ msgstr "" msgid "Notice" msgstr "Notice" +#, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: il comando \"%s\" deve essere eseguito su un buffer IRC (server o " +"canale)" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: l'ignore esiste già" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: cambio indirizzo in %s/%d" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: errore nell'aggiunta dell'ignore" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "%s: tutti gli ignore eliminati" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s: nessun ignore nella lista" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "%s: ignore eliminato" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: ignore non trovato" + #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: impossibile creare il nuovo buffer privato \"%s\"" @@ -3584,10 +3620,11 @@ msgstr "ignora nick/host dai server o dai canali" msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" msgstr "[list] | [add [re:]nick/host [server [canale]]] | [del numero|-all]" +#, fuzzy msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3908,6 +3945,33 @@ msgstr "" " nick: utente a cui inviare la notifica\n" " testo: testo da inviare" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +#, fuzzy +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[list] | [add [re:]nick/host [server [canale]]] | [del numero|-all]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "concede lo stato di operatore del canale al(ai) nick" @@ -4416,6 +4480,10 @@ msgstr "messaggio di uscita predefinito per il canale IRC" msgid "numbers for defined ignores" msgstr "numero di ignore definiti" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s: nessun ignore nella lista" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4590,6 +4658,11 @@ msgstr "" "messaggio di abbandono predefinito (disconnessione dal server) (\"%v\" verrà " "sostituito dalla versione di WeeChat)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: errore durante la creazione del server \"%s\"" @@ -4736,6 +4809,18 @@ msgstr "" "visualizza notifiche come messaggi privati (se automatico, utilizza il " "buffer privato se viene trovato)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "chiude buffer quando viene digitato /part nel canale" @@ -4841,6 +4926,18 @@ msgstr "" "ritardo massimo per la riconnessione automatica al server (in secondi, 0 = " "nessun massimo)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "" +"se disabilitato, i codici colori vengono ignorati nei messaggi in entrata" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"consente all'utente di inviare i colori con dei codici speciali (ctrl-c + un " +"codice ed un colore opzionale: b=grassetto, cxx.yy=colore+sfondo, " +"u=sottolineato, r=inverso)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "intervallo tra due controlli per il ritardo (in secondi, 0 = nessun " @@ -4860,20 +4957,21 @@ msgstr "" "intervallo tra due aggiornamenti per l'elemento ritardo, quando è in aumento " "(in secondi)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "" -"se disabilitato, i codici colori vengono ignorati nei messaggi in entrata" +msgid "send unknown commands to server" +msgstr "invia comandi sconosciuti al server" +#, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"consente all'utente di inviare i colori con dei codici speciali (ctrl-c + un " -"codice ed un colore opzionale: b=grassetto, cxx.yy=colore+sfondo, " -"u=sottolineato, r=inverso)" +"intervallo tra le due verifiche per l'assenza (in minuti, 0 = nessun check)" -msgid "send unknown commands to server" -msgstr "invia comandi sconosciuti al server" +#, fuzzy +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"intervallo tra le due verifiche per l'assenza (in minuti, 0 = nessun check)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -5034,6 +5132,14 @@ msgstr "elenco di ignore IRC" msgid "ignore pointer (optional)" msgstr "puntatore all'ignore (opzionale)" +#, fuzzy +msgid "list of notify" +msgstr "elenco delle opzioni" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "puntatore al nick (opzionale)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: non connesso al server" @@ -5042,6 +5148,46 @@ msgstr "%s%s: non connesso al server" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: questo buffer non è un canale!" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "Lista xfer:" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "Lista xfer:" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s%s ha cacciato %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s%s ha cacciato %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s[%s%s%s]%s è assente: %s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%sL'argomento per %s%s%s è \"%s%s\"" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s[%s%s%s]%s è assente: %s" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -7051,39 +7197,3 @@ msgstr "Tabella hash (output)" msgid "Pointer" msgstr "Puntatore" - -#~ msgid "open new channels near server" -#~ msgstr "apri nuovi canali vicino al server" - -#~ msgid "open new privates near server" -#~ msgstr "apri nuovi privati vicino al server" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "" -#~ "%s%s: indirizzo non definito per il server \"%s\", impossibile connettersi" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s%s: buffer non trovato per il server IRC \"%s\", canale \"%s\"" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "lista di xfer" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Elenco di proxy:" - -#~ msgid "text color for prefix #1 in nicklist" -#~ msgstr "colore del testo per il prefisso #1 nella nicklist" - -#~ msgid "text color for prefix #2 in nicklist" -#~ msgstr "colore del testo per il prefisso #2 nella nicklist" - -#~ msgid "text color for prefix #3 in nicklist" -#~ msgstr "colore del testo per il prefisso #3 nella nicklist" - -#~ msgid "text color for prefix #4 in nicklist" -#~ msgstr "colore del testo per il prefisso #4 nella nicklist" - -#~ msgid "text color for prefix #5 in nicklist" -#~ msgstr "colore del testo per il prefisso #5 nella nicklist" @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-08-07 10:46+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Krzysztof Koroscik <soltys@szluug.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Polish\n" @@ -3244,6 +3244,41 @@ msgstr "" msgid "Notice" msgstr "" +#, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" +"%s%s: komenda \"%s\" musi zostać wykonana w buforze irc (serwer lub kanał)" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s%s: już jest ignorowane" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s: zmieniam adres na %s/%d" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s%s: błąd podczas dodawania do ignorowanych" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "%s: lista ignorowanych została usunięta" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s: brak osób ignorowanych" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "%s: usunięto ignorowanie" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "%s%s: nie znaleziono ignorowania" + #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s%s: nie można utworzyć nowego bufora prywatnego \"%s\"" @@ -3554,10 +3589,11 @@ msgstr "ignoruje nicki/hosty z serwera lub kanałów" msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]" msgstr "[list] | [add [re:]nick/host [serwer [kanał]]] | [del numer|-all]" +#, fuzzy msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3879,6 +3915,33 @@ msgstr "" "nick: użytkownik, do którego wysłac powiadomienie\n" " tekst: treść" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +#, fuzzy +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "[list] | [add [re:]nick/host [serwer [kanał]]] | [del numer|-all]" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "nadaje uprawienia użytkownika kanału" @@ -4382,6 +4445,10 @@ msgstr "domyślna wiadomość opuszczenia kanału IRC" msgid "numbers for defined ignores" msgstr "numery zdefiniowanych irgnorów" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s: brak osób ignorowanych" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4558,6 +4625,11 @@ msgstr "" "domyślna wiadomość wyjścia z IRC (rozłączenia z serwerem) (\"%v\" zostanie " "zastąpione wersją WeeChat)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s%s: błąd podczas tworzenia serwera \"%s\"" @@ -4692,6 +4764,18 @@ msgstr "" "wyświetlaj powiadomienia jako prywatne wiadomości (jeśli auto, użwa " "prywatnego bufora jeśli taki istnieje)" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "zamyka bufor, kiedy na kanale wykonamy /part" @@ -4786,6 +4870,19 @@ msgstr "" "maksymalne opóźnienie do ponownego połączenia z serwerem (w sekundach, 0 = " "brak maksimum)" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "" +"kiedy wyłączone (off) kody kolorów są ignorowane w przychodzących " +"wiadomościach" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"zezwala użytkownikowi wysyłać kolory za pomocą specjalnych kodów (ctrl-c + " +"kod i opcjonalny kolor: b=pogrubiony (bold), cxx=kolor, cxx,yy=kolor+tło, " +"u=podkreślenie, r=rewers)" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" "przerwa między dwoma sprawdzeniami opóźnienia (w sekundach, 0 = nigdy nie " @@ -4804,21 +4901,23 @@ msgstr "" "przerwa między dwoma odświerzeniami wskaźnika lagu, kiedy się on zwiększa (w " "sekundach)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "" -"kiedy wyłączone (off) kody kolorów są ignorowane w przychodzących " -"wiadomościach" +msgid "send unknown commands to server" +msgstr "wysyłaj nieznane komendy do serwera" +#, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"zezwala użytkownikowi wysyłać kolory za pomocą specjalnych kodów (ctrl-c + " -"kod i opcjonalny kolor: b=pogrubiony (bold), cxx=kolor, cxx,yy=kolor+tło, " -"u=podkreślenie, r=rewers)" +"przerwa pomiędzy dwoma sprawdzeniami stanu nieobecności (w minutach, 0 = " +"nigdy nie sprawdzaj)" -msgid "send unknown commands to server" -msgstr "wysyłaj nieznane komendy do serwera" +#, fuzzy +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"przerwa pomiędzy dwoma sprawdzeniami stanu nieobecności (w minutach, 0 = " +"nigdy nie sprawdzaj)" #, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -4979,6 +5078,14 @@ msgstr "lista ignorów IRC" msgid "ignore pointer (optional)" msgstr "wskaźnik ignorowania (opcjonalne)" +#, fuzzy +msgid "list of notify" +msgstr "lista opcji" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "wskaźnik nicka (opcjonalne)" + #, c-format msgid "%s%s: you are not connected to server" msgstr "%s%s: nie jesteś połączony z serwerem" @@ -4987,6 +5094,46 @@ msgstr "%s%s: nie jesteś połączony z serwerem" msgid "%s%s: this buffer is not a channel!" msgstr "%s%s: to nie jest bufor kanału" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "Lista xferów:" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "Lista xferów:" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s%s wykopał %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s%s wykopał %s%s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s[%s%s%s]%s jest nieobecny: %s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "%sTemat kanału %s%s%s to \"%s%s\"" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s[%s%s%s]%s jest nieobecny: %s" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -6951,24 +7098,3 @@ msgstr "" msgid "Pointer" msgstr "Wskaźnik" - -#~ msgid "open new channels near server" -#~ msgstr "otwórz nowy kanał blisko serwera" - -#~ msgid "open new privates near server" -#~ msgstr "otwórz prywatne konwersacje blisko serwera" - -#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect" -#~ msgstr "" -#~ "%s%s: adres nie zdefiniowany dla serwera \"%s\", nie można się połączyć" - -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s%s: nie znaleziono bufora dla serwera IRC \"%s\", kanał \"%s\"" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "lista xfer" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Lista proxy:" @@ -20,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.4-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" -"PO-Revision-Date: 2010-08-07 10:46+0200\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" +"PO-Revision-Date: 2010-11-05 17:17+0100\n" "Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "Language: Russian\n" @@ -3041,6 +3041,40 @@ msgid "Notice" msgstr "" #, fuzzy, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "%s \"%s\" команда может быть выполнена только в буфере сервера\n" + +#, fuzzy, c-format +msgid "%s%s: notify already exists" +msgstr "%s игнорирование уже существует\n" + +#, fuzzy, c-format +msgid "%s: notification added for %s%s" +msgstr "%s IP адрес не найден\n" + +#, fuzzy, c-format +msgid "%s%s: error adding notification" +msgstr "%s недостаточно памяти для сообщения в строке информации\n" + +#, fuzzy, c-format +msgid "%s: all notifications deleted" +msgstr "команда users отключена" + +#, fuzzy, c-format +msgid "%s: no notification in list" +msgstr "%s игнорирования не найдены\n" + +#, fuzzy, c-format +msgid "%s: notification deleted" +msgstr "Игнорирования не заданы.\n" + +#, fuzzy, c-format +msgid "%s%s: notification not found" +msgstr "подпись не найдена" + +#, fuzzy, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "%s невозможно создать новый буфер привата \"%s\"\n" @@ -3327,8 +3361,8 @@ msgstr "" msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3606,6 +3640,32 @@ msgstr "" " ник: адресат уведомления\n" "текст: отправляемый текст" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + #, fuzzy msgid "give channel operator status to nickname(s)" msgstr "даёт статус оператора канала нику(-ам)" @@ -4137,6 +4197,10 @@ msgstr "список ников на канале" msgid "numbers for defined ignores" msgstr "" +#, fuzzy +msgid "nicks in notify list" +msgstr "%s игнорирования не найдены\n" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4306,6 +4370,11 @@ msgid "" "WeeChat version in string)" msgstr "сообщение о выходе по-умолчанию ('%v' будет заменён на версию WeeChat)" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, fuzzy, c-format msgid "%s%s: error creating server \"%s\"" msgstr "%s недостаточно памяти для сообщения в строке информации\n" @@ -4433,6 +4502,18 @@ msgid "" "display notices as private messages (if auto, use private buffer if found)" msgstr "отображать notice'ы в виде личных сообщений" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "" @@ -4521,6 +4602,17 @@ msgstr "" msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)" msgstr "" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "когда выключено, цвета в исходящих сообщениях игнорируются" + +#, fuzzy +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" +"позволить отправлять цвета специальными кодами (^Cb=жирный, ^Ccxx=цветной, " +"^Ccxx,yy=цветной+фон, ^Cu=подчёркнутый, ^Cr=инвертированный)" + #, fuzzy msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" @@ -4541,20 +4633,22 @@ msgid "" msgstr "" "интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)" -msgid "when off, colors codes are ignored in incoming messages" -msgstr "когда выключено, цвета в исходящих сообщениях игнорируются" +#, fuzzy +msgid "send unknown commands to server" +msgstr "отсылать неизвестные команды IRC серверу" #, fuzzy msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -"позволить отправлять цвета специальными кодами (^Cb=жирный, ^Ccxx=цветной, " -"^Ccxx,yy=цветной+фон, ^Cu=подчёркнутый, ^Cr=инвертированный)" +"интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)" #, fuzzy -msgid "send unknown commands to server" -msgstr "отсылать неизвестные команды IRC серверу" +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" +msgstr "" +"интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)" #, fuzzy, c-format msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s" @@ -4733,6 +4827,14 @@ msgstr "порт IRC сервера" msgid "ignore pointer (optional)" msgstr "" +#, fuzzy +msgid "list of notify" +msgstr "настроить параметры конфигурации" + +#, fuzzy +msgid "notify pointer (optional)" +msgstr "Сохраняю конфигурацию\n" + #, fuzzy, c-format msgid "%s%s: you are not connected to server" msgstr "%s вы не подключены к серверу\n" @@ -4741,6 +4843,46 @@ msgstr "%s вы не подключены к серверу\n" msgid "%s%s: this buffer is not a channel!" msgstr "Это окно не является каналом!\n" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, fuzzy, c-format +msgid "Notify list for %s%s%s:" +msgstr "очистить хотлист" + +msgid "Notify list is empty on this server" +msgstr "" + +#, fuzzy +msgid "Notify list for all servers:" +msgstr "очистить хотлист" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "%s%s%s выкинул %s%s%s с канала %s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "%s%s%s выкинул %s%s%s с канала %s%s" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "%s%s%s отсутствует: %s\n" + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is back" +msgstr "Тема канала %s%s%s: " + +#, fuzzy, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "%s%s%s отсутствует: %s\n" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" @@ -6682,54 +6824,3 @@ msgstr "" #, fuzzy msgid "Pointer" msgstr "минута" - -#, fuzzy -#~ msgid "open new channels near server" -#~ msgstr "открывать новые каналы/приваты рядом с сервером" - -#, fuzzy -#~ msgid "open new privates near server" -#~ msgstr "открывать новые каналы/приваты рядом с сервером" - -#, fuzzy -#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\"" -#~ msgstr "%s ник \"%s\" не найден для команды \"%s\"\n" - -#, fuzzy -#~ msgid "list of regex modifiers" -#~ msgstr "Список сокращений:\n" - -#, fuzzy -#~ msgid "List of regex modifiers:" -#~ msgstr "Список сокращений:\n" - -#, fuzzy -#~ msgid "text color for prefix #1 in nicklist" -#~ msgstr "цвет ника" - -#, fuzzy -#~ msgid "text color for prefix #2 in nicklist" -#~ msgstr "цвет ника" - -#, fuzzy -#~ msgid "text color for prefix #3 in nicklist" -#~ msgstr "цвет ника" - -#, fuzzy -#~ msgid "text color for prefix #4 in nicklist" -#~ msgstr "цвет ника" - -#, fuzzy -#~ msgid "text color for prefix #5 in nicklist" -#~ msgstr "цвет ника" - -#~ msgid "" -#~ "channel: channel name to join\n" -#~ " key: key to join the channel" -#~ msgstr "" -#~ "канал: название канала\n" -#~ " ключ: ключ для входа на канал" - -#, fuzzy -#~ msgid "color for buffer name when connected using SSL to server" -#~ msgstr "%s вы не подключены к серверу\n" diff --git a/po/srcfiles.cmake b/po/srcfiles.cmake index dc40b97bd..e3069e1cc 100644 --- a/po/srcfiles.cmake +++ b/po/srcfiles.cmake @@ -138,6 +138,8 @@ SET(WEECHAT_SOURCES ./src/plugins/irc/irc-msgbuffer.h ./src/plugins/irc/irc-nick.c ./src/plugins/irc/irc-nick.h +./src/plugins/irc/irc-notify.c +./src/plugins/irc/irc-notify.h ./src/plugins/irc/irc-protocol.c ./src/plugins/irc/irc-protocol.h ./src/plugins/irc/irc-raw.c diff --git a/po/weechat.pot b/po/weechat.pot index 201f810dc..39af0104d 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-11-01 18:38+0100\n" +"POT-Creation-Date: 2010-11-06 11:25+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -2642,6 +2642,40 @@ msgid "Notice" msgstr "" #, c-format +msgid "" +"%s%s: server must be specified because you are not on an irc server or " +"channel" +msgstr "" + +#, c-format +msgid "%s%s: notify already exists" +msgstr "" + +#, c-format +msgid "%s: notification added for %s%s" +msgstr "" + +#, c-format +msgid "%s%s: error adding notification" +msgstr "" + +#, c-format +msgid "%s: all notifications deleted" +msgstr "" + +#, c-format +msgid "%s: no notification in list" +msgstr "" + +#, c-format +msgid "%s: notification deleted" +msgstr "" + +#, c-format +msgid "%s%s: notification not found" +msgstr "" + +#, c-format msgid "%s%s: cannot create new private buffer \"%s\"" msgstr "" @@ -2887,8 +2921,8 @@ msgstr "" msgid "" " list: list all ignores\n" -" add: add a ignore\n" -" del: del a ignore\n" +" add: add an ignore\n" +" del: delete an ignore\n" " number: number of ignore to delete (look at list to find it)\n" " -all: delete all ignores\n" "nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a " @@ -3119,6 +3153,32 @@ msgid "" " text: text to send" msgstr "" +msgid "add a notification for presence or away status of nicks on servers" +msgstr "" + +msgid "[add nick [server [-away]]] | [del nick|-all [server]]" +msgstr "" + +msgid "" +" add: add a notification\n" +" nick: nickname\n" +"server: internal server name (by default current server)\n" +" -away: notify when away message is changed (by doing whois on nick)\n" +" del: delete a notification\n" +" -all: delete all notifications\n" +"\n" +"Without argument, this command displays notifications for current server (or " +"all servers if command is issued on core buffer).\n" +"\n" +"Examples:\n" +" notify when \"toto\" joins/quits current server:\n" +" /notify add toto\n" +" notify when \"toto\" joins/quits freenode server:\n" +" /notify add toto freenode\n" +" notify when \"toto\" is away or back on freenode server:\n" +" /notify add toto freenode -away" +msgstr "" + msgid "give channel operator status to nickname(s)" msgstr "" @@ -3529,6 +3589,9 @@ msgstr "" msgid "numbers for defined ignores" msgstr "" +msgid "nicks in notify list" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -3668,6 +3731,11 @@ msgid "" "WeeChat version in string)" msgstr "" +msgid "" +"notify list for server (you should not change this option but use /notify " +"command instead)" +msgstr "" + #, c-format msgid "%s%s: error creating server \"%s\"" msgstr "" @@ -3785,6 +3853,18 @@ msgid "" "display notices as private messages (if auto, use private buffer if found)" msgstr "" +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"joins or quits server (result of command ison), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + +msgid "" +"comma separated list of tags used in messages printed by notify when a nick " +"away status changes (result of command whois), for example: " +"\"notify_highglight\", \"notify_message\" or \"notify_private\"" +msgstr "" + msgid "close buffer when /part is issued on a channel" msgstr "" @@ -3865,6 +3945,14 @@ msgstr "" msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)" msgstr "" +msgid "when off, colors codes are ignored in incoming messages" +msgstr "" + +msgid "" +"allow user to send colors with special codes (ctrl-c + a code and optional " +"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +msgstr "" + msgid "interval between two checks for lag (in seconds, 0 = never check)" msgstr "" @@ -3879,15 +3967,16 @@ msgid "" "seconds)" msgstr "" -msgid "when off, colors codes are ignored in incoming messages" +msgid "send unknown commands to server" msgstr "" msgid "" -"allow user to send colors with special codes (ctrl-c + a code and optional " -"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)" +"interval between two checks for notify with IRC command \"ison\" (in minutes)" msgstr "" -msgid "send unknown commands to server" +msgid "" +"interval between two checks for notify with IRC command \"whois\" (in " +"minutes)" msgstr "" #, c-format @@ -4044,6 +4133,12 @@ msgstr "" msgid "ignore pointer (optional)" msgstr "" +msgid "list of notify" +msgstr "" + +msgid "notify pointer (optional)" +msgstr "" + #, c-format msgid "%s%s: you are not connected to server" msgstr "" @@ -4052,6 +4147,45 @@ msgstr "" msgid "%s%s: this buffer is not a channel!" msgstr "" +msgid "offline" +msgstr "" + +msgid "online" +msgstr "" + +#, c-format +msgid "Notify list for %s%s%s:" +msgstr "" + +msgid "Notify list is empty on this server" +msgstr "" + +msgid "Notify list for all servers:" +msgstr "" + +msgid "Notify list is empty on all servers" +msgstr "" + +#, c-format +msgid "%snotify: %s%s%s has joined %s%s" +msgstr "" + +#, c-format +msgid "%snotify: %s%s%s has quit %s%s" +msgstr "" + +#, c-format +msgid "%snotify: %s%s%s is now away: \"%s\"" +msgstr "" + +#, c-format +msgid "%snotify: %s%s%s is back" +msgstr "" + +#, c-format +msgid "%snotify: %s%s%s is still away: \"%s\"" +msgstr "" + #, c-format msgid "" "%s%s: error building answer for SASL authentication, using mechanism \"%s\"" diff --git a/src/plugins/irc/CMakeLists.txt b/src/plugins/irc/CMakeLists.txt index 93ccf9cca..98e21d45d 100644 --- a/src/plugins/irc/CMakeLists.txt +++ b/src/plugins/irc/CMakeLists.txt @@ -35,6 +35,7 @@ irc-input.c irc-input.h irc-mode.c irc-mode.h irc-msgbuffer.c irc-msgbuffer.h irc-nick.c irc-nick.h +irc-notify.c irc-notify.h irc-protocol.c irc-protocol.h irc-raw.c irc-raw.h irc-redirect.c irc-redirect.h diff --git a/src/plugins/irc/Makefile.am b/src/plugins/irc/Makefile.am index 105c7eeb8..bd287713c 100644 --- a/src/plugins/irc/Makefile.am +++ b/src/plugins/irc/Makefile.am @@ -57,6 +57,8 @@ irc_la_SOURCES = irc.c \ irc-msgbuffer.h \ irc-nick.c \ irc-nick.h \ + irc-notify.c \ + irc-notify.h \ irc-protocol.c \ irc-protocol.h \ irc-raw.c \ diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index fa021f3b8..b982d55dc 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -36,16 +36,17 @@ #include "irc.h" #include "irc-command.h" #include "irc-buffer.h" +#include "irc-channel.h" #include "irc-color.h" #include "irc-config.h" -#include "irc-input.h" -#include "irc-server.h" -#include "irc-channel.h" -#include "irc-nick.h" #include "irc-display.h" #include "irc-ignore.h" +#include "irc-input.h" +#include "irc-nick.h" +#include "irc-notify.h" #include "irc-protocol.h" #include "irc-raw.h" +#include "irc-server.h" /* @@ -1436,7 +1437,7 @@ irc_command_halfop (void *data, struct t_gui_buffer *buffer, int argc, } /* - * irc_command_ignore_display: display a ignore + * irc_command_ignore_display: display an ignore */ void @@ -1454,10 +1455,8 @@ irc_command_ignore_display (struct t_irc_ignore *ignore) IRC_COLOR_CHAT_DELIMITERS, IRC_COLOR_CHAT, (mask) ? mask : ignore->mask, - (ignore->server) ? - ignore->server : "*", - (ignore->channel) ? - ignore->channel : "*"); + (ignore->server) ? ignore->server : "*", + (ignore->channel) ? ignore->channel : "*"); if (mask) free (mask); @@ -1483,7 +1482,7 @@ irc_command_ignore (void *data, struct t_gui_buffer *buffer, int argc, if ((argc == 1) || ((argc == 2) && (weechat_strcasecmp (argv[1], "list") == 0))) { - /* display all key bindings */ + /* display all ignores */ if (irc_ignore_list) { weechat_printf (NULL, ""); @@ -2623,6 +2622,184 @@ irc_command_notice (void *data, struct t_gui_buffer *buffer, int argc, } /* + * irc_command_notify: add or remove notify + */ + +int +irc_command_notify (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + struct t_irc_notify *ptr_notify; + int i, check_away; + + IRC_BUFFER_GET_SERVER(buffer); + + /* make C compiler happy */ + (void) data; + (void) buffer; + (void) argv_eol; + + /* display notify status for users on server */ + if (argc == 1) + { + irc_notify_display_list (ptr_server); + return WEECHAT_RC_OK; + } + + /* add notify */ + if (weechat_strcasecmp (argv[1], "add") == 0) + { + if (argc < 3) + { + weechat_printf (NULL, + _("%s%s: missing arguments for \"%s\" " + "command"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, + "notify add"); + return WEECHAT_RC_OK; + } + + check_away = 0; + + if (argc > 3) + { + ptr_server = irc_server_search (argv[3]); + if (!ptr_server) + { + weechat_printf (NULL, + _("%s%s: server \"%s\" not found"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, + argv[3]); + return WEECHAT_RC_OK; + } + } + + if (!ptr_server) + { + weechat_printf (NULL, + _("%s%s: server must be specified because you are " + "not on an irc server or channel"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_OK; + } + + if (argc > 4) + { + for (i = 4; i < argc; i++) + { + if (weechat_strcasecmp (argv[i], "-away") == 0) + check_away = 1; + } + } + + ptr_notify = irc_notify_search (ptr_server, argv[2]); + if (ptr_notify) + { + weechat_printf (NULL, + _("%s%s: notify already exists"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_OK; + } + + ptr_notify = irc_notify_new (ptr_server, argv[2], check_away); + if (ptr_notify) + { + irc_notify_set_server_option (ptr_server); + weechat_printf (ptr_server->buffer, + _("%s: notification added for %s%s"), + IRC_PLUGIN_NAME, + IRC_COLOR_CHAT_NICK, + ptr_notify->nick); + } + else + { + weechat_printf (NULL, _("%s%s: error adding notification"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + } + + return WEECHAT_RC_OK; + } + + /* delete notify */ + if (weechat_strcasecmp (argv[1], "del") == 0) + { + if (argc < 3) + { + weechat_printf (NULL, + _("%s%s: missing arguments for \"%s\" " + "command"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, + "notify del"); + return WEECHAT_RC_OK; + } + + if (argc > 3) + { + ptr_server = irc_server_search (argv[3]); + if (!ptr_server) + { + weechat_printf (NULL, + _("%s%s: server \"%s\" not found"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, + argv[3]); + return WEECHAT_RC_OK; + } + } + + if (!ptr_server) + { + weechat_printf (NULL, + _("%s%s: server must be specified because you are " + "not on an irc server or channel"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_OK; + } + + if (weechat_strcasecmp (argv[2], "-all") == 0) + { + if (ptr_server->notify_list) + { + irc_notify_free_all (ptr_server); + irc_notify_set_server_option (ptr_server); + weechat_printf (NULL, _("%s: all notifications deleted"), + IRC_PLUGIN_NAME); + } + else + { + weechat_printf (NULL, _("%s: no notification in list"), + IRC_PLUGIN_NAME); + } + } + else + { + ptr_notify = irc_notify_search (ptr_server, argv[2]); + if (ptr_notify) + { + irc_notify_free (ptr_server, ptr_notify); + irc_notify_set_server_option (ptr_server); + weechat_printf (NULL, _("%s: notification deleted"), + IRC_PLUGIN_NAME); + } + else + { + weechat_printf (NULL, + _("%s%s: notification not found"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_OK; + } + } + + return WEECHAT_RC_OK; + } + + weechat_printf (NULL, + _("%s%s: unknown option for \"%s\" " + "command"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, "notify"); + return WEECHAT_RC_OK; +} + +/* * irc_command_op: give operator privileges to nickname(s) */ @@ -4502,8 +4679,8 @@ irc_command_init () N_("[list] | [add [re:]nick/host [server [channel]]] | " "[del number|-all]"), N_(" list: list all ignores\n" - " add: add a ignore\n" - " del: del a ignore\n" + " add: add an ignore\n" + " del: delete an ignore\n" " number: number of ignore to delete (look at " "list to find it)\n" " -all: delete all ignores\n" @@ -4686,6 +4863,37 @@ irc_command_init () "nickname: user to send notice to\n" " text: text to send"), "%(nicks) %-", &irc_command_notice, NULL); + weechat_hook_command ("notify", + N_("add a notification for presence or away status " + "of nicks on servers"), + N_("[add nick [server [-away]]] | " + "[del nick|-all [server]]"), + N_(" add: add a notification\n" + " nick: nickname\n" + "server: internal server name (by default " + "current server)\n" + " -away: notify when away message is changed " + "(by doing whois on nick)\n" + " del: delete a notification\n" + " -all: delete all notifications\n\n" + "Without argument, this command displays " + "notifications for current server (or all servers " + "if command is issued on core buffer).\n\n" + "Examples:\n" + " notify when \"toto\" joins/quits current " + "server:\n" + " /notify add toto\n" + " notify when \"toto\" joins/quits freenode " + "server:\n" + " /notify add toto freenode\n" + " notify when \"toto\" is away or back on " + "freenode server:\n" + " /notify add toto freenode -away"), + "list" + " || add %(irc_channel_nicks) %(irc_servers) " + "-away %-" + " || del -all|%(irc_notify_nicks) %(irc_servers) %-", + &irc_command_notify, NULL); weechat_hook_command ("op", N_("give channel operator status to nickname(s)"), N_("nickname [nickname]"), diff --git a/src/plugins/irc/irc-completion.c b/src/plugins/irc/irc-completion.c index 393d9f7e9..5699afc3c 100644 --- a/src/plugins/irc/irc-completion.c +++ b/src/plugins/irc/irc-completion.c @@ -28,13 +28,14 @@ #include "../weechat-plugin.h" #include "irc.h" #include "irc-buffer.h" +#include "irc-channel.h" #include "irc-color.h" #include "irc-completion.h" #include "irc-config.h" #include "irc-ignore.h" -#include "irc-server.h" -#include "irc-channel.h" #include "irc-nick.h" +#include "irc-notify.h" +#include "irc-server.h" /* @@ -566,6 +567,50 @@ irc_completion_ignores_numbers_cb (void *data, const char *completion_item, } /* + * irc_completion_notify_nicks_cb: callback for completion with nicks in notify + * list + */ + +int +irc_completion_notify_nicks_cb (void *data, const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + struct t_irc_notify *ptr_notify; + + IRC_BUFFER_GET_SERVER(buffer); + + /* make C compiler happy */ + (void) data; + (void) completion_item; + + if (ptr_server) + { + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + weechat_hook_completion_list_add (completion, ptr_notify->nick, + 0, WEECHAT_LIST_POS_SORT); + } + } + else + { + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + weechat_hook_completion_list_add (completion, ptr_notify->nick, + 0, WEECHAT_LIST_POS_SORT); + } + } + } + + return WEECHAT_RC_OK; +} + +/* * irc_completion_init: init completion for IRC plugin */ @@ -614,4 +659,7 @@ irc_completion_init () weechat_hook_completion ("irc_ignores_numbers", N_("numbers for defined ignores"), &irc_completion_ignores_numbers_cb, NULL); + weechat_hook_completion ("irc_notify_nicks", + N_("nicks in notify list"), + &irc_completion_notify_nicks_cb, NULL); } diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c index 00b5f9b12..d1ab51552 100644 --- a/src/plugins/irc/irc-config.c +++ b/src/plugins/irc/irc-config.c @@ -32,13 +32,14 @@ #include "../weechat-plugin.h" #include "irc.h" #include "irc-config.h" -#include "irc-ctcp.h" #include "irc-buffer.h" +#include "irc-channel.h" +#include "irc-ctcp.h" #include "irc-ignore.h" #include "irc-msgbuffer.h" #include "irc-nick.h" +#include "irc-notify.h" #include "irc-server.h" -#include "irc-channel.h" struct t_config_file *irc_config_file = NULL; @@ -79,6 +80,8 @@ struct t_config_option *irc_config_look_highlight_tags; struct t_config_option *irc_config_look_item_display_server; struct t_config_option *irc_config_look_msgbuffer_fallback; struct t_config_option *irc_config_look_notice_as_pv; +struct t_config_option *irc_config_look_notify_tags_ison; +struct t_config_option *irc_config_look_notify_tags_whois; struct t_config_option *irc_config_look_part_closes_buffer; struct t_config_option *irc_config_look_raw_messages; struct t_config_option *irc_config_look_smart_filter; @@ -109,12 +112,14 @@ struct t_config_option *irc_config_color_reason_quit; struct t_config_option *irc_config_network_autoreconnect_delay_growing; struct t_config_option *irc_config_network_autoreconnect_delay_max; +struct t_config_option *irc_config_network_colors_receive; +struct t_config_option *irc_config_network_colors_send; struct t_config_option *irc_config_network_lag_check; struct t_config_option *irc_config_network_lag_min_show; struct t_config_option *irc_config_network_lag_disconnect; struct t_config_option *irc_config_network_lag_refresh_interval; -struct t_config_option *irc_config_network_colors_receive; -struct t_config_option *irc_config_network_colors_send; +struct t_config_option *irc_config_network_notify_check_ison; +struct t_config_option *irc_config_network_notify_check_whois; struct t_config_option *irc_config_network_send_unknown_commands; /* IRC config, server section */ @@ -587,6 +592,38 @@ irc_config_change_network_lag_min_show (void *data, } /* + * irc_config_change_network_notify_check_ison: called when notify check ison + * is changed + */ + +void +irc_config_change_network_notify_check_ison (void *data, + struct t_config_option *option) +{ + /* make C compiler happy */ + (void) data; + (void) option; + + irc_notify_hook_timer_ison (); +} + +/* + * irc_config_change_network_notify_check_whois: called when notify check whois + * is changed + */ + +void +irc_config_change_network_notify_check_whois (void *data, + struct t_config_option *option) +{ + /* make C compiler happy */ + (void) data; + (void) option; + + irc_notify_hook_timer_whois (); +} + +/* * irc_config_change_network_send_unknown_commands: called when "send_unknown_commands" * is changed */ @@ -715,12 +752,39 @@ irc_config_server_change_cb (void *data, struct t_config_option *option) irc_server_check_away (ptr_server); else irc_server_remove_away (ptr_server); + break; + case IRC_SERVER_OPTION_NOTIFY: + irc_notify_new_for_server (ptr_server); + break; } } } } /* + * irc_config_server_default_check_notify: calback called when "notify" option + * from "server_default" section is + * changed: return 0 if a value is set + * This option is not used, only values + * in servers are used for notify. + */ + +int +irc_config_server_default_check_notify (void *data, + struct t_config_option *option, + const char *value) +{ + /* make C compiler happy */ + (void) data; + (void) option; + + if (value && value[0]) + return 0; + + return 1; +} + +/* * irc_config_reload: reload IRC configuration file */ @@ -1436,6 +1500,21 @@ irc_config_server_new_option (struct t_config_file *config_file, callback_change, callback_change_data, NULL, NULL); break; + case IRC_SERVER_OPTION_NOTIFY: + new_option = weechat_config_new_option ( + config_file, section, + option_name, "string", + N_("notify list for server (you should not change this option " + "but use /notify command instead)"), + NULL, 0, 0, + default_value, value, + null_value_allowed, + (section == irc_config_section_server_default) ? + &irc_config_server_default_check_notify : NULL, + NULL, + callback_change, callback_change_data, + NULL, NULL); + break; case IRC_SERVER_NUM_OPTIONS: break; } @@ -1855,6 +1934,24 @@ irc_config_init () N_("display notices as private messages (if auto, use private buffer " "if found)"), "auto|never|always", 0, 0, "auto", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + irc_config_look_notify_tags_ison = weechat_config_new_option ( + irc_config_file, ptr_section, + "notify_tags_ison", "string", + N_("comma separated list of tags used in messages printed by notify " + "when a nick joins or quits server (result of command ison), " + "for example: \"notify_highglight\", \"notify_message\" or " + "\"notify_private\""), + NULL, 0, 0, "notify_message", NULL, 0, NULL, NULL, + NULL, NULL, NULL, NULL); + irc_config_look_notify_tags_whois = weechat_config_new_option ( + irc_config_file, ptr_section, + "notify_tags_whois", "string", + N_("comma separated list of tags used in messages printed by notify " + "when a nick away status changes (result of command whois), " + "for example: \"notify_highglight\", \"notify_message\" or " + "\"notify_private\""), + NULL, 0, 0, "notify_message", NULL, 0, NULL, NULL, + NULL, NULL, NULL, NULL); irc_config_look_part_closes_buffer = weechat_config_new_option ( irc_config_file, ptr_section, "part_closes_buffer", "boolean", @@ -2026,6 +2123,18 @@ irc_config_init () N_("maximum autoreconnect delay to server (in seconds, 0 = no maximum)"), NULL, 0, 3600 * 24, "1800", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + irc_config_network_colors_receive = weechat_config_new_option ( + irc_config_file, ptr_section, + "colors_receive", "boolean", + N_("when off, colors codes are ignored in incoming messages"), + NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + irc_config_network_colors_send = weechat_config_new_option ( + irc_config_file, ptr_section, + "colors_send", "boolean", + N_("allow user to send colors with special codes (ctrl-c + a code and " + "optional color: b=bold, cxx=color, cxx,yy=color+background, " + "u=underline, r=reverse)"), + NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); irc_config_network_lag_check = weechat_config_new_option ( irc_config_file, ptr_section, "lag_check", "integer", @@ -2051,24 +2160,26 @@ irc_config_init () N_("interval between two refreshs of lag item, when lag is increasing " "(in seconds)"), NULL, 1, 3600, "1", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); - irc_config_network_colors_receive = weechat_config_new_option ( - irc_config_file, ptr_section, - "colors_receive", "boolean", - N_("when off, colors codes are ignored in incoming messages"), - NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); - irc_config_network_colors_send = weechat_config_new_option ( - irc_config_file, ptr_section, - "colors_send", "boolean", - N_("allow user to send colors with special codes (ctrl-c + a code and " - "optional color: b=bold, cxx=color, cxx,yy=color+background, " - "u=underline, r=reverse)"), - NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); irc_config_network_send_unknown_commands = weechat_config_new_option ( irc_config_file, ptr_section, "send_unknown_commands", "boolean", N_("send unknown commands to server"), NULL, 0, 0, "off", NULL, 0, NULL, NULL, &irc_config_change_network_send_unknown_commands, NULL, NULL, NULL); + irc_config_network_notify_check_ison = weechat_config_new_option ( + irc_config_file, ptr_section, + "notify_check_ison", "integer", + N_("interval between two checks for notify with IRC command \"ison\" " + "(in minutes)"), + NULL, 1, 60 * 24 * 7, "1", NULL, 0, NULL, NULL, + &irc_config_change_network_notify_check_ison, NULL, NULL, NULL); + irc_config_network_notify_check_whois = weechat_config_new_option ( + irc_config_file, ptr_section, + "notify_check_whois", "integer", + N_("interval between two checks for notify with IRC command \"whois\" " + "(in minutes)"), + NULL, 1, 60 * 24 * 7, "5", NULL, 0, NULL, NULL, + &irc_config_change_network_notify_check_whois, NULL, NULL, NULL); /* msgbuffer */ ptr_section = weechat_config_new_section (irc_config_file, "msgbuffer", @@ -2154,7 +2265,16 @@ irc_config_init () int irc_config_read () { - return weechat_config_read (irc_config_file); + int rc; + + rc = weechat_config_read (irc_config_file); + if (rc == WEECHAT_CONFIG_READ_OK) + { + irc_notify_new_for_all_servers (); + irc_config_change_network_notify_check_ison (NULL, NULL); + irc_config_change_network_notify_check_whois (NULL, NULL); + } + return rc; } /* diff --git a/src/plugins/irc/irc-config.h b/src/plugins/irc/irc-config.h index 043a56129..aed25367e 100644 --- a/src/plugins/irc/irc-config.h +++ b/src/plugins/irc/irc-config.h @@ -105,6 +105,8 @@ extern struct t_config_option *irc_config_look_highlight_tags; extern struct t_config_option *irc_config_look_item_display_server; extern struct t_config_option *irc_config_look_msgbuffer_fallback; extern struct t_config_option *irc_config_look_notice_as_pv; +extern struct t_config_option *irc_config_look_notify_tags_ison; +extern struct t_config_option *irc_config_look_notify_tags_whois; extern struct t_config_option *irc_config_look_part_closes_buffer; extern struct t_config_option *irc_config_look_raw_messages; extern struct t_config_option *irc_config_look_smart_filter; @@ -131,12 +133,14 @@ extern struct t_config_option *irc_config_color_reason_quit; extern struct t_config_option *irc_config_network_autoreconnect_delay_growing; extern struct t_config_option *irc_config_network_autoreconnect_delay_max; +extern struct t_config_option *irc_config_network_colors_receive; +extern struct t_config_option *irc_config_network_colors_send; extern struct t_config_option *irc_config_network_lag_check; extern struct t_config_option *irc_config_network_lag_min_show; extern struct t_config_option *irc_config_network_lag_disconnect; extern struct t_config_option *irc_config_network_lag_refresh_interval; -extern struct t_config_option *irc_config_network_colors_receive; -extern struct t_config_option *irc_config_network_colors_send; +extern struct t_config_option *irc_config_network_notify_check_ison; +extern struct t_config_option *irc_config_network_notify_check_whois; extern struct t_config_option *irc_config_network_send_unknown_commands; extern struct t_config_option *irc_config_server_default[]; diff --git a/src/plugins/irc/irc-ignore.c b/src/plugins/irc/irc-ignore.c index aaba11509..c67fd68a2 100644 --- a/src/plugins/irc/irc-ignore.c +++ b/src/plugins/irc/irc-ignore.c @@ -36,7 +36,7 @@ struct t_irc_ignore *last_irc_ignore = NULL; /* last ignore in list */ /* - * irc_ignore_valid: check if a ignore pointer exists + * irc_ignore_valid: check if an ignore pointer exists * return 1 if ignore exists * 0 if ignore is not found */ @@ -61,7 +61,7 @@ irc_ignore_valid (struct t_irc_ignore *ignore) } /* - * irc_ignore_search: search a ignore + * irc_ignore_search: search an ignore */ struct t_irc_ignore * @@ -91,7 +91,7 @@ irc_ignore_search (const char *mask, const char *server, const char *channel) } /* - * irc_ignore_search_by_number: search a ignore by number (first is #1) + * irc_ignore_search_by_number: search an ignore by number (first is #1) */ struct t_irc_ignore * @@ -241,7 +241,7 @@ irc_ignore_check (struct t_irc_server *server, const char *channel, } /* - * irc_ignore_free: remove a ignore + * irc_ignore_free: remove an ignore */ void @@ -302,7 +302,7 @@ irc_ignore_free_all () } /* - * irc_ignore_add_to_infolist: add a ignore in an infolist + * irc_ignore_add_to_infolist: add an ignore in an infolist * return 1 if ok, 0 if error */ diff --git a/src/plugins/irc/irc-ignore.h b/src/plugins/irc/irc-ignore.h index 71b1a6cb5..e3c4b9c8a 100644 --- a/src/plugins/irc/irc-ignore.h +++ b/src/plugins/irc/irc-ignore.h @@ -30,8 +30,8 @@ struct t_irc_ignore int number; /* ignore number */ char *mask; /* nick / host mask */ regex_t *regex_mask; /* regex for mask */ - char *server; /* server name */ - char *channel; /* channel name */ + char *server; /* server name ("*" == any server) */ + char *channel; /* channel name ("*" == any channel) */ struct t_irc_ignore *prev_ignore; /* link to previous ignore */ struct t_irc_ignore *next_ignore; /* link to next ignore */ }; diff --git a/src/plugins/irc/irc-info.c b/src/plugins/irc/irc-info.c index 5d9562f34..8fb518b4b 100644 --- a/src/plugins/irc/irc-info.c +++ b/src/plugins/irc/irc-info.c @@ -31,6 +31,7 @@ #include "irc-config.h" #include "irc-ignore.h" #include "irc-nick.h" +#include "irc-notify.h" #include "irc-protocol.h" #include "irc-server.h" @@ -273,6 +274,7 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name, struct t_irc_channel *ptr_channel; struct t_irc_nick *ptr_nick; struct t_irc_ignore *ptr_ignore; + struct t_irc_notify *ptr_notify; char **argv; int argc; @@ -495,6 +497,49 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name, } } } + else if (weechat_strcasecmp (infolist_name, "irc_notify") == 0) + { + if (pointer && !irc_notify_valid (NULL, pointer)) + return NULL; + + ptr_infolist = weechat_infolist_new (); + if (ptr_infolist) + { + if (pointer) + { + /* build list with only one notify */ + if (!irc_notify_add_to_infolist (ptr_infolist, pointer)) + { + weechat_infolist_free (ptr_infolist); + return NULL; + } + return ptr_infolist; + } + else + { + /* build list with notify list of all servers matchin arguments */ + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + if (!arguments || !arguments[0] + || weechat_string_match (ptr_server->name, arguments, 0)) + { + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (!irc_notify_add_to_infolist (ptr_infolist, + ptr_notify)) + { + weechat_infolist_free (ptr_infolist); + return NULL; + } + } + } + } + return ptr_infolist; + } + } + } return NULL; } @@ -575,4 +620,9 @@ irc_info_init () N_("ignore pointer (optional)"), NULL, &irc_info_get_infolist_cb, NULL); + weechat_hook_infolist ("irc_notify", + N_("list of notify"), + N_("notify pointer (optional)"), + N_("server name (can start or end with \"*\" as wildcard) (optional)"), + &irc_info_get_infolist_cb, NULL); } diff --git a/src/plugins/irc/irc-notify.c b/src/plugins/irc/irc-notify.c new file mode 100644 index 000000000..97947bfed --- /dev/null +++ b/src/plugins/irc/irc-notify.c @@ -0,0 +1,927 @@ +/* + * Copyright (C) 2010 Sebastien Helleu <flashcode@flashtux.org> + * + * This file is part of WeeChat, the extensible chat client. + * + * WeeChat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * WeeChat is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WeeChat. If not, see <http://www.gnu.org/licenses/>. + */ + +/* + * irc-notify.c: notify lists for IRC plugin + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "../weechat-plugin.h" +#include "irc.h" +#include "irc-notify.h" +#include "irc-color.h" +#include "irc-config.h" +#include "irc-redirect.h" +#include "irc-server.h" + + +/* timers to run "ison" and "whois" commands */ +struct t_hook *irc_notify_timer_ison = NULL; /* timer for "ison" */ +struct t_hook *irc_notify_timer_whois = NULL; /* timer for "whois" */ + +/* hsignal for redirected commands */ +struct t_hook *irc_notify_hsignal = NULL; + + +/* + * irc_notify_valid: check if a notify pointer exists for a server + * if server is NULL, search in all servers + * return 1 if notify exists + * 0 if notify is not found + */ + +int +irc_notify_valid (struct t_irc_server *server, struct t_irc_notify *notify) +{ + struct t_irc_server *ptr_server; + struct t_irc_notify *ptr_notify; + + if (!notify) + return 0; + + if (server) + { + for (ptr_notify = server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (ptr_notify == notify) + return 1; + } + } + else + { + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (ptr_notify == notify) + return 1; + } + } + } + + /* notify not found */ + return 0; +} + +/* + * irc_notify_search: search a notify + */ + +struct t_irc_notify * +irc_notify_search (struct t_irc_server *server, const char *nick) +{ + struct t_irc_notify *ptr_notify; + + if (!server || !nick) + return NULL; + + for (ptr_notify = server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (strcmp (ptr_notify->nick, nick) == 0) + return ptr_notify; + } + + /* notify not found */ + return NULL; +} + +/* + * irc_notify_set_server_option: set server option "notify" with notify + * list on server + */ + +void +irc_notify_set_server_option (struct t_irc_server *server) +{ + char *str; + struct t_irc_notify *ptr_notify; + int total_length, length; + + if (!server) + return; + + if (server->notify_list) + { + str = NULL; + total_length = 0; + for (ptr_notify = server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + length = strlen (ptr_notify->nick) + 32; + if (!str) + { + total_length += length + 1; + str = malloc (total_length); + if (str) + str[0] = '\0'; + } + else + { + total_length += length; + str = realloc (str, total_length); + } + if (str) + { + if (str[0]) + strcat (str, ","); + strcat (str, ptr_notify->nick); + if (ptr_notify->check_away) + strcat (str, " away"); + } + } + if (str) + { + weechat_config_option_set (server->options[IRC_SERVER_OPTION_NOTIFY], + str, 0); + free (str); + } + } + else + { + weechat_config_option_set (server->options[IRC_SERVER_OPTION_NOTIFY], + "", 0); + } +} + +/* + * irc_notify_new: add new notify + */ + +struct t_irc_notify * +irc_notify_new (struct t_irc_server *server, const char *nick, int check_away) +{ + struct t_irc_notify *new_notify; + + if (!server || !nick || !nick[0]) + return NULL; + + new_notify = malloc (sizeof (*new_notify)); + if (new_notify) + { + new_notify->server = server; + new_notify->nick = strdup (nick); + new_notify->check_away = check_away; + new_notify->is_on_server = 0; + new_notify->away_message = NULL; + new_notify->ison_received = 0; + + /* add notify to notify list on server */ + new_notify->prev_notify = server->last_notify; + if (server->notify_list) + server->last_notify->next_notify = new_notify; + else + server->notify_list = new_notify; + server->last_notify = new_notify; + new_notify->next_notify = NULL; + } + + return new_notify; +} + +/* + * irc_notify_new_for_server: create notify list for server with option + * "irc.server.xxx.notify" + */ + +void +irc_notify_new_for_server (struct t_irc_server *server) +{ + const char *notify; + char **items, *pos_params, **params; + int i, j, num_items, num_params, check_away; + + irc_notify_free_all (server); + + notify = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_NOTIFY); + + if (!notify || !notify[0]) + return; + + items = weechat_string_split (notify, ",", 0, 0, &num_items); + + if (items) + { + for (i = 0; i < num_items; i++) + { + check_away = 0; + pos_params = strchr (items[i], ' '); + if (pos_params) + { + pos_params[0] = '\0'; + pos_params++; + while (pos_params[0] == ' ') + { + pos_params++; + } + params = weechat_string_split (pos_params, "/", 0, 0, + &num_params); + if (params) + { + for (j = 0; j < num_params; j++) + { + if (weechat_strcasecmp (params[j], "away") == 0) + check_away = 1; + } + weechat_string_free_split (params); + } + } + irc_notify_new (server, items[i], check_away); + } + weechat_string_free_split (items); + } +} + +/* + * irc_notify_new_for_all_servers: create notify list for all servers with + * option "irc.server.xxx.notify" + */ + +void +irc_notify_new_for_all_servers () +{ + struct t_irc_server *ptr_server; + + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + irc_notify_new_for_server (ptr_server); + } +} + +/* + * irc_notify_free: remove a notify on a server + */ + +void +irc_notify_free (struct t_irc_server *server, struct t_irc_notify *notify) +{ + weechat_hook_signal_send ("irc_notify_removing", + WEECHAT_HOOK_SIGNAL_POINTER, notify); + + /* free data */ + if (notify->nick) + free (notify->nick); + if (notify->away_message) + free (notify->away_message); + + /* remove notify from list */ + if (notify->prev_notify) + (notify->prev_notify)->next_notify = notify->next_notify; + if (notify->next_notify) + (notify->next_notify)->prev_notify = notify->prev_notify; + if (server->notify_list == notify) + server->notify_list = notify->next_notify; + if (server->last_notify == notify) + server->last_notify = notify->prev_notify; + + free (notify); + + weechat_hook_signal_send ("irc_notify_removed", + WEECHAT_HOOK_SIGNAL_STRING, NULL); +} + +/* + * irc_notify_free_all: remove all notify on a server + */ + +void +irc_notify_free_all (struct t_irc_server *server) +{ + while (server->notify_list) + { + irc_notify_free (server, server->notify_list); + } +} + +/* + * irc_notify_display: display a notify + */ + +void +irc_notify_display (struct t_gui_buffer *buffer, struct t_irc_notify *notify) +{ + if (!notify->is_on_server && !notify->away_message) + { + weechat_printf (buffer, + " %s%s%s @ %s%s%s: %s%s", + IRC_COLOR_CHAT_NICK, + notify->nick, + IRC_COLOR_CHAT, + IRC_COLOR_CHAT_SERVER, + notify->server->name, + IRC_COLOR_CHAT, + IRC_COLOR_MESSAGE_QUIT, + _("offline")); + } + else + { + weechat_printf (buffer, + " %s%s%s @ %s%s%s: %s%s %s%s%s%s%s%s", + IRC_COLOR_CHAT_NICK, + notify->nick, + IRC_COLOR_CHAT, + IRC_COLOR_CHAT_SERVER, + notify->server->name, + IRC_COLOR_CHAT, + IRC_COLOR_MESSAGE_JOIN, + _("online"), + IRC_COLOR_CHAT, + (notify->away_message) ? " (" : "", + (notify->away_message) ? _("away") : "", + (notify->away_message) ? ": \"" : "", + (notify->away_message) ? notify->away_message : "", + (notify->away_message) ? "\")" : ""); + } +} + +/* + * irc_notify_display_list: display notify list for a server + * (or all servers if server is NULL) + */ + +void +irc_notify_display_list (struct t_irc_server *server) +{ + struct t_irc_notify *ptr_notify; + struct t_irc_server *ptr_server; + int count; + + if (server) + { + if (server->notify_list) + { + weechat_printf (server->buffer, ""); + weechat_printf (server->buffer, + _("Notify list for %s%s%s:"), + IRC_COLOR_CHAT_SERVER, + server->name, + IRC_COLOR_CHAT); + for (ptr_notify = server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + irc_notify_display (server->buffer, ptr_notify); + } + } + else + { + weechat_printf (server->buffer, + _("Notify list is empty on this server")); + } + } + else + { + count = 0; + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (count == 0) + { + weechat_printf (NULL, ""); + weechat_printf (NULL, _("Notify list for all servers:")); + } + irc_notify_display (NULL, ptr_notify); + count++; + } + } + if (count == 0) + { + weechat_printf (NULL, + _("Notify list is empty on all servers")); + } + } +} + +/* + * irc_notify_get_tags: get tags for message displayed + * (concatenation of "irc_notify" and tags from option) + */ + +const char * +irc_notify_get_tags (struct t_config_option *option) +{ + static char string[1024]; + const char *tags; + + tags = weechat_config_string (option); + + snprintf (string, sizeof (string), "irc_notify%s%s", + (tags && tags[0]) ? "," : "", + (tags && tags[0]) ? tags : ""); + + return string; +} + +/* + * irc_notify_set_is_on_server: set flag "is_on_server" for a notify + * and display message if user was not on server + */ + +void +irc_notify_set_is_on_server (struct t_irc_notify *notify, + int is_on_server) +{ + if (!notify) + return; + + /* same status, then do nothing */ + if (notify->is_on_server == is_on_server) + return; + + notify->is_on_server = is_on_server; + + weechat_printf_tags (notify->server->buffer, + irc_notify_get_tags (irc_config_look_notify_tags_ison), + (notify->is_on_server) ? + _("%snotify: %s%s%s has joined %s%s") : + _("%snotify: %s%s%s has quit %s%s"), + weechat_prefix ("network"), + IRC_COLOR_CHAT_NICK, + notify->nick, + (notify->is_on_server) ? + IRC_COLOR_MESSAGE_JOIN : IRC_COLOR_MESSAGE_QUIT, + IRC_COLOR_CHAT_SERVER, + notify->server->name); +} + +/* + * irc_notify_set_away_message: set away message for a notify + * and display message if away status has changed + */ + +void +irc_notify_set_away_message (struct t_irc_notify *notify, + const char *away_message) +{ + if (!notify) + return; + + /* same away message, then do nothing */ + if ((!notify->away_message && !away_message) + || (notify->away_message && away_message + && (strcmp (notify->away_message, away_message) == 0))) + return; + + if (!notify->away_message && away_message) + { + weechat_printf_tags (notify->server->buffer, + irc_notify_get_tags (irc_config_look_notify_tags_whois), + _("%snotify: %s%s%s is now away: \"%s\""), + weechat_prefix ("network"), + IRC_COLOR_CHAT_NICK, + notify->nick, + IRC_COLOR_CHAT, + away_message); + } + else if (notify->away_message && !away_message) + { + weechat_printf_tags (notify->server->buffer, + irc_notify_get_tags (irc_config_look_notify_tags_whois), + _("%snotify: %s%s%s is back"), + weechat_prefix ("network"), + IRC_COLOR_CHAT_NICK, + notify->nick, + IRC_COLOR_CHAT); + } + else if (notify->away_message && away_message) + { + weechat_printf_tags (notify->server->buffer, + irc_notify_get_tags (irc_config_look_notify_tags_whois), + _("%snotify: %s%s%s is still away: \"%s\""), + weechat_prefix ("network"), + IRC_COLOR_CHAT_NICK, + notify->nick, + IRC_COLOR_CHAT, + away_message); + } + + if (notify->away_message) + free (notify->away_message); + notify->away_message = (away_message) ? strdup (away_message) : NULL; +} + +/* + * irc_notify_hsignal_cb: callback for hsignal on redirected commands + * "ison" and "whois" + */ + +int +irc_notify_hsignal_cb (void *data, const char *signal, + struct t_hashtable *hashtable) +{ + const char *error, *server, *pattern, *command, *output; + char **messages, **nicks_sent, **nicks_recv, *irc_cmd, *arguments; + char *ptr_args, *pos; + int i, j, num_messages, num_nicks_sent, num_nicks_recv, nick_was_sent; + int away_message_updated, no_such_nick; + struct t_irc_server *ptr_server; + struct t_irc_notify *ptr_notify; + + /* make C compiler happy */ + (void) data; + (void) signal; + + error = weechat_hashtable_get (hashtable, "error"); + server = weechat_hashtable_get (hashtable, "server"); + pattern = weechat_hashtable_get (hashtable, "pattern"); + command = weechat_hashtable_get (hashtable, "command"); + output = weechat_hashtable_get (hashtable, "output"); + + /* if there is an error on redirection, just ignore result */ + if (error && error[0]) + return WEECHAT_RC_OK; + + /* missing things in redirection */ + if (!server || !pattern || !command || !output) + return WEECHAT_RC_OK; + + /* search server */ + ptr_server = irc_server_search (server); + if (!ptr_server) + return WEECHAT_RC_OK; + + /* search for start of arguments in command sent to server */ + ptr_args = strchr (command, ' '); + if (!ptr_args) + return WEECHAT_RC_OK; + ptr_args++; + while ((ptr_args[0] == ' ') || (ptr_args[0] == ':')) + { + ptr_args++; + } + if (!ptr_args[0]) + return WEECHAT_RC_OK; + + /* read output of command */ + if (strcmp (pattern, "ison") == 0) + { + /* redirection of command "ison" */ + messages = weechat_string_split (output, "\n", 0, 0, &num_messages); + if (messages) + { + nicks_sent = weechat_string_split (ptr_args, " ", 0, 0, + &num_nicks_sent); + if (!nicks_sent) + return WEECHAT_RC_OK; + for (ptr_notify = ptr_server->notify_list; + ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + ptr_notify->ison_received = 0; + } + for (i = 0; i < num_messages; i++) + { + irc_server_parse_message (messages[i], NULL, NULL, NULL, NULL, + &arguments); + if (arguments) + { + pos = strchr (arguments, ' '); + if (pos) + { + pos++; + while ((pos[0] == ' ') || (pos[0] == ':')) + { + pos++; + } + if (pos[0]) + { + nicks_recv = weechat_string_split (pos, " ", 0, 0, + &num_nicks_recv); + if (nicks_recv) + { + for (j = 0; j < num_nicks_recv; j++) + { + for (ptr_notify = ptr_server->notify_list; + ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (strcmp (ptr_notify->nick, nicks_recv[j]) == 0) + { + irc_notify_set_is_on_server (ptr_notify, 1); + ptr_notify->ison_received = 1; + } + } + } + weechat_string_free_split (nicks_recv); + } + } + } + free (arguments); + } + } + for (ptr_notify = ptr_server->notify_list; + ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + if (!ptr_notify->ison_received) + { + nick_was_sent = 0; + for (j = 0; j < num_nicks_sent; j++) + { + if (strcmp (nicks_sent[j], ptr_notify->nick) == 0) + { + nick_was_sent = 1; + break; + } + } + if (nick_was_sent) + { + irc_notify_set_is_on_server (ptr_notify, 0); + } + } + + } + weechat_string_free_split (messages); + } + } + else if (strcmp (pattern, "whois") == 0) + { + /* redirection of command "whois" */ + ptr_notify = irc_notify_search (ptr_server, ptr_args); + if (ptr_notify) + { + away_message_updated = 0; + no_such_nick = 0; + messages = weechat_string_split (output, "\n", 0, 0, &num_messages); + if (messages) + { + for (i = 0; i < num_messages; i++) + { + irc_server_parse_message (messages[0], NULL, NULL, + &irc_cmd, NULL, &arguments); + if (irc_cmd && arguments) + { + if (strcmp (irc_cmd, "401") == 0) + { + /* no such nick/channel */ + no_such_nick = 1; + } + else if (strcmp (irc_cmd, "301") == 0) + { + /* away message */ + pos = strchr (arguments, ':'); + if (pos) + { + pos++; + /* nick is away */ + irc_notify_set_away_message (ptr_notify, pos); + away_message_updated = 1; + } + } + } + if (irc_cmd) + free (irc_cmd); + if (arguments) + free (arguments); + } + } + if (!away_message_updated && !no_such_nick) + { + /* nick is back */ + irc_notify_set_away_message (ptr_notify, NULL); + } + } + } + + return WEECHAT_RC_OK; +} + +/* + * irc_notify_timer_ison_cb: timer called to send "ison" command to servers + */ + +int +irc_notify_timer_ison_cb (void *data, int remaining_calls) +{ + char ison_list[1024]; + int total_length, length; + struct t_irc_server *ptr_server; + struct t_irc_notify *ptr_notify, *ptr_next_notify; + + /* make C compiler happy */ + (void) data; + (void) remaining_calls; + + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + if (ptr_server->is_connected && ptr_server->notify_list) + { + ison_list[0] = '\0'; + total_length = 0; + + ptr_notify = ptr_server->notify_list; + while (ptr_notify) + { + ptr_next_notify = ptr_notify->next_notify; + + length = strlen (ptr_notify->nick); + total_length += length + 1; + if (ison_list[0]) + strcat (ison_list, " "); + strcat (ison_list, ptr_notify->nick); + + ptr_notify = ptr_next_notify; + } + if (ison_list[0]) + { + irc_redirect_new (ptr_server, "ison", "notify", 1, + NULL, 0, NULL); + irc_server_sendf (ptr_server, IRC_SERVER_SEND_OUTQ_PRIO_LOW, + NULL, "ISON :%s", ison_list); + } + } + } + + return WEECHAT_RC_OK; +} + +/* + * irc_notify_timer_whois_cb: timer called to send "whois" command to servers + */ + +int +irc_notify_timer_whois_cb (void *data, int remaining_calls) +{ + struct t_irc_server *ptr_server; + struct t_irc_notify *ptr_notify, *ptr_next_notify; + + /* make C compiler happy */ + (void) data; + (void) remaining_calls; + + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { + if (ptr_server->is_connected && ptr_server->notify_list) + { + ptr_notify = ptr_server->notify_list; + while (ptr_notify) + { + ptr_next_notify = ptr_notify->next_notify; + + if (ptr_notify->check_away) + { + /* + * redirect whois, and get only 2 messages: + * 301: away message + * 401: no such nick/channel + */ + irc_redirect_new (ptr_server, "whois", "notify", 1, + ptr_notify->nick, 0, "301,401"); + irc_server_sendf (ptr_server, + IRC_SERVER_SEND_OUTQ_PRIO_LOW, NULL, + "WHOIS :%s", ptr_notify->nick); + } + + ptr_notify = ptr_next_notify; + } + } + } + + return WEECHAT_RC_OK; +} + +/* + * irc_notify_add_to_infolist: add a notify in an infolist + * return 1 if ok, 0 if error + */ + +int +irc_notify_add_to_infolist (struct t_infolist *infolist, + struct t_irc_notify *notify) +{ + struct t_infolist_item *ptr_item; + + if (!infolist || !notify) + return 0; + + ptr_item = weechat_infolist_new_item (infolist); + if (!ptr_item) + return 0; + + if (!weechat_infolist_new_var_pointer (ptr_item, "server", notify->server)) + return 0; + if (!weechat_infolist_new_var_string (ptr_item, "server_name", notify->server->name)) + return 0; + if (!weechat_infolist_new_var_string (ptr_item, "nick", notify->nick)) + return 0; + if (!weechat_infolist_new_var_integer (ptr_item, "check_away", notify->check_away)) + return 0; + if (!weechat_infolist_new_var_integer (ptr_item, "is_on_server", notify->is_on_server)) + return 0; + if (!weechat_infolist_new_var_string (ptr_item, "away_message", notify->away_message)) + return 0; + + return 1; +} + +/* + * irc_notify_print_log: print notify infos in log (usually for crash dump) + */ + +void +irc_notify_print_log (struct t_irc_server *server) +{ + struct t_irc_notify *ptr_notify; + + for (ptr_notify = server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + weechat_log_printf (""); + weechat_log_printf (" => notify (addr:0x%lx):", ptr_notify); + weechat_log_printf (" server. . . . . . . : 0x%lx", ptr_notify->server); + weechat_log_printf (" nick. . . . . . . . : '%s'", ptr_notify->nick); + weechat_log_printf (" check_away. . . . . : %d", ptr_notify->check_away); + weechat_log_printf (" is_on_server. . . . : %d", ptr_notify->is_on_server); + weechat_log_printf (" away_message. . . . : '%s'", ptr_notify->away_message); + weechat_log_printf (" ison_received . . . : %d", ptr_notify->ison_received); + weechat_log_printf (" prev_notify . . . . : 0x%lx", ptr_notify->prev_notify); + weechat_log_printf (" next_notify . . . . : 0x%lx", ptr_notify->next_notify); + } +} + +/* + * irc_notify_hook_timer_ison: hook timer to send "ison" command + */ + +void +irc_notify_hook_timer_ison () +{ + if (irc_notify_timer_ison) + weechat_unhook (irc_notify_timer_ison); + + irc_notify_timer_ison = weechat_hook_timer ( + 60 * 1000 * weechat_config_integer (irc_config_network_notify_check_ison), + 0, 0, &irc_notify_timer_ison_cb, NULL); +} + +/* + * irc_notify_hook_timer_whois: hook timer to send "whois" command + */ + +void +irc_notify_hook_timer_whois () +{ + if (irc_notify_timer_whois) + weechat_unhook (irc_notify_timer_whois); + + irc_notify_timer_whois = weechat_hook_timer ( + 60 * 1000 * weechat_config_integer (irc_config_network_notify_check_whois), + 0, 0, &irc_notify_timer_whois_cb, NULL); +} + +/* + * irc_notify_init: hook timers and hsignals + */ + +void +irc_notify_init () +{ + irc_notify_hook_timer_ison (); + irc_notify_hook_timer_whois (); + + irc_notify_hsignal = weechat_hook_hsignal ("irc_redirection_notify_*", + &irc_notify_hsignal_cb, + NULL); +} + +/* + * irc_notify_end: remove timers and hsignals + */ + +void +irc_notify_end () +{ + if (irc_notify_timer_ison) + weechat_unhook (irc_notify_timer_ison); + if (irc_notify_timer_whois) + weechat_unhook (irc_notify_timer_whois); + if (irc_notify_hsignal) + weechat_unhook (irc_notify_hsignal); +} diff --git a/src/plugins/irc/irc-notify.h b/src/plugins/irc/irc-notify.h new file mode 100644 index 000000000..b069d258d --- /dev/null +++ b/src/plugins/irc/irc-notify.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2010 Sebastien Helleu <flashcode@flashtux.org> + * + * This file is part of WeeChat, the extensible chat client. + * + * WeeChat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * WeeChat is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WeeChat. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __WEECHAT_IRC_NOTIFY_H +#define __WEECHAT_IRC_NOTIFY_H 1 + +struct t_irc_server; + +struct t_irc_notify +{ + struct t_irc_server *server; /* server */ + char *nick; /* nick */ + int check_away; /* check away status (with whois) */ + /* current state of nick */ + int is_on_server; /* 1 if nick is currently on server */ + /* (using answer of ison command) */ + char *away_message; /* current away message, NULL if */ + /* nick is not away (using answer of */ + /* whois command) */ + /* internal stuff */ + int ison_received; /* used when receiving ison answer */ + struct t_irc_notify *prev_notify; /* link to previous notify */ + struct t_irc_notify *next_notify; /* link to next notify */ +}; + +extern int irc_notify_valid (struct t_irc_server *server, + struct t_irc_notify *notify); +extern struct t_irc_notify *irc_notify_search (struct t_irc_server *server, + const char *nick); +extern void irc_notify_set_server_option (struct t_irc_server *server); +extern struct t_irc_notify *irc_notify_new (struct t_irc_server *server, + const char *nick, + int check_away); +extern void irc_notify_new_for_server (struct t_irc_server *server); +extern void irc_notify_new_for_all_servers (); +extern void irc_notify_free (struct t_irc_server *server, + struct t_irc_notify *notify); +extern void irc_notify_free_all (struct t_irc_server *server); +extern void irc_notify_display_list (struct t_irc_server *server); +extern int irc_notify_timer_ison_cb (void *data, int remaining_calls); +extern int irc_notify_timer_whois_cb (void *data, int remaining_calls); +extern int irc_notify_add_to_infolist (struct t_infolist *infolist, + struct t_irc_notify *notify); +extern void irc_notify_print_log (struct t_irc_server *server); +extern void irc_notify_hook_timer_ison (); +extern void irc_notify_hook_timer_whois (); +extern void irc_notify_init (); +extern void irc_notify_end (); + +#endif /* __WEECHAT_IRC_NOTIFY_H */ diff --git a/src/plugins/irc/irc-redirect.h b/src/plugins/irc/irc-redirect.h index 44f802068..3186c9186 100644 --- a/src/plugins/irc/irc-redirect.h +++ b/src/plugins/irc/irc-redirect.h @@ -91,6 +91,13 @@ extern struct t_irc_redirect *irc_redirect_new_with_commands (struct t_irc_serve const char *cmd_stop, const char *cmd_extra, const char *cmd_filter); +extern struct t_irc_redirect *irc_redirect_new (struct t_irc_server *server, + const char *pattern, + const char *signal, + int count, + const char *string, + int timeout, + const char *cmd_filter); extern struct t_irc_redirect *irc_redirect_search_available (struct t_irc_server *server); extern void irc_redirect_init_command (struct t_irc_redirect *redirect, const char *command); diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index de005d823..09fd5de2d 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -50,6 +50,7 @@ #include "irc-config.h" #include "irc-input.h" #include "irc-nick.h" +#include "irc-notify.h" #include "irc-protocol.h" #include "irc-raw.h" #include "irc-redirect.h" @@ -73,6 +74,7 @@ char *irc_server_option_string[IRC_SERVER_NUM_OPTIONS] = "anti_flood_prio_high", "anti_flood_prio_low", "away_check", "away_check_max_nicks", "default_msg_part", "default_msg_quit", + "notify", }; char *irc_server_option_default[IRC_SERVER_NUM_OPTIONS] = @@ -86,6 +88,7 @@ char *irc_server_option_default[IRC_SERVER_NUM_OPTIONS] = "2", "2", "0", "25", "WeeChat %v", "WeeChat %v", + "", }; char *irc_server_prefix_modes_default = "qaohvu"; @@ -650,6 +653,8 @@ irc_server_alloc (const char *name) } new_server->redirects = NULL; new_server->last_redirect = NULL; + new_server->notify_list = NULL; + new_server->last_notify = NULL; new_server->buffer = NULL; new_server->buffer_as_string = NULL; new_server->channels = NULL; @@ -1088,6 +1093,7 @@ irc_server_free_data (struct t_irc_server *server) { irc_server_outqueue_free_all (server, i); } + irc_notify_free_all (server); irc_redirect_free_all (server); if (server->channels) irc_channel_free_all (server); @@ -4480,6 +4486,8 @@ irc_server_print_log () } weechat_log_printf (" redirects. . . . . . : 0x%lx", ptr_server->redirects); weechat_log_printf (" last_redirect. . . . : 0x%lx", ptr_server->last_redirect); + weechat_log_printf (" notify_list. . . . . : 0x%lx", ptr_server->notify_list); + weechat_log_printf (" last_notify. . . . . : 0x%lx", ptr_server->last_notify); weechat_log_printf (" buffer . . . . . . . : 0x%lx", ptr_server->buffer); weechat_log_printf (" buffer_as_string . . : 0x%lx", ptr_server->buffer_as_string); weechat_log_printf (" channels . . . . . . : 0x%lx", ptr_server->channels); @@ -4489,6 +4497,8 @@ irc_server_print_log () irc_redirect_print_log (ptr_server); + irc_notify_print_log (ptr_server); + for (ptr_channel = ptr_server->channels; ptr_channel; ptr_channel = ptr_channel->next_channel) { diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index b8e728d3c..23140ed85 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -64,6 +64,7 @@ enum t_irc_server_option IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS, /* max nicks for away check */ IRC_SERVER_OPTION_DEFAULT_MSG_PART, /* default part message */ IRC_SERVER_OPTION_DEFAULT_MSG_QUIT, /* default quit message */ + IRC_SERVER_OPTION_NOTIFY, /* notify list */ /* number of server options */ IRC_SERVER_NUM_OPTIONS, }; @@ -173,6 +174,8 @@ struct t_irc_server struct t_irc_outqueue *last_outqueue[2]; /* last outgoing message */ struct t_irc_redirect *redirects; /* command redirections */ struct t_irc_redirect *last_redirect; /* last command redirection */ + struct t_irc_notify *notify_list; /* list of notify */ + struct t_irc_notify *last_notify; /* last notify */ struct t_gui_buffer *buffer; /* GUI buffer allocated for server */ char *buffer_as_string; /* used to return buffer info */ struct t_irc_channel *channels; /* opened channels on server */ @@ -234,6 +237,9 @@ extern void irc_server_send_signal (struct t_irc_server *server, const char *signal, const char *command, const char *full_message, const char *tags); +extern void irc_server_parse_message (const char *message, char **nick, + char **host, char **command, + char **channel, char **arguments); extern struct t_hashtable *irc_server_parse_message_to_hashtable (const char *message); extern void irc_server_set_send_default_tags (const char *tags); extern void irc_server_sendf (struct t_irc_server *server, int flags, diff --git a/src/plugins/irc/irc-upgrade.c b/src/plugins/irc/irc-upgrade.c index d4c5d0522..a167960b6 100644 --- a/src/plugins/irc/irc-upgrade.c +++ b/src/plugins/irc/irc-upgrade.c @@ -29,13 +29,14 @@ #include "irc.h" #include "irc-upgrade.h" #include "irc-buffer.h" +#include "irc-channel.h" #include "irc-config.h" #include "irc-input.h" -#include "irc-server.h" -#include "irc-channel.h" #include "irc-nick.h" +#include "irc-notify.h" #include "irc-raw.h" #include "irc-redirect.h" +#include "irc-server.h" struct t_irc_server *irc_upgrade_current_server = NULL; @@ -55,6 +56,7 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file) struct t_irc_nick *ptr_nick; struct t_irc_redirect *ptr_redirect; struct t_irc_redirect_pattern *ptr_redirect_pattern; + struct t_irc_notify *ptr_notify; struct t_irc_raw_message *ptr_raw_message; int rc; @@ -122,7 +124,6 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file) for (ptr_redirect = ptr_server->redirects; ptr_redirect; ptr_redirect = ptr_redirect->next_redirect) { - /* save channel */ infolist = weechat_infolist_new (); if (!infolist) return 0; @@ -138,6 +139,26 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file) if (!rc) return 0; } + + /* save server notify list */ + for (ptr_notify = ptr_server->notify_list; ptr_notify; + ptr_notify = ptr_notify->next_notify) + { + infolist = weechat_infolist_new (); + if (!infolist) + return 0; + if (!irc_notify_add_to_infolist (infolist, ptr_notify)) + { + weechat_infolist_free (infolist); + return 0; + } + rc = weechat_upgrade_write_object (upgrade_file, + IRC_UPGRADE_TYPE_NOTIFY, + infolist); + weechat_infolist_free (infolist); + if (!rc) + return 0; + } } /* save raw messages */ @@ -255,6 +276,7 @@ irc_upgrade_read_cb (void *data, const char *buffer_name, *str, *nick; struct t_irc_nick *ptr_nick; struct t_irc_redirect *ptr_redirect; + struct t_irc_notify *ptr_notify; struct t_gui_buffer *ptr_buffer; /* make C compiler happy */ @@ -558,6 +580,20 @@ irc_upgrade_read_cb (void *data, weechat_infolist_string (infolist, "cmd_stop"), weechat_infolist_string (infolist, "cmd_extra")); break; + case IRC_UPGRADE_TYPE_NOTIFY: + if (irc_upgrade_current_server) + { + ptr_notify = irc_notify_search (irc_upgrade_current_server, + weechat_infolist_string (infolist, "nick")); + if (ptr_notify) + { + ptr_notify->is_on_server = weechat_infolist_integer (infolist, "is_on_server"); + str = weechat_infolist_string (infolist, "away_message"); + if (str) + ptr_notify->away_message = strdup (str); + } + } + break; case IRC_UPGRADE_TYPE_RAW_MESSAGE: irc_raw_message_add_to_list (weechat_infolist_time (infolist, "date"), weechat_infolist_string (infolist, "prefix"), diff --git a/src/plugins/irc/irc-upgrade.h b/src/plugins/irc/irc-upgrade.h index 724fd15c9..175376c2f 100644 --- a/src/plugins/irc/irc-upgrade.h +++ b/src/plugins/irc/irc-upgrade.h @@ -32,6 +32,7 @@ enum t_irc_upgrade_type IRC_UPGRADE_TYPE_RAW_MESSAGE, IRC_UPGRADE_TYPE_REDIRECT_PATTERN, IRC_UPGRADE_TYPE_REDIRECT, + IRC_UPGRADE_TYPE_NOTIFY, }; extern int irc_upgrade_save (); diff --git a/src/plugins/irc/irc.c b/src/plugins/irc/irc.c index 68e3abb3c..df356daf6 100644 --- a/src/plugins/irc/irc.c +++ b/src/plugins/irc/irc.c @@ -29,6 +29,7 @@ #include "irc.h" #include "irc-bar-item.h" #include "irc-buffer.h" +#include "irc-channel.h" #include "irc-color.h" #include "irc-command.h" #include "irc-completion.h" @@ -36,11 +37,11 @@ #include "irc-debug.h" #include "irc-info.h" #include "irc-input.h" -#include "irc-server.h" -#include "irc-channel.h" #include "irc-nick.h" +#include "irc-notify.h" #include "irc-raw.h" #include "irc-redirect.h" +#include "irc-server.h" #include "irc-upgrade.h" @@ -167,6 +168,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) irc_redirect_init (); + irc_notify_init (); + /* hook some signals */ irc_debug_init (); weechat_hook_signal ("quit", &irc_signal_quit_cb, NULL); @@ -269,6 +272,8 @@ weechat_plugin_end (struct t_weechat_plugin *plugin) irc_config_free (); + irc_notify_end (); + irc_redirect_end (); return WEECHAT_RC_OK; |