diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2014-05-25 12:25:58 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2014-05-25 12:47:24 +0200 |
commit | dc0229617ada67fd02815bbc94b245871248b9db (patch) | |
tree | 0af7418d7f3ebf8082408fa2ee9e73f5a572360f /doc/it/weechat_plugin_api.it.asciidoc | |
parent | 76a066c9cca620e1204815f63abbfa8b09f162c6 (diff) | |
download | weechat-dc0229617ada67fd02815bbc94b245871248b9db.zip |
doc: use .asciidoc extension instead of .txt for doc files
Diffstat (limited to 'doc/it/weechat_plugin_api.it.asciidoc')
-rw-r--r-- | doc/it/weechat_plugin_api.it.asciidoc | 15354 |
1 files changed, 15354 insertions, 0 deletions
diff --git a/doc/it/weechat_plugin_api.it.asciidoc b/doc/it/weechat_plugin_api.it.asciidoc new file mode 100644 index 000000000..44a95d283 --- /dev/null +++ b/doc/it/weechat_plugin_api.it.asciidoc @@ -0,0 +1,15354 @@ += Referenze API per Plugin di WeeChat +:author: Sébastien Helleu +:email: flashcode@flashtux.org +:lang: it +:toc: +:toclevels: 4 + + +Questo manuale documenta il client di chat WeeChat, ed è parte +del programma stesso. + +La versione più recente di questo documento si trova qui: +http://weechat.org/doc + + +[[introduction]] +== Introduzione + +WeeChat (Wee Enhanced Environment for Chat) è un client di chat +libero, veloce e leggero, realizzato per molti sistemi operativi. + +Questo manuale documenta le API per i plugin di WeeChat, utilizzate +dai plugin C per interagire con il core di WeeChat. + +[[plugins_in_weechat]] +== Plugin in WeeChat + +Un plugin è un programma C che può richiamare le funzioni di WeeChat +definite in un'interfaccia. + +Questo programma C non richiede i sorgenti di WeeChat per essere compilato +e può essere caricato dinamicamente in WeeChat con il comano `/plugin`. + +Il plugin deve essere una libreria dinamica, per essere caricato dinamicamente +dal del sistema operativo. +In GNU/Linux, il file ha estensione ".so", ".dll" in Windows. + +Il plugin deve includere il file "weechat-plugin.h" (disponibile nel codice +sorgente di WeeChat). +Il file definisce strutture e tipi utilizzati per comunicare con WeeChat. + +[[macros]] +=== Macro + +Il plugin deve utilizzare alcune macro (per definire alcune variabili): + +WEECHAT_PLUGIN_NAME("nome"):: + nome del plugin + +WEECHAT_PLUGIN_DESCRIPTION("descrizione"):: + breve descrizione del plugin + +WEECHAT_PLUGIN_VERSION("1.0"):: + versione del plugin + +WEECHAT_PLUGIN_LICENSE("GPL3"):: + licenza del plugin + +[[main_functions]] +=== Funzioni principali + +Il plugin deve usare due funzioni: + +* weechat_plugin_init +* weechat_plugin_end + +==== weechat_plugin_init + +Questa funzione viene chiamata quando il plugin è caricato. +da WeeChat. + +Prototipo: + +[source,C] +---- +int weechat_plugin_init (struct t_weechat_plugin *plugin, + int argc, char *argv[]); +---- + +Argomenti: + +* 'plugin': puntatore alla struttura del plugin di WeeChat +* 'argc': numero di argomenti per il plugin (fornito dalla riga di comando + dall'utente) +* 'argv': argomenti per il plugin + +Valori restituiti: + +* 'WEECHAT_RC_OK' se l'operazione ha successo (il plugin + verrà caricato) +* 'WEECHAT_RC_ERROR' se c'è un errore (il plugin NON + verrà caricato) + +==== weechat_plugin_end + +Questa funzione viene chiamata quando il plugin viene +scaricato da WeeChat. + +Prototipo: + +[source,C] +---- +int weechat_plugin_end (struct t_weechat_plugin *plugin); +---- + +Argomenti: + +* 'plugin': puntatore alla struttura plugin di WeeChat + +Valori restituiti: + +* 'WEECHAT_RC_OK' se l'operazione ha successo +* 'WEECHAT_RC_ERROR' se c'è un errore + +[[compile_plugin]] +=== Compilazione del plugin + +La compilazione non richiede i sorgenti di WeeChat, è richiesto solo +il file 'weechat-plugin.h'. + +Per compilare un plugin che ha un file "tizio.c" (in GNU/Linux): + +---- +$ gcc -fPIC -Wall -c tizio.c +$ gcc -shared -fPIC -o libtizio.so tizio.o +---- + +[[load_plugin]] +=== Caricamento del plugin + +Copiare il file 'libtizio.so' nella cartella plugin di sistema (ad +esempio '/usr/local/lib/weechat/plugins') oppure nella cartella +plugin dell'utente (ad esempio '/home/xxx/.weechat/plugins'). + +In WeeChat: + +---- +/plugin load tizio +---- + +[[plugin_example]] +=== Plugin di esempio + +Un esempio completo di plugin, che aggiunge un comando '/double': +visualizza due volte gli argomenti nel buffer corrente, oppure esegue un +comando due volte (ok, non sarà molto utile, ma è solo un esempio!): + +[source,C] +---- +#include <stdlib.h> + +#include "weechat-plugin.h" + +WEECHAT_PLUGIN_NAME("double"); +WEECHAT_PLUGIN_DESCRIPTION("Test plugin for WeeChat"); +WEECHAT_PLUGIN_AUTHOR("Sébastien Helleu <flashcode@flashtux.org>"); +WEECHAT_PLUGIN_VERSION("0.1"); +WEECHAT_PLUGIN_LICENSE("GPL3"); + +struct t_weechat_plugin *weechat_plugin = NULL; + + +/* callback per il comando "/double" */ + +int +command_double_cb (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + /* fa felice il compilatore C */ + (void) data; + (void) buffer; + (void) argv; + + if (argc > 1) + { + weechat_command (NULL, argv_eol[1]); + weechat_command (NULL, argv_eol[1]); + } + + return WEECHAT_RC_OK; +} + +int +weechat_plugin_init (struct t_weechat_plugin *plugin, + int argc, char *argv[]) +{ + weechat_plugin = plugin; + + weechat_hook_command ("double", + "Visualizza due volte un messaggio " + "oppure esegue un comando due volte", + "messaggio | comando", + "messaggio: messaggio da visualizzare due volte\n" + "comando: comando da eseguire due volte", + NULL, + &command_double_cb, NULL); + + return WEECHAT_RC_OK; +} + +int +weechat_plugin_end (struct t_weechat_plugin *plugin) +{ + /* fa felice il compilatore C */ + (void) plugin; + + return WEECHAT_RC_OK; +} +---- + +[[plugin_api]] +== Plugin API + +I capitoli seguenti descrivono le funzioni nelle API, organizzate +in categorie. + +Per ogni funzione, viene fornita: + +* descrizione della funzione, +* prototipo C, +* dettaglio degli argomenti, +* valore restituito, +* esempio C, +* esempio nello script Python (la sintassi è simile per gli altri linguaggi di + scripting). + +[[plugins]] +=== Plugin + +Funzioni per ottenere informazioni sui plugin. + +==== weechat_plugin_get_name + +Ottiene il nome del plugin. + +Prototipo: + +[source,C] +---- +const char *weechat_plugin_get_name (struct t_weechat_plugin *plugin); +---- + +Argomenti: + +* 'plugin': puntatore alla struttura plugin di WeeChat (può essere NULL) + +Valore restituito: + +* nome del plugin, "core" per il core di WeeChat (se il puntatore al plugin + è NULL) + +Esempio in C: + +[source,C] +---- +const char *name = weechat_plugin_get_name (plugin); +---- + +Script (Python): + +[source,python] +---- +# prototipo +name = weechat.plugin_get_name(plugin) + +# esempio +plugin = weechat.buffer_get_pointer(weechat.current_buffer(), "plugin") +name = weechat.plugin_get_name(plugin) +---- + +[[strings]] +=== Stringhe + +Molte delle funzioni stringa che seguono sono già disponibili tramite +funzioni standard in C, ma si raccomanda di utilizzare le funzioni in +questa API perché compatibili con UTF-8 e il locale. + +==== weechat_charset_set + +Imposta il nuovo set caratteri del nuovo plugin (il set caratteri predefinito +è 'UTF-8', così se il plugin usa 'UTF-8' non è necessario chiamare questa +funzione). + +Prototipo: + +[source,C] +---- +void weechat_charset_set (const char *charset); +---- + +Argomenti: + +* 'charset': nuovo set caratteri da usare + +Esempio in C: + +[source,C] +---- +weechat_charset_set ("iso-8859-1"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.charset_set(charset) + +# esempio +weechat.charset_set("iso-8859-1") +---- + +==== weechat_iconv_to_internal + +Converte le stringhe per il set caratteri interno di +WeeChat (UTF-8). + +Prototipo: + +[source,C] +---- +char *weechat_iconv_to_internal (const char *charset, const char *string); +---- + +Argomenti: + +* 'charset': set caratteri da convertire +* 'string': stringa da convertire + +Valore restituito: + +* la stringa convertita (deve essere liberata richiamando "free" + dopo l'utilizzo) + +Esempio in C: + +[source,C] +---- +char *str = weechat_iconv_to_internal ("iso-8859-1", "iso string: é à"); +/* ... */ +free (str); +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.iconv_to_internal(charset, string) + +# esempio +str = weechat.iconv_to_internal("iso-8859-1", "iso string: é à") +---- + +==== weechat_iconv_from_internal + +Converte la stringa dal set caratteri interno di WeeChat (UTF-8) +in un'altra. + +Prototipo: + +[source,C] +---- +char *weechat_iconv_from_internal (const char *charset, const char *string); +---- + +Argomenti: + +* 'charset': set caratteri in uscita +* 'string': stringa da convertire + +Valore restituito: + +* la stringa convertita (deve essere liberata richiamando "free" + dopo l'utilizzo + +Esempio in C: + +[source,C] +---- +char *str = weechat_iconv_from_internal ("iso-8859-1", "utf-8 string: é à"); +/* ... */ +free (str); +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.iconv_from_internal(charset, string) + +# esempio +str = weechat.iconv_from_internal("iso-8859-1", "utf-8 string: é à") +---- + +==== weechat_gettext + +Restituisce la stringa tradotta (dipende dalla lingua). + +Prototipo: + +[source,C] +---- +const char *weechat_gettext (const char *string); +---- + +Argomenti: + +* 'string': stringa da tradurre + +Valore restituito: + +* stringa tradotta + +Esempio in C: + +[source,C] +---- +char *str = weechat_gettext ("hello"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.gettext(string) + +# esempio +str = weechat.gettext("hello") +---- + +==== weechat_ngettext + +Restituisce la stringa tradotta, utilizzando il singolare o il plurale, in base +all'argomento 'count' (contatore). + +Prototipo: + +[source,C] +---- +const char *weechat_ngettext (const char *string, const char *plural, + int count); +---- + +Argomenti: + +* 'string': stringa da tradurre, singolare +* 'plural': stringa da tradurre, plurale +* 'count': utilizzato per scegliere tra singolare e plurale (la scelta viene + fatta in base alla lingua locale) + +Valore restituito: + +* stringa tradotta + +Esempio in C: + +[source,C] +---- +char *str = weechat_ngettext ("file", "files", num_files); +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.ngettext(string, plural, count) + +# esempio +num_files = 2 +str = weechat.ngettext("file", "files", num_files) +---- + +==== weechat_strndup + +Restituisce una stringa duplicata, con un massimo di caratteri +impostato su 'chars'. + +Prototipo: + +[source,C] +---- +char *weechat_strndup (const char *string, int length); +---- + +Argomenti: + +* 'string': stringa da duplicare +* 'length': caratteri massimi da duplicare + +Valore restituito: + +* stringa duplicata (deve essere liberata chiamando "free" dopo + l'utilizzo) + +Esempio in C: + +[source,C] +---- +char *str = weechat_strndup ("abcdef", 3); /* result: "abc" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_tolower + +Converte una stringa UTF-8 in minuscolo. + +Prototipo: + +[source,C] +---- +void weechat_string_tolower (char *string); +---- + +Argomenti: + +* 'string': stringa da convertire + +Esempio in C: + +[source,C] +---- +char str[] = "AbCdé"; +weechat_string_tolower (str); /* str ora è: "abcdé" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_toupper + +Converte una stringa UTF-8 in maiuscolo. + +Prototipo: + +[source,C] +---- +void weechat_string_toupper (char *string); +---- + +Argomenti: + +* 'string': stringa da convertire + +Esempio in C: + +[source,C] +---- +char str[] = "AbCdé"; +weechat_string_toupper (str); /* str ora è: "ABCDé" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strcasecmp + +Confronta stringa non sensibile alle maiuscole e alla localizzazione. + +Prototipo: + +[source,C] +---- +int weechat_strcasecmp (const char *string1, const char *string2); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare + +Valore restituito: + +* differenze tra le due stringhe: +** negativa se stringa1 < stringa2 +** zero se stringa1 == stringa1 +** positiva se stringa1 > stringa2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_strcasecmp ("aaa", "CCC"); /* == -2 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strcasecmp_range + +Confronta stringa non sensibile alle maiuscole e alla localizzazione, usando una +serie per il confronto. + +Prototipo: + +[source,C] +---- +int weechat_strcasecmp_range (const char *string1, const char *string2, int range); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare +* 'range': numero di caratteri nel confronto maiuscole/minuscole, ad esempio: +** 26: "A-Z" vengono ridotti ad "a-z" +** 29: "A-Z [ \ ]" vengono ridotti ad "a-z { | }" +** 30: "A-Z [ \ ] ^" vengono ridotti ad "a-z { | } ~" + +[NOTE] +I valori 29 e 30 vengono usati da alcuni protocolli come IRC. + +Valore restituito: + +* differenze tra le due stringhe: +** negativa se stringa1 < stringa2 +** zero se stringa1 == stringa1 +** positiva se stringa1 > stringa2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_strcasecmp ("nick{away}", "NICK[AWAY]"); /* == 0 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strncasecmp + +Confronta stringa indipendente non sensibile alle maiuscole e alla +localizzazione, per un numero 'max' di caratteri. + +Prototipo: + +[source,C] +---- +int weechat_strncasecmp (const char *string1, const char *string2, int max); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare +* 'max': numero massimo di caratteri da comparare + +Valore restituito: + +* differenze tra le due stringhe: +** negativa se string1 < string2 +** zero se string1 == string1 +** positiva se string1 > string2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_strncasecmp ("aabb", "aacc", 2); /* == 0 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strncasecmp_range + +Confronta una stringa non sensibile alle maiuscole e alla localizzazione, per un +numero 'max' di caratteri, usando una serie per il confronto. + +Prototipo: + +[source,C] +---- +int weechat_strncasecmp_range (const char *string1, const char *string2, int max, int range); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare +* 'max': numero massimo di caratteri da comparare +* 'range': numero di caratteri nel confronto maiuscole/minuscole, ad esempio: +** 26: "A-Z" vengono ridotti ad "a-z" +** 29: "A-Z [ \ ]" vengono ridotti ad "a-z { | }" +** 30: "A-Z [ \ ] ^" vengono ridotti ad "a-z { | } ~" + +[NOTE] +I valori 29 e 30 vengono usati da alcuni protocolli come IRC. + +Valore restituito: + +* differenze tra le due stringhe: +** negativa se string1 < string2 +** zero se string1 == string1 +** positiva se string1 > string2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_strncasecmp_range ("nick{away}", "NICK[away]", 6, 29); /* == 0 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strcmp_ignore_chars + +Confronta una stringa localizzata (e opzionalmente non sensibile alle +maiuscole), ignorando alcuni caratteri. + +Prototipo: + +[source,C] +---- +int weechat_strcmp_ignore_chars (const char *string1, const char *string2, + const char *chars_ignored, + int case_sensitive); +---- + +Argomenti: + +* 'string1': prima stringa per il confronto +* 'string2': seconda stringa per il confronto +* 'chars_ignored': stringa con caratteri da ignorare +* 'case_sensitive': 1 per il confronto sensibile alle maiuscole, altrimenti 0 + +Valore restituito: + +* differenza tra le due stringhe: +** negativa se string1 < string2 +** zero se string1 == string2 +** positiva se string1 > string2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_strcmp_ignore_chars ("a-b", "--a-e", "-", 1); /* == -3 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strcasestr + +Cerca una stringa non sensibile alle maiuscole e indipendente dalla +localizzazione. + +Prototipo: + +[source,C] +---- +char *weechat_strcasestr (const char *string, const char *search); +---- + +Argomenti: + +* 'string': stringa +* 'search': stringa da cercare in 'string' + +Valore restituito: + +* puntatore alla stringa trovata, o NULL se non trovata + +Esempio in C: + +[source,C] +---- +char *pos = weechat_strcasestr ("aBcDeF", "de"); /* risultato: puntatore a "DeF" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_strlen_screen + +_WeeChat ≥ 0.4.2._ + +Restituisce il numero di caratteri necessari per visualizzare la stringa +UTF-8 su schermo. +// TRANSLATION MISSING +Non-printable chars have a width of 1 (this is the difference with the function +<<_weechat_utf8_strlen_screen,weechat_utf8_strlen_screen>>). + +Prototipo: + +[source,C] +---- +int weechat_strlen_screen (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* numero di caratteri necessari per visualizzare la stringa UTF-8 +su schermo + +Esempio in C: + +[source,C] +---- +int length_on_screen = weechat_strlen_screen ("é"); /* == 1 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +length = weechat.strlen_screen(string) + +# esempio +length = weechat.strlen_screen("é") # 1 +---- + +==== weechat_string_match + +// TRANSLATION MISSING +_Updated in 1.0._ + +Verifica se una stringa coincide ad una mask. + +Prototipo: + +[source,C] +---- +int weechat_string_match (const char *string, const char *mask, + int case_sensitive); +---- + +Argomenti: + +* 'string': stringa +// TRANSLATION MISSING +* 'mask': mask with wildcards ("*"), each wildcard matches 0 or more chars in + the string +* 'case_sensitive': 1 per il confronto sensibile alle maiuscole, altrimenti 0 + +// TRANSLATION MISSING +[NOTE] +Since version 1.0, wildcards are allowed inside the mask +(not only beginning/end of mask). + +Valore restituito: + +* 1 se la stringa coincide alla mask, altrimenti 0 + +Esempio in C: + +[source,C] +---- +int match1 = weechat_string_match ("abcdef", "abc*", 0); /* == 1 */ +int match2 = weechat_string_match ("abcdef", "*dd*", 0); /* == 0 */ +int match3 = weechat_string_match ("abcdef", "*def", 0); /* == 1 */ +int match4 = weechat_string_match ("abcdef", "*de*", 0); /* == 1 */ +int match5 = weechat_string_match ("abcdef", "*b*d*", 0); /* == 1 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +match = weechat.string_match(string, mask, case_sensitive) + +# esempio +match1 = weechat.string_match("abcdef", "abc*", 0) # 1 +match2 = weechat.string_match("abcdef", "*dd*", 0) # 0 +match3 = weechat.string_match("abcdef", "*def", 0) # 1 +match4 = weechat.string_match("abcdef", "*de*", 0) # 1 +match5 = weechat.string_match("abcdef", "*b*d*", 0) # 1 +---- + +==== weechat_string_expand_home + +_WeeChat ≥ 0.3.3._ + +Sostituisce la `~` iniziale con la stringa con la cartella home. Se la stringa +non inizia con `~`, viene restituita la stessa stringa. + +Prototipo: + +[source,C] +---- +char *weechat_string_expand_home (const char *path); +---- + +Argomenti: + +* 'path': percorso + +Valore restituito: + +* percorso con la `~` iniziale sostituita dalla cartella home (deve essere + liberata chiamando "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str = weechat_string_expand_home ("~/file.txt"); +/* result: "/home/xxx/file.txt" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_remove_quotes + +Rimuove le virgolette all'inizio e alla fine della stringa (ignora gli +spazi se presenti prima delle prime virgolette o dopo le ultime virgolette). + +Prototipo: + +[source,C] +---- +char *weechat_string_remove_quotes (const char *string, const char *quotes); +---- + +Argomenti: + +* 'string': stringa +* 'quotes': stringa con elenco di virgolette + +Valore restituito: + +* stringa senza virgolette all'inizio/fine (deve essere liberata chiamando "free" + dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str = weechat_string_remove_quotes (string, " 'Non posso' ", "'"); +/* risultato: "Non posso" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_strip + +Rimuove i caratteri ad inizio/fine della stringa. + +Prototipo: + +[source,C] +---- +char *weechat_string_strip (const char *string, int left, int right, + const char *chars); +---- + +Argomenti: + +* 'string': stringa +* 'left': rimuove i caratteri a sinistra se diversi da 0 +* 'right': rimuove i caratteri a destra se diversi da 0 +* 'chars': stringa con i caratteri da rimuovere + +Valore restituito: + +* stringa corretta (deve essere liberata chiamando "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str = weechat_string_strip (".abc -", 0, 1, "- ."); /* risultato: ".abc" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_convert_escaped_chars + +_WeeChat ≥ 1.0._ + +// TRANSLATION MISSING +Convert escaped chars to their value: + +* `\"`: double quote +* `\\`: backslash +* `\a`: alert (BEL) +* `\b`: backspace +* `\e`: escape +* `\f`: form feed +* `\n`: new line +* `\r`: carriage return +* `\t`: horizontal tab +* `\v`: vertical tab +* `\0ooo`: char as octal value (ooo is 0 to 3 digits) +* `\xhh`: char as hexadecimal value (hh is 1 to 2 digits) +* `\uhhhh`: unicode char as hexadecimal value (hhhh is 1 to 4 digits) +* `\Uhhhhhhhh`: unicode char as hexadecimal value (hhhhhhhh is 1 to 8 digits) + +Prototipo: + +[source,C] +---- +char *weechat_string_convert_escaped_chars (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +// TRANSLATION MISSING +* string with escaped chars replaced by their value (deve essere liberata + chiamando "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str = weechat_string_convert_escaped_chars ("snowman: \\u2603"); +/* str == "snowman: ☃" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_mask_to_regex + +Restituisce una espressione regolare con una mask, dove l'unico carattere +speciale è "`*`". Tutti gli altri caratteri speciali per le espressioni regolari +non vengono riconosciuti. + +Prototipo: + +[source,C] +---- +char *weechat_string_mask_to_regex (const char *mask); +---- + +Argomenti: + +* 'mask': mask + +Valore restituito: + +* espressione regolare, come stringa (deve essere liberata chiamando "free" + dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str_regex = weechat_string_mask_to_regex ("test*mask"); +/* result: "test.*mask" */ +/* ... */ +free (str_regex); +---- + +Script (Python): + +[source,python] +---- +# prototipo +regex = weechat.string_mask_to_regex(mask) + +# esempio +regex = weechat.string_mask_to_regex("test*mask") # "test.*mask" +---- + +==== weechat_string_regex_flags + +_WeeChat ≥ 0.3.7._ + +Restituisce sia il puntatore sulla stringa dopo le flag che la mask con le flag +per compilare l'espressione regolare. + +Prototipo: + +[source,C] +---- +const char *weechat_string_regex_flags (const char *regex, int default_flags, int *flags) +---- + +Argomenti: + +// TRANSLATION MISSING +* 'regex': POSIX extended regular expression +* 'default_flags': combinazione dei seguenti valori (consultare `man regcomp`): +** REG_EXTENDED +** REG_ICASE +** REG_NEWLINE +** REG_NOSUB +// TRANSLATION MISSING +* 'flags': pointer value is set with flags used in regular expression (default + flags + flags set in regular expression) + +// TRANSLATION MISSING +Flags must be at beginning of regular expression. Format is: +"(?eins-eins)string". + +// TRANSLATION MISSING +Allowed flags are: + +// TRANSLATION MISSING +* 'e': POSIX extended regular expression ('REG_EXTENDED') +* 'i': case insensitive ('REG_ICASE') +* 'n': match-any-character operators don't match a newline ('REG_NEWLINE') +* 's': support for substring addressing of matches is not required ('REG_NOSUB') + +Valore restituito: + +// TRANSLATION MISSING +* pointer in 'regex', after flags + +Esempio in C: + +[source,C] +---- +const char *regex = "(?i)test"; +int flags; +const char *ptr_regex = weechat_string_regex_flags (regex, REG_EXTENDED, &flags); +/* ptr_regex == "test", flags == REG_EXTENDED | REG_ICASE */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_regcomp + +_WeeChat ≥ 0.3.7._ + +// TRANSLATION MISSING +Compile a POSIX extended regular expression using optional flags at beginning +of string (for format of flags, see +<<_weechat_string_regex_flags,weechat_string_regex_flags>>). + +Prototipo: + +[source,C] +---- +int weechat_string_regcomp (void *preg, const char *regex, int default_flags) +---- + +Argomenti: + +// TRANSLATION MISSING +* 'preg': pointer to 'regex_t' structure +* 'regex': POSIX extended regular expression +* 'default_flags': combination of following values (see `man regcomp`): +** REG_EXTENDED +** REG_ICASE +** REG_NEWLINE +** REG_NOSUB + +Valore restituito: + +// TRANSLATION MISSING +* same return code as function `regcomp` (0 if ok, other value for error, + see `man regcomp`) + +Esempio in C: + +[source,C] +---- +regex_t my_regex; +if (weechat_string_regcomp (&my_regex, "(?i)test", REG_EXTENDED) != 0) +{ + /* error */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_has_highlight + +Controlla se una stringa ha uno o più eventi, usando la lista di parole per +gli eventi. + +Prototipo: + +[source,C] +---- +int weechat_string_has_highlight (const char *string, + const char highlight_words); +---- + +Argomenti: + +* 'string': stringa +* 'highlight_words': lista di parole per gli eventi, separate da virgole + +Valore restituito: + +* 1 se la stringa ha uno o più eventi, altrimenti 0 + +Esempio in C: + +[source,C] +---- +int hl = weechat_string_has_highlight ("my test string", "test,word2"); /* == 1 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +highlight = weechat.string_has_highlight(string, highlight_words) + +# esempio +highlight = weechat.string_has_highlight("my test string", "test,word2") # 1 +---- + +==== weechat_string_has_highlight_regex + +_WeeChat ≥ 0.3.4._ + +// TRANSLATION MISSING +Check if a string has one or more highlights, using a POSIX extended regular +expression. + +For at least one match of regular expression on string, it must be surrounded +by delimiters (chars different from: alphanumeric, "-", "_" and "|"). + +Prototipo: + +[source,C] +---- +int weechat_string_has_highlight_regex (const char *string, const char *regex); +---- + +Argomenti: + +* 'string': stringa +// TRANSLATION MISSING +* 'regex': POSIX extended regular expression + +Valore restituito: + +* 1 se la stringa ha uno o più eventi, altrimenti 0 + +Esempio in C: + +[source,C] +---- +int hl = weechat_string_has_highlight_regex ("my test string", "test|word2"); /* == 1 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +highlight = weechat.string_has_highlight_regex(string, regex) + +# esempio +highlight = weechat.string_has_highlight_regex("my test string", "test|word2") # 1 +---- + +==== weechat_string_replace + +Sostituisce tutte le ricorrenze di una stringa con un'altra. + +Prototipo: + +[source,C] +---- +char *weechat_string_replace (const char *string, const char *search, + const char *replace); +---- + +Argomenti: + +* 'string': stringa +* 'search': stringa da sostituire +* 'replace': sostituzione per la stringa 'search' + +Valore restituito: + +* la stringa dopo 'search' sostituita da 'replace' (deve essere liberata + chiamando "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *str = weechat_string_replace ("test", "s", "x"); /* result: "text" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_replace_regex + +_WeeChat ≥ 1.0._ + +// TRANSLATION MISSING +Replace text in a string using a regular expression, replacement text and +optional callback. + +Prototipo: + +[source,C] +---- +char *weechat_string_replace_regex (const char *string, void *regex, + const char *replace, const char reference_char, + char *(*callback)(void *data, const char *text), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'string': string +* 'regex': pointer to a regular expression ('regex_t' structure) compiled with + WeeChat function <<_weechat_string_regcomp,weechat_string_regcomp>> or regcomp + (see `man regcomp`) +* 'replace': replacement text, where following references are allowed: +** `$0` to `$99`: match 0 to 99 in regular expression (0 is the whole match, + 1 to 99 are groups captured between parentheses) +** `$+`: the last match (with highest number) +** `$.*N`: match `N` (can be `+` or `0` to `99`), with all chars replaced by `*` + (the `*` char can be any char between space (32) and `~` (126)) +* 'reference_char': the char used for reference to match (commonly '$') +* 'callback': an optional callback called for each reference in 'replace' + (except for matches replaced by a char); the callback must return: +** newly allocated string: it is used as replacement text (it is freed after + use) +** NULL: the text received in callback is used as replacement text (without + changes) +* 'callback_data': pointer given to callback when it is called + +Valore restituito: + +// TRANSLATION MISSING +* string with text replaced, NULL if problem (must be freed by calling "free" + after use) + +Esempio in C: + +[source,C] +---- +regex_t my_regex; +char *string; +if (weechat_string_regcomp (&my_regex, "([0-9]{4})-([0-9]{2})-([0-9]{2})", + REG_EXTENDED) == 0) +{ + string = weechat_string_replace_regex ("date: 2014-02-14", &my_regex, + "$3/$2/$1", '$', NULL, NULL); + /* string == "date: 14/02/2014" */ + if (string) + free (string); + regfree (&my_regex); +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_split + +Divide una stringa in base a uno o più delimitatori. + +Prototipo: + +[source,C] +---- +char **weechat_string_split (const char *string, const char *separators, + int keep_eol, int num_items_max, + int *num_items); +---- + +Argomenti: + +* 'string': stringa da dividere +* 'separators': delimitatori usati per dividere +* 'keep_eol': +** 0: ogni stringa conterrà una parola +** 1: ogni stringa conterrà tutte le stringhe fino a fine riga + (consultare il seguente esempio) +** 2: come il punto 1, ma non rimuove i delimitatori alla fine della stringa + prima della divisione _(WeeChat ≥ 0.3.6)_ +* 'num_items_max': numero massimo di elementi creati (0 = nessun limite) +* 'num_items': puntatore ad int che conterrà il numero di elementi creati + +Valore restituito: + +* array di stringhe, NULL se si verifica un problema (deve essere liberata chiamando + <<_weechat_string_free_split,weechat_string_free_split>> dopo l'uso) + +Esempi: + +[source,C] +---- +char **argv; +int argc; +argv = weechat_string_split ("abc de fghi", " ", 0, 0, &argc); +/* result: argv[0] == "abc" + argv[1] == "de" + argv[2] == "fghi" + argv[3] == NULL + argc == 3 +*/ +weechat_string_free_split (argv); + +argv = weechat_string_split ("abc de fghi", " ", 1, 0, &argc); +/* result: argv[0] == "abc de fghi" + argv[1] == "de fghi" + argv[2] == "fghi" + argv[3] == NULL + argc == 3 +*/ +weechat_string_free_split (argv); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_split_shell + +_WeeChat ≥ 1.0._ + +// TRANSLATION MISSING +Split a string like the shell does for a command with arguments. + +// TRANSLATION MISSING +This function is a C conversion of Python class "shlex" (file: Lib/shlex.py in +Python repository), see: http://docs.python.org/3/library/shlex.html. + +Prototipo: + +[source,C] +---- +char **weechat_string_split_shell (const char *string, int *num_items); +---- + +Argomenti: + +* 'string': stringa da dividere +* 'num_items': puntatore ad int che conterrà il numero di elementi creati + +Valore restituito: + +* array di stringhe, NULL se si verifica un problema (deve essere liberata chiamando + <<_weechat_string_free_split,weechat_string_free_split>> dopo l'uso) + +Esempio in C: + +[source,C] +---- +char **argv; +int argc; +argv = weechat_string_split_shell ("test 'first arg' \"second arg\"", &argc); +/* result: argv[0] == "test" + argv[1] == "first arg" + argv[2] == "second arg" + argv[3] == NULL + argc == 3 +*/ +weechat_string_free_split (argv); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_free_split + +Libera la memoria usata per la divisione di una stringa. + +Prototipo: + +[source,C] +---- +void weechat_string_free_split (char **split_string); +---- + +Argomenti: + +* 'split_string': stringa divisa dalla funzione + <<_weechat_string_split,weechat_string_split>> + +Esempio in C: + +[source,C] +---- +char *argv; +int argc; +argv = weechat_string_split (string, " ", 0, 0, &argc); +/* ... */ +weechat_string_free_split (argv); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_build_with_split_string + +Compila una stringa con una stringa divisa. + +Prototipo: + +[source,C] +---- +char *weechat_string_build_with_split_string (char **split_string, + const char *separator); +---- + +Argomenti: + +* 'split_string': stringa divisa dalla funzione + <<_weechat_string_split,weechat_string_split>> +* 'separator': stringa usata per separare le stringhe + +Valore restituito: + +* stringa compilata con la stringa divisa (deve essere liberata chiamando + "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char **argv; +int argc; +argv = weechat_string_split ("abc def ghi", " ", 0, 0, &argc); +char *str = weechat_string_build_with_split_string (argv, ";"); +/* str == "abc;def;ghi" */ +/* ... */ +free (str); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_split_command + +Divide una lista di comandi separata da 'separator' (che può essere +omesso aggiungendo "\" nella stringa). + +Prototipo: + +[source,C] +---- +char **weechat_string_split_command (const char *command, char separator); +---- + +Argomenti: + +* 'command': comando da dividere +* 'separator': separatore + +Valore restituito: + +* array di stringhe, NULL in caso di problemi (deve essere liberata chiamando + <<_weechat_free_split_command,weechat_free_split_command>> dopo l'uso) + +Esempio in C: + +[source,C] +---- +char **argv = weechat_string_split_command ("/command1 arg;/command2", ';'); +/* result: argv[0] == "/command1 arg" + argv[1] == "/command2" +*/ +weechat_free_split_command (argv); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_free_split_command + +Libera la memoria utilizzata dalla divisione di un comando. + +Prototipo: + +[source,C] +---- +void weechat_string_free_split_command (char **split_command); +---- + +Argomenti: + +* 'split_command': comando diviso da + <<_weechat_string_split_command,weechat_string_split_command>> + +Esempio in C: + +[source,C] +---- +char **argv = weechat_string_split_command ("/command1 arg;/command2", ';'); +/* ... */ +weechat_free_split_command (argv); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_format_size + +Compila una stringa con un file di dimensione fissa ed una unità +tradotta nella lingua locale. + +Prototipo: + +[source,C] +---- +char *weechat_string_format_size (unsigned long long size); +---- + +Argomenti: + +* 'size': dimensione (in byte) + +Valore restituito: + +* stringa formattata (deve essere liberata chiamando "free" dopo l'uso) + +Esempi in C: + +[source,C] +---- +/* esempi in lingua inglese */ + +char *str = weechat_string_format_size (0); /* str == "0 byte" */ +/* ... */ +free (str); + +char *str = weechat_string_format_size (200); /* str == "200 bytes" */ +/* ... */ +free (str); + +char *str = weechat_string_format_size (1536); /* str == "1.5 KB" */ +/* ... */ +free (str); + +char *str = weechat_string_format_size (2097152); /* str == "2 MB" */ +/* ... */ +free (str); +---- + +==== weechat_string_remove_color + +Rimuove i colori di WeeChat da una stringa. + +Prototipo: + +[source,C] +---- +char *weechat_string_remove_color (const char *string, + const char *replacement); +---- + +Argomenti: + +* 'string': stringa +* 'replacement': se non NULL e non vuota, i codici colore di WeeChat sono + sostituiti dal primo carattere di questa stringa, altrimenti i codici colori di + WeeChat ed i caratteri seguenti (se correlate al colore) sono rimossi dalla + stringa + +Valore restituito: + +* stringa senza un colore (deve essere liberata chiamando "free" dopo l'uso) + +Esempi: + +[source,C] +---- +/* rimuove i codici colore */ +char *str = weechat_string_remove_color (my_string1, NULL); +/* ... */ +free (str); + +/* sostituisce i codici colore con "?" */ +char *str = weechat_string_remove_color (my_string2, "?"); +/* ... */ +free (str); +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.string_remove_color(string, replacement) + +# esempio +str = weechat.string_remove_color(my_string, "?") +---- + +==== weechat_string_encode_base64 + +_WeeChat ≥ 0.3.2._ + +Codifica una stringa in base64. + +Prototipo: + +[source,C] +---- +void weechat_string_encode_base64 (const char *from, int length, char *to); +---- + +Argomenti: + +* 'from': stringa da codificare +* 'length': lunghezza della stringa da codificare (ad esempio `strlen(from)`) +* 'to': puntatore alla stringa per memorizzare il risultato (deve essere + sufficientemente lunga, il risultato è più lungo della stringa iniziale) + +Esempio in C: + +[source,C] +---- +char *string = "abcdefgh", result[128]; +weechat_string_encode_base64 (string, strlen (string), result); +/* result == "YWJjZGVmZ2g=" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_decode_base64 + +_WeeChat ≥ 0.3.2._ + +Decodifica una stringa in base64. + +Prototipo: + +[source,C] +---- +int weechat_string_decode_base64 (const char *from, char *to); +---- + +Argomenti: + +* 'from': stringa da decodificare +* 'to': puntatore alla stringa per memorizzare il risultato (deve essere + sufficientemente lunga, il risultato è più lungo della stringa iniziale) + +Valore restituito: + +* lunghezza della stringa memorizzata in *to (lo '\0' finale non conta) + +Esempio in C: + +[source,C] +---- +char *string = "YWJjZGVmZ2g=", result[128]; +int length; +length = weechat_string_decode_base64 (string, result); +/* length == 8, result == "abcdefgh" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_string_is_command_char + +_WeeChat ≥ 0.3.2._ + +Verifica che il primo carattere della stringa sia un carattere comando +(il comando carattere predefinito è '/'). + +Prototipo: + +[source,C] +---- +int weechat_string_is_command_char (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* 1 se il primo carattere della stringa è un comando carattere, + altrimenti 0 + +Esempi in C: + +[source,C] +---- +int command_char1 = weechat_string_is_command_char ("/test"); /* == 1 */ +int command_char2 = weechat_string_is_command_char ("test"); /* == 0 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +is_cmdchar = weechat.string_is_command_char(string) + +# esempi +command_char1 = weechat.string_is_command_char("/test") # == 1 +command_char2 = weechat.string_is_command_char("test") # == 0 +---- + +==== weechat_string_input_for_buffer + +_WeeChat ≥ 0.3.2._ + +Restituisce il puntatore al testo in input per il buffer (puntatore all'interno +dell'argomento "string"), oppure NULL se è un comando. + +Prototipo: + +[source,C] +---- +const char *weechat_string_input_for_buffer (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* puntatore all'interno di "string", oppure NULL + +Esempi in C: + +[source,C] +---- +const char *str1 = weechat_string_input_for_buffer ("test"); /* "test" */ +const char *str2 = weechat_string_input_for_buffer ("/test"); /* NULL */ +const char *str3 = weechat_string_input_for_buffer ("//test"); /* "/test" */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.string_input_for_buffer(string) + +# esempi +str1 = weechat.string_input_for_buffer("test") # "test" +str2 = weechat.string_input_for_buffer("/test") # "" +str3 = weechat.string_input_for_buffer("//test") # "/test" +---- + +==== weechat_string_eval_expression + +// TRANSLATION MISSING +_WeeChat ≥ 0.4.0, updated in 0.4.2._ + +// TRANSLATION MISSING +Evaluate an expression and return result as a string. +Special variables with format `${variable}` are expanded (see command `/eval` in +'WeeChat User's guide'). + +// TRANSLATION MISSING +[NOTE] +Since version 1.0, nested variables are supported, for example: +`${color:${variable}}`. + +Prototipo: + +[source,C] +---- +char *weechat_string_eval_expression (const char *expr, + struct t_hashtable *pointers, + struct t_hashtable *extra_vars, + struct t_hashtable *options); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'expr': the expression to evaluate +* 'pointers': hashtable with pointers (keys must be string, values must be + pointer); pointers "window" and "buffer" are automatically added if they are + not in hashtable (with pointer to current window/buffer) (can be NULL) +* 'extra_vars': extra variables that will be expanded (can be NULL) +* 'options': a hashtable with some options (keys and values must be string) + (can be NULL): +** 'type': default behavior is just to replace values in expression, other + types can be selected: +*** 'condition': the expression is evaluated as a condition: operators and + parentheses are used, result is a boolean ("0" or "1") +** 'prefix': prefix before variables to replace (default: "${") +** 'suffix': suffix after variables to replace (default: "}") + +Valore restituito: + +// TRANSLATION MISSING +* evaluated expression (must be freed by calling "free" after use), or NULL + if problem (invalid expression or not enough memory) + +Esempi in C: + +[source,C] +---- +struct t_hashtable *options = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options) + weechat_hashtable_set (options, "type", "condition"); +char *str1 = weechat_string_eval_expression ("${buffer.full_name}", NULL, NULL, NULL); /* "core.weechat" */ +char *str2 = weechat_string_eval_expression ("${window.win_width} > 100", NULL, NULL, options); /* "1" */ +char *str3 = weechat_string_eval_expression ("abc =~ def", NULL, NULL, options); /* "0" */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +str = weechat.string_eval_expression(expr, pointers, extra_vars, options) + +# esempi +str1 = weechat.string_eval_expression("${buffer.full_name}", {}, {}, {}) # "core.weechat" +str2 = weechat.string_eval_expression("${window.win_width} > 100", {}, {}, {"type": "condition"}) # "1" +str3 = weechat.string_eval_expression("abc =~ def", {}, {}, {"type": "condition"}) # "0" +---- + +[[utf-8]] +=== UTF-8 + +Alcune funzioni stringa UTF-8. + +==== weechat_utf8_has_8bits + +Verifica che una stringa abbia caratteri a 8-bit. + +Prototipo: + +[source,C] +---- +int weechat_utf8_has_8bits (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* 1 se la stringa ha caratteri a 8-bit, 0 se solo a 7-bit + +Esempio in C: + +[source,C] +---- +if (weechat_utf8_has_8bits (string)) +{ + /* ... */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_is_valid + +Verifica che una stringa sia valida in UTF-8. + +Prototipo: + +[source,C] +---- +int weechat_utf8_is_valid (const char *string, char **error); +---- + +Argomenti: + +* 'string': stringa +* 'error': se non NULL, '*error*' è impostato con il puntatore al primo + carattere UTF-8 non valido nella stringa, se esiste + +Valore restituito: + +* 1 se la stringa UTF-8 è valida, altrimenti 0 + +Esempio in C: + +[source,C] +---- +char *error; +if (weechat_utf8_is_valid (string, &error)) +{ + /* ... */ +} +else +{ + /* "error" punta al primo carattere non valido */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_normalize + +Normalizza le stringhe UTF-8: rimuove i caratteri non UTF-8 e li sostituisce con +un carattere. + +Prototipo: + +[source,C] +---- +void weechat_utf8_normalize (char *string, char replacement); +---- + +Argomenti: + +* 'string': stringa +* 'replacement': carattere sotitutivo per i caratteri non validi + +Esempio in C: + +[source,C] +---- +weechat_utf8_normalize (string, '?'); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_prev_char + +Restituisce il puntatore al carattere UTF-8 precedente in una stringa. + +Prototipo: + +[source,C] +---- +char *weechat_utf8_prev_char (const char *string_start, const char *string); +---- + +Argomenti: + +* 'string_start': inizio della stringa (la funzione non restituirà un carattere prima + di questo puntatore) +* 'string': puntatore alla stringa (deve essere ≥ 'string_start') + +Valore restituito: + +* puntatore al precedente carattere UTF-8, NULL se non trovata (raggiunta + l'inizio della stringa) + +Esempio in C: + +[source,C] +---- +char *prev_char = weechat_utf8_prev_char (string, ptr_in_string); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_next_char + +Restituisce il puntatore al successivo carattere UTF-8 in una stringa. + +Prototipo: + +[source,C] +---- +char *weechat_utf8_next_char (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* puntatore al carattere UTF-8 successivo, NULL se non trovato + (raggiunta la fine della stringa) + +Esempio in C: + +[source,C] +---- +char *next_char = weechat_utf8_next_char (string); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_char_int + +Restituisce un carattere UTF-8 come intero. + +Prototipo: + +[source,C] +---- +int weechat_utf8_char_int (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* carattere UTF-8 come intero + +Esempio in C: + +[source,C] +---- +int char_int = weechat_utf8_char_int ("être"); /* "ê" come intero */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_char_size + +Restituisce la dimensione di un carattere UTF-8 (in byte). + +Prototipo: + +[source,C] +---- +int weechat_utf8_char_size (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* dimensione carattere UTF-8 (in byte) + +Esempio in C: + +[source,C] +---- +int char_size = weechat_utf8_char_size ("être"); /* == 2 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_strlen + +Restituisce la lunghezza della stringa UTF-8 (nei caratteri UTF-8). + +Prototipo: + +[source,C] +---- +int weechat_utf8_strlen (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* lunghezza della stringa UTF-8 (numero di caratteri UTF-8) + +Esempio in C: + +[source,C] +---- +int length = weechat_utf8_strlen ("chêne"); /* == 5 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_strnlen + +Restituisce la lunghezza della stringa UTF-8 (in caratteri UTF-8), per +un massimo di 'bytes' nella stringa. + +Prototipo: + +[source,C] +---- +int weechat_utf8_strnlen (const char *string, int bytes); +---- + +Argomenti: + +* 'string': stringa +* 'bytes': massimo di byte + +Valore restituito: + +* lunghezza della stringa UTF-8 (numero di caratteri UTF-8) + +Esempio in C: + +[source,C] +---- +int length = weechat_utf8_strnlen ("chêne", 4); /* == 3 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_strlen_screen + +Restituisce il numero di caratteri necessari per visualizzare la stringa +UTF-8 su schermo. + +Prototipo: + +[source,C] +---- +int weechat_utf8_strlen_screen (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* numero di caratteri necessari per visualizzare la stringa UTF-8 +su schermo + +Esempio in C: + +[source,C] +---- +int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_charcmp + +Confronta due caratteri UTF-8. + +Prototipo: + +[source,C] +---- +int weechat_utf8_charcmp (const char *string1, const char *string2); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare + +Valore restituito: + +* differenza tra i primi caratteri di ogni stringa: +** negativa se char1 < char2 +** zero se char1 == char2 +** positivao se char1 > char2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_charcasecmp + +Confronta due caratteri UTF-8, ignorando la sensibilità alle maiuscole. + +Prototipo: + +[source,C] +---- +int weechat_utf8_charcasecmp (const char *string1, const char *string2); +---- + +Argomenti: + +* 'string1': prima stringa da comparare +* 'string2': seconda stringa da comparare + +Valore restituito: + +* differenza tra i primi caratteri di ogni stringa: +** negativa se char1 < char2 +** zero se char1 == char2 +** positivao se char1 > char2 + +Esempio in C: + +[source,C] +---- +int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_char_size_screen + +Restituisce il numero di caratteri necessari per visualizzare il +carattere UTF-8 sullo schermo. + +Prototipo: + +[source,C] +---- +int weechat_utf8_char_size_screen (const char *string); +---- + +Argomenti: + +* 'string': stringa + +Valore restituito: + +* numero di caratteri necessario per visualizzare il carattere + UTF-8 su schermo + +Esempio in C: + +[source,C] +---- +int length_on_screen = weechat_utf8_char_size_screen ("é"); /* == 1 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_add_offset + +Si sposta in avanti di N caratteri in una stringa UTF-8. + +Prototipo: + +[source,C] +---- +char *weechat_utf8_add_offset (const char *string, int offset); +---- + +Argomenti: + +* 'string': stringa +* 'offset': numero di caratteri + +Valore restituito: + +* puntatore alla stringa, N caratteri dopo (NULL se non raggiungibile) + +Esempio in C: + +[source,C] +---- +char *str = "chêne"; +char *str2 = weechat_utf8_add_offset (str, 3); /* points to "ne" */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_real_pos + +Restituisce la posizione reale nella stringa UTF-8. + +Prototipo: + +[source,C] +---- +int weechat_utf8_real_pos (const char *string, int pos); +---- + +Argomenti: + +* 'string': stringa +* 'pos': posizione (numero di caratteri) + +Valore restituito: + +* pozisione reale (in byte) + +Esempio in C: + +[source,C] +---- +int pos = weechat_utf8_real_pos ("chêne", 3); /* == 4 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_pos + +Restituisce la posizione nella stringa UTF-8. + +Prototipo: + +[source,C] +---- +int weechat_utf8_pos (const char *string, int real_pos); +---- + +Argomenti: + +* 'string': stringa +* 'real_pos': posizione (byte) + +Valore restituito: + +* posizione (numero di caratteri) + +Esempio in C: + +[source,C] +---- +int pos = weechat_utf8_pos ("chêne", 4); /* == 3 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_utf8_strndup + +Restituisce la stringa duplicata, di lunghezza massima 'lenght'. + +Prototipo: + +[source,C] +---- +char *weechat_utf8_strndup (const char *string, int length); +---- + +Argomenti: + +* 'string': stringa +* 'length': caratteri massimi da duplicare + +Valore restituito: + +* stringa duplicata (deve essere liberata chiamando "free" dopo l'uso) + +Esempio in C: + +[source,C] +---- +char *string = weechat_utf8_strndup ("chêne", 3); /* restituisce "chê" */ +/* ... */ +free (string); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +[[directories]] +=== Cartelle + +Alcune funzioni legate alle cartelle. + +==== weechat_mkdir_home + +Crea una cartella nella home di WeeChat. + +Prototipo: + +[source,C] +---- +int weechat_mkdir_home (char *directory, int mode); +---- + +Argomenti: + +* 'directory': nome della cartella da creare +* 'mode': modalità per la cartella + +Valore restituito: + +* 1 se la cartella è stata creata con successo, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +if (!weechat_mkdir_home ("temp", 0755)) +{ + /* errore */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.mkdir_home(directory, mode) + +# esempio +weechat.mkdir_home("temp", 0755) +---- + +==== weechat_mkdir + +Crea una cartella. + +Prototipo: + +[source,C] +---- +int weechat_mkdir (char *directory, int mode); +---- + +Argomenti: + +* 'directory': nome della cartella da creare +* 'mode': modalità per la cartella + +Valore restituito: + +* 1 se la cartella è stata creata con successo, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +if (!weechat_mkdir ("/tmp/mydir", 0755)) +{ + /* errore */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.mkdir(directory, mode) + +# esempio +weechat.mkdir("/tmp/mydir", 0755) +---- + +==== weechat_mkdir_parents + +Crea una cartella e le cartelle genitore se necessario. + +Prototipo: + +[source,C] +---- +int weechat_mkdir_parents (char *directory, int mode); +---- + +Argomenti: + +* 'directory': nome della cartella da creare +* 'mode': modalità per la cartella + +Valore restituito: + +* 1 se la cartella è stata creata con successo, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +if (!weechat_mkdir_parents ("/tmp/my/dir", 0755)) +{ + /* errore */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.mkdir_parents(directory, mode) + +# esempio +weechat.mkdir_parents("/tmp/my/dir", 0755) +---- + +==== weechat_exec_on_files + +Cerca i file in una cartella ed esegue una callback su ogni file. + +Prototipo: + +[source,C] +---- +void weechat_exec_on_files (const char *directory, + int hidden_files, + void *data, + void (*callback)(void *data, + const char *filename)); +---- + +Argomenti: + +* 'directory': cartella in cui cercare i file +* 'hidden_files': 1 per includere i file nascosti, altrimenti 0 +* 'data': puntatore fornito alla callback quando chiamata da WeeChat +* 'callback': funzione chiamata per ogni file trovato, argomenti: +** 'void *data': puntatore +** 'const char *filename': nome file trovato + +Esempio in C: + +[source,C] +---- +void callback (void *data, const char *filename) +{ + /* ... */ +} +... +weechat_exec_on_files ("/tmp", 0, NULL, &callback); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_file_get_content + +_WeeChat ≥ 0.3.1._ + +Ottiene il contenuto del file di testo in una stringa. + +Prototipo: + +[source,C] +---- +char *weechat_file_get_content (const char *filename); +---- + +Argomenti: + +* 'filename': percorso e nome file + +Valore restituito: + +* contenuto del file come stringa (deve essere liberata chiamando "free dopo + l'uso) + +Esempio in C: + +[source,C] +---- +char *content; + +content = weechat_file_get_content ("/tmp/test.txt"); +/* ... */ +free (content); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +[[util]] +=== Utilità + +Alcune funzioni utili. + +==== weechat_util_timeval_cmp + +Confronta due strutture "timeval". + +Prototipo: + +[source,C] +---- +int weechat_util_timeval_cmp (struct timeval *tv1, struct timeval *tv2); +---- + +Argomenti: + +* 'tv1': prima struttura "timeval" +* 'tv2': seconda struttura "timeval" + +Valore restituito: + +* -1 se tv1 < tv2 +* zero se tv1 == tv2 +* +1 se tv1 > tv2 + +Esempio in C: + +[source,C] +---- +if (weechat_util_timeval_cmp (&tv1, &tv2) > 0) +{ + /* tv1 > tv2 */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_util_timeval_diff + +Restituisce la differenza (in millisecondi) tra due strutture "timeval". + +Prototipo: + +[source,C] +---- +long weechat_util_timeval_diff (struct timeval *tv1, struct timeval *tv2); +---- + +Argomenti: + +* 'tv1': prima struttura "timeval" +* 'tv2': seconda struttura "timeval" + +Valore restituito: + +* differenza in millisecondi + +Esempio in C: + +[source,C] +---- +long diff = weechat_util_timeval_diff (&tv1, &tv2); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_util_timeval_add + +Aggiungi intervallo (in millisecondi) ad una struttura timeval. + +Prototipo: + +[source,C] +---- +void weechat_util_timeval_add (struct timeval *tv, long interval); +---- + +Argomenti: + +* 'tv': struttura timeval +* 'interval': intervallo (in millisecondi) + +Esempio in C: + +[source,C] +---- +weechat_util_timeval_add (&tv, 2000); /* aggiunge 2 secondi */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_util_get_time_string + +_WeeChat ≥ 0.3.2._ + +Riceve data/ora come stringa compilata con "strftime". + +Prototipo: + +[source,C] +---- +char *weechat_util_get_time_string (const time_t *date); +---- + +Argomenti: + +* 'date': puntatore alla data + +Esempio in C: + +[source,C] +---- +time_t date = time (NULL); +weechat_printf (NULL, "date: %s", + weechat_util_get_time_string (&date)); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_util_version_number + +_WeeChat ≥ 0.3.9._ + +// TRANSLATION MISSING +Convert a string with WeeChat version to a number. + +Prototipo: + +[source,C] +---- +int weechat_util_version_number (const char *version); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'version': WeeChat version as string (example: "0.3.9" or "0.3.9-dev") + +Esempio in C: + +[source,C] +---- +version_number = weechat_util_version_number ("0.3.8"); /* == 0x00030800 */ +version_number = weechat_util_version_number ("0.3.9-dev"); /* == 0x00030900 */ +version_number = weechat_util_version_number ("0.3.9-rc1"); /* == 0x00030900 */ +version_number = weechat_util_version_number ("0.3.9"); /* == 0x00030900 */ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +[[sorted_lists]] +=== Elenchi ordinati + +Funzioni lista ordinata. + +==== weechat_list_new + +Crea una nuova lista. + +Prototipo: + +[source,C] +---- +struct t_weelist *weechat_list_new (); +---- + +Valore restituito: + +* puntatore alla nuova lista + +Esempio in C: + +[source,C] +---- +struct t_weelist *list = weechat_list_new (); +---- + +Script (Python): + +[source,python] +---- +# prototipo +list = weechat.list_new() + +# esempio +list = weechat.list_new() +---- + +==== weechat_list_add + +Aggiunge un elemento in una lista. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_add (struct t_weelist *weelist, + const char *data, + const char *where, + void *user_data); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'data': dati da inserire nella lista +* 'where': posizione nella lista: +** 'WEECHAT_LIST_POS_SORT': aggiunge alla lista, mantenendola ordinata +** 'WEECHAT_LIST_POS_BEGINNING': aggiunge all'inizio della lista +** 'WEECHAT_LIST_POS_END': aggiunge alla fine della lista +* 'user_data': qualsiasi puntatore + +Valore restituito: + +* puntatore al nuovo elemento + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *my_item = + weechat_list_add (list, "my data", WEECHAT_LIST_POS_SORT, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_add(list, data, where, user_data) + +# esempio +item = weechat.list_add(list, "my data", weechat.WEECHAT_LIST_POS_SORT, "") +---- + +==== weechat_list_search + +Cerca un elemento nella lista. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_search (struct t_weelist *weelist, + const char *data); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'data': dati da cercare nella lista + +Valore restituito: + +* puntatore all'elemento trovato, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *item = weechat_list_search (list, "my data"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_search(list, data) + +# esempio +item = weechat.list_search(list, "my data") +---- + +==== weechat_list_search_pos + +_WeeChat ≥ 0.3.4._ + +Cerca la posizione di un elemento nella lista. + +Prototipo: + +[source,C] +---- +int weechat_list_search_pos (struct t_weelist *weelist, + const char *data); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'data': dati da cercare nella lista + +Valore restituito: + +* posizione dell'elemento trovato, -1 se non trovato + +Esempio in C: + +[source,C] +---- +int pos_item = weechat_list_search_pos (list, "my data"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +pos_item = weechat.list_search_pos(list, data) + +# esempio +pos_item = weechat.list_search_pos(list, "my data") +---- + +==== weechat_list_casesearch + +Cerca un elemento nella lista, senza effettuare una ricerca +esatta. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_casesearch (struct t_weelist *weelist, + const char *data); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'data': dati da cercare nella lista + +Valore restituito: + +* puntatore all'elemento trovato, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *item = weechat_list_casesearch (list, "my data"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_casesearch(list, data) + +# esempio +item = weechat.list_casesearch(list, "my data") +---- + +==== weechat_list_casesearch_pos + +_WeeChat ≥ 0.3.4._ + +Cerca la posizione di un elemento in una lista, ricerca normale. + +Prototipo: + +[source,C] +---- +int weechat_list_casesearch_pos (struct t_weelist *weelist, + const char *data); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'data': dati da cercare nella lista + +Valore restituito: + +* posizione dell'elemento trovato, -1 se non trovato + +Esempio in C: + +[source,C] +---- +int pos_item = weechat_list_casesearch_pos (list, "my data"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +pos_item = weechat.list_casesearch_pos(list, data) + +# esempio +pos_item = weechat.list_casesearch_pos(list, "my data") +---- + +==== weechat_list_get + +Restituisce un elemento in una lista in base alla sua posizione. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_get (struct t_weelist *weelist, + int position); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'position': posizione nella lista (il primo elemento è 0) + +Valore restituito: + +* puntatore all'elemento trovato, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *item = weechat_list_get (list, 0); /* primo elemento */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_get(list, position) + +# esempio +item = weechat.list_get(list, 0) +---- + +==== weechat_list_set + +Imposta un nuovo valore per un elemento. + +Prototipo: + +[source,C] +---- +void weechat_list_set (struct t_weelist_item *item, const char *value); +---- + +Argomenti: + +* 'item': puntatore all'elemento +* 'value': nuovo valore per l'elemento + +Esempio in C: + +[source,C] +---- +weechat_list_set (item, "nuovi dati"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.list_set(item, value) + +# esempio +weechat.list_set(item, "nuovi dati") +---- + +==== weechat_list_next + +Restituisce l'elemento successivo nella lista. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_next (struct t_weelist_item *item); +---- + +Argomenti: + +* 'item': puntatore all'elemento + +Valore restituito: + +* puntatore all'elemento successivo, NULL se il puntatore è + l'ultimo oggetto nella lista + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *next_item = weechat_list_next (item); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_next(item) + +# esempio +item = weechat.list_next(item) +---- + +==== weechat_list_prev + +Restituisce l'elemento precedente nella lista. + +Prototipo: + +[source,C] +---- +struct t_weelist_item *weechat_list_prev (struct t_weelist_item *item); +---- + +Argomenti: + +* 'item': puntatore all'elemento + +Valore restituito: + +// TRANSLATION MISSING +* pointer to previous item, NULL if pointer was first item in list + +Esempio in C: + +[source,C] +---- +struct t_weelist_item *prev_item = weechat_list_prev (item); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.list_prev(item) + +# esempio +item = weechat.list_prev(item) +---- + +==== weechat_list_string + +Restituisce il valore stringa di un elemento. + +Prototipo: + +[source,C] +---- +const char *weechat_list_string (struct t_weelist_item *item); +---- + +Argomenti: + +* 'item': puntatore all'elemento + +Valore restituito: + +* valore stringa di un elemento + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "valore dell'elemento: %s", weechat_list_string (item)); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.list_string(item) + +# esempio +weechat.prnt("", "valore dell'elemento: %s" % weechat.list_string(item)) +---- + +==== weechat_list_size + +Restituisce la dimensione della lista (numero di elementi). + +Prototipo: + +[source,C] +---- +char *weechat_list_size (struct t_weelist *weelist); +---- + +Argomenti: + +* 'weelist': puntatore alla lista + +Valore restituito: + +* dimensione della lista (numero di elementi), 0 se la lista + è vuota + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "dimensione della lista: %d", weechat_list_size (list)); +---- + +Script (Python): + +[source,python] +---- +# prototipo +size = weechat.list_size(list) + +# esempio +weechat.prnt("", "dimensione della lista: %d" % weechat.list_size(list)) +---- + +==== weechat_list_remove + +Rimuove un elemento in una lista. + +Prototipo: + +[source,C] +---- +void weechat_list_remove (struct t_weelist *weelist, + struct t_weelist_item *item); +---- + +Argomenti: + +* 'weelist': puntatore alla lista +* 'item': puntatore all'elemento + +Esempio in C: + +[source,C] +---- +weechat_list_remove (list, item); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.list_remove(list, item) + +# esempio +weechat.list_remove(list, item) +---- + +==== weechat_list_remove_all + +Rimuove tutti gli elementi in una lista. + +Prototipo: + +[source,C] +---- +void weechat_list_remove_all (struct t_weelist *weelist); +---- + +Argomenti: + +* 'weelist': puntatore alla lista + +Esempio in C: + +[source,C] +---- +weechat_list_remove_all (list); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.list_remove_all(list) + +# esempio +weechat.list_remove_all(list) +---- + +==== weechat_list_free + +Libera una lista. + +Prototipo: + +[source,C] +---- +void weechat_list_free (struct t_weelist *weelist); +---- + +Argomenti: + +* 'weelist': puntatore alla lista + +Esempio in C: + +[source,C] +---- +weechat_list_free (list); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.list_free(list) + +# esempio +weechat.list_free(list) +---- + +[[hashtables]] +=== Tabelle hash + +Funzioni per le tabelle hash. + +==== weechat_hashtable_new + +_WeeChat ≥ 0.3.3._ + +Crea una nuova tabella hash. + +Prototipo: + +[source,C] +---- +struct t_hashtable *weechat_hashtable_new (int size, + const char *type_keys, + const char *type_values, + unsigned long (*callback_hash_key)(struct t_hashtable *hashtable, + const void *key), + int (*callback_keycmp)(struct t_hashtable *hashtable, + const void *key1, + const void *key2)); +---- + +Argomenti: + +* 'size': dimensione dell'array interno per memorizzare le chiavi con hash, un + valore più alto usa più memoria, ma ha migliori performance. (questo *non* è + un limite per il numero di elementi nella tabella hash) +* 'type_keys': tipo per le chiavi nella tabella hash: +** 'WEECHAT_HASHTABLE_INTEGER' +** 'WEECHAT_HASHTABLE_STRING' +** 'WEECHAT_HASHTABLE_POINTER' +** 'WEECHAT_HASHTABLE_BUFFER' +** 'WEECHAT_HASHTABLE_TIME' +* 'type_values': tipo per i valori nella tabella hash: +** 'WEECHAT_HASHTABLE_INTEGER' +** 'WEECHAT_HASHTABLE_STRING' +** 'WEECHAT_HASHTABLE_POINTER' +** 'WEECHAT_HASHTABLE_BUFFER' +** 'WEECHAT_HASHTABLE_TIME' +// TRANSLATION MISSING +* 'callback_hash_key': callback used to "hash" a key (key as integer value), can + be NULL if key type is not "buffer" (a default hash function is used), + arguments and return value: +** 'struct t_hashtable *hashtable': puntatore alla tabella hash +** 'const void *key': chiave +** return value: hash della chiave +// TRANSLATION MISSING +* 'callback_keycmp': callback used to compare two keys, can be NULL if key type + is not "buffer" (a default comparison function is used), arguments and return + value: +** 'struct t_hashtable *hashtable': puntatore alla tabella hash +** 'const void *key1': prima chiave +** 'const void *key2': seconda chiave +** valore restituito: +*** numero negativo se 'key1' è minore di 'key2' +*** 0 se 'key1' è uguale a 'key2' +*** numero positivo se 'key1' è maggiore di 'key2' + +Valore restituito: + +* puntatore alla nuova tabella hash, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hashtable *hashtable = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_set_with_size + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.3, updated in 0.4.2._ + +Aggiunge o aggiorna un elemento nella tabella hash con la dimensione per la +chiave ed il valore. + +Prototipo: + +[source,C] +---- +struct t_hashtable_item *weechat_hashtable_set_with_size (struct t_hashtable *hashtable, + const void *key, int key_size, + const void *value, int value_size); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'key': puntatore alla chiave +* 'key_size': dimensione della chiave (in byte), usata solo se il tipo delle + chiavi nella tabella hash è "buffer" +* 'value': puntatore al valore +* 'value_size': dimensione del valore (in byte), utilizzata solo se il tipo dei + valori nella tabella è "buffer" + +Valore restituito: + +// TRANSLATION MISSING +* pointer to item created/updated, NULL if error + +Esempio in C: + +[source,C] +---- +weechat_hashtable_set_with_size (hashtable, "my_key", 0, + my_buffer, sizeof (my_buffer_struct)); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_set + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.3, updated in 0.4.2._ + +Aggiunge o aggiorna un elemento nella tabella hash. + +Prototipo: + +[source,C] +---- +struct t_hashtable_item *weechat_hashtable_set (struct t_hashtable *hashtable, + const void *key, const void *value); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'key': puntatore alla chiave +* 'value': puntatore al valore + +Valore restituito: + +// TRANSLATION MISSING +* pointer to item created/updated, NULL if error + +Esempio in C: + +[source,C] +---- +weechat_hashtable_set (hashtable, "my_key", "my_value"); +---- + +==== weechat_hashtable_get + +_WeeChat ≥ 0.3.3._ + +Ottiene il valore associato ad una chiave in una tabella hash. + +Prototipo: + +[source,C] +---- +void *weechat_hashtable_get (struct t_hashtable *hashtable, void *key); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'key': puntatore alla chiave + +Valore restituito: + +* valore per la chiave, NULL se non trovata + +Esempio in C: + +[source,C] +---- +void *value = weechat_hashtable_get (hashtable, "my_key"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_has_key + +_WeeChat ≥ 0.3.4._ + +// TRANSLATION MISSING +Check if a key is in the hashtable. + +Prototipo: + +[source,C] +---- +int weechat_hashtable_has_key (struct t_hashtable *hashtable, void *key); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'key': puntatore alla chiave + +Valore restituito: + +* 1 se la chiave si trova nella tabella hash, 0 in caso contrario + +Esempio in C: + +[source,C] +---- +if (weechat_hashtable_has_key (hashtable, "my_key")) +{ + /* la chiave è nella tabella hash */ + /* ... */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_map + +_WeeChat ≥ 0.3.3._ + +Chiama una funzione su tutte le voci della tabella hash. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_map (struct t_hashtable *hashtable, + void (*callback_map)(void *data, + struct t_hashtable *hashtable, + const void *key, + const void *value), + void *callback_map_data); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'callback_map': funzione chiamata per ogni voce nella tabella hash +* 'callback_map_data': puntatore fornito alla mappa di callback quando chiamata + +Esempio in C: + +[source,C] +---- +void +map_cb (void *data, struct t_hashtable *hashtable, + const void *key, const void *value) +{ + /* display key and value (they are both strings here) */ + weechat_printf (NULL, "key: '%s', value: '%s'", + (const char *)key, + (const char *)value); +} +/* ... */ +weechat_hashtable_map (hashtable, &map_cb, NULL); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_map_string + +_WeeChat ≥ 0.3.7._ + +Chiama una funzione su tutte le voci della tabella hash, inviando chiavi e +valori come stringhe. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_map_string (struct t_hashtable *hashtable, + void (*callback_map)(void *data, + struct t_hashtable *hashtable, + const char *key, + const char *value), + void *callback_map_data); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'callback_map': funzione chiamata per ogni voce nella tabella hash +* 'callback_map_data': puntatore fornito alla mappa di callback quando chiamata + +[NOTE] +Le stringhe 'key' e 'value' inviate alla callback sono temporanee, vengono +eliminate dopo la chiamata alla callback. + +Esempio in C: + +[source,C] +---- +void +map_cb (void *data, struct t_hashtable *hashtable, + const char *key, const char *value) +{ + /* display key and value */ + weechat_printf (NULL, "key: '%s', value: '%s'", + key, value); +} +/* ... */ +weechat_hashtable_map_string (hashtable, &map_cb, NULL); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_dup + +_WeeChat ≥ 1.0._ + +// TRANSLATION MISSING +Duplicate a hashtable. + +Prototipo: + +[source,C] +---- +struct t_hashtable *weechat_hashtable_dup (struct t_hashtable *hashtable); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash + +Valore restituito: + +// TRANSLATION MISSING +* duplicated hashtable + +Esempio in C: + +[source,C] +---- +struct t_hashtable *new_hashtable = weechat_hashtable_dup (hashtable); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_get_integer + +_WeeChat ≥ 0.3.3._ + +Restituisce un valore intero per la proprietà di una tabella hash. + +Prototipo: + +[source,C] +---- +int weechat_hashtable_get_integer (struct t_hashtable *hashtable, + void *property); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'property': nome della proprietà: +** 'size': dimensione dell'array interno "htable" nella tabella hash +** 'items_count': numero di elementi nella tabella hash + +Valore restituito: + +* valore intero della proprietà + +Esempio in C: + +[source,C] +---- +int items_count = weechat_hashtable_get_integer (hashtable, "items_count"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_get_string + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore stringa della proprietà di una tabella hash. + +Prototipo: + +[source,C] +---- +const char *weechat_hashtable_get_string (struct t_hashtable *hashtable, + const char *property); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'property': nome della proprietà: +** 'type_keys': tipo per le chiavi: +*** 'integer': intero +*** 'string': stringa +*** 'pointer': puntatore +*** 'buffer': buffer +*** 'time': tempo +** 'type_values': tipo per i valori: +*** 'integer': intero +*** 'string': stringa +*** 'pointer': puntatore +*** 'buffer': buffer +*** 'time': tempo +** 'keys': stringa con la lista di chiavi (formato: "chiave1,chiave2,chiave3") +** 'keys_sorted': stringa con l'elenco di chiavi ordinate (formato: "chiave1,chiave2,chiave3") +** 'values': stringa con la lista di valori (formato: "valore1,valore2,valore3") +** 'keys_values': stringa con la lista di valori e chiavi + (formato: "chiave1:valore1,chiave2:valore2,chiave3:valore3") +** 'keys_values_sorted': stringa con la lista di chiavi e valori (ordinata per chiavi) + (formato: "chiave1:valore1,chiave2:valore2,chiave3:valore3") + +Valore restituito: + +* valore stringa della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "keys are type: %s", + weechat_hashtable_get_string (hashtable, "type_keys")); +weechat_printf (NULL, "list of keys: %s", + weechat_hashtable_get_string (hashtable, "keys")); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_set_pointer + +_WeeChat ≥ 0.3.4._ + +Imposta il valore puntatore della proprietà di una tabella hash. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_set_pointer (struct t_hashtable *hashtable, + const char *property, void *pointer); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'property': nome della proprietà: +// TRANSLATION MISSING +** 'callback_free_key': set callback function used to free keys in hashtable + _(WeeChat ≥ 0.4.2)_ +** 'callback_free_value': imposta la funzione callback usata per + liberare i valori nella tabella hash +// TRANSLATION MISSING +* 'pointer': new pointer value for property + +Esempio in C: + +[source,C] +---- +void +my_free_value_cb (struct t_hashtable *hashtable, const void *key, void *value) +{ + /* ... */ +} + +weechat_hashtable_set_pointer (hashtable, "callback_free_value", &my_free_value_cb); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_add_to_infolist + +_WeeChat ≥ 0.3.3._ + +Aggiunge elementi della tabella hash ad un elemento della lista info. + +Prototipo: + +[source,C] +---- +int weechat_hashtable_add_to_infolist (struct t_hashtable *hashtable, + struct t_infolist_item *infolist_item, + const char *prefix); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'infolist_item': puntatore all'elemento della lista info +* 'prefix': stringa usata come prefisso per i nomi nella lista info + +Valore restituito: + +* 1 se ok, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +weechat_hashtable_add_to_infolist (hashtable, infolist_item, "testhash"); + +/* se la tabella hash contiene: + "key1" => "value 1" + "key2" => "value 2" + allora le seguenti variabili verranno aggiunti all'elemento della lista info: + "testhash_name_00000" = "key1" + "testhash_value_00000" = "value 1" + "testhash_name_00001" = "key2" + "testhash_value_00001" = "value 2" +*/ +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_remove + +_WeeChat ≥ 0.3.3._ + +Rimuove un elemento in una tabella hash. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_remove (struct t_hashtable *hashtable, const void *key); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash +* 'key': puntatore alla chiave + +Esempio in C: + +[source,C] +---- +weechat_hashtable_remove (hashtable, "my_key"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_remove_all + +_WeeChat ≥ 0.3.3._ + +Rimuove tutti gli elementi in una tabella hash. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_remove_all (struct t_hashtable *hashtable); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash + +Esempio in C: + +[source,C] +---- +weechat_hashtable_remove_all (hashtable); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hashtable_free + +_WeeChat ≥ 0.3.3._ + +Libera una tabella hash. + +Prototipo: + +[source,C] +---- +void weechat_hashtable_free (struct t_hashtable *hashtable); +---- + +Argomenti: + +* 'hashtable': puntatore alla tabella hash + +Esempio in C: + +[source,C] +---- +weechat_hashtable_free (hashtable); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +[[configuration_files]] +=== File di configurazione + +Funzioni per i file di configurazione. + +==== weechat_config_new + +Crea un nuovo file di configurazione. + +Prototipo: + +[source,C] +---- +struct t_config_file *weechat_config_new (const char *name, + int (*callback_reload)(void *data, + struct t_config_file *config_file), + void *callback_reload_data); +---- + +Argomenti: + +* 'name': nome del file di configurazione (senza percorso o estensione) +* 'callback_reload': funzione chiamata quando il file di configurazione viene + ricaricato con `/reload` (opzionale, può essere NULL), argomenti e valore + restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** valore restituito: +*** 'WEECHAT_CONFIG_READ_OK' +*** 'WEECHAT_CONFIG_READ_MEMORY_ERROR' +*** 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' +* 'callback_reload_data': puntatore fornito per ricaricare il callback + quando richiesto da WeeChat + +Valore restituito: + +* puntatore al nuovo file di configurazione, NULL in caso di errore + +[NOTE] +Il file NON viene creato su disco da questa funzione. Verrà creato chiamando +la funzione <<_weechat_config_write,weechat_config_write>>. +Si dovrebbe chiamare questa funzione solo dopo aver aggiunto alcune sezioni +(con <<_weechat_config_new_section,weechat_config_new_section>>) e le +opzioni (con <<_weechat_config_new_option,weechat_config_new_option>>). + +Esempio in C: + +[source,C] +---- +int +my_config_reload_cb (void *data, struct t_config_file *config_file) +{ + /* ... */ + + return WEECHAT_RC_OK; +} + +struct t_config_file *config_file = weechat_config_new ("test", + &my_config_reload_cb, + NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +config_file = weechat.config_new(name, calback_reload, callback_reload_data) + +# esempio +def my_config_reload_cb(data, config_file): + # ... + return weechat.WEECHAT_RC_OK + +config_file = weechat.config_new("test", "my_config_reload_cb", "") +---- + +==== weechat_config_new_section + +Crea una nuova sezione nel file di configurazione. + +Prototipo: + +[source,C] +---- +struct t_config_section *weechat_config_new_section ( + struct t_config_file *config_file, + const char *name, + int user_can_add_options, + int user_can_delete_options, + int (*callback_read)(void *data, + struct t_config_file *config_file, + struct t_config_section *section, + const char *option_name, + const char *value), + void *callback_read_data, + int (*callback_write)(void *data, + struct t_config_file *config_file, + const char *section_name), + void *callback_write_data, + int (*callback_write_default)(void *data, + struct t_config_file *config_file, + const char *section_name); + void *callback_write_default_data, + int (*callback_create_option)(void *data, + struct t_config_file *config_file, + struct t_config_section *section, + const char *option_name, + const char *value), + void *callback_create_option_data, + int (*callback_delete_option)(void *data, + struct t_config_file *config_file, + struct t_config_section *section, + struct t_config_option *option), + void *callback_delete_option_data); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'name': nome della sezione +* 'user_can_add_options': 1 se l'utente può creare nuove opzioni nella sezione, + oppure 0 se non gli è consentito +* 'user_can_delete_options': 1 se l'utente può eliminare le opzioni nella sezione, + oppure 0 se non gli è consentito +* 'callback_read': funzione chiamata quando un'opzione nella sezione viene letta + da disco (dovrebbe essere NULL in molti casi, tranne se l'opzione nella sezione + necessita di una funzione personalizza), argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** 'struct t_config_section *section': puntatore alla sezione +** 'const char *option_name': nome dell'opzione +** 'const char *value': valore +** valore restituito: +*** 'WEECHAT_CONFIG_READ_OK' +*** 'WEECHAT_CONFIG_READ_MEMORY_ERROR' +*** 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' +* 'callback_read_data': puntatore fornito alla callback quando chiamata da WeeChat +* 'callback_write': funzione chiamata quando la sezione è scritta nel file (dovrebbe + essere NULL in molti casi, tranne se la sezione necessita di una funzione + personalizzata), argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** 'struct t_config_section *section': puntatore alla sezione +** 'const char *option_name': nome dell'opzione +** valore restituito: +*** 'WEECHAT_CONFIG_WRITE_OK' +*** 'WEECHAT_CONFIG_WRITE_ERROR' +*** 'WEECHAT_CONFIG_WRITE_MEMORY_ERROR' +* callback_write_data: puntatore fornito alla callback quando chiamata da WeeChat +* callback_write_default: funzione chiamata quando i valori predefiniti per la sezione + devono essere scritti in un file, argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** 'const char *section_name': nome della sezione +** valore restituito: +*** 'WEECHAT_CONFIG_WRITE_OK' +*** 'WEECHAT_CONFIG_WRITE_ERROR' +*** 'WEECHAT_CONFIG_WRITE_MEMORY_ERROR' +* 'callback_write_default_data': puntatore fornito alla callback quando chiamata da + WeeChat +* 'callback_create_option': funzione chiamata quando viene creata una nuova + opzione nella sezione (NULL se la sezione non consente di creare nuove + opzioni), argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** 'struct t_config_section *section': puntatore alla sezione +** 'const char *option_name': nome dell'opzione +** 'const char *value': valore +** valore restituito: +*** 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' +*** 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' +*** 'WEECHAT_CONFIG_OPTION_SET_ERROR' +*** 'WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND' +* 'callback_create_option_data': puntatore fornito alla callback quando chiamata + da WeeChat +* 'callback_delete_option': funzione chiamata quando un'opzione viene eliminata + nella sezione (NULL se la sezione non consente di eliminare delle opzioni), + argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_file *config_file': puntatore al file di configurazione +** 'struct t_config_section *section': puntatore alla sezione +** 'struct t_config_option *option': puntatore all'opzione +** valore restituito: +*** 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' +*** 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' +*** 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' +*** 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' +* 'callback_delete_option_data': puntatore fornito alla callback quando chiamata + da WeeChat + +Valore restituito: + +* puntatore alla nuova sezione nel file di configurazione, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_section_read_cb (void *data, struct t_config_file *config_file, + struct t_config_section *section, const char *option_name, + const char *value) +{ + /* ... */ + + return WEECHAT_CONFIG_OPTION_SET_OK_CHANGED; + /* return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; */ + /* return WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; */ + /* return WEECHAT_CONFIG_OPTION_SET_ERROR; */ +} + +int +my_section_write_cb (void *data, struct t_config_file *config_file, + const char *section_name) +{ + /* ... */ + + return WEECHAT_CONFIG_WRITE_OK; + /* return WEECHAT_CONFIG_WRITE_ERROR; */ +} + +int +my_section_write_default_cb (void *data, struct t_config_file *config_file, + const char *section_name) +{ + /* ... */ + + return WEECHAT_CONFIG_WRITE_OK; + /* return WEECHAT_CONFIG_WRITE_ERROR; */ +} + +int +my_section_create_option_cb (void *data, struct t_config_file *config_file, + struct t_config_section *section, + const char *option_name, const char *value) +{ + /* ... */ + + return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; + /* return WEECHAT_CONFIG_OPTION_SET_ERROR; */ +} + +int +my_section_delete_option_cb (void *data, struct t_config_file *config_file, + struct t_config_section *section, + struct t_config_option *option) +{ + /* ... */ + + return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED; + /* return WEECHAT_CONFIG_OPTION_UNSET_ERROR; */ +} + +/* sezione standard, l'utente non può aggiungere/rimuovere opzioni */ +struct t_config_section *new_section1 = + weechat_config_new_section (config_file, "section1", 0, 0, + NULL, NULL, /* read callback */ + NULL, NULL, /* write callback */ + NULL, NULL, /* write default callback */ + NULL, NULL, /* create option callback */ + NULL, NULL); /* delete option callback */ + +/* sezione speciale, l'utente può aggiungere/eliminare opzioni, e le + opzioni necessitano di un callback per essere lette/scritte */ +struct t_config_section *new_section2 = + weechat_config_new_section (config_file, "section2", 1, 1, + &my_section_read_cb, NULL, + &my_section_write_cb, NULL, + &my_section_write_default_cb, NULL, + &my_section_create_option_cb, NULL, + &my_section_delete_option_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +section = weechat.config_new_section(config_file, name, + user_can_add_options, user_can_delete_options, + callback_read, callback_read_data, + callback_write, callback_write_data, + callback_create_option, callback_create_option_data, + callback_delete_option, callback_delete_option_data) + +# esempio +def my_section_read_cb(data, config_file, section, option_name, value): + # ... + return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED + # return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE + # return weechat.WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND + # return weechat.WEECHAT_CONFIG_OPTION_SET_ERROR + +def my_section_write_cb(data, config_file, section_name): + # ... + return weechat.WEECHAT_CONFIG_WRITE_OK + +def my_section_write_default_cb(data, config_file, section_name): + # ... + return weechat.WEECHAT_CONFIG_WRITE_OK + +def my_section_create_option_cb(data, config_file, section, option_name, value): + # ... + return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE + +def my_section_delete_option_cb(data, config_file, section, option): + # ... + return weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED + +section = weechat.config_new_section(config_file, "section1", 1, 1, + "my_section_read_cb", "", + "my_section_write_cb", "", + "my_section_write_default_cb", "", + "my_section_create_option_cb", "", + "my_section_delete_option_cb", "") +---- + +==== weechat_config_search_section + +Cerca una sezione in un file di configurazione. + +Prototipo: + +[source,C] +---- +struct t_config_section *weechat_config_search_section ( + struct t_config_file *config_file, + const char *section_name); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'section_name': nome della sezione da cercare + +Valore restituito: + +* puntatore alla sezione trovata, NULL se non trovata + +Esempio in C: + +[source,C] +---- +struct t_config_section *section = weechat_config_search_section (config_file, + "section"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +section = weechat.config_search_section(config_file, section_name) + +# esempio +section = weechat.config_search_section(config_file, "section") +---- + +==== weechat_config_new_option + +Crea una nuova opzione nella sezione di un file di configurazione. + +Prototipo: + +[source,C] +---- +struct t_config_option *weechat_config_new_option ( + struct t_config_file *config_file, + struct t_config_section *section, + const char *name, + const char *type, + const char *description, + const char *string_values, + int min, + int max, + const char *default_value, + const char *value, + int null_value_allowed, + int (*callback_check_value)(void *data, + struct t_config_option *option, + const char *value), + void *callback_check_value_data, + void (*callback_change)(void *data, + struct t_config_option *option), + void *callback_change_data, + void (*callback_delete)(void *data, + struct t_config_option *option), + void *callback_delete_data); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'section': puntatore alla sezione +* 'name': nome dell'opzione +* 'type': tipo dell'opzione: +** 'boolean': valore booleano (on/off) +** 'integer': valore intero (con stringhe opzionali per i valori) +** 'string': valore stringa +** 'color': colore +* 'description': descrizione dell'opzione +* 'string_values': valori come stringa (separati da "|"), usato dal tipo 'integer' + (opzionale) +* 'min': valore minimo (per il tipo 'integer') +* 'max': valore massimo (per il tipo 'integer') +* 'default_value': valore predefinito per l'opzione (usato per il reset dell'opzione) +* 'value': valore per l'opzione +* 'null_value_allowed': 1 se 'null' (valore non definito) è consentito per l'opzione, + altrimenti 0 +* 'callback_check_value': funzione chiamata per verificare il nuovo valore per + l'opzione (ozionale), argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_config_option *option': puntatore all'opzione +** 'const char *value': nuovo valore per l'opzione +** valore restituito: +*** 1 se il valore è corretto +*** 0 se il valore non è valido +* 'callback_check_value_data': puntatore fornito alla callback check_value + quando chiamata da WeeChat +* 'callback_change': funzione chiamata quando il valore dell'opzione è stata + cambiata (opzionale), argomenti: +** 'void *data': puntatore +** 'struct t_config_option *option': puntatore all'opzione +* 'callback_change_data': puntatore fornito per cambiare alla callback quando + chiamato da WeeChat +* 'callback_delete': funzione chiamata quando l'opzione verrà eliminata + (opzionale), argomenti: +** 'void *data': puntatore +** 'struct t_config_option *option': puntatore all'opzione +* 'callback_delete_data': puntatore fornito per eiliminare alla callback quando + chiamato da WeeChat + +Valore restituito: + + alla nuova opzione nella sezione, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +/* booleano */ +struct t_config_option *option1 = + weechat_config_new_option (config_file, section, "option1", "boolean", + "My option, type boolean" + NULL, /* valori stringa */ + 0, 0, /* min, max */ + "on", /* predefinito */ + "on", /* valore */ + 0, /* null value allowed */ + NULL, NULL, /* verifica callback */ + NULL, NULL, /* modifica callback */ + NULL, NULL); /* elimina callback */ + +/* intero */ +struct t_config_option *option2 = + weechat_config_new_option (config_file, section, "option2", "integer", + "My option, type integer" + NULL, /* string values */ + 0, 100, /* min, max */ + "15", /* default */ + "15", /* value */ + 0, /* null value allowed */ + NULL, NULL, /* verifica callback */ + NULL, NULL, /* modifica callback */ + NULL, NULL); /* elimina callback */ + +/* intero (con valori stringa) */ +struct t_config_option *option3 = + weechat_config_new_option (config_file, section, "option3", "integer", + "My option, type integer (with string values)" + "top|bottom|left|right", /* string values */ + 0, 0, /* min, max */ + "bottom", /* predefinito */ + "bottom", /* valoree */ + 0, /* null value allowed */ + NULL, NULL, /* verifica callback */ + NULL, NULL, /* modifica callback */ + NULL, NULL); /* elimina callback */ + +/* stringa */ +struct t_config_option *option4 = + weechat_config_new_option (config_file, section, "option4", "string", + "My option, type string" + NULL, /* valori stringa */ + 0, 0, /* min, max */ + "test", /* predefinito */ + "test", /* valore */ + 1, /* valore null consentito */ + NULL, NULL, /* verifica callback */ + NULL, NULL, /* modifica callback */ + NULL, NULL); /* elimina callback */ + +/* colore */ +struct t_config_option *option5 = + weechat_config_new_option (config_file, section, "option5", "color", + "My option, type color" + NULL, /* valori stringa */ + 0, 0, /* min, max */ + "lightblue", /* predefinito */ + "lightblue", /* valore */ + 0, /* valore null consentito */ + NULL, NULL, /* verifica callback */ + NULL, NULL, /* modifica callback */ + NULL, NULL); /* elimina callback */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +option = weechat.config_new_option(config_file, section, name, type, description, + string_values, min, max, default_value, value, null_value_allowed, + callback_check_value, callback_check_value_data, + callback_change, callback_change_data, + callback_delete, callback_delete_data) + +# esempio +def option4_check_value_cb(data, option, value): + # ... + return 1 + # return 0 + +def option4_change_cb(data, option): + # ... + +def option4_delete_cb(data, option): + # ... + +option1 = weechat.config_new_option(config_file, section, "option1", "boolean", + "My option, type boolean", + "", 0, 0, "on", "on", 0, + "", "", + "", "", + "", "") + +option2 = weechat.config_new_option(config_file, section, "option2", "integer", + "My option, type integer", + "", 0, 100, "15", "15", 0, + "", "", + "", "", + "", "") + +option3 = weechat.config_new_option(config_file, section, "option3", "integer", + "My option, type integer (with string values)", + "top|bottom|left|right", + 0, 0, "bottom", "bottom", 0, + "", "", + "", "", + "", "") + +option4 = weechat.config_new_option(config_file, section, "option4", "string", + "My option, type string", + "", 0, 0, "test", "test", 1, + "option4_check_value_cb", "" + "option4_change_cb", "", + "option4_delete_cb", "") + +option5 = weechat.config_new_option(config_file, section, "option5", "color", + "My option, type color", + "", 0, 0, "lightblue", "lightblue", 0, + "", "", + "", "", + "", "") +---- + +// TRANSLATION MISSING +[NOTE] +In Ruby, the 3 callbacks + data (6 strings) must be given in an array of 6 +strings (due to a Ruby limitation of 15 arguments by function), see the +'WeeChat Scripting Guide' for more info _(fixed in version 0.4.1)_. + +==== weechat_config_search_option + +Cerca un'opzione nella sezione di un file di configurazione. + +Prototipo: + +[source,C] +---- +struct t_config_option *weechat_config_search_option ( + struct t_config_file *config_file, + struct t_config_section *section, + const char *option_name); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'section': puntatore alla sezione +* 'name': nome dell'opzione da cercare + +Valore restituito: + +* puntatore all'opzione trovata, NULL se non trovata + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = + weechat_config_search_option (config_file, section, "option"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +option = weechat.config_search_option(config_file, section, option_name) + +# esempio +option = weechat.config_search_option(config_file, section, "option") +---- + +==== weechat_config_search_section_option + +Cerca una sezione ed un'opzione in un file di configurazione o sezione. + +Prototipo: + +[source,C] +---- +void weechat_config_search_section_option (struct t_config_file *config_file, + struct t_config_section *section, + const char *option_name, + struct t_config_section **section_found, + struct t_config_option **option_found); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'section': puntatore alla sezione +* 'option_name': nome dell'opzione +* 'section_found': puntatore al puntatore della sezione, sarà impostato alla + sezione dell'opzione, se viene trovata +* 'option_found': puntatore al puntatore dell'opzione, sarà impostato al + puntatore di un'opzione, se viene trovata + +Esempio in C: + +[source,C] +---- +struct t_config_section *ptr_section; +struct t_config_option *ptr_option; + +weechat_config_search_section_option(config_file, + section, + "option", + &ptr_section, + &ptr_option); +if (ptr_option) +{ + /* opzione trovata */ +} +else +{ + /* opzione non trovata */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_config_search_with_string + +// TRANSLATION MISSING +Get file/section/option info about an option with full name. + +Prototipo: + +[source,C] +---- +void weechat_config_search_with_string (const char *option_name, + struct t_config_file **config_file, + struct t_config_section **section, + struct t_config_option **option, + char **pos_option_name); +---- + +Argomenti: + +* 'option_name': nome completo dell'opzione (formato: "file.section.option") +* 'config_file': puntatore al puntatore del file di configurazione, sarà impostato + al puntatore al file di configurazione se l'opzione viene trovata +* 'section': puntatore al puntatore della sezione, sarà impostato alla sezione + dell'opzione, se viene trovata +* 'option': puntatore al puntatore dell'opzione, sarà impostato al puntatore di + un'opzione, se viene trovata +// TRANSLATION MISSING +* 'pos_option_name': pointer to a string pointer, will be set to pointer to + name of option, if found + +Esempio in C: + +[source,C] +---- +struct t_config_file *ptr_config_file; +struct t_config_section *ptr_section; +struct t_config_option *ptr_option; +char *option_name; + +weechat_config_search_with_string ("file.section.option", + &ptr_config_file, + &ptr_section, + &ptr_option, + &option_name); +if (ptr_option) +{ + /* opzione trovata */ +} +else +{ + /* opzione non trovata */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_config_string_to_boolean + +Verifica se un testo è "vero" o "falso", come valore booleano. + +Prototipo: + +[source,C] +---- +int weechat_config_string_to_boolean (const char *text); +---- + +Argomenti: + +* 'text': testo da analizzare + +Valore restituito: + +* 1 se il testo è "true" ("on", "yes", "y", "true", "t", "1") +* 0 se il testo è "false" ("off", "no", "n", "false", "f", "0") + +Esempio in C: + +[source,C] +---- +if (weechat_config_string_to_boolean (option_value)) +{ + /* il valore è "true" */ +} +else +{ + /* il valore è "false" */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_string_to_boolean(text) + +# esempio +if weechat.config_string_to_boolean(text): + # ... +---- + +==== weechat_config_option_reset + +Resetta un'opzione al proprio valore predefinito. + +Prototipo: + +[source,C] +---- +int weechat_config_option_reset (struct t_config_option *option, + int run_callback); +---- + +Argomenti: + +* 'option': puntatore all'opzione +* 'run_callback': 1 per la chiamata alla callbackse il valore dell'opzione + è cambiato, altrimenti 0 + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è stato + resettato +* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è stato + modificato +* 'WEECHAT_CONFIG_OPTION_SET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_option_reset (option, 1)) +{ + case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_ERROR: + /* .... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_option_reset(option, run_callback) + +# esempio +rc = weechat.config_option_reset(option, 1) +if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR: + # ... +---- + +==== weechat_config_option_set + +Imposta un nuovo valore per l'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_option_set (struct t_config_option *option, + const char *value, int run_callback); +---- + +Argomenti: + +* 'option': puntatore all'opzione +* 'value': nuovo valore per l'opzione +* 'run_callback': 1 per la chiamata alla callback chang se il valore dell'opzione + è cambiato, altrimenti 0 + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è + cambiato +* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato +* 'WEECHAT_CONFIG_OPTION_SET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_option_set (option, "new_value", 1)) +{ + case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_ERROR: + /* .... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_option_set(option, value, run_callback) + +# esempio +rc = weechat.config_option_set(option, "new_value", 1) +if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR: + # ... +---- + +==== weechat_config_option_set_null + +Imposta null (valore non definito) per un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_option_set_null (struct t_config_option *option, + int run_callback); +---- + +Argomenti: + +* 'option': puntatore all'opzione +* 'run_callback': 1 per la chiamata alla callback chang se il valore + dell'opzione è cambiato (se non è null), altrimenti 0 + +[NOTE] +È possibile impostare il valore a null solo se è consentito per l'opzione +(consultare <<_weechat_config_new_option,weechat_config_new_option>>). + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è + cambiato +* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato +* 'WEECHAT_CONFIG_OPTION_SET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_option_set_null (option, 1)) +{ + case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_SET_ERROR: + /* .... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_option_set_null(option, run_callback) + +# esempio +rc = weechat.config_option_set_null(option, 1) +if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR: + # ... +---- + +==== weechat_config_option_unset + +Rimuove/ripristina un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_option_unset (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' se il valore dell'opzione non è + stato ripristinato +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' se il valore dell'opzione è stato + ripristinato +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' se l'opzione è stata rimossa +* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_option_unset (option)) +{ + case WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: + /* .... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_ERROR: + /* .... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_option_unset(option) + +# esempio +rc = weechat.config_option_unset(option) +if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR: + # ... +---- + +==== weechat_config_option_rename + +Rinomina un'opzione. + +Prototipo: + +[source,C] +---- +void weechat_config_option_rename (struct t_config_option *option, + const char *new_name); +---- + +Argomenti: + +* 'option': puntatore all'opzione +* 'new_name': nuovo nome per l'opzione + +Esempio in C: + +[source,C] +---- +weechat_config_option_rename (option, "new_name"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_option_rename(option, new_name) + +# esempio +weechat.config_option_rename(option, "new_name") +---- + +==== weechat_config_option_get_pointer + +Restituisce un puntatore alla proprietà di un'opzione. + +Prototipo: + +[source,C] +---- +void *weechat_config_option_get_pointer (struct t_config_option *option, + const char *property); +---- + +Argomenti: + +* 'option': puntatore all'opzione +* 'property': nome della proprietà: +** 'config_file': puntatore al file di configurazione ('struct t_config_file *') +** 'section': puntatore alla sezione ('struct t_config_section *') +** 'name': nome dell'opzione ('char *') +** 'type': tipo dell'opzione ('int *') +** 'description': descrizione dell'opzione ('char *') +** 'string_values': valori stringa ('char *') +** 'min': valore minimo ('int *') +** 'max': valore massimo ('int *') +** 'default_value': valore predefinito (dipende dal tipo) +** 'value': valore corrente (dipende dal tipo) +** 'prev_option': puntatore all'opzione precedente ('struct t_config_option *') +** 'next_option': puntatore all'opzione successiva ('struct t_config_option *') + +Valore restituito: + +* puntatore alla proprietà richiesta + +Esempio in C: + +[source,C] +---- +char *description = weechat_config_option_get_pointer (option, "description"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_config_option_is_null + +Verifica se un opzione è "null" (valore non definito). + +Prototipo: + +[source,C] +---- +int weechat_config_option_is_null (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* 1 se il valore dell'opzione è "null" +* 0 se il valore dell'opzione non è "null" + +Esempio in C: + +[source,C] +---- +if (weechat_config_option_is_null (option)) +{ + /* il valore è "null" */ +} +else +{ + /* il valore non è "null" */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_option_is_null(option) + +# esempio +if weechat.config_option_is_null(option): + # ... +---- + +==== weechat_config_option_default_is_null + +Verifica che il valore predefinito di un'opzione sia "null" (valore non definito). + +Prototipo: + +[source,C] +---- +int weechat_config_option_default_is_null (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* 1 se il valore predefinito di un'opzione è "null" +* 0 se il valore predefinito di un'opzione non è "null" + +Esempio in C: + +[source,C] +---- +if (weechat_config_option_default_is_null (option)) +{ + /* il valore predefinito è "null" */ +} +else +{ + /* il valore predefinito non è "null" */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_option_default_is_null(option) + +# esempio +if weechat.config_option_default_is_null(option): + # ... +---- + +==== weechat_config_boolean + +Restituisce il valore bool di un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_boolean (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore bool di un'opzione (0 o 1) + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +if (weechat_config_boolean (option)) +{ + /* il valore è "true" */ +} +else +{ + /* il valore è "false" */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_boolean(option) + +# esempio +option = weechat.config_get("plugin.section.option") +if weechat.config_boolean(option): + # ... +---- + +==== weechat_config_boolean_default + +Restituisce il valore bool predefinito di un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_boolean_default (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* il valore bool predefinito di un'opzione (0 o 1) + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +if (weechat_config_boolean_default (option)) +{ + /* il valore è "true" */ +} +else +{ + /* il valore è "false" */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_boolean_default(option) + +# esempio +option = weechat.config_get("plugin.section.option") +if weechat.config_boolean_default(option): + # ... +---- + +==== weechat_config_integer + +Restituisce il valore intero di un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_integer (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore intero di un'opzione + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +int value = weechat_config_integer (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_integer(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_integer(option) +---- + +==== weechat_config_integer_default + +Restituisce il valore intero predefinito di un'opzione. + +Prototipo: + +[source,C] +---- +int weechat_config_integer_default (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore intero predefinito di un'opzione + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +int value = weechat_config_integer_default (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_integer_default(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_integer_default(option) +---- + +==== weechat_config_string + +Restituisce il valore stringa di un'opzione. + +Prototipo: + +[source,C] +---- +const char *weechat_config_string (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore stringa di un'opzione + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +const char *value = weechat_config_string (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_string(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_string(option) +---- + +==== weechat_config_string_default + +Restituisce il valore stringa predefinito di un'opzione. + +Prototipo: + +[source,C] +---- +const char *weechat_config_string_default (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore stringa predefinito di un'opzione + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +const char *value = weechat_config_string_default (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_string_default(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_string_default(option) +---- + +==== weechat_config_color + +Restituisce il valore colore di un'opzione. + +Prototipo: + +[source,C] +---- +const char *weechat_config_color (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore colore dell'opzione (stringa con il nome del colore) + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +const char *color = weechat_config_color (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_color(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_color(option) +---- + +==== weechat_config_color_default + +Restituisce il valore colore predefinito di un'opzione. + +Prototipo: + +[source,C] +---- +const char *weechat_config_color_default (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Valore restituito: + +* valore colore predefinito di un'opzione (stringa con il nome del colore) + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("plugin.section.option"); +const char *color = weechat_config_color_default (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_color_default(option) + +# esempio +option = weechat.config_get("plugin.section.option") +value = weechat.config_color_default(option) +---- + +==== weechat_config_write_option + +Scrive una riga nel file di configurazione con l'opzione ed il suo valore +(questa funzione dovrebbe essere chiamata solo nelle callback "write" +o "write_default" per una sezione). + +Prototipo: + +[source,C] +---- +void weechat_config_write_option (struct t_config_file *config_file, + struct t_config_option *option); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'option': puntatore all'opzione + +Esempio in C: + +[source,C] +---- +int +my_section_write_cb (void *data, struct t_config_file *config_file, + const char *section_name) +{ + weechat_config_write_line (config_file, "my_section", NULL); + + weechat_config_write_option (config_file, option); + + return WEECHAT_RC_OK; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_write_option(config_file, option) + +# esempio +def my_section_write_cb(data, config_file, section_name): + weechat.config_write_line(config_file, "my_section", "") + weechat.config_write_option(config_file, option) + return weechat.WEECHAT_RC_OK +---- + +==== weechat_config_write_line + +Scrive una riga nel file di configurazione (questa funzione dovrebbe +essere chiamata solo nelle callback "write" o "write_default" per una +sezione). + +Prototipo: + +[source,C] +---- +void weechat_config_write_line (struct t_config_file *config_file, + const char *option_name, + const char *value, ...); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione +* 'option_name': nome dell'opzione +* 'value': valore (se NULL, allora la riga con il nome della sezione viene + scritto, ad esempio: "[section]") + +Esempio in C: + +[source,C] +---- +int +my_section_write_cb (void *data, struct t_config_file *config_file, + const char *section_name) +{ + weechat_config_write_line (config_file, "my_section", NULL); + + weechat_config_write_line (config_file, "option", "%s;%d", + "value", 123); + + return WEECHAT_RC_OK; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_write_line(config_file, option_name, value) + +# esempio +def my_section_write_cb(data, config_file, section_name): + weechat.config_write_line(config_file, "my_section", "") + weechat.config_write_line(config_file, "option", "value") + return weechat.WEECHAT_RC_OK +---- + +==== weechat_config_write + +Scrive il file di configurazione su disco. + +Prototipo: + +[source,C] +---- +int weechat_config_write (struct t_config_file *config_file); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione + +Valore restituito: + +* 'WEECHAT_CONFIG_WRITE_OK' se la configurazione è stata scritta +* 'WEECHAT_CONFIG_WRITE_MEMORY_ERROR' se non c'è memoria sufficiente +* 'WEECHAT_CONFIG_WRITE_ERROR' se si è verificato un altro errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_write (config_file)) +{ + case WEECHAT_CONFIG_WRITE_OK: + /* ... */ + break; + case WEECHAT_CONFIG_WRITE_MEMORY_ERROR: + /* ... */ + break; + case WEECHAT_CONFIG_WRITE_ERROR: + /* ... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_write(config_file) + +# esempio +rc = weechat.config_write(config_file) +if rc == weechat.WEECHAT_CONFIG_WRITE_OK: + # ... +elif rc == weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR: + # ... +elif rc == weechat.WEECHAT_CONFIG_WRITE_ERROR: + # ... +---- + +==== weechat_config_read + +Legge il file di configurazione da disco. + +Prototipo: + +[source,C] +---- +int weechat_config_read (struct t_config_file *config_file); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione + +Valore restituito: + +* 'WEECHAT_CONFIG_READ_OK' se la configurazione è stata caricata +* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' se non c'è memoria sufficiente +* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' se il file non è stato trovato + +Esempio in C: + +[source,C] +---- +switch (weechat_config_read (config_file)) +{ + case WEECHAT_CONFIG_READ_OK: + /* ... */ + break; + case WEECHAT_CONFIG_READ_MEMORY_ERROR: + /* ... */ + break; + case WEECHAT_CONFIG_READ_FILE_NOT_FOUND: + /* ... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_read(config_file) + +# esempio +rc = weechat.config_read(config_file) +if rc == weechat.WEECHAT_CONFIG_READ_OK: + # ... +elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR: + # ... +elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND: + # ... +---- + +==== weechat_config_reload + +Ricarica il file di configurazione da disco. + +Prototipo: + +[source,C] +---- +int weechat_config_reload (struct t_config_file *config_file); +---- + +Argomenti: + +* 'config_file': configuration file pointer + +Valore restituito: + +* 'WEECHAT_CONFIG_READ_OK' se il file di configurazione è stato ricaricato +* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' se non c'è memoria sufficiente +* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' se il file non è stato trovato + +Esempio in C: + +[source,C] +---- +switch (weechat_config_reload (config_file)) +{ + case WEECHAT_CONFIG_READ_OK: + /* ... */ + break; + case WEECHAT_CONFIG_READ_MEMORY_ERROR: + /* ... */ + break; + case WEECHAT_CONFIG_READ_FILE_NOT_FOUND: + /* ... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_reload(config_file) + +# esempio +rc = weechat.config_reload(config_file) +if rc == weechat.WEECHAT_CONFIG_READ_OK: + # ... +elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR: + # ... +elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND: + # ... +---- + +==== weechat_config_option_free + +Libera un'opzione. + +Prototipo: + +[source,C] +---- +void weechat_config_option_free (struct t_config_option *option); +---- + +Argomenti: + +* 'option': puntatore all'opzione + +Esempio in C: + +[source,C] +---- +weechat_config_option_free (option); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_option_free(option) + +# esempio +weechat.config_option_free(option) +---- + +==== weechat_config_section_free_options + +Libera tutte le opzioni in una sessione. + +Prototipo: + +[source,C] +---- +void weechat_config_section_free_options (struct t_config_section *section); +---- + +Argomenti: + +* 'section': puntatore alla sezione + +Esempio in C: + +[source,C] +---- +weechat_config_section_free_options (section); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_section_free_options(section) + +# esempio +weechat.config_section_free_options(section) +---- + +==== weechat_config_section_free + +Libera una sezione. + +Prototipo: + +[source,C] +---- +void weechat_config_section_free (struct t_config_section *section); +---- + +Argomenti: + +* 'section': puntatore alla sezione + +Esempio in C: + +[source,C] +---- +weechat_config_section_free (section); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_section_free(section) + +# esempio +weechat.config_section_free(section) +---- + +==== weechat_config_free + +Libera un file di configurazione. + +Prototipo: + +[source,C] +---- +void weechat_config_free (struct t_config_file *config_file); +---- + +Argomenti: + +* 'config_file': puntatore al file di configurazione + +Esempio in C: + +[source,C] +---- +weechat_config_free (config_file); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_free(config_file) + +# esempio +weechat.config_free(config_file) +---- + +==== weechat_config_get + +Cerca un'opzione con il nome completo. + +Prototipo: + +[source,C] +---- +struct t_config_option *weechat_config_get (const char *option_name); +---- + +Argomenti: + +* 'option_name': nome completo dell'opzione (formato: "file.section.option") + +Valore restituito: + +* puntatore all'opzione trovata, NULL se non trovata + +Esempio in C: + +[source,C] +---- +struct t_config_option *option = weechat_config_get ("weechat.look.item_time_format"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +option = weechat.config_get(option_name) + +# esempio +option = weechat.config_get("weechat.look.item_time_format") +---- + +==== weechat_config_get_plugin + +Cerca un'opzione nei file di configurazione dei plugin (plugins.conf). + +Prototipo: + +[source,C] +---- +const char *weechat_config_get_plugin (const char *option_name); +---- + +Argomenti: + +* 'option_name': nome dell'opzione, WeeChat aggiungerà il prefisso + "plugins.var.xxx." (dove "xxx" è il nome del plugin corrente) + +Valore restituito: + +* valore dell'opzione trovata, NULL se non trovata + +Esempio in C: + +[source,C] +---- +/* se il plugin corrente è "test", allora cerca il valore + dell'opzione "plugins.var.test.option" nel file plugins.conf */ +char *value = weechat_config_get_plugin ("option"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_get_plugin(option_name) + +# esempio +value = weechat.config_get_plugin("option") +---- + +==== weechat_config_is_set_plugin + +Verifica se un'opzione è impostata nel file di configurazione dei +plugin (plugins.conf). + +Prototipo: + +[source,C] +---- +int weechat_config_is_set_plugin (const char *option_name); +---- + +Argomenti: + +* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx." + (dove "xxx" è il nome del plugin corrente) + +Valore restituito: + +* 1 se l'opzione è impostata, 0 se l'opzione non esiste + +Esempio in C: + +[source,C] +---- +if (weechat_config_is_set_plugin ("option")) +{ + /* l'opzione è impostata */ +} +else +{ + /* l'opzione non esiste */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.config_is_set_plugin(option_name) + +# esempio +if weechat.config_is_set_plugin("option"): + # l'opzione è impostata + # ... +else: + # l'opzione non esiste + # ... +---- + +==== weechat_config_set_plugin + +Imposta il nuovo valore per l'opzione nel file di configurazione dei plugin (plugins.conf). + +Prototipo: + +[source,C] +---- +int weechat_config_set_plugin (const char *option_name, const char *value); +---- + +Argomenti: + +* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx." + (dove "xxx" è il nome del plugin corrente) +* 'value': new value for option + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è stato modificato +* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato +* 'WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND' se l'opzione non è stata trovata +* 'WEECHAT_CONFIG_OPTION_SET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_set_plugin ("option", "test_value")) +{ + case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_SET_ERROR: + /* ... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_set_plugin(option_name, value) + +# esempio +rc = weechat.config_set_plugin("option", "test_value") +if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR: + # ... +---- + +==== weechat_config_set_desc_plugin + +_WeeChat ≥ 0.3.5._ + +Imposta la descrizione per l'opzione nel file di configurazione dei plugin +(plugins.conf). + +Prototipo: + +[source,C] +---- +void weechat_config_set_desc_plugin (const char *option_name, + const char *description); +---- + +Argomenti: + +* 'option_name': nome dell'opzione, WeeChat aggiungerà il prefisso "plugins.desc.xxx." + (dove "xxx" è il nome del plugin corrente) +* 'description': descrizione per l'opzione + +[NOTE] +Non è un problema se l'opzione (plugins.var.xx.option_name) non esiste. +Una futura creazione dell'opzione con questo nome userà questa descrizione. + +Esempio in C: + +[source,C] +---- +weechat_config_set_desc_plugin ("option", "description of option"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.config_set_desc_plugin(option_name, description) + +# esempio +version = weechat.info_get("version_number", "") or 0 +if int(version) >= 0x00030500: + weechat.config_set_desc_plugin("option", "description of option") +---- + +==== weechat_config_unset_plugin + +Disattiva l'opzione nel file di configurazione dei plugin (plugins.conf). + +Prototipo: + +[source,C] +---- +int weechat_config_unset_plugin (const char *option_name); +---- + +Argomenti: + +* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx." + (dove xxx è il nome del plugin corrente) + +Valore restituito: + +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' se il valore dell'opzione non è + stato resettato +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' se il valore dell'opzione è stato + resettato +* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' se l'opzione è stata rimossa +* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' in caso di errore + +Esempio in C: + +[source,C] +---- +switch (weechat_config_unset_plugin ("option")) +{ + case WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: + /* ... */ + break; + case WEECHAT_CONFIG_OPTION_UNSET_ERROR: + /* ... */ + break; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.config_unset_plugin(option_name) + +# esempio +rc = weechat.config_unset_plugin("option") +if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED: + # ... +elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR: + # ... +---- + +[[key_bindings]] +=== Combinazione tasti + +Funzioni per le combinazioni dei tasti. + +==== weechat_key_bind + +_WeeChat ≥ 0.3.6._ + +Aggiunge una nuova combinazione tasto. + +[NOTE] +A differenza del comando `/key bind`, questa funzione non cambia mai una +combinazione tasti esistente, ma ne vengono create di nuove. Per rimuovere +una combinazione tasti, usare <<_weechat_key_unbind,weechat_key_unbind>>. + +Prototipo: + +[source,C] +---- +int weechat_key_bind (const char *context, struct t_hashtable *keys); +---- + +Argomenti: + +* 'context': contesto per i tasti: +** 'default': contesto default (azioni comuni) +** 'search': contesto search (quando si cerca testo nel buffer) +** 'cursor': movimento libero del cursore sullo schermo +** 'mouse': tasti per gli eventi del mouse +* 'keys': tabella hash con le combinazioni dei tasti + +Valore restituito: + +* numero delle combinazioni tasti aggiunte + +Esempio in C: + +[source,C] +---- +struct t_hashtable *keys = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (keys) +{ + weechat_hashtable_set (keys, "@chat(plugin.buffer):button1", "hsignal:test_mouse"); + weechat_hashtable_set (keys, "@chat(plugin.buffer):wheelup", "/mycommand up"); + weechat_hashtable_set (keys, "@chat(plugin.buffer):wheeldown", "/mycommand down"); + weechat_key_bind ("mouse", keys); + weechat_hashtable_free (keys); +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +num_keys = weechat.key_bind(context, keys) + +# esempio +keys = { "@chat(python.test):button1": "hsignal:test_mouse", + "@chat(python.test):wheelup": "/mycommand up", + "@chat(python.test):wheeldown": "/mycommand down" } +weechat.key_bind("mouse", keys) +---- + +==== weechat_key_unbind + +_WeeChat ≥ 0.3.6._ + +Rimuove una o più associazioni tasti. + +[WARNING] +Alla chiamata di questa funzione, assicurarsi che non venga rimossa una +combinazione tasti definita dall'utente. + +Prototipo: + +[source,C] +---- +int weechat_key_unbind (const char *context, const char *key); +---- + +Argomenti: + +* 'context': contesto per i tasti (consultare <<_weechat_key_bind,weechat_key_bind>>) +* 'key': tasto da rimuovere o un valore speciale "area:XXX" per rimuovere tutti + i tasti che hanno 'XXX' come prima o seconda area + +Valore restituito: + +* numero di combinazioni tasti rimosse + +Esempio in C: + +[source,C] +---- +/* rimuove un singolo tasto */ +weechat_key_unbind ("mouse", "@chat(plugin.buffer):button1"); + +/* rimuove tutti i tasti con la zona "chat(plugin.buffer)" */ +weechat_key_unbind ("mouse", "area:chat(plugin.buffer)"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +num_keys = weechat.key_unbind(context, key) + +# esempi + +# rimuove un singolo tasto +weechat.key_unbind("mouse", "@chat(plugin.buffer):button1") + +# rimuove tutti i tasti con la zona "chat(python.test)" +weechat.key_unbind("mouse", "area:chat(python.test)") +---- + +[[display]] +=== Visualizzazione + +Funzioni per visualizzare il testo nei buffer. + +==== weechat_prefix + +Restituisce un prefisso. + +Prototipo: + +[source,C] +---- +const char *weechat_prefix (const char *prefix); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'prefix': nome del prefisso, see table below + +Valore restituito: + +* valore del prefisso (stringa con prefisso e codici colori), stringa vuota + se il prefisso non è stato trovato + +// TRANSLATION MISSING +List of prefixes: + +[width="70%",cols="^2e,^1,^3,5",options="header"] +|=== +| Prefisso | Valore | Colore | Descrizione +| error | `=!=` | giallo | Messaggio di errore +| network | `--` | magenta | Messaggio dalla rete +| action | `*` | bianco | Azione automatica +| join | `-->` | verde chiaro | Qualcuno entra nella chat corrente +| quit | `<--` | rosso chiaro | Qualcuno lascia la chat corrente +|=== + +[NOTE] +Valori e colori possono essere personalizzati con il comando `/set`. + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "%sQuesto è un errore...", weechat_prefix ("error")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.prefix(prefix) + +# esempio +weechat.prnt("", "%sQuesto è un errore..." % weechat.prefix("error")) +---- + +==== weechat_color + +Restituisce una codice colore stringa da visualizzare. + +Prototipo: + +[source,C] +---- +const char *weechat_color (const char *color_name); +---- + +Argomenti: + +* 'color_name': nome del colore, uno di: +** nome opzione di WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters' +** colore con attributi/sfondo opzionali (vedi sotto) +** attributo: +*** 'bold': imposta grassetto +*** '-bold': rimuove grassetto +*** 'reverse': imposta inverso +*** '-reverse': rimuove inverso +*** 'italic': imposta corsivo +*** '-italic': rimuove corsivo +*** 'underline': imposta sottolineato +*** '-underline': rimuove sottolineato +// TRANSLATION MISSING +*** 'emphasis': toggle the emphasis for text (note: this should be used only in + bars, because WeeChat uses text emphasis when searching text in buffer) + _(WeeChat ≥ 0.4.2)_ +** nome colore della barra: +*** 'bar_fg': colore di primo piano della barra +*** 'bar_delim': colore dei delimitatori della barra +*** 'bar_bg': colore di sfondo della barra +** reset: +*** 'reset': ripristina colore ed attributi +*** 'resetcolor': ripristina colore (mantiene attributi) _(WeeChat ≥ 0.3.6)_ + +Il formato del colore è: attributi (opzionale) + nome colore +",sfondo" +(opzionale). Gli attributi possibili sono: + +* `*` : testo in grassetto +* `!` : video inverso +* `/` : corsivo +* `_` : testo sottolineato +* `|` : mantiene attributi: non ripristina + grassetto/inverso/corsivo/sottolineato al cambio di colore _(WeeChat ≥ 0.3.6)_ + +Esempi: + +* `yellow` : giallo +* `_green` : verde sottolineato +* `*214` : arancione grassetto +* `yellow,red` : giallo su rosso +* `|cyan` : ciano (e mantiene qualsiasi attributo impostato in precedenza) + +Valore restituito: + +* stringa con il codice colore, o una stringa vuota se non trovata + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "Color: %sblue %sdefault color %syellow on red", + weechat_color ("blue"), + weechat_color ("chat"), + weechat_color ("yellow,red")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.color(color_name) + +# esempio +weechat.prnt("", "Color: %sblue %sdefault color %syellow on red" + % (weechat.color("blue"), weechat.color("chat"), weechat.color("yellow,red"))) +---- + +==== weechat_printf + +Visualizza un messaggio su un buffer. + +Prototipo: + +[source,C] +---- +void weechat_printf (struct t_gui_buffer *buffer, const char *message, ...); +---- + +Argomenti: + +* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato sul buffer di WeeChat +* 'message': messaggio da visualizzare + +[NOTE] +La prima tabulazione nel messaggio ("\t") è usata per separare il prefisso dal messaggio. + +Se il proprio messaggio ha alcune tabulazioni e non si vuole il prefisso, allora +bisogna utilizzare uno spazio, una tabulazione, poi il messaggio (consultare +l'esempio successivo): ciò disabilita il prefisso (lo spazio prima della +tabulazione non verrà mostrato). + +// TRANSLATION MISSING +[NOTE] +With two tabs ("\t") at beginning of message, time will not be displayed and +message will have no alignment at all. Moreover, the date in message will be +set to 0. + +Esempio in C: + +// TRANSLATION MISSING +[source,C] +---- +weechat_printf (NULL, "Benvenuto sul buffer di WeeChat"); +weechat_printf (buffer, "Benvenuto su questo buffer"); +weechat_printf (buffer, "%sQuesto è un errore!", weechat_prefix ("error")); +weechat_printf (buffer, " \tMessaggio senza prefisso ma con \t alcune \t tabulazioni"); +weechat_printf (buffer, "\t\tMessage without time/alignment"); +weechat_printf (buffer, "\t\t"); /* empty line (without time) */ +---- + +Script (Python): + +// TRANSLATION MISSING +[source,python] +---- +# prototipo +weechat.prnt(buffer, message) + +# esempio +weechat.prnt("", "Benvenuto sul buffer di WeeChat") +weechat.prnt(buffer, "Benvenuto su questo buffer") +weechat.prnt(buffer, "%sQuesto è un errore!" % weechat.prefix("error")) +weechat.prnt(buffer, " \tMessaggio senza prefisso ma con \t alcune \t tabulazioni") +weechat.prnt(buffer, "\t\tMessage without time/alignment") +weechat.prnt(buffer, "\t\t") # empty line (without time) +---- + +[NOTE] +La funzione è chiamata "print" negli script ("prnt" in Python). + +==== weechat_printf_date + +Visualizza un messaggio sul buffer, utilizzando una data personalizzata. + +Prototipo: + +[source,C] +---- +void weechat_printf_date (struct t_gui_buffer *buffer, time_t date, + const char *message, ...); +---- + +Argomenti: + +* 'buffer': puntatore al buffer, se NULL, il messaggio viene visualizzato + sul buffer di WeeChat +* 'date': data per il messaggio (0 indica data/ora corrente) +* 'message': messaggio da visualizzare + +Esempio in C: + +[source,C] +---- +weechat_printf_date (NULL, time (NULL) - 120, "Ciao, 2 minuti fa"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_printf_tags + +Visualizza un messaggio sul buffer, utilizzando tag personalizzati. + +Prototipo: + +[source,C] +---- +void weechat_printf_tags (struct t_gui_buffer *buffer, const char *tags, + const char *message, ...); +---- + +Argomenti: + +* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato + sul buffer di WeeChat +* 'tags': lista di tag separati da virgole +* 'message': messaggio da visualizzare + +Esempio in C: + +[source,C] +---- +weechat_printf_tags (NULL, "notify_message", + "Messaggio con tag 'notify_message'"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_printf_date_tags + +Visualizza un messaggio sul buffer, usando tag e data personalizzati. + +Prototipo: + +[source,C] +---- +void weechat_printf_date_tags (struct t_gui_buffer *buffer, time_t date, + const char *tags, const char *message, ...); +---- + +Argomenti: + +* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato + sul buffer di WeeChat +* 'date': data per il messaggio (0 indica data/ora corrente) +* 'tags': lista di tag separati da virgole +* 'message': messaggio da visualizzare + +Tag usati di frequente (elenco non esaustivo): + +[width="70%",cols="1m,4",options="header"] +|=== +| Tag | Descrizione +| no_filter | La riga non può essere filtrata +| no_highlight | Evidenziazione non possibile sulla riga +| no_log | La riga non viene scritta nel file di log +| log0 ... log9 | Livello di log per la riga (consultare `/help logger`) +| notify_none | Il buffer con la riga non viene aggiunto alla hotlist +| notify_message | Il buffer con la riga viene aggiunto alla hotlist con il livello "message" +| notify_private | Il buffer con la riga viene aggiunto alla hotlist con il livello "private" +| notify_highlight | Il buffer con la riga viene aggiunto alla hotlist con il livello "higlight" +| nick_xxx | Il messaggio viene dal nick "xxx" +| prefix_nick_ccc | Il prefisso è un nick con il colore "ccc" +| irc_xxx | Messaggio IRC "xxx" (può essere un comando o un numero di 3 cifre) +| irc_numeric | Messaggio IRC numerico +| irc_error | Errore dal server IRC +| irc_action | Azione da un nic (comando `/me`) +| irc_ctcp | Messaggio CTCP +| irc_ctcp_reply | Risposta ad un messaggio CTCP +| irc_smart_filter | Messaggio IRC filtrabile tramite lo "smart filter" (filtro intelligente) +| away_info | Messagio con informazioni sull'assenza +|=== + +Esempio in C: + +[source,C] +---- +weechat_printf_date_tags (NULL, time (NULL) - 120, "notify_message", + "Messaggio 2 minuti fa, con tag 'notify_message'"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.prnt_date_tags(buffer, date, tags, message) + +# esempio +time = int(time.time()) +weechat.prnt_date_tags("", time - 120, "notify_message", + "Messaggio 2 minuti fa, con tag 'notify_message'") +---- + +[NOTE] +La funzione è chiamata "print_date_tags" negli script ("prnt_date_tags" in Python). + +==== weechat_printf_y + +Visualizza un messaggio sulla riga di un buffer con contenuto libero. + +Prototipo: + +[source,C] +---- +void weechat_printf_y (struct t_gui_buffer *buffer, int y, + const char *message, ...); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +// TRANSLATION MISSING +* 'y': numero di riga (la prima riga è 0); a negative value adds a line after + last line displayed: absolute value of 'y' is the number of lines after last + line (for example -1 is immediately after last line, -2 is 2 lines after last + line) _(WeeChat ≥ 1.0)_ +* 'message': messaggio da visualizzare + +Esempio in C: + +[source,C] +---- +weechat_printf_y (buffer, 2, "Mio messaggio sulla terza riga"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.prnt_y(buffer, y, message) + +# esempio +weechat.prnt_y("", 2, "Mio messaggio sulla terza riga") +---- + +[NOTE] +La funzione è chiamata "print_y" negli script ("prnt_y in Python). + +==== weechat_log_printf + +Scrive un messaggio nel file di log di WeeChat (weechat.log). + +Prototipo: + +[source,C] +---- +void weechat_log_printf (const char *message, ...); +---- + +Argomenti: + +* 'message': messaggio da scrivere + +Esempio in C: + +[source,C] +---- +weechat_log_printf ("Mio messaggio nel file di log"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.log_print(message) + +# esempio +weechat.log_print("Mio messaggio nel file di log") +---- + +[NOTE] +La funzione è chiamata "log_print" negli script. + +[[hooks]] +=== Hook + +[[hook_priority]] +[float] +==== Priorità degli hook + +_WeeChat ≥ 0.3.4._ + +In alcuni hook è possibile impostare una priorità. Un hook con priorità +maggiore si trova all'inizio della lista, in modo da poter essere eseguita +prima di altri. Può risultare utile per i modificatori, data l'importanza +nell'ordine di esecuzione. + +Per impostare la priorità, è necessario usare questa sintassi per gli +argomenti dove è consentita la priorità: "nnn|nome" dove "nnn" è un intero non +negativo con la priorità e "nome" è il nome per l'argomenti (la priorità non +compare nel nome, viene rimossa automaticamente dalla stringa). + +La priorità predefinita è 1000. + +Esempio in C: + +[source,C] +---- +/* hook per il modificatore con priorità = 2000 */ +weechat_hook_modifier ("2000|input_text_display", &modifier_cb, NULL); +---- + +I tipi di hook che seguono consentono la priorità: command, command_run, +signal, hsignal, config, completion, modifier, info, info_hashtable, infolist, +hdata, focus. + +==== weechat_hook_command + +Hook su un comando. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_command (const char *command, + const char *description, + const char *args, + const char *args_description, + const char *completion, + int (*callback)(void *data, + struct t_gui_buffer *buffer, + int argc, + char **argv, + char **argv_eol), + void *callback_data); +---- + +Argomenti: + +* 'command': nome del comando + (priorità consentita, consultare la nota riguardo la <<hook_priority,priority>>) +* 'description': descrizione per il comando (visualizzata con `/help comando`) +* 'args': argomenti per il comando (visualizzati con `/help command`) +* 'args_description': descrizione degli argomenti (visualizzata con `/help command`) +* 'completion': modello di completamento per il comando:: elenco di completamenti + per ogni argomento, separati da spazio. Sono possibili più completamenti sono + possibili per un singolo argomento, separati da "|". Più modelli sono possibili per + lo stesso comando, separati da "||". +* 'callback': funzione chiamata quando viene utilizzato il comando, argomenti e + valore restituito: +** 'void *data': puntatore +** 'struct t_gui_buffer *buffer': buffer quando il comando viene eseguito +** 'int argc': numero di argomenti forniti per un comando +** 'char **argv': argomenti forniti per un comando +** 'char **argv_eol': argomenti forniti per un comando (fino a fine riga per ogni + argomento) +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito dalla callback quando chiamata da WeeChat + +I codici predefiniti per il completamento sono: + +include::autogen/plugin_api/completions.asciidoc[] + +Codici speciali: + +* '%%command': riutilizza il modello di completamento dal comando 'command' +* '%-': ferma completamento +* '%*': ripete l'ultimo completamento + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_command_cb (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +/* questo esempio si ispira al comando /filter */ +struct t_hook *my_command_hook = + weechat_hook_command (/* nome comando */ + "myfilter", + /* description */ + "description of myfilter", + /* args */ + "[list] | [enable|disable|toggle [name]] | " + "[add name plugin.buffer tags regex] | " + "[del name|-all]", + /* args description */ + "description of arguments...", + /* completion */ + "list" + " || enable %(filters_names)" + " || disable %(filters_names)" + " || toggle %(filters_names)" + " || add %(filters_names) %(buffers_plugins_names)|*" + " || del %(filters_names)|-all", + /* callback */ + &my_command_cb, + /* callback_data */ + NULL); +---- + +Ad esempio, se il comando chiamato è `/comando abc def ghi`, allora +'argv' e 'argv_eol' contengono i seguenti valori: + +* 'argv': +** 'argv[0]' == "/command" +** 'argv[1]' == "abc" +** 'argv[2]' == "def" +** 'argv[3]' == "ghi" +* 'argv_eol': +** 'argv_eol[0]' == "/command abc def ghi" +** 'argv_eol[1]' == "abc def ghi" +** 'argv_eol[2]' == "def ghi" +** 'argv_eol[3]' == "ghi" + +Per gli script, 'args' ha valore "abc def ghi". + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_command(command, description, args, args_description, + completion, callback, callback_data) + +# esempio +def my_command_cb(data, buffer, args): + # ... + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_command("myfilter", "descrizione di myfilter", + "[list] | [enable|disable|toggle [name]] | " + "[add name plugin.buffer tags regex] | " + "[del name|-all]", + "description of arguments...", + "list" + " || enable %(filters_names)" + " || disable %(filters_names)" + " || toggle %(filters_names)" + " || add %(filters_names) %(buffers_plugins_names)|*" + " || del %(filters_names)|-all", + "my_command_cb", "") +---- + +==== weechat_hook_command_run + +Hook su un comando quando eseguito da WeeChat. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_command_run (const char *command, + int (*callback)(void *data, + struct t_gui_buffer *buffer, + const char *command), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'command': comando su cui eseguire l'hook (wildcard "*" is allowed) + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>) +* 'callback': funzione chiamata quando il comando è in esecuzione, argomenti e + valore restituito: +** 'void *data': puntatore +** 'struct t_gui_buffer *buffer': buffer dove viene eseguito il comando +** 'const char *command': il comando eseguito, con i propri argomenti +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_OK_EAT' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +[NOTE] +La callback può restituire 'WEECHAT_RC_OK' o 'WEECHAT_RC_OK_EAT' (il comando +non verrà eseguito da WeeChat dopo la callback). + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_command_run_cb (void *data, struct t_gui_buffer *buffer, + const char *command) +{ + weechat_printf (NULL, + "Vuoi completare? Sto mangiando il completamento, ahah!); + return WEECHAT_RC_OK_EAT; +} + +struct t_hook *my_command_run_hook = + weechat_hook_command_run ("/input complete*", + &my_command_run_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_command_run(command, callback, callback_data) + +# esempio +def my_command_run_cb(data, buffer, command): + weechat.prnt("". "Vuoi completare? Sto mangiando il completamento, ahah!") + return weechat.WEECHAT_RC_OK_EAT + +hook = weechat.hook_command_run("/input complete*", "my_command_run_cb", "") +---- + +==== weechat_hook_timer + +Hook sul timer. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_timer (long interval, + int align_second, + int max_calls, + int (*callback)(void *data, + int remaining_calls), + void *callback_data); +---- + +Argomenti: + +* 'interval': intervallo tra due chiamate (millisecondi, 1000 = 1 secondo) +// TRANSLATION MISSING +* 'align_second': allineamento su un secondo. Per esempio, rrent time is 09:00, + if interval = 60000 (60 seconds), and align_second = 60, then timer is + called each minute when second is 0 +// TRANSLATION MISSING +* 'max_calls': number of calls to timer (if 0, then timer has no end) +// TRANSLATION MISSING +* 'callback': function called when time is reached, argomenti e valore + restituito: +** 'void *data': pointer +** 'int remaining_calls': remaining calls (-1 if timer has no end) +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': pointer given to callback when it is called by WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_timer_cb (void *data, int remaining_calls) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +/* timer chiamato ogni 20 secondi */ +struct t_hook *my_timer_hook = + weechat_hook_timer (20 * 1000, 0, 0, &my_timer_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_timer(interval, align_second, max_calls, callback, callback_data) + +# esempio +def my_timer_cb(data, remaining_calls): + # ... + return weechat.WEECHAT_RC_OK + +# timer chiamato ogni 20 secondi +hook = weechat.hook_timer(20 * 1000, 0, 0, "my_timer_cb", "") +---- + +==== weechat_hook_fd + +Hook su un descrittore file (file oppure socket). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_fd (int fd, + int flag_read, + int flag_write, + int flag_exception, + int (*callback)(void *data, + int fd), + void *callback_data); +---- + +Argomenti: + +* 'fd': descrittore file +* 'flag_read': 1 = cattura l'evento lettura (read), 0 = ignora +* 'flag_write': 1 = cattura l'evento scrittura (write), 0 = ignora +* 'flag_exception': 1 = cattura l'eccezione evento (event), 0 = ignora +* 'callback': funzione che chiama un evento selezionato che si verifica + per un file (o un socket), argomenti e valore restituito: +** 'void *data': puntatore +** 'int fd': descrittore file +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla calback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_fd_cb (void *data, int fd) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +int sock = socket (AF_INET, SOCK_STREAM, 0); +/* imposta le opzioni del socket */ +/* ... */ +struct t_hook *my_fd_hook = weechat_hook_fd (sock, 1, 0, 0, &my_fd_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_fd(fd, flag_read, flag_write, flag_exception, callback, callback_data) + +# esempio +def my_fd_cb(data, fd): + # ... + return weechat.WEECHAT_RC_OK + +sock = ... +hook = weechat.hook_fd(sock, 1, 0, 0, "my_fd_cb", "") +---- + +==== weechat_hook_process + +Hook su un processo (lanciato con un fork), e cattura l'output. + +[NOTE] +// TRANSLATION MISSING +Since version 0.3.9.2, the shell is not used any more to execute the command. +WeeChat makes an automatic split of command and arguments (like the shell does). +If the split is not correct (according to quotes in your command), or if you +want to use shell, you can use function +<<_weechat_hook_process_hashtable,weechat_hook_process_hashtable>> with +arguments in the hashtable 'options' _(WeeChat ≥ 0.4.0)_. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_process (const char *command, + int timeout, + int (*callback)(void *data, + const char *command, + int return_code, + const char *out, + const char *err), + void *callback_data); +---- + + +Argomenti: + +* 'command': comando da avviare nel processo figlio o URL + _(WeeChat ≥ 0.3.7)_, segue: +* 'timeout': timeout per il comando (in millisecondi): dopo questo timeout, + il processo figlio viene terminato (0 indica nessun timeout) +* 'callback': funzione chiamata quando i dati dal processo figlio sono disponibili, + oppure quando è terminato, argomenti e valore restituito: +** 'void *data': puntatore +** 'const char *command': comando eseguito dal processo figlio +** 'int return_code': codice restituito: +*** '>= 0': codice ritorno figlio per un comando, e per un URL i valori + possibili sono: +**** '0': trasferimento riuscito +**** '1': URL non valido +**** '2': errore di trasferimento +**** '3': memoria non sufficiente +**** '4': errore con un file +*** '< 0': 'WEECHAT_HOOK_PROCESS_RUNNING' (dati disponibili, ma figlio + ancora in esecuzione) o 'WEECHAT_HOOK_PROCESS_ERROR' (errore nella + esecuzione del comando) +** 'out': output standard del comando (stdout) +** 'err': output di errore del comando (stderr) +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Quando il comando ha terminato, o se viene raggiunto il timeout, WeeChat +effettua automaticamente l'unhook (e termina il processo se ancora in esecuzione). + +Il comando può essere un URL con il formato: "url:http://www.esempio.com", per +scaricare il contenuto dell'URL _(WeeChat ≥ 0.3.7)_. Le opzioni per +un URL sono disponibili con la funzione +<<_weechat_hook_process_hashtable,weechat_hook_process_hashtable>>. + +// TRANSLATION MISSING +[TIP] +If you want to retrieve infos about WeeChat (like current stable version, +latest git commit, ...), you can use URLs on page http://weechat.org/dev/info + +[NOTE] +La dimensione del buffer per l'invio dei dati alla callback è di 64KB (ci sono +2 buffer: uno per stdout ed uno per stderr). +Se l'output che viene da un processo figlio (stdout o stderr) è più lungo di +64KB, la callback verrà chiamata più di una volta. + +[IMPORTANT] +Anche se la maggior parte delle volte la callback viene chiamata una sola volta, +ci si deve assicurare che più chiamate alla callback siano corrette nel codice: +bisogna concatenare i dati forniti da più chiamate ed utilizzarli quando il +codice restituito è non-negativo. + +Esempio in C: + +[source,C] +---- +int +my_process_cb (void *data, const char *command, int return_code, + const char *out, const char *err) +{ + if (return_code == WEECHAT_HOOK_PROCESS_ERROR) + { + weechat_printf (NULL, "Errore con il comando '%s'", command); + return WEECHAT_RC_OK; + } + + if (return_code >= 0) + { + weechat_printf (NULL, "return_code = %d", return_code); + } + + if (out) + { + weechat_printf (NULL, "stdout: %s", out); + } + + if (err) + { + weechat_printf (NULL, "stderr: %s", err); + } + + return WEECHAT_RC_OK; +} + +struct t_hook *my_process_hook = weechat_hook_process ("ls", 5000, + &my_process_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_process(command, timeout, callback, callback_data) + +# esempio +def my_process_cb(data, command, return_code, out, err): + if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR: + weechat.prnt("", "Error with command '%s'" % command) + return weechat.WEECHAT_RC_OK + if return_code >= 0: + weechat.prnt("", "return_code = %d" % return_code) + if out != "": + weechat.prnt("", "stdout: %s" % out) + if err != "": + weechat.prnt("", "stderr: %s" % err) + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_process("ls", 5000, "my_process_cb", "") +---- + +==== weechat_hook_process_hashtable + +_WeeChat ≥ 0.3.7._ + +Hook su un processo (avviato con un fork) usando le opzioni nella tabella hash, +e cattura dell'output. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_process_hashtable (const char *command, + struct t_hashtable *options, + int timeout, + int (*callback)(void *data, + const char *command, + int return_code, + const char *out, + const char *err), + void *callback_data); +---- + +Gli argomenti sono gli stessi della funzione +<<_weechat_hook_process,weechat_hook_process>>, con un argomento aggiuntivo: + +* 'options': le opzioni per il comando eseguito; la tabella hash è duplicata + nella funzione, per cui è possibile liberarla dopo questa chiamata + +// TRANSLATION MISSING +For a standard command (not beginning with "url:"), following options are +available: + +// TRANSLATION MISSING +[width="100%",cols="^1,1,3",options="header"] +|=== +| Option | Value | Description + +// TRANSLATION MISSING +| argN (N ≥ 1) + + _(WeeChat ≥ 0.4.0)_ | + any string | + Arguments for command; if no argument is given with these options, + the command is automatically split like the shell does (and then command + arguments are read in the 'command' argument) + +// TRANSLATION MISSING +| stdin + + _(WeeChat ≥ 0.4.3)_ | + (not used) | + Create a pipe for writing data on standard input (stdin) of child process + (see function <<_weechat_hook_set,weechat_hook_set>>) + +// TRANSLATION MISSING +| buffer_flush + + _(WeeChat ≥ 1.0)_ | + number of bytes | + Minimum number of bytes to flush stdout/stderr (to send output to callback), + between 1 and 65536 (default); 1 = send any output immediately to the callback + +// TRANSLATION MISSING +| detached + + _(WeeChat ≥ 1.0)_ | + (not used) | + Run the process in a detached mode: stdout and stderr are redirected to + '/dev/null' +|=== + +Per il comando "url:..." sono disponibili le seguenti opzioni (consultare +`man curl_easy_setopt` per la descrizione di ogni opzione): + +include::autogen/plugin_api/url_options.asciidoc[] + +[NOTE] +^(1)^ Quando sono disponibili le costanti, esse vanno usate come valore per +l'opzione. Per le opzioni con il tipo "mask" il formato è: +"value1+value2+value3". + +Per un URL, sono consentite due opzioni aggiuntive (stringhe) per il file in +input/output: + +* 'file_in': file da leggere e inviare con gli URL (invio del file "post") +* 'file_out': scrive URL scaricato/file in questo file (invece dello standard +* output) + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_process_cb (void *data, const char *command, int return_code, + const char *out, const char *err) +{ + if (return_code == WEECHAT_HOOK_PROCESS_ERROR) + { + weechat_printf (NULL, "Error with command '%s'", command); + return WEECHAT_RC_OK; + } + + if (return_code >= 0) + { + weechat_printf (NULL, "return_code = %d", return_code); + } + + if (out) + { + weechat_printf (NULL, "stdout: %s", out); + } + + if (err) + { + weechat_printf (NULL, "stderr: %s", err); + } + + return WEECHAT_RC_OK; +} + +/* example 1: download URL */ +struct t_hashtable *options = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options) +{ + weechat_hashtable_set (options, "file_out", "/tmp/weechat.org.html"); + struct t_hook *my_process_hook = weechat_hook_process_hashtable ("url:http://www.weechat.org/", + options, + 20000, + &my_process_cb, NULL); + weechat_hashtable_free (options); +} + +/* example 2: execute a notify program with a message from someone */ +struct t_hashtable *options_cmd1 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options_cmd1) +{ + weechat_hashtable_set (options_cmd1, "arg1", "-from"); + weechat_hashtable_set (options_cmd1, "arg2", nick); + weechat_hashtable_set (options_cmd1, "arg3", "-msg"); + weechat_hashtable_set (options_cmd1, "arg4", message); /* unsafe argument */ + struct t_hook *my_process_hook = weechat_hook_process_hashtable ("my-notify-command", + options_cmd1, + 20000, + &my_process_cb, NULL); + weechat_hashtable_free (options_cmd1); +} + +/* example 3: call shell to execute a command (command must be SAFE) */ +struct t_hashtable *options_cmd2 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options_cmd2) +{ + weechat_hashtable_set (options_cmd2, "arg1", "-c"); + weechat_hashtable_set (options_cmd2, "arg2", "ls -l /tmp | grep something"); + struct t_hook *my_process_hook = weechat_hook_process_hashtable ("sh", + options_cmd2, + 20000, + &my_process_cb, NULL); + weechat_hashtable_free (options_cmd2); +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_process_hashtable(command, options, timeout, callback, callback_data) + +# esempio +def my_process_cb(data, command, return_code, out, err): + if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR: + weechat.prnt("", "Error with command '%s'" % command) + return weechat.WEECHAT_RC_OK + if return_code >= 0: + weechat.prnt("", "return_code = %d" % return_code) + if out != "": + weechat.prnt("", "stdout: %s" % out) + if err != "": + weechat.prnt("", "stderr: %s" % err) + return weechat.WEECHAT_RC_OK + +# example 1: download URL +hook1 = weechat.hook_process_hashtable("url:http://www.weechat.org/", + { "file_out": "/tmp/weechat.org.html" }, + 20000, "my_process_cb", "") + +# example 2: execute a notify program with a message from someone +hook2 = weechat.hook_process_hashtable("my-notify-command", + { "arg1": "-from", + "arg2": nick, + "arg3": "-msg", + "arg4": message }, # unsafe argument + 20000, "my_process_cb", "") + +# example 3: call shell to execute a command (command must be SAFE) +hook3 = weechat.hook_process_hashtable("sh", + { "arg1": "-c", + "arg2": "ls -l /tmp | grep something" }, + 20000, "my_process_cb", "") +---- + +==== weechat_hook_connect + +Hook su una connessione (connessione in secondo piano ad un host remoto). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_connect (const char *proxy, + const char *address, + int port, + int ipv6, + int retry, + void *gnutls_sess, + void *gnutls_cb, + int gnutls_dhkey_size, + const char *gnutls_priorities, + const char *local_hostname, + int (*callback)(void *data, + int status, + int gnutls_rc, + int sock, + const char *error, + const char *ip_address), + void *callback_data); +---- + +Argomenti: + +* 'proxy': nome del proxy da utilizzare per la connessione (opzionale, + NULL significa connessione senza proxy) +* 'address': nome o indirizzo IP al quale connettersi +* 'port': numero della porta +// TRANSLATION MISSING +* 'ipv6': 1 to use IPv6 (with fallback to IPv4), 0 to use only IPv4 +// TRANSLATION MISSING +* 'retry': retry count, used to fallback to IPv4 hosts if IPv6 hosts connect + but then fail to accept the client +* 'gnutls_sess': sessione GnuTLS (opzionale) +* 'gnutls_cb' callback GnuTLS (opzionale) +* 'gnutls_dhkey_size': dimensione della chiave utilizzata nello Scambio + Chiavi Diffie-Hellman (GnuTLS) +* 'gnutls_priorities': priorità per gnutls (per la sintassi, consultare la + documentazione della funzione 'gnutls_priority_init' nel manuale di gnutls), i + valori di base sono: +** 'PERFORMANCE' +** 'NORMAL' (predefinito) +** 'SECURE128' +** 'SECURE256' +** 'EXPORT' +** 'NONE' +* 'local_hostname': nome host locale da utilizzare per la connessione + (opzionale) +* 'callback': funzione chiamata quando la connessione è avvenuta con + successo oppure no, argomenti e valore restituito: +** 'void *data': puntatore +** 'int status': stato della connessione: +*** 'WEECHAT_HOOK_CONNECT_OK': connessione avvenuta con successo +*** 'WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND': indirizzo non trovato +*** 'WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND': indirizzo IP non trovato +*** 'WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED': connessione rifiutata +*** 'WEECHAT_HOOK_CONNECT_PROXY_ERROR': errore con il proxy +*** 'WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR': errore con il nome host locale +*** 'WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR': errore inizializzazione GnuTLS +*** 'WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR': errore di handshake GnuTLS +*** 'WEECHAT_HOOK_CONNECT_MEMORY_ERROR': memoria insufficiente +*** 'WEECHAT_HOOK_CONNECT_TIMEOUT': timeout +*** 'WEECHAT_HOOK_CONNECT_SOCKET_ERROR': errore nella creazione socket +** 'gnutls_rc': valore del risultato di 'gnutls_handshake()' +** 'sock': socket utilizzato per la connessione +** 'const char *error': valore del risultato di 'gnutls_strerror(gnutls_rc)' +** 'const char *ip_address': indirizzo IP trovato +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_connect_cb (void *data, int status, int gnutls_rc, int sock, + const char *error, const char *ip_address) +{ + switch (status) + { + case WEECHAT_HOOK_CONNECT_OK: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_PROXY_ERROR: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_MEMORY_ERROR: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_TIMEOUT: + /* ... */ + break; + case WEECHAT_HOOK_CONNECT_SOCKET_ERROR: + /* ... */ + break; + } + return WEECHAT_RC_OK; +} + +struct t_hook *my_connect_hook = weechat_hook_connect (NULL, + "my.server.org", 1234, + 1, 0, + NULL, NULL, 0, /* GnuTLS */ + NULL, + &my_connect_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_connect(proxy, address, port, ipv6, retry, local_hostname, + callback, callback_data) + +# esempio +def my_connect_cb(data, status, gnutls_rc, sock, error, ip_address): + if status == WEECHAT_HOOK_CONNECT_OK: + # ... + elif status == WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND: + # ... + elif status == WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND: + # ... + elif status == WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED: + # ... + elif status == WEECHAT_HOOK_CONNECT_PROXY_ERROR: + # ... + elif status == WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR: + # ... + elif status == WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR: + # ... + elif status == WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR: + # ... + elif status == WEECHAT_HOOK_CONNECT_MEMORY_ERROR: + # ... + elif status == WEECHAT_HOOK_CONNECT_TIMEOUT: + # ... + elif status == WEECHAT_HOOK_CONNECT_SOCKET_ERROR: + # ... + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_connect("", "my.server.org", 1234, 1, 0, "", + "my_connect_cb", "") +---- + +==== weechat_hook_print + +// TRANSLATION MISSING +_Updated in 0.4.3 and 1.0._ + +Hook su un messaggio stampato. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_print (struct t_gui_buffer *buffer, + const char *tags, + const char *message, + int strip_colors, + int (*callback)(void *data, + struct t_gui_buffer *buffer, + time_t date, + int tags_count, + const char **tags, + int displayed, + int highlight, + const char *prefix, + const char *message), + void *callback_data); +---- + +Argomenti: + +* 'buffer': puntatore al buffer, se NULL, verranno catturati i messaggi da qualsiasi + buffer +// TRANSLATION MISSING +* 'tags': catch only messages with these tags (optional): +// TRANSLATION MISSING +** with WeeChat ≥ 0.4.3: comma-separated list of tags that must be in message + (logical "or"); it is possible to combine many tags as a logical "and" with + separator "+"; wildcard "*" is allowed in tags +// TRANSLATION MISSING +** with WeeChat ≤ 0.4.2: comma-separated list of tags that must all be in + message (logical "and") +* 'message': verranno catturati solo i messaggi con questa stringa (opzionale, + non sensibile alle maiuscole) +* 'strip_colors': se 1, i colori verranno estratti dal messaggio visualizzato, prima + di chiamare la callback +* 'callback': funzione chiamata quando viene stampato un messaggio, argomenti e + valore restituito: +** 'void *data': puntatore +** 'struct t_gui_buffer *buffer': puntatore al buffer +** 'time_t date': data +** 'int tags_count': numero di tag per riga +** 'const char **tags': array con tag per riga +** 'int displayed': 1 se la riga è visualizzata, 0 se filtrata (nascosta) +** 'int highlight': 1 se la riga viene evidenziata, altrimenti 0 +** 'const char *prefix': prefisso +** 'const char *message': messaggio +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +// TRANSLATION MISSING +[IMPORTANT] +In scripts, with WeeChat ≥ 1.0, the callback arguments 'displayed' and +'highlight' are integers (with WeeChat ≤ 0.4.3, they were strings). + +To be compatible with all versions, it is recommended to convert the argument +to integer before testing it, for example in Python: "`if int(highlight):`". + +Esempio in C: + +[source,C] +---- +int +my_print_cb (void *data, struct t_gui_buffer *buffer, time_t date, + int tags_count, const char **tags, + int displayed, int highlight, + const char *prefix, const char *message) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +/* cattura tutti i messaggi, su tutti i buffer, senza colore */ +struct t_hook *my_print_hook = + weechat_hook_print (NULL, NULL, NULL, 1, &my_print_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_print(buffer, tags, message, strip_colors, callback, callback_data) + +# esempio +def my_print_cb(data, buffer, date, tags, displayed, highlight, prefix, message): + if int(highlight): + # ... + return weechat.WEECHAT_RC_OK + +# cattura tutti i messaggi, su tutti i buffer, senza colore +hook = weechat.hook_print("", "", "", 1, "my_print_cb", "") +---- + +==== weechat_hook_signal + +Hook su un segnale. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_signal (const char *signal, + int (*callback)(void *data, + const char *signal, + const char *type_data, + void *signal_data), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'signal': segnale da catturare, wildcard "*" is allowed + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>), see table below +* 'callback': funzione chiamata a segnale ricevuto, argomenti e valore + restituito: +** 'void *data': puntatore +** 'const char *signal': segnale ricevuto +** 'const char *type_data': tipo di dati inviati con il segnale: +*** 'WEECHAT_HOOK_SIGNAL_STRING': stringa +*** 'WEECHAT_HOOK_SIGNAL_INT': numero intero +*** 'WEECHAT_HOOK_SIGNAL_POINTER': puntatore +** 'void *signal_data': dati inviati con il segnale +** valore restituito: +*** 'WEECHAT_RC_OK' +// TRANSLATION MISSING +*** 'WEECHAT_RC_OK_EAT' (stop sending the signal immediately) + _(WeeChat ≥ 0.4.0)_ +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +// TRANSLATION MISSING +List of signals sent by WeeChat and plugins: + +[width="100%",cols="^1,^3,^4,5",options="header"] +|=== +| Plugin | Segnale | Argomenti | Descrizione + +// TRANSLATION MISSING +| aspell | aspell_suggest + + _(WeeChat ≥ 0.4.0)_ | + Pointer: buffer | + New suggestions for a misspelled word + +// TRANSLATION MISSING +| guile | guile_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Scheme script loaded + +// TRANSLATION MISSING +| guile | guile_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Scheme script unloaded + +// TRANSLATION MISSING +| guile | guile_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Scheme script(s) installed + +// TRANSLATION MISSING +| guile | guile_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Scheme script(s) removed + +| irc | xxx,irc_in_yyy ^(1)^ | + String: messaggio | + Messaggio IRC dal server (prima di essere utilizzato + dal plugin irc, il segnale viene inviato solo se il + messaggio *non* viene ignorato) + +| irc | xxx,irc_in2_yyy ^(1)^ | + String: messaggio | + Messaggio IRC dal server (dopo essere stato + utilizzato dal plugin irc, il segnale viene inviato + solo se il messaggio *non* viene ignorato) + +| irc | xxx,irc_raw_in_yyy ^(1)^ + + _(WeeChat ≥ 0.3.2)_ | + String: messaggio | + Messaggio IRC dal server (prima di essere utilizzato + dal plugin irc, il segnale viene inviato anche se il + messaggio è stato ignorato) + +| irc | xxx,irc_raw_in2_yyy ^(1)^ + + _(WeeChat ≥ 0.3.2)_ | + String: messaggio | + Messaggio IRC dal server (dopo essere stato + utilizzato dal plugin irc, il segnale viene inviato + anche se il messaggio è stato ignorato) + +| irc | xxx,irc_out1_yyy ^(1)^ + + _(WeeChat ≥ 0.3.7)_ | + String: messaggio | + Messaggio IRC inviato al server (prima della divisione automatica da adattare in 512 byte) + +| irc | xxx,irc_out_yyy ^(1)^ | + String: messaggio | + Messaggio IRC inviato al server (dopo la divisione automatica da adattare in 512 byte) + +| irc | xxx,irc_outtags_yyy ^(1)^ + + _(WeeChat ≥ 0.3.4)_ | + Stringa: tag + ";" + messaggio | + Tag + messaggio IRC inviato al server + +| irc | irc_ctcp | + String: messaggio | + CTCP ricevuto + +| irc | irc_dcc | + String: messaggio | + Nuova DCC + +| irc | irc_pv | + String: messaggio | + Messaggio privato ricevuto + +| irc | irc_channel_opened | + Puntatore: buffer | + Canale aperto + +| irc | irc_pv_opened | + Puntatore: buffer | + Chat privata aperta + +| irc | irc_server_opened + + _(WeeChat ≥ 0.3.7)_ | + Puntatore: buffer | + Server del buffer aperto + +| irc | irc_server_connecting | + String: nome server | + Connessione al server + +| irc | irc_server_connected | + String: nome server | + Connesso al server + +| irc | irc_server_disconnected | + String: nome server | + Disconnesso dal server + +| irc | irc_ignore_removing | + Puntatore: ignore | + Rimozione dell'ignore + +| irc | irc_ignore_removed | + - | + Ignore rimosso + +| irc | irc_notify_join + + _(WeeChat ≥ 0.3.8)_ | + String: nome server + "," + nick | + Un nick nella lista notifiche è entrato sul server + +| irc | irc_notify_quit + + _(WeeChat ≥ 0.3.8)_ | + String: nome server + "," + nick | + Un nick nella lista notifiche è uscito dal server + +| irc | irc_notify_away + + _(WeeChat ≥ 0.3.8)_ | + String: nome server + "," + nick + "," + messaggio di assenza | + Un nick nella lista notifiche è ora assente sul server + +| irc | irc_notify_still_away + + _(WeeChat ≥ 0.3.8)_ | + String: nome server + "," + nick + "," + messaggio di assenza | + Un nick nella lista notifiche è ancora assente sul server (messaggio di assenza cambiato) + +| irc | irc_notify_back + + _(WeeChat ≥ 0.3.8)_ | + String: nome server + "," + nick | + Un nick nella lista notifiche è tornato (messaggio di assenza rimosso) + +| logger | logger_start | + Puntatore: buffer | + Avvia il logging per il buffer + +| logger | logger_stop | + Puntatore: buffer | + Ferma il logging per il buffer + +| logger | logger_backlog | + Puntatore: buffer | + Visualizza log precedenti per il buffer + +// TRANSLATION MISSING +| lua | lua_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Lua script loaded + +// TRANSLATION MISSING +| lua | lua_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Lua script unloaded + +// TRANSLATION MISSING +| lua | lua_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Lua script(s) installed + +// TRANSLATION MISSING +| lua | lua_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Lua script(s) removed + +// TRANSLATION MISSING +| perl | perl_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Perl script loaded + +// TRANSLATION MISSING +| perl | perl_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Perl script unloaded + +// TRANSLATION MISSING +| perl | perl_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Perl script(s) installed + +// TRANSLATION MISSING +| perl | perl_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Perl script(s) removed + +// TRANSLATION MISSING +| python | python_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Python script loaded + +// TRANSLATION MISSING +| python | python_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Python script unloaded + +// TRANSLATION MISSING +| python | python_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Python script(s) installed + +// TRANSLATION MISSING +| python | python_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Python script(s) removed + +// TRANSLATION MISSING +| relay | relay_client_connecting + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + A relay client is connecting + +// TRANSLATION MISSING +| relay | relay_client_waiting_auth + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + Waiting for authentication from a relay client + +// TRANSLATION MISSING +| relay | relay_client_auth_ok + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + Successful authentication from a relay client + +// TRANSLATION MISSING +| relay | relay_client_connected + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + A relay client is connected + +// TRANSLATION MISSING +| relay | relay_client_auth_failed + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + Authentication of a relay client has failed + +// TRANSLATION MISSING +| relay | relay_client_disconnected + + _(WeeChat ≥ 1.0)_ | + Pointer: relay client | + A relay client is disconnected + +// TRANSLATION MISSING +| ruby | ruby_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Ruby script loaded + +// TRANSLATION MISSING +| ruby | ruby_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Ruby script unloaded + +// TRANSLATION MISSING +| ruby | ruby_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Ruby script(s) installed + +// TRANSLATION MISSING +| ruby | ruby_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Ruby script(s) removed + +// TRANSLATION MISSING +| tcl | tcl_script_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Tcl script loaded + +// TRANSLATION MISSING +| tcl | tcl_script_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to script | + Tcl script unloaded + +// TRANSLATION MISSING +| tcl | tcl_script_installed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of paths to scripts installed | + Tcl script(s) installed + +// TRANSLATION MISSING +| tcl | tcl_script_removed + + _(WeeChat ≥ 0.3.9)_ | + String: comma-separated list of scripts removed | + Tcl script(s) removed + +| weechat | buffer_opened | + Puntatore: buffer | + Buffer aperto + +| weechat | buffer_closing | + Puntatore: buffer | + Chiusura del buffer + +| weechat | buffer_closed | + Puntatore: buffer | + Buffer chiuso + +// TRANSLATION MISSING +| weechat | buffer_cleared | + Puntatore: buffer | + Buffer cleared + +// TRANSLATION MISSING +| weechat | buffer_hidden | + Pointer: buffer | + Buffer hidden + +// TRANSLATION MISSING +| weechat | buffer_unhidden | + Pointer: buffer | + Buffer unhidden + +| weechat | buffer_line_added + + _(WeeChat ≥ 0.3.7)_ | + Puntatore: riga | + Riga aggiunta in un buffer + +| weechat | buffer_lines_hidden | + Puntatore: buffer | + Righe nascoste nel buffer + +| weechat | buffer_localvar_added | + Puntatore: buffer | + Variabili locali aggiunte + +| weechat | buffer_localvar_changed | + Puntatore: buffer | + Variabili locali modificate + +| weechat | buffer_localvar_removed | + Puntatore: buffer | + Variabili locali rimosse + +// TRANSLATION MISSING +| weechat | buffer_merged | + Puntatore: buffer | + Buffer merged + +// TRANSLATION MISSING +| weechat | buffer_unmerged | + Puntatore: buffer | + Buffer unmerged + +| weechat | buffer_moved | + Puntatore: buffer | + Buffer spostato + +| weechat | buffer_renamed | + Puntatore: buffer | + Buffer rinominato + +| weechat | buffer_switch | + Puntatore: buffer | + Passaggio tra buffer + +| weechat | buffer_title_changed | + Puntatore: buffer | + Titolo del buffer modificato + +| weechat | buffer_type_changed | + Puntatore: buffer | + Tipo di buffer modificato + +// TRANSLATION MISSING +| weechat | buffer_zoomed + + _(WeeChat ≥ 0.4.3)_ | + Puntatore: buffer | + Merged buffer zoomed + +// TRANSLATION MISSING +| weechat | buffer_unzoomed + + _(WeeChat ≥ 0.4.3)_ | + Puntatore: buffer | + Merged buffer unzoomed + +| weechat | day_changed + + _(WeeChat ≥ 0.3.2)_ | + String: nuova data, formato: "2010-01-31" | + Data di sistema modificata + +| weechat | debug_dump | + Stringa: nome plugin | + Richiesta di dump + +// TRANSLATION MISSING +| weechat | debug_libs | + - | + Display external libraries used + +| weechat | filter_added | + Puntatore: filtro | + Filtro aggiunto + +| weechat | filter_removing | + Puntatore: filtro | + Rimozione del filtro + +| weechat | filter_removed | + - | + Filtro rimosso + +| weechat | filters_enabled | + - | + Filtri abilitati + +| weechat | filters_disabled | + - | + Filtri disabilitati + +| weechat | hotlist_changed | + - | + Hotlist modificata + +| weechat | input_paste_pending | + - | + Incolla testo in attesa + +| weechat | input_search | + Puntatore: buffer | + Ricerca testo nel buffer + +| weechat | input_text_changed | + Puntatore: buffer | + Testo in input modificato + +| weechat | input_text_cursor_moved | + Puntatore: buffer | + Cursore del testo di input spostato + +// TRANSLATION MISSING +| weechat | key_bind | + String: key | + Key added + +// TRANSLATION MISSING +| weechat | key_unbind | + String: key | + Key removed + +| weechat | key_pressed | + String: tasto digitato | + Tasto digitato + +// TRANSLATION MISSING +| weechat | key_combo_default + + _(WeeChat ≥ 1.0)_ | + String: key combo | + Key combo in 'default' context + +// TRANSLATION MISSING +| weechat | key_combo_search + + _(WeeChat ≥ 1.0)_ | + String: key combo | + Key combo in 'search' context + +// TRANSLATION MISSING +| weechat | key_combo_cursor + + _(WeeChat ≥ 1.0)_ | + String: key combo | + Key combo in 'cursor' context + +// TRANSLATION MISSING +| weechat | nicklist_group_added + + _(WeeChat ≥ 0.3.2)_ | + String: buffer pointer + "," + group name | + Group added in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_group_changed + + _(WeeChat ≥ 0.3.4)_ | + String: buffer pointer + "," + group name | + Group changed in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_group_removing + + _(WeeChat ≥ 0.4.1)_ | + String: buffer pointer + "," + group name | + Removing group from nicklist + +// TRANSLATION MISSING +| weechat | nicklist_group_removed + + _(WeeChat ≥ 0.3.2)_ | + String: buffer pointer + "," + group name | + Group removed from nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_added + + _(WeeChat ≥ 0.3.2)_ | + String: buffer pointer + "," + nick name | + Nick added in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_changed + + _(WeeChat ≥ 0.3.4)_ | + String: buffer pointer + "," + nick name | + Nick changed in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_removing + + _(WeeChat ≥ 0.4.1)_ | + String: buffer pointer + "," + nick name | + Removing nick from nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_removed + + _(WeeChat ≥ 0.3.2)_ | + String: buffer pointer + "," + nick name | + Nick removed from nicklist + +| weechat | partial_completion | + - | + Completamento parziale avvenuto + +// TRANSLATION MISSING +| weechat | plugin_loaded + + _(WeeChat ≥ 0.3.9)_ | + String: path to plugin loaded | + Plugin loaded + +// TRANSLATION MISSING +| weechat | plugin_unloaded + + _(WeeChat ≥ 0.3.9)_ | + String: name of plugin unloaded (example: "irc") | + Plugin unloaded + +| weechat | quit | + String: argomenti per /quit | + Comando `/quit` digitato dall'utente + +// TRANSLATION MISSING +| weechat | signal_sigwinch + + _(WeeChat ≥ 0.4.3)_ | + - | + Signal SIGWINCH received (terminal was resized) + +// TRANSLATION MISSING +| weechat | upgrade | + String: "quit" if "-quit" argument was given for /upgrade, otherwise NULL | + Comando `/upgrade` digitato dall'utente + +| weechat | upgrade_ended + + _(WeeChat ≥ 0.3.4)_ | + - | + Fine del processo di aggiornamento (comando `/upgrade`) + +| weechat | weechat_highlight | + String: messaggio con prefisso | + Evento accaduto + +| weechat | weechat_pv | + String: messaggio con prefisso | + Messaggio privato visualizzato + +// TRANSLATION MISSING +| weechat | window_closing + + _(WeeChat ≥ 0.3.6)_ | + Puntatore: finestra | + Closing window + +// TRANSLATION MISSING +| weechat | window_closed + + _(WeeChat ≥ 0.3.6)_ | + Puntatore: finestra | + Window closed + +// TRANSLATION MISSING +| weechat | window_opened + + _(WeeChat ≥ 0.4.1)_ | + Puntatore: finestra | + Window opened + +| weechat | window_scrolled | + Puntatore: finestra | + Scroll nella finestra + +| weechat | window_switch + + _(WeeChat ≥ 0.3.7)_ | + Puntatore: finestra | + Passaggio alla finestra + +| weechat | window_zoom | + Puntatore: finestra corrente | + Massimizzazione della finestra + +| weechat | window_zoomed | + Puntatore: finestra corrente | + Finestra massimizzata + +| weechat | window_unzoom | + Puntatore: finestra corrente | + Minimizzazione della finestra + +| weechat | window_unzoomed | + Puntatore: finestra corrente | + Finestra minimizzata + +| xfer | xfer_add | + Puntatore: lista info con info per xfer| + Nuovo xfer + +| xfer | xfer_send_ready | + Puntatore: lista info xon info per xfer | + Xfer pronto + +// TRANSLATION MISSING +| xfer | xfer_accept_resume | + Puntatore: lista info con info per xfer | + Accept xfer resume + +// TRANSLATION MISSING +| xfer | xfer_send_accept_resume | + Puntatore: lista info con info per xfer | + Xfer resumed + +| xfer | xfer_start_resume | + Puntatore: lista info con info per xfer | + Avvia ripresa + +| xfer | xfer_resume_ready | + Puntatore: lista info con info per xfer | + Ripresa xfer pronta + +| xfer | xfer_ended + + _(WeeChat ≥ 0.3.2)_ | + Puntatore: lista info con info per xfer | + Xfer terminato +|=== + +[NOTE] +^(1)^ 'xxx' è il nome del server IRC, 'yyy' è il nome del comando IRC. + +Esempio in C: + +[source,C] +---- +int +my_signal_cb (void *data, const char *signal, const char *type_data, + void *signal_data) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +/* cattura il segnale "quit" */ +struct t_hook *my_signal_hook = weechat_hook_signal ("quit", + &my_signal_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_signal(signal, callback, callback_data) + +# esempio +def my_signal_cb(data, signal, signal_data): + # ... + return weechat.WEECHAT_RC_OK + +# cattura il segnale "quit" +hook = weechat.hook_signal("quit", "my_signal_cb", "") +---- + +==== weechat_hook_signal_send + +// TRANSLATION MISSING +_Updated in 1.0._ + +Invia un segnale. + +Prototipo: + +[source,C] +---- +int weechat_hook_signal_send (const char *signal, const char *type_data, + void *signal_data); +---- + +Argomenti: + +* 'signal': segnale da inviare +* 'type_data': tipo di dati inviati con il segnale (consultare + <<_weechat_hook_signal,weechat_hook_signal>>) +* 'signal_data': dati inviati con il segnale + +// TRANSLATION MISSING +Return value _(WeeChat ≥ 1.0)_: + +// TRANSLATION MISSING +* return code of last callback executed ('WEECHAT_RC_OK' if no callback was + executed): +** 'WEECHAT_RC_OK' +** 'WEECHAT_RC_OK_EAT' +** 'WEECHAT_RC_ERROR' + +Esempio in C: + +[source,C] +---- +int rc = weechat_hook_signal_send ("my_signal", WEECHAT_HOOK_SIGNAL_STRING, my_string); +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.hook_signal_send(signal, type_data, signal_data) + +# esempio +rc = weechat.hook_signal_send("my_signal", weechat.WEECHAT_HOOK_SIGNAL_STRING, my_string) +---- + +[[signal_logger_backlog]] +===== Signal logger_backlog + +Il segnale "logger_backlog" può essere inviato per visualizzare il backlog +(cronologia di chat) nel buffer (ad esempio se il proprio buffer viene aperto +in un plugin/script). + +L'argomento è un puntatore al buffer. + +Esempio in C: + +[source,C] +---- +weechat_hook_signal_send ("logger_backlog", WEECHAT_HOOK_SIGNAL_POINTER, buffer); +---- + +Script (Python): + +[source,python] +---- +weechat.hook_signal_send("logger_backlog", weechat.WEECHAT_HOOK_SIGNAL_POINTER, buffer) +---- + +[[signals_xxx_script_install]] +===== Signals xxx_script_install + +Cinque segnali che possono essere inviati per installare uno script, a seconda +del linguaggio: + +* 'perl_script_install' +* 'python_script_install' +* 'ruby_script_install' +* 'lua_script_install' +* 'tcl_script_install' + +La callback compirà le seguenti azioni alla ricezione del segnale: + +. scarica e rimuove lo script installato +. sposta il nuovo script nella cartella '~/.weechat/xxx/' (dove 'xxx' è il + linguaggio) +. crea un link al nuovo script nella cartella '~/.weechat/xxx/autoload/' +. carica il nuovo script + +// TRANSLATION MISSING +These signals are used by 'script' plugin to install scripts. + +L'argomento è una stringa con il percorso dello script da installare. + +Esempio in C: + +[source,C] +---- +weechat_hook_signal_send ("python_script_install", WEECHAT_HOOK_SIGNAL_STRING, + "/home/xxx/.weechat/test.py"); +---- + +Script (Python): + +[source,python] +---- +weechat.hook_signal_send("python_script_install", WEECHAT_HOOK_SIGNAL_STRING, + "/home/xxx/.weechat/test.py") +---- + +[[signals_xxx_script_remove]] +===== Signals xxx_script_remove + +Cinque segnali che possono essere inviati per rimuovere un elenco di script, a +seconda del linguaggio: + +* 'perl_script_remove' +* 'python_script_remove' +* 'ruby_script_remove' +* 'lua_script_remove' +* 'tcl_script_remove' + +Per ogni script nella lista, la callback scaricherà e rimuoverà lo script. + +// TRANSLATION MISSING +These signals are used by 'script' plugin to remove scripts. + +L'argomento è una stringa con una lista separata da virgole di script da +rimuovere (script è il nome senza percorso, ad esempio 'script.py'). + +Esempio in C: + +[source,C] +---- +/* scarica e rimuove gli script test.py e script.py */ +weechat_hook_signal_send ("python_script_remove", WEECHAT_HOOK_SIGNAL_STRING, + "test.py,script.py"); +---- + +Script (Python): + +[source,python] +---- +# scarica e rimuove gli script test.py e script.py +weechat.hook_signal_send("python_script_remove", WEECHAT_HOOK_SIGNAL_STRING, + "test.py,script.py") +---- + +[[signal_irc_input_send]] +===== Signal irc_input_send + +_WeeChat ≥ 0.3.4._ + +Il segnale "irc_input_send" può essere inviato per simulare input in un buffer +irc (server, canale o privato). + +L'argomento è una stringa con il seguente formato: + +* nome interno del server (richiesto) +* punto e virgola +* nome canale (opzionale) +* punto e virgola +* flag usate per l'invio del messaggio (opzionale, la predefinita è 1): +** '1': coda con la priorità maggiore (come i messaggi utente) +** '2': coda con la priorità minore (come i messaggi inviati automaticamente + da WeeChat) +* punto e virgola +* elenco separato da virgole di tag usate per l'invio di un messaggio + (opzionale) +* punto e virgola +* testo o comando (richiesto) + +Esempi in C: + +[source,C] +---- +/* dice "Hello!" sul server freenode, canale #weechat */ +weechat_hook_signal_send ("irc_input_send", WEECHAT_HOOK_SIGNAL_STRING, + "freenode;#weechat;1;;Hello!"); + +/* invia il comando "/whois FlashCode" sul server freenode, con priorità minore */ +weechat_hook_signal_send ("irc_input_send", WEECHAT_HOOK_SIGNAL_STRING, + "freenode;;2;;/whois FlashCode"); +---- + +Script (Python): + +[source,python] +---- +# dice "Hello!" sul server freenode server, canale #weechat +weechat.hook_signal_send("irc_input_send", weechat.WEECHAT_HOOK_SIGNAL_STRING, + "freenode;#weechat;1;;Hello!") + +# invia il comando "/whois FlashCode" sul server freenode, con priorità minore +weechat.hook_signal_send("irc_input_send", weechat.WEECHAT_HOOK_SIGNAL_STRING, + "freenode;;2;;/whois FlashCode") +---- + +==== weechat_hook_hsignal + +_WeeChat ≥ 0.3.4._ + +Hook su hsignal (segnale con tabella hash). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_hsignal (const char *signal, + int (*callback)(void *data, + const char *signal, + struct t_hashtable *hashtable), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'signal': segnale da catturare, wildcard "*" is allowed + (priorità consentita, consultare la nota a proposito di <<hook_priority,priority>>), + see table below +* 'callback': funzione chiamata a segnale ricevuto, argomenti e valore + restituito: +** 'void *data': puntatore +** 'const char *signal': segnale ricevuto +** 'struct t_hashtable *hashtable': tabella hash +** valore restituito: +*** 'WEECHAT_RC_OK' +// TRANSLATION MISSING +*** 'WEECHAT_RC_OK_EAT' (stop sending the signal immediately) + _(WeeChat ≥ 0.4.0)_ +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +// TRANSLATION MISSING +List of hsignals sent by WeeChat and plugins: + +[width="100%",cols="^1,^3,5,5",options="header"] +|=== +| Plugin | Segnale | Argomenti | Descrizione + +| irc | irc_redirection_xxx_yyy ^(1)^ + + _(WeeChat ≥ 0.3.4)_ | + Consultare <<hsignal_irc_redirect_command,hsignal_irc_redirect_command>> | + Redirection output + +// TRANSLATION MISSING +| weechat | nicklist_group_added + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'group' ('struct t_gui_nick_group *'): group | + Group added in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_added + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'nick' ('struct t_gui_nick *'): nick | + Nick added in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_group_removing + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'group' ('struct t_gui_nick_group *'): group | + Removing group from nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_removing + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'nick' ('struct t_gui_nick *'): nick | + Removing nick from nicklist + +// TRANSLATION MISSING +| weechat | nicklist_group_changed + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'group' ('struct t_gui_nick_group *'): group | + Group changed in nicklist + +// TRANSLATION MISSING +| weechat | nicklist_nick_changed + + _(WeeChat ≥ 0.4.1)_ | + 'buffer' ('struct t_gui_buffer *'): buffer + + 'parent_group' ('struct t_gui_nick_group *'): parent group + + 'nick' ('struct t_gui_nick *'): nick | + Nick changed in nicklist +|=== + +[NOTE] +^(1)^ 'xxx' è l'argomento del segnale usato nella redirezione, 'yyy' è lo schema +di redirezione. + +Esempio in C: + +[source,C] +---- +int +my_hsignal_cb (void *data, const char *signal, struct t_hashtable *hashtable) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +struct t_hook *my_hsignal_hook = weechat_hook_hsignal ("test", + &my_hsignal_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_hsignal(signal, callback, callback_data) + +# esempio +def my_hsignal_cb(data, signal, hashtable): + # ... + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_hsignal("test", "my_hsignal_cb", "") +---- + +==== weechat_hook_hsignal_send + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.4, updated in 1.0._ + +Invia un hsignal (segnale con tabella hash). + +Prototipo: + +[source,C] +---- +int weechat_hook_hsignal_send (const char *signal, struct t_hashtable *hashtable); +---- + +Argomenti: + +* 'signal': segnale da inviare +* 'hashtable': tabella hash + +// TRANSLATION MISSING +Return value _(WeeChat ≥ 1.0)_: + +// TRANSLATION MISSING +* return code of last callback executed ('WEECHAT_RC_OK' if no callback was + executed): +** 'WEECHAT_RC_OK' +** 'WEECHAT_RC_OK_EAT' +** 'WEECHAT_RC_ERROR' + +Esempio in C: + +[source,C] +---- +int rc; +struct t_hashtable *hashtable = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (hashtable) +{ + weechat_hashtable_set (hashtable, "key", "value"); + rc = weechat_hook_hsignal_send ("my_hsignal", hashtable); + weechat_hashtable_free (hashtable); +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.hook_hsignal_send(signal, hashtable) + +# esempio +rc = weechat.hook_hsignal_send("my_hsignal", { "key": "value" }) +---- + +[[hsignal_irc_redirect_command]] +===== Hsignal irc_redirect_command + +_WeeChat ≥ 0.3.4._ + +L'hsignal "irc_redirect_command" può essere inviato per redirigere l'output +di un comando irc ad una callback. + +L'argomento è una tabella hash con le seguenti componenti (chiavi e valori +sono stringhe): + +* 'server': nome interno del server (richiesto) +* 'pattern': schema di redirezione da usare (richiesto), sia uno di default + (definito dal plugin irc), oppure definito dall'utente (consultare + <<hsignal_irc_redirect_pattern>>), gli schemi predefiniti sono: +** 'ison' +** 'list' +** 'mode_channel' +** 'mode_channel_ban' ("mode #channel b") +** 'mode_channel_ban_exception' ("mode #channel e") +** 'mode_channel_invite' ("mode #channel I") +** 'mode_user' +** 'monitor' +** 'names' +** 'ping' +** 'time' +** 'topic' +** 'userhost' +** 'who' +** 'whois' +** 'whowas' +* 'signal': nome segnale (richiesto) +* 'count': numero di volte in cui verrà utilizzata la redirezione (opzionale, predefinito è 1) +* 'string': stringa che deve essere presente nei messaggi irc ricevuti (opzionale, ma + raccomandata, se una stringa può essere usata per identificare i messaggi) +* 'timeout': timeout per la redirezione, in secondi (opzionale, predefiniti sono) +* 'cmd_filter': elenco separato da virgole di comandi irc da filtrare (solo questi + comandi verranno inviati alle callback, altri ignorati) (opzionale) + +Subito dopo aver inviato questo hsignal, è necessario inviare il comando al +server irc, e la redirezione verrà usata per questo comando. + +Quando è stata ricevuta la risposta completa dal proprio comando, verrà +inviato un hsignal. Questo hsignal ha il nome 'irc_redirection_xxx_yyy' dove +'xxx' è il segnale e 'yyy' lo 'schema' usato. + +La tabella hash inviata in hsignal ha il seguente contenuto (chiavi e valori +sono stringhe): + +* 'output': output del comando (i messaggi vengono separati da "\n") +* 'output_size': numero di byte in 'output' (come stringa) +* 'error': stringa di errore (in caso di errore): +** 'timeout': redirezione fermata dopo il timeout +* 'server': nome interno del server +* 'pattern': schema di redirezione +* 'signal': nome del segnale +* 'command': comando rediretto + +Esempio in C: + +[source,C] +---- +int +test_whois_cb (void *data, const char *signal, struct t_hashtable *hashtable) +{ + weechat_printf (NULL, "error = %s", weechat_hashtable_get (hashtable, "error")); + weechat_printf (NULL, "output = %s", weechat_hashtable_get (hashtable, "output")); + return WEECHAT_RC_OK; +} + +weechat_hook_hsignal ("irc_redirection_test_whois", &test_whois_cb, NULL); +struct t_hashtable *hashtable = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (hashtable) +{ + weechat_hashtable_set (hashtable, "server", "freenode"); + weechat_hashtable_set (hashtable, "pattern", "whois"); + weechat_hashtable_set (hashtable, "signal", "test"); + weechat_hashtable_set (hashtable, "string", "FlashCode"); + weechat_hook_hsignal_send ("irc_redirect_command", hashtable); + weechat_hook_signal_send ("irc_input_send", WEECHAT_HOOK_SIGNAL_STRING, + "freenode;;2;;/whois FlashCode"); + weechat_hashtable_free (hashtable); +} +---- + +Script (Python): + +[source,python] +---- +def test_whois_cb(data, signal, hashtable): + weechat.prnt("", "error = %s" % hashtable["error"]) + weechat.prnt("", "output = %s" % hashtable["output"]) + return weechat.WEECHAT_RC_OK + +weechat.hook_hsignal ("irc_redirection_test_whois", "test_whois_cb", "") +weechat.hook_hsignal_send("irc_redirect_command", + { "server": "freenode", "pattern": "whois", "signal": "test", + "string": "FlashCode" }) +weechat.hook_signal_send("irc_input_send", weechat.WEECHAT_HOOK_SIGNAL_STRING, + "freenode;;2;;/whois FlashCode") +---- + +[[hsignal_irc_redirect_pattern]] +===== Hsignal irc_redirect_pattern + +_WeeChat ≥ 0.3.4._ + +L'hsignal "irc_redirect_pattern" può essere inviato per creare uno schema +per la redirezione irc (consultare <<hsignal_irc_redirect_command>>). + +L'argomento è una tabella hash con le seguenti voci (chiavi e valori sono stringa): + +* 'pattern': nome dello schema (richiesto) +* 'timeout': timeout predefinito per lo schema, in secondi (opzionale, predefinito è 60) +* 'cmd_start': elenco separato da virgole di comandi che avviano la redirezione (opzionale) +* 'cmd_stop': elenco separato da virgole di comandi che fermano la redirezione (richiesto) +* 'cmd_extra': elenco separato da virgole di comandi che possono essere ricevuti dopo aver + fermato i comandi (opzionale) + +Per ogni comando in 'cmd_start', 'cmd_stop' e 'cmd_extra', è possibile fornire +un intero con la posizione di "string" che va trovato nel messaggio ricevuto, +ad esempio: + +---- +352:1,354,401:1 +---- + +Per i comandi 352 e 401, "string" deve essere trovata nel messaggio ricevuto, +come primo argomento. + +[IMPORTANT] +Lo schema viene rimosso quando usato da una redirezione. Se uno schema si +rivelasse necessario per diverse redirezioni, è necessario crearne uno prima +di ogni redirezione. + +Esempio in C: + +[source,C] +---- +struct t_hashtable *hashtable = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (hashtable) +{ + weechat_hashtable_set (hashtable, "pattern", "my_whois"); + weechat_hashtable_set (hashtable, "timeout", "30"); + weechat_hashtable_set (hashtable, "cmd_start", "311:1"); + weechat_hashtable_set (hashtable, "cmd_stop", "318:1,401:1,402:1,431:1,461"); + weechat_hashtable_set (hashtable, "cmd_extra", "318:1"); + weechat_hook_hsignal_send ("irc_redirect_pattern", hashtable); + /* + * now redirect irc whois command with hsignal irc_redirect_command, + * using pattern "my_whois" + */ + /* ... */ + weechat_hashtable_free (hashtable); +} +---- + +Script (Python): + +[source,python] +---- +weechat.hook_hsignal_send("irc_redirect_pattern", + { "pattern": "my_whois", "timeout": "30", + "cmd_start": "311:1", + "cmd_stop": "318:1,401:1,402:1,431:1,461", + "cmd_extra": "318:1" }) +# now redirect irc whois command with hsignal irc_redirect_command +# using pattern "my_whois" +# ... +---- + +==== weechat_hook_config + +Hook su un'opzione di configurazione. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_config (const char *option, + int (*callback)(void *data, + const char *option, + const char *value), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'option': opzione, il formato è il nome completo, come usato con il comando + `/set` (ad esempio: `weechat.look.item_time_format`), wildcard "*" is allowed + (priorità consentita, consultare la note riguardo la + <<hook_priority,priority>>) +* 'callback': funzione chiamata quando l'opzione di configurazione è cambiata, + argomenti e valore restituito: +** 'void *data': puntatore +** 'const char *option': nome dell'opzione +** 'const char *value': nuovo valore per l'opzione +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_config_cb (void *data, const char *option, const char *value) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +/* cattura le modifiche dell'opzione "weechat.look.item_time_format" */ +struct t_hook *my_config_hook = weechat_hook_config ("weechat.look.item_time_format", + &my_config_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_config(option, callback, callback_data) + +# esempio +def my_config_cb(data, option, value): + # ... + return weechat.WEECHAT_RC_OK + +# cattura le modifiche dell'opzione "weechat.look.item_time_format" +hook = weechat.hook_config("weechat.look.item_time_format", "my_config_cb", "") +---- + +==== weechat_hook_completion + +Hook su un completamento. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_completion (const char *completion_item, + const char *description, + int (*callback)(void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion), + void *callback_data); +---- + +Argomenti: + +* 'completion_item': nome dell'elemento del completamento, è possibile usare + in seguito '%(name)' in un comando con un hook (argomento 'completion') + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>) +* 'callback': funzione chiamata quando viene usato l'elemento completamento + (l'utente sta completando qualcosa usando questo elemento), argomenti e valore + restituito: +** 'void *data': puntatore +** 'const char *completion_item': nome dell'elemento del completamento +** 'struct t_gui_buffer *buffer': buffer dove viene eseguito il completamento +** 'struct t_gui_completion *completion': struttura usata per aggiungere + parole per il completamento (consultare + <<_weechat_hook_completion_list_add,weechat_hook_completion_list_add>>) +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +[NOTE] +I nomi del completamento sono globali (condivisi tra WeeChat e plugin). Si +raccomanda pertanto di scegliere un nome con un prefisso unico, come +"plugin_xxx" (dove "xxx" è il nome del proprio elemento). + +// TRANSLATION MISSING +[IMPORTANT] +The callback must only call function +<<_weechat_hook_completion_list_add,weechat_hook_completion_list_add>> +and must *NOT* update the command line. + +To update the command line when key[Tab] is pressed, you can use the function +<<_weechat_hook_command_run,weechat_hook_command_run>> with command: +"/input complete_next" (and you must return 'WEECHAT_RC_OK_EAT' if your callback +has updated the command line, so that WeeChat will not perform the completion). + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_completion_cb (void *data, const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + weechat_hook_completion_list_add (completion, "word1", + 0, WEECHAT_LIST_POS_SORT); + weechat_hook_completion_list_add (completion, "test_word2", + 0, WEECHAT_LIST_POS_SORT); + return WEECHAT_RC_OK; +} + +struct t_hook *my_completion_hook = weechat_hook_completion ("plugin_item", + "my custom completion!", + &my_completion_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_completion(completion_item, description, callback, callback_data) + +# esempio +def my_completion_cb(data, completion_item, buffer, completion): + weechat.hook_completion_list_add(completion, "word1", 0, weechat.WEECHAT_LIST_POS_SORT) + weechat.hook_completion_list_add(completion, "test_word2", 0, weechat.WEECHAT_LIST_POS_SORT) + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_completion("plugin_item", "my custom completion!", + "my_completion_cb", "") +---- + +==== weechat_hook_completion_get_string + +_Novità nella versioe 0.3.4._ + +Ottiene il completamento di una proprietà come stringa. + +Prototipo: + +[source,C] +---- +const char *weechat_hook_completion_get_string (struct t_gui_completion *completion, + const char *property); +---- + +Argomenti: + +* 'completion': puntatore al completamento +* 'property': nome della proprietà: +** 'base_command': comando usato per il completamento +** 'base_word': parola che viene completata +** 'args': argomenti del comando (inclusa la parola base) + +Esempio in C: + +[source,C] +---- +int +my_completion_cb (void *data, const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + /* ottiene l'argomento del comando */ + const char *args = weechat_hook_completion_get_string (completion, "args"); + + /* completamento che dipende dagli argomenti */ + /* ... */ + + return WEECHAT_RC_OK; +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hook_completion_get_string(completion, property) + +# esempio +def my_completion_cb(data, completion_item, buffer, completion): + # ottiene l'argomento del comando + args = weechat.hook_completion_get_string(completion, "args") + # completamento che dipende dagli argomenti + # ... + return weechat.WEECHAT_RC_OK +---- + +==== weechat_hook_completion_list_add + +Aggiunge una parola per il completamento. + +Prototipo: + +[source,C] +---- +void weechat_hook_completion_list_add (struct t_gui_completion *completion, + const char *word, + int nick_completion, + const char *where); +---- + +Argomenti: + +* 'completion': puntatore al completamento +* 'word': parola da aggiungere +* 'nick_completion': 1 se la parola è un nick, altrimenti 0 +* 'where': posizione in cui la parola sarà inserita nella lista: +** 'WEECHAT_LIST_POS_SORT': qualunque posizione, per mantenere + la lista ordinata +** 'WEECHAT_LIST_POS_BEGINNING': inizio della lista +** 'WEECHAT_LIST_POS_END': fine della lista + +Esempio in C: consultare <<_weechat_hook_completion,weechat_hook_completion>>. + +Script (Python): + +[source,python] +---- +# prototipo +weechat.hook_completion_list_add(completion, word, nick_completion, where) + +# esempio: consultare function hook_completion precedente +---- + +==== weechat_hook_modifier + +Hook su un modificatore. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_modifier (const char *modifier, + char *(*callback)(void *data, + const char *modifier, + const char *modifier_data, + const char *string), + void *callback_data); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'modifier': nome modificatore, lista di modificatori utilizzati da + Weechat o dai plugin + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>), see table below +* 'callback': funzione chiamata quando viene usato il modificatore, + argomenti e valore restituito: +** 'void *data': puntatore +** 'const char *modifier': nome del modificatore +** 'const char *modifier_data': dati per il modificatore +** 'const char *string': stringa da modificare +** valore restituito: nuova stringa +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +List of modifiers used by WeeChat and plugins: + +[width="100%",cols="^2,3,4,4",options="header"] +|=== +| Modificatore | Dati modificatore | Stringa | Output + +| charset_decode | + plugin.buffer_name | + Qualsiasi stringa | + Stringa codificata dal set caratteri trovato per plugin/buffer in UTF-8 + +| charset_encode | + plugin.buffer_name | + Qualsiasi stringa | + Stringa codificata da UTF-8 al set caratteri trovato per il plugin/buffer + +// TRANSLATION MISSING +| irc_color_decode | + "1" per mantenere i colori, "0" per rimuovere i colori | + Qualsiasi stringa | + String with IRC colors converted to WeeChat colors (or IRC colors removed) + +// TRANSLATION MISSING +| irc_color_encode | + "1" per mantenere i colori, "0" per rimuovere i colori | + Qualsiasi stringa | + String with IRC colors (or IRC colors removed) + +// TRANSLATION MISSING +| irc_color_decode_ansi + + _(WeeChat ≥ 1.0)_ | + "1" per mantenere i colori, "0" per rimuovere i colori | + Qualsiasi stringa | + String with ANSI colors converted to IRC colors (or ANSI colors removed) + +// TRANSLATION MISSING +| irc_command_auth + + _(WeeChat ≥ 0.4.1)_ | + Nome server | + Authentication command (for example: `/msg nickserv identify password`) | + Command with hidden password (for example: `/msg nickserv identify ********`) + +// TRANSLATION MISSING +| irc_message_auth + + _(WeeChat ≥ 0.4.1)_ | + Nome server | + Message displayed after `/msg` sent to nickserv | + Message with hidden password + +| irc_in_xxx ^(1)^ | + Nome server | + Contenuto del messaggio ricevuto dal server IRC (prima della codifica del set caratteri) | + Nuovo contenuto del messaggio + +| irc_in2_xxx ^(1)^ + + _(WeeChat ≥ 0.3.5)_ | + Nome server | + Contenuto del messaggio ricevuto dal server IRC (dopo la codifica del set caratteri) | + Nuovo contenuto del messaggio + +| irc_out1_xxx ^(1)^ + + _(WeeChat ≥ 0.3.7)_ | + Nome server | + Contenuto del messaggio che sta per essere inviato al server IRC (prima della divisione automatica da adattare in 512 byte) | + Nuovo contenuto del messaggio + +| irc_out_xxx ^(1)^ | + Nome server | + Contenuto del messaggio che sta per essere inviato al server IRC (dopo la divisione automatica da adattare in 512 byte) | + Nuovo contenuto del messaggio + +// TRANSLATION MISSING +| color_decode_ansi + + _(WeeChat ≥ 1.0)_ | + "1" per mantenere i colori, "0" per rimuovere i colori | + Qualsiasi stringa | + String with ANSI colors converted to WeeChat colors (or ANSI colors removed) + +| bar_condition_yyy ^(2)^ | + Stringa con puntatore alla finestra ("0x123..") | + Stringa vuota | + "1" per visualizzare la barra, "0" per nasconderla + +| history_add + + _(WeeChat ≥ 0.3.2)_ | + Stringa con puntatore al buffer ("0x123..") | + Contenuto della riga di comando da aggiungere nella cronologia comandi (buffer e globale | + Stringa aggiunta alla cronologia comandi + +| input_text_content | + Stringa con puntatore al buffer ("0x123..") | + Contenuto della riga di comando | + Nuovo contenuto della riga di comando + +| input_text_display | + Stringa con puntatore al buffer ("0x123..") | + Contenuto della riga di comando, senza tag al cursore | + Nuova stringa, solo da mostrare (la riga di comando non viene modificata) + +| input_text_display_with_cursor | + Stringa con puntatore al buffer ("0x123..") | + Contenuto della riga di comando, con tag al cursore | + Nuova stringa, solo da mostrare (la riga di comando non viene modificata) + +| input_text_for_buffer + + _(WeeChat ≥ 0.3.7)_ | + Stringa con puntatore al buffer ("0x123..") | + Contenuto della riga di comando inviata al buffer (testo o comando) | + Nuovo contenuto della riga di comando inviata al buffer + +| weechat_print | + plugin + ";" + buffer_name + ";" + tags | + Messaggio stampato | + Nuovo messaggio stampato +|=== + +[NOTE] +^(1)^ 'xxx' è il nome del comando IRC. + +^(2)^ 'yyy' è il nome della barra. + +Esempio in C: + +[source,C] +---- +char * +my_modifier_cb (void *data, const char *modifier, + const char *modifier_data, + const char *string) +{ + char *result; + int length; + + if (!string) + return NULL; + + length = strlen (string) + 5; + result = malloc (length); + if (result) + { + /* aggiunge "xxx" ad ogni messaggio stampato */ + snprintf (result, length, "%s xxx", string); + } + + return result; +} + +struct t_hook *my_modifier_hook = weechat_hook_modifier ("weechat_print", + &my_modifier_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_modifier(modifier, callback, callback_data) + +# esempio +def my_modifier_cb(data, modifier, modifier_data, string): + return "%s xxx" % string + +hook = weechat.hook_modifier("weechat_print", "my_modifier_cb", "") +---- + +==== weechat_hook_modifier_exec + +Esegue modificatore(i). + +Prototipo: + +[source,C] +---- +char *weechat_hook_modifier_exec (const char *modifier, + const char *modifier_data, + const char *string); +---- + +Argomenti: + +* 'modifier': nome modificatore +* 'modifier_data': dati modificatore +* 'string': stringa da modificare + +Valore restituito: + +* stringa modificata, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +char *new_string = weechat_hook_modifier_exec ("my_modifier", + my_data, my_string); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.hook_modifier_exec(modifier, modifier_data, string) + +# esempio +weechat.hook_modifier_exec("my_modifier", my_data, my_string) +---- + +==== weechat_hook_info + +Hook su una informazione (la callback prende e restituisce una stringa). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_info (const char *info_name, + const char *description, + const char *args_description, + const char *(*callback)(void *data, + const char *info_name, + const char *arguments), + void *callback_data); +---- + +Argomenti: + +* 'info_name': nome della info + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>) +* 'description': descrizione +* 'args_description': descrizione degli argomenti +* 'callback': funzione chiamata alla richiesta di una info, argomenti e valore + restituito: +** 'void *data': puntatore +** 'const char *info_name': nome della info +** 'const char *arguments': argomenti addizionali, dipendono dalle info +** valore restituito: valore dell'info richiesta +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +const char * +my_info_cb (void *data, const char *info_name, const char *arguments) +{ + /* ... */ + return pointer_to_string; +} + +/* aggiunge informazione "my_info" */ +struct t_hook *my_info_hook = weechat_hook_info ("my_info", + "Some info", + "Info about arguments", + &my_info_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_info(info_name, description, args_description, callback, callback_data) + +# esempio +def my_info_cb(data, info_name, arguments): + return "some_info" + +hook = weechat.hook_info("my_info", "Some info", "Info about arguments", + "my_info_cb", "") +---- + +==== weechat_hook_info_hashtable + +_WeeChat ≥ 0.3.4._ + +Hook su una informazione (la callback prende e restituisce una tabella hash). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_info_hashtable (const char *info_name, + const char *description, + const char *args_description, + const char *output_description, + struct t_hashtable *(*callback)(void *data, + const char *info_name, + struct t_hashtable *hashtable), + void *callback_data); +---- + +Argomenti: + +* 'info_name': nome della info + (priorità consentita, consultare la nota riguardo la + <<hook_priority,priority>>) +* 'description': descrizione +* 'args_description': descrizione della tabella hash attesa (opzionale, può + essere NULL) +* 'output_description': descrizione della tabella hash restituita dalla + callback (opzionale, può essere NULL) +* 'callback': funzione chiamata alla richiesta della info, argomenti e valore + restituito: +** 'void *data': puntatore +** 'const char *info_name': nome della info +** 'struct t_hashtable *hashtable': tabella hash, in base alla info +** valore restituito: tabella hash richiesta +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hashtable * +my_info_hashtable_cb (void *data, const char *info_name, struct t_hashtable *hashtable) +{ + /* ... */ + return pointer_to_new_hashtable; +} + +/* add info "my_info_hashtable" */ +struct t_hook *my_info_hook = weechat_hook_info_hashtable ("my_info_hashtable", + "Some info", + "Info about input hashtable", + "Info about output hashtable", + &my_info_hashtable_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_info_hashtable(info_name, description, args_description, + output_description, callback, callback_data) + +# esempio +def my_info_hashtable_cb(data, info_name, hashtable): + return { "test_key": "test_value" } + +hook = weechat.hook_info_hashtable("my_info_hashtable", "Some info", + "Info about input hashtable", + "Info about output hashtable", + "my_info_hashtable_cb", "") +---- + +==== weechat_hook_infolist + +Hook su una lista info: la callback restituisce il puntatore alla lista info +richiesta. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_infolist (const char *infolist_name, + const char *description, + const char *pointer_description, + const char *args_description, + struct t_infolist *(*callback)(void *data, + const char *infolist_name, + void *pointer, + const char *arguments), + void *callback_data); +---- + +Argomenti: + +* 'infolist_name': nome della lista info + (priotità consentita, consultare la nota riguardo la + <<hook_priority,priority>>) +* 'description': descrizione +* 'pointer_description': descrizione del puntatore (opzionale, può essere NULL) +* 'args_description': descrizione degli argomenti (opzionale, può essere NULL) +* 'callback': funzione chiamata alla richiesta della lista info, argomenti e + valore restituito: +** 'void *data': puntatore +** 'const char *infolist_name': nome della lista info +** 'void *pointer': puntatore ad un oggetto che la lista info deve restituire + (per ricevere un solo elemento della lista info) +** 'const char *arguments': argomento aggiuntivo, dipende dalla lista info +** valore restituito: lista info richiesta +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_infolist * +my_infolist_cb (void *data, const char *infolist_name, void *pointer, + const char *arguments) +{ + struct t_infolist *my_infolist; + + /* compila lista info */ + /* ... */ + + return my_infolist; +} + +/* aggiunge lista info "my_infolist" */ +struct t_hook *my_infolist = weechat_hook_infolist ("my_infolist", + "Infolist with some data", + "Info about pointer", + "Info about arguments", + &my_infolist_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_infolist(infolist_name, description, pointer_description, + args_description, callback, callback_data) + +# esempio +def my_infolist_cb(data, infolist_name, pointer, arguments): + # build infolist + # ... + return my_infolist + +hook = weechat.hook_infolist("my_infolist", "Infolist with some data", + "Info about pointer", "Info about arguments", + "my_infolist_cb", "") +---- + +==== weechat_hook_hdata + +Hook di un hdata: la callback restituisce il puntatore all'hdata richiesto. + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_hdata (const char *hdata_name, + const char *description, + struct t_hdata *(*callback)(void *data, + const char *hdata_name), + void *callback_data); +---- + +Argomenti: + +* 'hdata_name': nome dell'hdata + (priorità consentita, consultare la nota a proposito di <<hook_priority,priority>>) +* 'description': descrizione +* 'callback': funzione chiamata alla richiesta di hdata, argomenti e valore restituito: +** 'void *data': puntatore +** 'const char *hdata_name': nome dell'hdata +** return value: hdata richiesto +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hdata * +my_hdata_cb (void *data, const char *hdata_name) +{ + struct t_hdata *my_hdata; + + /* build hdata */ + /* ... */ + + return my_hdata; +} + +/* add hdata "my_hdata" */ +struct t_hook *my_hdata = weechat_hook_hdata ("my_hdata", + "Hdata for my structure", + &my_hdata_cb, NULL); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hook_focus + +Hook sul foucus: evento del mouse o tasto premuto nella modalità cursore +(movimento libero del cursore). + +Prototipo: + +[source,C] +---- +struct t_hook *weechat_hook_focus (const char *area, + struct t_hashtable *(*callback)(void *data, + struct t_hashtable *info), + void *callback_data); +---- + +Argomenti: + +* 'area': "chat" per la zona di chat, o il nome di un elemento barra + (priorità consentita, consultare la nota a riguardo di <<hook_priority,priority>>) +* 'callback': funzione chiamata al momento del focus, argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_hashtable *info': tabella hash con informazioni sul focus e + stringhe restituite da altre chiamate alle callback sul focus (con la + priorità più alta) (consultare la tabella in basso) +** valore restituito: sia il puntatore "info" tabella hash completa), o il + puntatore ad una nuova tabella hash (creata dalla callback, con chiavi e + valori di tipo "string), questa nuovo contenuto della tabella hash verrà + aggiunto ad 'info' per le altre chiamate alle callback del focus +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +[IMPORTANT] +Per l'azione di un mouse, la callback verrà chiamata due volte: la prima quando +il pulsante viene premuto (qui la zona corrisponde sempre alla propria area), la +seconda quando il pulsante viene rilasciato, e allora la zona potrà non +corrispondere con la propria: per cui bisogna *sempre* verificare nella propria +callback se l'area corrisponde prima di usare le informazioni nella tabella hash. + +Contenuto della tabella hash inviata alla callback (tasti e valori sono di tipo +"string"): + +[width="100%",cols="5m,5,8,3",options="header"] +|=== +| Key ^(1)^ | Descrizione | Valori di esempio | Valore se N/D +| _x | Colonna sullo schermo 2+| "0" ... "n" +| _y | Riga sullo schermo 2+| "0" ... "n" +| _key | Evento tasto o mouse 2+| "button1", "button2-gesture-left", ... +| _window | Puntatore alla finestra | "0x12345678" | "" +| _window_number | Numero della finestra | "1" ... "n" | "*" +| _buffer | Puntatore al buffer | "0x12345678" | "" +| _buffer_number | Numero del buffer | "1" ... "n" | "-1" +| _buffer_plugin | Nome plugin del buffer | "core", "irc", ... | "" +| _buffer_name | Nome del buffer | "weechat", "freenode.#weechat", ... | "" +| _buffer_full_name | Nome completo del buffer | "core.weechat", "irc.freenode.#weechat", ... | "" +| _buffer_localvar_XXX ^(2)^ | Variabili locali del buffer | qualsiasi valore | non impostato +| _chat | Indicatore area di chat | "0" o "1" | "0" +| _chat_line_x | Colonna nella riga ^(3)^ | "0" ... "n" | "-1" +| _chat_line_y | Numero della riga ^(3)^ | "0" ... "n" | "-1" +| _chat_line_date | Riga con data/ora | "1313237175" | "0" +| _chat_line_date_printed | Riga con data/ora ^(4)^ | "1313237175" | "0" +| _chat_line_time | Ora visualizzata | "14:06:15" | "" +| _chat_line_tags | Tag della riga | "irc_privmsg,nick_flashy,log1" | "" +| _chat_line_nick | Nick della riga | "FlashCode" | "" +| _chat_line_prefix | Prefisso della riga | "@FlashCode" | "" +| _chat_line_message | Messaggio della riga | "Hello world!" | "" +| _chat_word | Parola a (x,y) | "Hello" | "" +| _chat_bol | Inizio della riga ⇒ (x-1,y) | "He" | "" +| _chat_eol | (x,y) ⇒ fine della riga | "llo world!" | "" +| _bar_name | Nome della barra | "title", "nicklist", ... | "" +| _bar_filling | Riempimento della barra | "horizontal", "vertical", ... | "" +| _bar_item_name | Nome dell'elemento barra | "buffer_nicklist", "hotlist", ... | "" +| _bar_item_line | Riga nell'elemento barra | "0" ... "n" | "-1" +| _bar_item_col | Colonna nell'elemento barra | "0" ... "n" | "-1" +|=== + +[NOTE] +^(1)^ Ci sono alcune chiavi con il suffisso "2" (es: "_x2", "_y2", "_window2", +...) con informazioni sul secondo punto (utile solo per le azioni del mouse, +per sapere dove il pulsante del mouse è stato rilasciato). + +^(2)^ `XXX` è il nome della variabile locale nel buffer. + +^(3)^ È impostato solo per l buffer con contenuto libero. + +^(4)^ Data/ora in cui WeeChat aggiunge una riga nel buffer (maggiore o uguale a +"chat_line_date"). + +Informazioni aggiuntive per l'elemento barra "buffer_nicklist": + +[width="70%",cols="3m,3,8",options="header"] +|=== +| Chiave | Plugin | Descrizione +| nick | core | Nick +| prefix | core | Prefisso per il nick +| group | core | Nome gruppo +| irc_host | irc | Host per il nick (se conosciuto) +|=== + +[NOTE] +^(1)^ Il nome del plugin che definisce un hook_focus per restituire +informazioni su questo elemento della barra (ad esempio se il plugin è "irc", +tale informazione sarà disponibile solo sui buffer irc). + +Valore restituito: + +* puntatore al nuovo hook, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hashtable * +my_focus_nicklist_cb (void *data, struct t_hashtable *info) +{ + /* add strings in hashtable */ + /* ... */ + + return info; +} + +/* add focus on nicklist */ +struct t_hook *my_focus = weechat_hook_focus ("buffer_nicklist", + &my_focus_nicklist_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hook = weechat.hook_focus(area, callback, callback_data) + +# esempio +def my_focus_nicklist_cb(data, info): + # build dict + # ... + return my_dict + +hook = weechat.hook_focus("buffer_nicklist", "my_focus_nicklist_cb", "") +---- + +==== weechat_hook_set + +_WeeChat ≥ 0.3.9 (script: WeeChat ≥ 0.4.3)._ + +// TRANSLATION MISSING +Set string value of a hook property. + +Prototipo: + +[source,C] +---- +void weechat_hook_set (struct t_hook *hook, const char *property, + const char *value); +---- + +Argomenti: + +* 'hook': qualcosa su cui è presente un hook con "weechat_hook_xxx()" +// TRANSLATION MISSING +* 'property': nome della proprietà (see table below) +// TRANSLATION MISSING +* 'value': new value for property + +// TRANSLATION MISSING +Properties: + +// TRANSLATION MISSING +[width="100%",cols="^2,2,2,5",options="header"] +|=== +| Nome | Hook type | Valore | Descrizione + +// TRANSLATION MISSING +| subplugin | any type | qualsiasi stringa | +// TRANSLATION MISSING + Name of sub plugin (commonly script name, which is displayed in + `/help command` for a hook of type 'command') + +| stdin + + _(WeeChat ≥ 0.4.3)_ | + 'process', 'process_hashtable' | qualsiasi stringa | +// TRANSLATION MISSING + Send data on standard input ('stdin') of child process + +| stdin_close + + _(WeeChat ≥ 0.4.3)_ | +// TRANSLATION MISSING + 'process', 'process_hashtable' | (not used) | +// TRANSLATION MISSING + Close pipe used to send data on standard input ('stdin') of child process + +| signal + + _(WeeChat ≥ 1.0)_ | + 'process', 'process_hashtable' | +// TRANSLATION MISSING + signal number or one of these names: `hup`, `int`, `quit`, `kill`, `term`, + `usr1`, `usr2` | +// TRANSLATION MISSING + Send a signal to the child process +|=== + +Esempio in C: + +[source,C] +---- +struct t_hook *my_command_hook = + weechat_hook_command ("abcd", "description", + "args", "description args", + "", &my_command_cb, NULL); +weechat_hook_set (my_command_hook, "subplugin", "test"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.hook_set(hook, property, value) + +# esempio +def my_process_cb(data, command, return_code, out, err): + # ... + return weechat.WEECHAT_RC_OK + +hook = weechat.hook_process_hashtable("/path/to/command", { "stdin": "1" }, + 20000, "my_process_cb", "") +weechat.hook_set(hook, "stdin", "data sent to stdin of child process") +weechat.hook_set(hook, "stdin_close", "") # optional +---- + +==== weechat_unhook + +Rimuove un hook. + +Prototipo: + +[source,C] +---- +void weechat_unhook (struct t_hook *hook); +---- + +Argomenti: + +* 'hook': qualcosa su cui è presente un hook con "weechat_hook_xxx()" + +Esempio in C: + +[source,C] +---- +struct t_hook *my_hook = weechat_hook_command ( /* ... */ ); +/* ... */ +weechat_unhook (my_hook); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.unhook(hook) + +# esempio +weechat.unhook(my_hook) +---- + +==== weechat_unhook_all + +Rimuove l'hook in qualsiasi punto in cui è stato attivato dal +plugin corrente. + +Prototipo: + +[source,C] +---- +void weechat_unhook_all (); +---- + +Esempio in C: + +[source,C] +---- +weechat_unhook_all (); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.unhook_all() + +# esempio +weechat.unhook_all() +---- + +[[buffers]] +=== Buffer + +Funzioni per creare/richiedere/chiudere buffer. + +==== weechat_buffer_new + +Apre un nuovo buffer. + +Prototipo: + +[source,C] +---- +struct t_gui_buffer *weechat_buffer_new (const char *name, + int (*input_callback)(void *data, + struct t_gui_buffer *buffer, + const char *input_data), + void *input_callback_data, + int (*close_callback)(void *data, + struct t_gui_buffer *buffer), + void *close_callback_data); +---- + +Argomenti: + +* 'name': nome del buffer (deve essere unico per il plugin) +* 'input_callback': funzione chiamata quando il testo in input è stato + inserito nel buffer, argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_gui_buffer *buffer': puntatore al buffer +** 'const char *input_data': dati in input +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat +* 'close_callback': funzione chiamata alla chiusura del buffer, argomenti e + valore restituito: +** 'void *data': puntatore +** 'struct t_gui_buffer *buffer': puntatore al buffer +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo buffer, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +int +my_input_cb (void *data, struct t_gui_buffer *buffer, const char *input_data) +{ + weechat_printf (buffer, "Testo: %s", input_data); + return WEECHAT_RC_OK; +} + +int +my_close_cb (void *data, struct t_gui_buffer *buffer) +{ + weechat_printf (NULL, "Il buffer '%s' verrà chiuso!", + weechat_buffer_get_string (buffer, "name")); + return WEECHAT_RC_OK; +} + +struct t_gui_buffer *my_buffer = weechat_buffer_new ("my_buffer", + &my_input_cb, NULL, + &my_close_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +buffer = weechat.buffer_new(name, input_callback, input_callback_data, + close_callback, close_callback_data) + +# esempio +def my_input_cb(data, buffer, input_data): + weechat.prnt(buffer, "Testo: %s" % input_data) + return weechat.WEECHAT_RC_OK + +def my_close_cb(data, buffer): + weechat.prnt("", "Il buffer '%s' verrà chiuso!" % weechat.buffer_get_string(buffer, "name")) + return weechat.WEECHAT_RC_OK + +buffer = weechat.buffer_new("my_buffer", "my_input_cb", "", "my_close_cb", "") +---- + +==== weechat_current_buffer + +Restituisce il puntatore al buffer corrente (buffer visualizzato nella +finestra corrente). + +Prototipo: + +[source,C] +---- +struct t_gui_buffer *weechat_current_buffer (); +---- + +Valore restituito: + +* puntatore al buffer corrente + +Esempio in C: + +[source,C] +---- +weechat_printf (weechat_current_buffer (), "Testo sul buffer corrente"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +buffer = weechat.current_buffer() + +# esempio +weechat.prnt(weechat.current_buffer(), "Testo sul buffer corrente") +---- + +==== weechat_buffer_search + +// TRANSLATION MISSING +_Updated in 1.0._ + +Cerca un buffer tramite plugin e/o nome. + +Prototipo: + +[source,C] +---- +struct t_gui_buffer *weechat_buffer_search (const char *plugin, + const char *name); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'plugin': name of plugin, following special value is allowed: +** `==`: the name used is the buffer full name (for example: + `irc.freenode.#weechat` instead of `freenode.#weechat`) + _(WeeChat ≥ 1.0)_ +// TRANSLATION MISSING +* 'name': name of buffer, if it is NULL or empty string, the current buffer is + returned (buffer displayed by current window); if the name starts with + `(?i)`, the search is case insensitive _(WeeChat ≥ 1.0)_ + +Valore restituito: + +* puntatore al buffer trovato, NULL in caso contrario + +Esempio in C: + +[source,C] +---- +struct t_gui_buffer *buffer1 = weechat_buffer_search ("irc", "freenode.#weechat"); +struct t_gui_buffer *buffer2 = weechat_buffer_search ("==", "irc.freenode.#test"); /* WeeChat ≥ 1.0 */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +buffer = weechat.buffer_search(plugin, name) + +# esempio +buffer = weechat.buffer_search("my_plugin", "my_buffer") +---- + +==== weechat_buffer_search_main + +Cerca nel buffer principale di WeeChat (per primo nel buffer 'core', il primo +visualizzato all'avvio di WeeChat). + +Prototipo: + +[source,C] +---- +struct t_gui_buffer *weechat_buffer_search_main (); +---- + +Valore restituito: + +* puntatore al buffer principale di WeeChat (buffer 'core') + +Esempio in C: + +[source,C] +---- +struct t_gui_buffer *weechat_buffer = weechat_buffer_search_main (); +---- + +Script (Python): + +[source,python] +---- +# prototipo +buffer = weechat.buffer_search_main() + +# esempio +buffer = weechat.buffer_search_main() +---- + +==== weechat_buffer_clear + +Pulisce il contenuto del buffer. + +Prototipo: + +[source,C] +---- +void weechat_buffer_clear (struct t_gui_buffer *buffer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer + +Esempio in C: + +[source,C] +---- +struct t_gui_buffer *my_buffer = weechat_buffer_search ("my_plugin", + "my_buffer"); +if (my_buffer) +{ + weechat_buffer_clear (my_buffer); +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.buffer_clear(buffer) + +# esempio +buffer = weechat.buffer_search("my_plugin", "my_buffer") +if buffer != "": + weechat.buffer_clear(buffer) +---- + +==== weechat_buffer_close + +Chiude un buffer. + +Prototipo: + +[source,C] +---- +void weechat_buffer_close (struct t_gui_buffer *buffer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer + +Esempio in C: + +[source,C] +---- +struct t_gui_buffer *my_buffer = weechat_buffer_new ("my_buffer", + &my_input_cb, NULL, + &my_close_cb, NULL); +/* ... */ +weechat_buffer_close (my_buffer); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.buffer_close(buffer) + +# esempio +buffer = weechat.buffer_new("my_buffer", "my_input_cb", "", "my_close_cb", "") +# ... +weechat.buffer_close(buffer) +---- + +==== weechat_buffer_merge + +Unisce un buffer in un altro: entrambi i buffer esistono separatamente, ma +con lo stesso numero, e WeeChat visualizzerà le righe di entrambi i +buffer (righe mischiate). + +Prototipo: + +[source,C] +---- +void weechat_buffer_merge (struct t_gui_buffer *buffer, + struct t_gui_buffer *target_buffer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'target_buffer': buffer di destinazione, dove il buffer verrà unito + +Esempio in C: + +[source,C] +---- +/* merge current buffer with weechat "core" buffer */ +weechat_buffer_merge (weechat_current_buffer (), + weechat_buffer_search_main ()); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.buffer_merge(buffer, target_buffer) + +# esempio +# merge current buffer with WeeChat "core" buffer +weechat.buffer_merge(weechat.current_buffer(), weechat.buffer_search_main()) +---- + +==== weechat_buffer_unmerge + +Stacca un buffer da un gruppo di buffer uniti. + +Prototipo: + +[source,C] +---- +void weechat_buffer_unmerge (struct t_gui_buffer *buffer, + int number); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'number': numero di destinazione per il buffer staccato, + se è < 1, allora il buffer verrà spostato al numero di + 'buffer' +1 + +Esempio in C: + +[source,C] +---- +weechat_buffer_unmerge (weechat_current_buffer (), 1); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.buffer_unmerge(buffer, number) + +# esempio +weechat.buffer_unmerge(weechat.current_buffer(), 1) +---- + +==== weechat_buffer_get_integer + +Restituisce il valore intero della proprietà di +un buffer. + +Prototipo: + +[source,C] +---- +int weechat_buffer_get_integer (struct t_gui_buffer *buffer, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'property': nome della proprietà: +** 'number': numero del buffer (inizia da 1) +** 'layout_number': numero del buffer salvato nel layout +** 'layout_number_merge_order': ordine di unione per i layout +** 'short_name_is_set': 1 se il nome breve è impostato, 0 in caso contrario +** 'type': tipo dibuffer (0: formattato, 1: contenuto libero) +** 'notify': livello di notifica per il buffer +** 'num_displayed': numero delle finestre che visualizzano il buffer +// TRANSLATION MISSING +** 'active': 2 if buffer is the only active (merged), 1 se il buffer è attivo, + 0 se il buffer è unito e non selezionato +// TRANSLATION MISSING +** 'hidden': 1 if buffer is hidden, otherwise 0 + _(WeeChat ≥ 1.0)_ +// TRANSLATION MISSING +** 'zoomed': 1 if buffer is merged and zoomed, otherwise 0 + _(WeeChat ≥ 1.0)_ +** 'print_hooks_enabled': 1 se gli hook sulla stampa sono abilitati, + altrimenti 0 +// TRANSLATION MISSING +** 'day_change': 1 if messages for the day change are displayed, otherwise 0 + _(WeeChat ≥ 0.4.3)_ +// TRANSLATION MISSING +** 'clear': 1 if buffer can be cleared with command `/buffer clear`, otherwise 0 + _(WeeChat ≥ 1.0)_ +// TRANSLATION MISSING +** 'filter': 1 if filters are enabled on buffer, otherwise 0 + _(WeeChat ≥ 1.0)_ +** 'lines_hidden': 1 se almeno una riga è nascosta sul buffer (filtrata), + oppure 0 se vengono visualizzate tutte le righe +** 'prefix_max_length': lunghezza massima del prefisso in questo buffer +** 'time_for_each_line': 1 se l'ora è visualizzata per ogni riga nel buffer + (predefinito), altrimenti 0 +** 'nicklist': 1 se la lista nick è abilitata, altrimenti 0 +** 'nicklist_case_sensitive': 1 se i nick sono sensibili alle maiuscole, + altrimenti 0 +** 'nicklist_max_length': lunghezza massima per un nick +** 'nicklist_display_groups': 1 se i gruppi vengono visualizzati, altrimenti 0 +// TRANSLATION MISSING +** 'nicklist_count': number of nicks and groups in nicklist +// TRANSLATION MISSING +** 'nicklist_groups_count': number of groups in nicklist +// TRANSLATION MISSING +** 'nicklist_nicks_count': number of nicks in nicklist +** 'nicklist_visible_count': numero di nick/gruppi visualizzati +** 'input': 1 se l'input è abilitato, altrimenti 0 +** 'input_get_unknown_commands': 1 se i comandi sconosciuti vengono inviati + alla callback di input, altrimenti 0 +** 'input_size': dimensione per l'input (in byte) +** 'input_length': lunghezza dell'input (numero di caratteri) +** 'input_pos': posizione del cursore nell'input del buffer +** 'input_1st_display': primo carattere visualizzato su schermo +** 'num_history': numero di comandi nella cronologia +** 'text_search': tipo di ricerca nel testo: +*** 0: nessuna ricerca in questo momento +*** 1: ricerca all'indietro (direzione: messaggi più vecchi) +*** 2: ricerca in avanti (direzione: messaggi più nuovi) +** 'text_search_exact': 1 se la ricerca testo è esatta +** 'text_search_found': 1 se il testo viene trovato, altrimenti 0 + +Valore restituito: + +* valore intero della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "my buffer number is: %d", + weechat_buffer_get_integer (my_buffer, "number")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.buffer_get_integer(buffer, property) + +# esempio +weechat.prnt("", "my buffer number is: %d" % weechat.buffer_get_integer(my_buffer, "number")) +---- + +==== weechat_buffer_get_string + +Restituisce il valore stringa di una proprietà del buffer. + +Prototipo: + +[source,C] +---- +const char *weechat_buffer_get_string (struct t_gui_buffer *buffer, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'property': nome proprietà: +** 'plugin': nome del plugin che ha creato questo buffer ("core" + per il buffer principale di WeeChat) +** 'name': nome del buffer +** 'full_name': nome completo del buffer ("plugin.nome") _(WeeChat ≥ 0.3.7)_ +** 'short_name': nome breve del buffer (nota: usato solo per il display e può + essere cambiato dall'utente, questo nome non va usato per trovare il nome del + buffer, utilizzare invece 'name', 'fullname' o la variabile locale 'channel') +** 'title': titolo del buffer +** 'input': testo in ingresso +** 'text_search_input': input salvato prima della ricerca nel testo +** 'highlight_words': elenco di parole da evidenziare +// TRANSLATION MISSING +** 'highlight_regex': POSIX extended regular expression for highlight +// TRANSLATION MISSING +** 'highlight_tags_restrict': restrict highlights to messages with these tags +// TRANSLATION MISSING +** 'highlight_tags': force highlight on messages with these tags +** 'hotlist_max_level_nicks': livello massimo della hotlist per alcuni nick +** 'localvar_xxx': ottiene il contenuto della variabile locale "xxx" + (sostituire "xxx" con il nome della variabile da leggere) + +Valore restituito: + +* valore stringa della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "name / short name of buffer are: %s / %s", + weechat_buffer_get_string (my_buffer, "name"), + weechat_buffer_get_string (my_buffer, "short_name")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.buffer_get_string(buffer, property) + +# esempio +weechat.prnt("", "name / short name of buffer are: %s / %s" + % (weechat.buffer_get_string(my_buffer, "name"), + weechat.buffer_get_string(my_buffer, "short_name"))) +---- + +==== weechat_buffer_get_pointer + +Restituisce il valore puntatore della proprietà di un buffer. + +Prototipo: + +[source,C] +---- +void *weechat_buffer_pointer (struct t_gui_buffer *buffer, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'property': nome proprietà: +** 'plugin': puntatore al plugin che ha creato questo buffer (NULL + per il buffer principale di WeeChat) +** 'highlight_regex_compiled': espressione regolare 'highlight_regex' compilata + +Valore restituito: + +* valore puntatore della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "plugin pointer of my buffer: %lx", + weechat_buffer_get_pointer (my_buffer, "plugin")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.buffer_get_pointer(buffer, property) + +# esempio +weechat.prnt("", "plugin pointer of my buffer: %s" % weechat.buffer_get_pointer(my_buffer, "plugin")) +---- + +==== weechat_buffer_set + +Imposta il valore stringa della proprietà di un buffer. + +Prototipo: + +[source,C] +---- +void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, + const char *value); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +// TRANSLATION MISSING +* 'property': nome della proprietà (see table below) +// TRANSLATION MISSING +* 'value': new value for property + +// TRANSLATION MISSING +Properties: + +[width="100%",cols="^2,4,8",options="header"] +|=== +| Nome | Valore | Descrizione + +// TRANSLATION MISSING +| hotlist | "+", "-", WEECHAT_HOTLIST_LOW, WEECHAT_HOTLIST_MESSAGE, + WEECHAT_HOTLIST_PRIVATE, WEECHAT_HOTLIST_HIGHLIGHT, "-1" | + "+": abilita hotlist (impostazione globale , il puntatore al buffer pointer non + è utilizzato) + + "-": disabilita hotlist (impostazione globale, il puntatore al buffer non è + utilizzato) + + priorità: aggiunge il buffer alla hotlist con questa proprietà + + "-1": remove buffer from hotlist _(WeeChat ≥ 1.0)_ + +// TRANSLATION MISSING +| completion_freeze | "0" oppure "1" | + "0": no freeze of completion (default value) + (impostazione globale, il puntatore al buffer non è utilizzato) + + "1": do not stop completion when command line is updated + (impostazione globale, il puntatore al buffer non è utilizzato) + +| unread | - | + Imposta l'evidenziatore di lettura dopo l'ultima riga del buffer + +| display | "1" oppure "auto" | + "1": passa a questo buffer nella finestra corrente + + "auto": passa a questo buffer nella finestra corrente, l'evidenziatore di + lettura non viene resettato + +// TRANSLATION MISSING +| hidden + + _(WeeChat ≥ 1.0)_ | "0" oppure "1" | + "0": unhide the buffer + + "1": hide the buffer + +| number | numero | + Sposta buffer a questo numero + +| name | qualsiasi stringa | + Imposta nuovo nome per il buffer + +| short_name | qualsiasi stringa | + Imposta nuovo nome breve per il buffer + +// TRANSLATION MISSING +| type | "formatted" oppure "free" | + Imposta tipo per il: "formatted" (per stampare i messaggi di chat), + oppure "free" (per contenuto libero); when the value is "free", the property + 'clear' is forced to "0" _(WeeChat ≥ 1.0)_ + +| notify | "0", "1", "2", "3" | + Imposta il livello di notifica per il buffer: "0" = non aggiungere alla hotlist, + "1" = aggiungere solo per gli eventi, "2" = aggiungere per eventi e + messaggi, "3" = aggiungere per tutti i messaggi + +// TRANSLATION MISSING +| print_hooks_enabled | "0" oppure "1" | + "0" to disable print hooks, "1" to enable them (default for a new buffer) + +// TRANSLATION MISSING +| day_change + + _(WeeChat ≥ 0.4.3)_ | "0" oppure "1" | + "0" to hide messages for the day change, "1" to see them + (default for a new buffer) + +// TRANSLATION MISSING +| clear + + _(WeeChat ≥ 1.0)_ | "0" or "1" | + "0" to prevent user from clearing buffer with the command `/buffer clear`, + "1" to let user clear the buffer (default for a new buffer) + (note: even when it is set to "0", the buffer can still be cleared with + the function <<_weechat_buffer_clear,weechat_buffer_clear>>) + +// TRANSLATION MISSING +| filter + + _(WeeChat ≥ 1.0)_ | "0" or "1" | + "0": disable filters on buffer + + "1": enable filters on buffer + +| title | qualsiasi stringa | + Imposta nuovo titolo per il buffer + +| time_for_each_line | "0" oppure "1" | + "0" per nascondere l'orario in tutte le righe del buffer, "1" per + visualizzarlo su tutte le righe (predefinito per un nuovo buffer) + +| nicklist | "0" oppure "1" | + "0" per rimuovere la lista nick per il buffer, "1" per aggiungere + la lista nick per il buffer + +| nicklist_case_sensitive | "0" oppure "1" | + "0" per avere una lista nick non sensibile alle maiuscole, "1" per + una lista nick sensibile alle maiuscole + +| nicklist_display_groups | "0" oppure "1" | + "0" per nascondere i gruppi nella lista nick, "1" per visualizzare + i gruppi della lista nick + +| highlight_words | "-" oppure elenco di parole separato da virgole | + "-" è un valore speciale per disabilitare qualsiasi evento su questo + buffer, o un elenco di parole separate da virgole da evidenziare in + questo buffer, ad esempio: "abc,def,ghi" + +| highlight_words_add | elenco di parole separate da virgole | + Elenco di parole separate da virgole da evidenziare in questo buffer, + queste parole vengono aggiunte alle parole evidenziate esistenti nel + buffer + +| highlight_words_del | elenco di parole separate da virgole | + Elenco di parole separate da virgole da rimuovere dalle + parole evidenziate nel buffer + +// TRANSLATION MISSING +| highlight_regex | qualsiasi stringa | + POSIX extended regular expression for highlight + +// TRANSLATION MISSING +| highlight_tags_restrict | elenco separato da virgole di tag | + Restrict highlights to messages with these tags in this buffer + (it is possible to combine many tags as a logical "and" with separator "+", + for example: "nick_toto+irc_action") + +// TRANSLATION MISSING +| highlight_tags | elenco separato da virgole di tag | + Force highlight on messages with these tags in this buffer + (it is possible to combine many tags as a logical "and" with separator "+", + for example: "nick_toto+irc_action") + +| hotlist_max_level_nicks | elenco separado da virgole di "nick:livello" | + Elenco separato da virgole di nick con il livello massimo per la hotlist + su questo buffer (il livello può essere: -1: mai nella hotlist, 0: basso, + 1: messaggio, 2: privato, 3: evento), ad esempio: "joe:2,mike:-1,robert:-1" + (joe non produce eventi sul buffer, mike e robert non modificano la hotlist) + +| hotlist_max_level_nicks_add | elenco separato da virgole di "nick:livello" | + Elenco separato da virgole di nick con il livello per la hotlist, questi + nick vengono aggiunti a quelli esistenti nel buffer + +| hotlist_max_level_nicks_del | elenco separato da virgole di nick | + Elenco separato da virgole di nick da rimuovere dai livelli massimi della + hotlist + +| key_bind_xxx | qualsiasi stringa | + Assegna un nuovo tasto 'xxx', specifico per questo buffer, il valore è il + comando da eseguire per questo tasto + +| key_unbind_xxx | - | + Rimuove l'assegnazione del tasto 'xxx' per questo buffer + +| input | qualsiasi stringa | + Imposta un nuovo valore per l'input del buffer + +| input_pos | posizione | + Imposta la posizione del cursore per l'input del buffer + +| input_get_unknown_commands | "0" oppure "1" | + "0" per disabilitare i comandi sconosciuti per questo buffer (comportamento + predefinito), "1" per ricevere i comandi sconosciuti, ad esempio se l'utente + digita "/unknowncmd", verrà ricevuto dal buffer (nessun errore riguardo il + comando sconosciuto) + +| localvar_set_xxx | qualsiasi stringa | + Imposta il nuovo valore per la variabile locale 'xxx' (la variabile verrà + creata se non esiste) + +| localvar_del_xxx | - | + Rimuove la variabile locale 'xxx' +|=== + +Esempio in C: + +[source,C] +---- +/* disabilita hotlist (per tutti i buffer) */ +weechat_buffer_set (NULL, "hotlist", "-"); + +/* abilita nuovamente hotlist */ +weechat_buffer_set (NULL, "hotlist", "+"); + +/* cambia il nome buffer */ +weechat_buffer_set (my_buffer, "name", "my_new_name"); + +/* aggiunge una nuova variabile locale "tizio" con il valore "abc" */ +weechat_buffer_set (my_buffer, "localvar_set_tizio", "abc"); + +/* rimuove la variabile locale "tizio" */ +weechat_buffer_set (my_buffer, "localvar_del_tizio", NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.buffer_set(buffer, property, value) + +# esempi + +# disabilita hotlist (per tutti i buffer) +weechat.buffer_set("", "hotlist", "-") + +# abilita nuovamente hotlist +weechat.buffer_set("", "hotlist", "+") + +# cambia il nome buffer +weechat.buffer_set(my_buffer, "name", "my_new_name") + +# aggiunge una nuova variabile locale "tizio" con il valore "abc" +weechat.buffer_set(my_buffer, "localvar_set_tizio", "abc") + +# rimuove la variabile locale "tizio" +weechat.buffer_set(my_buffer, "localvar_del_tizio", "") +---- + +==== weechat_buffer_set_pointer + +Imposta il valore puntatore per la proprietà di un buffer. + +Prototipo: + +[source,C] +---- +void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *property, + void *pointer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'property': nome della proprietà: +** 'close_callback': set close callback function +** 'close_callback_data': set close callback data +** 'input_callback': set input callback function +** 'input_callback_data': set input callback data +// TRANSLATION MISSING +** 'nickcmp_callback': set nick comparison callback function (this callback is + called when searching nick in nicklist) _(WeeChat ≥ 0.3.9)_ +// TRANSLATION MISSING +** 'nickcmp_callback_data': set nick comparison callback data + _(WeeChat ≥ 0.3.9)_ +// TRANSLATION MISSING +* 'pointer': new pointer value for property + +// TRANSLATION MISSING +Prototypes for callbacks: + +[source,C] +---- +int close_callback (void *data, struct t_gui_buffer *buffer); + +int input_callback (void *data, struct t_gui_buffer *buffer, const char *input_data); + +int nickcmp_callback (void *data, struct t_gui_buffer *buffer, const char *nick1, const char *nick2); +---- + +Esempio in C: + +[source,C] +---- +int +my_close_cb (void *data, struct t_gui_buffer *buffer) +{ + /* ... */ + return WEECHAT_RC_OK; +} + +weechat_buffer_set_pointer (my_buffer, "close_callback", &my_close_cb); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_buffer_string_replace_local_var + +Sostituisce le variabili globali in una stringa con i loro valori, utilizzando +le variabili del buffer locale. + +Prototipo: + +[source,C] +---- +char *weechat_buffer_string_replace_local_var (struct t_gui_buffer *buffer, + const char *string); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'string': stringa con testo e variabili locali che utilizzano il formato "$var" + +Valore restituito: + +* stringa con i valori delle variabili locali + +Esempio in C: + +[source,C] +---- +weechat_buffer_set (my_buffer, "localvar_set_toto", "abc"); + +char *str = weechat_buffer_string_replace_local_var (my_buffer, + "test with $toto"); +/* str contiene "test with abc" */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.buffer_string_replace_local_var(buffer, string) + +# esempio +weechat.buffer_set(my_buffer, "localvar_set_toto", "abc") +str = weechat.buffer_string_replace_local_var(my_buffer, "test with $toto") +# str contains "test with abc" +---- + +==== weechat_buffer_match_list + +_WeeChat ≥ 0.3.5._ + +Verifica se il buffer corrisponde ad una lista di buffer. + +Prototipo: + +[source,C] +---- +int weechat_buffer_match_list (struct t_gui_buffer *buffer, const char *string); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'string': elenco separato da virgole di buffer: +** "*" indica tutti i buffer +** il nome preceduto da "!" viene escluso +// TRANSLATION MISSING +** wildcard "*" is allowed in name + +Valore restituito: + +* 1 se il buffer coincide con la lista, altrimenti 0 + +Esempio in C: + +[source,C] +---- +struct t_gui_buffer *buffer = weechat_buffer_search ("irc", "freenode.#weechat"); +if (buffer) +{ + weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*")); /* 1 */ + weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*,!*#weechat*")); /* 0 */ + weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.freenode.*")); /* 1 */ + weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.oftc.*,python.*")); /* 0 */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +match = weechat.buffer_match_list(buffer, string) + +# esempio +buffer = weechat.buffer_search("irc", "freenode.#weechat") +if buffer: + weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*")) # 1 + weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*,!*#weechat*")) # 0 + weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.freenode.*")) # 1 + weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.oftc.*,python.*")) # 0 +---- + +[[windows]] +=== Finestre + +Funzioni per richiedere finestre. + +==== weechat_current_window + +Restituisce il puntatore alla finestra corrente + +Prototipo: + +[source,C] +---- +struct t_gui_window *weechat_current_window (); +---- + +Valore restituito: + +* puntatore alla finestra corrente + +Esempio in C: + +[source,C] +---- +struct t_gui_window *current_window = weechat_current_window (); +---- + +Script (Python): + +[source,python] +---- +# prototipo +window = weechat.current_window() + +# esempio +current_window = weechat.current_window() +---- + +==== weechat_window_search_with_buffer + +_WeeChat ≥ 0.3.5._ + +Restituisce il puntatore alla finestra che mostra il buffer. + +Prototipo: + +[source,C] +---- +struct t_gui_window *weechat_window_search_with_buffer (struct t_gui_buffer *buffer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer + +Valore restituito: + +* puntatore alla finestra che mostra il buffer (NULL se nessuna finestra sta + mostrando il buffer) + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, + "window displaying core buffer: %lx", + weechat_window_search_with_buffer (weechat_buffer_search_main ())); +---- + +Script (Python): + +[source,python] +---- +# prototipo +window = weechat.window_search_with_buffer(buffer) + +# esempio +weechat.prnt("", "window displaying core buffer: %s" + % weechat.window_search_with_buffer(weechat.buffer_search_main())) +---- + +==== weechat_window_get_integer + +Restituisce il valore intero della proprietà di una finestra. + +Prototipo: + +[source,C] +---- +int weechat_window_get_integer (struct t_gui_window *window, + const char *property); +---- + +Argomenti: + +* 'window': puntatore alla finestra +* 'property': nome della proprietà: +** 'number': numero della finestra (inizia da 1) +** 'win_x': posizione X della finestra nel terminale (la prima colonna è 0) +** 'win_y': posizione Y della finestra nel terminale (la prima riga è 0) +** 'win_width': larghezza della finestra, in caratteri +** 'win_height': altezza della finestra, in caratteri +** 'win_width_pct': misura percentuale, paragonata alla finestra genitore + (ad esempio 50 indica metà grandezza) +** 'win_height_pct': misura percentuale, paragonata alla finestra genitore + (ad esempio 50 indica metà grandezza) +** 'win_chat_x': posizione X della finestra di chat nel terminale + (la prima colonna è 0) +** 'win_chat_y': posizione Y della finestra di chat nel terminale + (la prima riga è 0) +** 'win_chat_width': larghezza della finestra di chat, in caratteri +** 'win_chat_height': altezza della finestra di chat, in caratteri +** 'first_line_displayed': 1 se la prima riga del buffer viene visualizzata + su schermo, altrimenti 0 +** 'scrolling': 1 se lo scorrimento è attivo sulla finestra (ultima riga non + visualizzata) +** 'lines_after': numero di righe non visualizzate dopo l'ultima visualizzata + (durante lo scorrimento) + +Valore restituito: + +* valore intero della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "current window is at position (x,y): (%d,%d)", + weechat_window_get_integer (weechat_current_window (), "win_x"), + weechat_window_get_integer (weechat_current_window (), "win_y")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.window_get_integer(window, property) + +# esempio +weechat.prnt("", "current window is at position (x,y): (%d,%d)" + % (weechat.window_get_integer(weechat.current_window(), "win_x"), + weechat.window_get_integer(weechat.current_window(), "win_y"))) +---- + +==== weechat_window_get_string + +Restituisce il valore stringa della proprietà di una finestra. + +[NOTE] +La funzione non è utilizzata oggi, è riservata per una versione futura. + +Prototipo: + +[source,C] +---- +int weechat_window_get_string (struct t_gui_window *window, + const char *property); +---- + +Argomenti: + +* 'window': puntatore alla finestra +* 'property': nome della proprietà + +Valore restituito: + +* valore stringa della proprietà + +==== weechat_window_get_pointer + +Restituisce il valore puntatore della proprietà di una finestra. + +Prototipo: + +[source,C] +---- +void *weechat_window_get_pointer (struct t_gui_window *window, + const char *property); +---- + +Argomenti: + +* 'window': puntatore alla finestra +* 'property': nome della proprietà: +** 'current': puntatore alla finestra corrente +** 'buffer': puntatore al buffer visualizzato dalla finestra + +Valore restituito: + +* valore puntatore della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, + "buffer displayed in current window: %lx", + weechat_window_get_pointer (weechat_current_window (), "buffer")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.window_get_pointer(window, property) + +# esempio +weechat.prnt("", "buffer displayed in current window: %s" + % weechat.window_get_pointer(weechat.current_window(), "buffer")) +---- + +==== weechat_window_set_title + +Imposta il titolo per il terminale. + +Prototipo: + +[source,C] +---- +void weechat_window_set_title (const char *title); +---- + +Argomenti: + +* 'title': nuovo titolo per il terminale (NULL per resettarlo) + +Esempio in C: + +[source,C] +---- +weechat_window_set_title ("nuovo titolo qui"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.window_set_title(window, title) + +# esempio +weechat.window_set_title("nuovo titolo qui") +---- + +[[nicklist]] +=== Lista nick + +Funzioni per il buffer nicklist. + +==== weechat_nicklist_add_group + +Aggiunge un gruppo in una lista nick. + +Prototipo: + +[source,C] +---- +struct t_gui_nick_group *weechat_nicklist_add_group (struct t_gui_buffer *buffer, + struct t_gui_nick_group *parent_group, + const char *name, + const char *color, + int visible); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'parent_group': puntatore al genitore del gruppo, NULL se il gruppo non ha genitore + (lista nick radice) +* 'name': nome del gruppo +* 'color': nome per l'opzione colore: +** nome opzione per WeeChat, ad esempio 'weechat.color.nicklist_group' +** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red' +** nome colore per la barra: +*** 'bar_fg': colore di primo piando per la barra +*** 'bar_delim': colore dei delimitatori per la barra +*** 'bar_bg': colore di sfondo per la barra +* 'visible': +** '1': gruppi e sottogruppi/nick sono visibili +** '0': gruppi e sottogruppi/nick sono nascosti + +[NOTE] +Il nome del gruppo può iniziare con uno o più numeri, seguiti da una pipe, e +infine dal nome del gruppo. Quando questa stringa si trova all'inizio, viene +utilizzata per ordinare i gruppi nella lista nick. Ad esempio i gruppi "1|test" e +"2|abc" verranno visualizzati in quest'ordine: prima "test" poi "abc". + +Valore restituito: + +* puntatore al nuovo gruppo, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_gui_nick_group *my_group = + weechat_nicklist_add_group (my_buffer, + my_parent_group, + "test_group", + "weechat.color.nicklist_group", + 1); +---- + +Script (Python): + +[source,python] +---- +# prototipo +group = weechat.nicklist_add_group(buffer, parent_group, name, color, visible) + +# esempio +group = weechat.nicklist_add_group(my_buffer, my_parent_group, "test_group", + "weechat.color.nicklist_group", 1) +---- + +==== weechat_nicklist_search_group + +Cerca un gruppo in una lista nick. + +Prototipo: + +[source,C] +---- +struct t_gui_nick_group *weechat_nicklist_search_group (struct t_gui_buffer *buffer, + struct t_gui_nick_group *from_group, + const char *name); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'from_group': ricerca solo da questo gruppo, se NULL, allora la cerca in + tutta la lista nick +* 'name': nome gruppo da cercare + +Valore restituito: + +* puntatore al gruppo trovato, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_gui_nick_group *ptr_group = weechat_nicklist_search_group (my_buffer, + NULL, "test_group"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +group = weechat.nicklist_search_group(buffer, from_group, name) + +# esempio +group = weechat.nicklist_search_group(my_buffer, "", "test_group") +---- + +==== weechat_nicklist_add_nick + +Aggiunge un nick in un gruppo. + +Prototipo: + +[source,C] +---- +struct t_gui_nick_group *weechat_nicklist_add_nick (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group, + const char *name, + const char *color, + const char *prefix, + const char *prefix_color, + int visible); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo +* 'name': nome nick +* 'color': nome dell'opzione per il colore: +*** nome opzione per WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters' +*** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red' +*** nome colore per la barra: +**** 'bar_fg': colore di primo piano per la barra +**** 'bar_delim': colore dei delimitatori per la barra +**** 'bar_bg': colore di sfondo per la barra +* 'prefix': prefisso visualizzato prima del nick +* 'prefix_color': nome dell'opzione per il colore: +** nome opzione per WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters' +** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red' +** nome colore per la barra: +*** 'bar_fg': colore di primo piano per la barra +*** 'bar_delim': colore dei delimitatori per la barra +*** 'bar_bg': colore di sfondo per la barra +* 'visible': +** '1': il nick è visibile +** '0': il nick è nascosto + +Valore restituito: + +* puntatore al nuovo nick, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_gui_nick *my_nick = + weechat_nicklist_add_nick (my_buffer, my_group, + "test_nick", + (nick_away) ? "weechat.color.nicklist_away" : "bar_fg", + "@", "lightgreen", + 1); +---- + +Script (Python): + +[source,python] +---- +# prototipo +nick = weechat.nicklist_add_nick(buffer, group, name, color, prefix, prefix_color, visible) + +# esempio +if nick_away: + color = "weechat.color.nicklist_away" +else: + color = "bar_fg" +nick = weechat.nicklist_add_nick(my_buffer, my_group, "test_nick", color, "@", "lightgreen", 1) +---- + +==== weechat_nicklist_search_nick + +Cerca un nick nella lista nick. + +Prototipo: + +[source,C] +---- +struct t_gui_nick *weechat_nicklist_search_nick (struct t_gui_buffer *buffer, + struct t_gui_nick_group *from_group, + const char *name); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'from_group': cerca solo da questo gruppo, se NULL, allora cerca + nell'intera lista nick +* 'name': nick da cercare + +Valore restituito: + +* puntatore al nuovo nick, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_gui_nick *ptr_nick = weechat_nicklist_search_nick (my_buffer, + NULL, "test_nick"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +nick = weechat.nicklist_search_nick(buffer, from_group, name) + +# esempio +nick = weechat.nicklist_search_nick(my_buffer, "", "test_nick") +---- + +==== weechat_nicklist_remove_group + +Rimuove un gruppo da una lista nick. + +Prototipo: + +[source,C] +---- +void weechat_nicklist_remove_group (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo da rimuovere (verranno rimossi anhe + i sottogruppi/nick) + +Esempio in C: + +[source,C] +---- +weechat_nicklist_remove_group (my_buffer, my_group); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.nicklist_remove_group(buffer, group) + +# esempio +weechat.nicklist_remove_group(my_buffer, my_group) +---- + +==== weechat_nicklist_remove_nick + +Rimuove un nick dalla lista nick. + +Prototipo: + +[source,C] +---- +void weechat_nicklist_remove_nick (struct t_gui_buffer *buffer, + struct t_gui_nick *nick); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'nick': puntatore al nick da rimuovere + +Esempio in C: + +[source,C] +---- +weechat_nicklist_remove_nick (my_buffer, my_nick); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.nicklist_remove_nick(buffer, nick) + +# esempio +weechat.nicklist_remove_nick(my_buffer, my_nick) +---- + +==== weechat_nicklist_remove_all + +Rimuove tutti i gruppi/nick da una lista nick. + +Prototipo: + +[source,C] +---- +void weechat_nicklist_remove_all (struct t_gui_buffer *buffer); +---- + +Argomenti: + +* 'buffer': puntatore al buffer + +Esempio in C: + +[source,C] +---- +weechat_nicklist_remove_all (my_buffer); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.nicklist_remove_all(buffer) + +# esempio +weechat.nicklist_remove_all(my_buffer) +---- + +==== weechat_nicklist_get_next_item + +_WeeChat ≥ 0.3.7._ + +Ottiene il prossimo gruppo oppure il nick dalla lista nick (usato principalmente +per mostrare la lista nick). + +Prototipo: + +[source,C] +---- +void weechat_nicklist_get_next_item (struct t_gui_buffer *buffer, + struct t_gui_nick_group **group, + struct t_gui_nick **nick); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore sul puntatore al gruppo +* 'nick': puntatore sul puntatore al nick + +Esempio in C: + +[source,C] +---- +struct t_gui_nick_group *ptr_group; +struct t_gui_nick *ptr_nick; + +ptr_group = NULL; +ptr_nick = NULL; +weechat_nicklist_get_next_item (buffer, &ptr_group, &ptr_nick); +while (ptr_group || ptr_nick) +{ + if (ptr_nick) + { + /* nick */ + /* ... */ + } + else + { + /* gruppo */ + /* ... */ + } + weechat_nicklist_get_next_item (buffer, &ptr_group, &ptr_nick); +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_nicklist_group_get_integer + +_WeeChat ≥ 0.3.4._ + +Restituisce un valore intero della proprietà di un gruppo. + +Prototipo: + +[source,C] +---- +int weechat_nicklist_group_get_integer (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo +* 'property': nome della proprietà: +** 'visible': 1 se il gruppo è visibile, altrimenti 0 +** 'level': livello del gruppo (root è 0) + +Valore restituito: + +* valore intero della proprietà + +Esempio in C: + +[source,C] +---- +int visible = weechat_nicklist_group_get_integer (buffer, group, "visible"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_group_get_integer(buffer, group, property) + +# esempio +visible = weechat.nicklist_group_get_integer(buffer, group, "visible") +---- + +==== weechat_nicklist_group_get_string + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore stringa della proprietà di un gruppo. + +Prototipo: + +[source,C] +---- +const char *weechat_nicklist_group_get_string (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo +* 'property': nome della proprietà: +** 'name': nome del gruppo +** 'color': colore del gruppo nella lista nick + +Valore restituito: + +* valore stringa della proprietà + +Esempio in C: + +[source,C] +---- +const char *color = weechat_nicklist_group_get_string (buffer, group, "color"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_group_get_string(buffer, group, property) + +# esempio +color = weechat.nicklist_group_get_string(buffer, group, "color") +---- + +==== weechat_nicklist_group_get_pointer + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore puntatore della proprietà di un gruppo. + +Prototipo: + +[source,C] +---- +void *weechat_nicklist_group_get_pointer (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo +* 'property': nome della proprietà: +** 'parent': puntatore al gruppo genitore + +Valore restituito: + +* valore puntatore della proprietà + +Esempio in C: + +[source,C] +---- +struct t_gui_nick_group *parent = weechat_nicklist_group_get_pointer (buffer, group, "parent"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_group_get_pointer(buffer, group, property) + +# esempio +parent = weechat.nicklist_group_get_pointer(buffer, group, "parent") +---- + +==== weechat_nicklist_group_set + +_WeeChat ≥ 0.3.4._ + +Imposta il valore stringa della proprietà di un gruppo. + +Prototipo: + +[source,C] +---- +void weechat_nicklist_group_set (struct t_gui_buffer *buffer, + struct t_gui_nick_group *group, + const char *property, + const char *value); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'group': puntatore al gruppo +// TRANSLATION MISSING +* 'property': nome della proprietà (see table below) +// TRANSLATION MISSING +* 'value': new value for property + +// TRANSLATION MISSING +Properties: + +[width="100%",cols="^2,4,8",options="header"] +|=== +| Nome | Valore | Descrizione + +| color | nome per l'opzione del colore per WeeChat | + Consultare l'argomento "color" della funzione + <<_weechat_nicklist_add_group,weechat_nicklist_add_group>> + +| visible | "0", "1" | + "0" = gruppo nascosto, "1" = gruppo visibile +|=== + +Esempio in C: + +[source,C] +---- +/* cambia colore del gruppo a "bar_fg" */ +weechat_nicklist_group_set (buffer, group, "color", "bar_fg"); + +/* cambia il colore del gruppo a giallo */ +weechat_nicklist_group_set (buffer, group, "color", "yellow"); + +/* nasconde gruppo nella lista nick */ +weechat_nicklist_group_set (buffer, group, "visible", "0"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.nicklist_group_set(buffer, group, property, value) + +# esempi + +# cambia colore del gruppo a "bar_fg" +weechat.nicklist_group_set(buffer, group, "color", "bar_fg") + +# cambia colore del gruppo a giallo +weechat.nicklist_group_set(buffer, group, "color", "yellow") + +# nasconde gruppo nella lista nick +weechat.nicklist_group_set(buffer, group, "visible", "0") +---- + +==== weechat_nicklist_nick_get_integer + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore intero della proprietà di un nick. + +Prototipo: + +[source,C] +---- +int weechat_nicklist_nick_get_integer (struct t_gui_buffer *buffer, + struct t_gui_nick *nick, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'nick': puntatore al nick +* 'property': nome della proprietà: +** 'visible': 1 se il nick è visibile, altrimenti 0 + +Valore restituito: + +* valore intero della proprietà + +Esempio in C: + +[source,C] +---- +int visible = weechat_nicklist_nick_get_integer (buffer, nick, "visible"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_nick_get_integer(buffer, nick, property) + +# esempio +visible = weechat.nicklist_nick_get_integer(buffer, nick, "visible") +---- + +==== weechat_nicklist_nick_get_string + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore stringa della proprietà di un nick. + +Prototipo: + +[source,C] +---- +const char *weechat_nicklist_nick_get_string (struct t_gui_buffer *buffer, + struct t_gui_nick *nick, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'nick': puntatore al nick +* 'property': nome della proprietà: +** 'name': nome del nick +** 'color': colore del nick nella lista nick +** 'prefix': prefisso del nick +** 'prefix_color': colore del prefisso nella lista nick + +Valore restituito: + +* valore stringa della proprietà + +Esempio in C: + +[source,C] +---- +const char *color = weechat_nicklist_nick_get_string (buffer, nick, "color"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_nick_get_string(buffer, nick, property) + +# esempio +color = weechat.nicklist_nick_get_string(buffer, nick, "color") +---- + +==== weechat_nicklist_nick_get_pointer + +_WeeChat ≥ 0.3.4._ + +Restituisce il valore puntatore della proprietà di un nick. + +Prototipo: + +[source,C] +---- +void *weechat_nicklist_nick_get_pointer (struct t_gui_buffer *buffer, + struct t_gui_nick *nick, + const char *property); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'nick': puntatore al nick +* 'property': nome proprietà: +** 'group': puntatore al gruppo che contiene questo nick + +Valore restituito: + +* valore puntatore della proprietà + +Esempio in C: + +[source,C] +---- +struct t_gui_nick_group *group = weechat_nicklist_nick_get_pointer (buffer, nick, "group"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.nicklist_nick_get_pointer(buffer, nick, property) + +# esempio +group = weechat.nicklist_nick_get_pointer(buffer, nick, "group") +---- + +==== weechat_nicklist_nick_set + +_WeeChat ≥ 0.3.4._ + +Imposta il valore stringa della proprietà di un nick. + +Prototipo: + +[source,C] +---- +void weechat_nicklist_nick_set (struct t_gui_buffer *buffer, + struct t_gui_nick *nick, + const char *property, + const char *value); +---- + +Argomenti: + +* 'buffer': puntatore al buffer +* 'nick': puntatore al nick +// TRANSLATION MISSING +* 'property': nome della proprietà (see table below) +// TRANSLATION MISSING +* 'value': new value for property + +// TRANSLATION MISSING +Properties: + +[width="100%",cols="^2,4,8",options="header"] +|=== +| Nome | Valore | Descrizione + +| color | nome per l'opzione del colore di WeeChat | + Consultare l'argomento "color" della funzione + <<_weechat_nicklist_add_nick,weechat_nicklist_add_nick>> + +| prefix | qualsiasi stringa | + Prefisso del nick + +| prefix_color | nome per l'opzione del colore di WeeChat | + Consultare l'argomento "prefix_color" della funzione + <<_weechat_nicklist_add_nick,weechat_nicklist_add_nick>> + +| visible | "0", "1" | + "0" = nick nascosto, "1" = nick visibile +|=== + +Esempi in C: + +[source,C] +---- +/* cambia colore del nick in azzurro */ +weechat_nicklist_nick_set (buffer, nick, "color", "cyan"); + +/* cambia prefisso in "+" */ +weechat_nicklist_nick_set (buffer, nick, "prefix", "+"); + +/* cambia colore del prefisso in giallo */ +weechat_nicklist_nick_set (buffer, nick, "prefix_color", "yellow"); + +/* nascondi nick nella lista nick */ +weechat_nicklist_nick_set (buffer, nick, "visible", "0"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.nicklist_nick_set(buffer, nick, property, value) + +# esempi + +# cambia colore del nick in azzurro +weechat.nicklist_nick_set(buffer, nick, "color", "cyan") + +# cambia prefisso in "+" +weechat.nicklist_nick_set(buffer, nick, "prefix", "+") + +# cambia colore del prefisso in giallo +weechat.nicklist_nick_set(buffer, nick, "prefix_color", "yellow") + +# nascondi nick nella lista nick +weechat.nicklist_nick_set(buffer, nick, "visible", "0") +---- + +[[bars]] +=== Barre + +Funzioni per le barre. + +==== weechat_bar_item_search + +Cerca un elemento barra. + +Prototipo: + +[source,C] +---- +struct t_gui_bar_item *weechat_bar_item_search (const char *name); +---- + +Argomenti: + +* 'name': nome dell'elemento barra + +Valore restituito: + +* puntatore all'elemento barra trovato, NULL se non trovato + +Esempio in C: + +[source,C] +---- +struct t_gui_bar_item *bar_item = weechat_bar_item_search ("myitem"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +bar_item = weechat.bar_item_search(name) + +# esempio +bar_item = weechat.bar_item_search("myitem") +---- + +==== weechat_bar_item_new + +// TRANSLATION MISSING +_Updated in 0.4.2._ + +Crea un nuovo elemento barra. + +Prototipo: + +[source,C] +---- +struct t_gui_bar_item *weechat_bar_item_new (const char *name, + char *(*build_callback)(void *data, + struct t_gui_bar_item *item, + struct t_gui_window *window, + struct t_gui_buffer *buffer, + struct t_hashtable *extra_info), + void *build_callback_data); +---- + +Argomenti: + +* 'name': nome dell'elemento barra +* 'build_callback': funzione chiamata quando l'elemento barra viene + compilato, argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_gui_bar_item *item': puntatore all'elemento barra +// TRANSLATION MISSING +** 'struct t_gui_window *window': puntatore alla finestra (NULL when called for + a root bar) +// TRANSLATION MISSING +** 'struct t_gui_buffer *buffer': buffer displayed in window (if window is NULL, + then it is current buffer) or buffer given in bar item with syntax: + "@buffer:item" _(WeeChat ≥ 0.4.2)_ +// TRANSLATION MISSING +** 'struct t_hashtable *extra_info': always NULL (argument is reserved for a + future version) _(WeeChat ≥ 0.4.2)_ +** valore restituito: contenuto dell'elemento barra +* 'build_callback_data': puntatore fornito alla callback quando + chiamata da WeeChat + +Valore restituito: + +* puntatore al nuovo elemento barra, NULL se non trovato + +Esempio in C: + +[source,C] +---- +char * +my_build_callback (void *data, + struct t_gui_bar_item *item, + struct t_gui_window *window, + struct t_gui_buffer *buffer, + struct t_hashtable *extra_info) +{ + return strdup ("my content"); +} + +struct t_gui_bar_item *my_item = weechat_bar_item_new ("myitem", + &my_build_callback, + NULL); +---- + +Script (Python): + +// TRANSLATION MISSING +[IMPORTANT] +For compatibility with versions ≤ 0.4.1, the default callback has only 3 +arguments: 'data', 'item' and 'window' (no 'buffer' and 'extra_info'). + +To use a callback with all arguments, you must add "(extra)" before the name, +see example below (supported only in WeeChat ≥ 0.4.2). + +// TRANSLATION MISSING +[source,python] +---- +# prototipo +bar_item = weechat.bar_item_new(name, build_callback, build_callback_data) + +# esempio (callback without "buffer" and "extra_info") +def my_build_callback(data, item, window): + return "my content" + +bar_item = weechat.bar_item_new("myitem", "my_build_callback", "") + +# example (callback with all arguments, for WeeChat ≥ 0.4.2) +def my_build_callback2(data, item, window, buffer, extra_info): + return "my content" + +bar_item2 = weechat.bar_item_new("(extra)myitem2", "my_build_callback2", "") # WeeChat ≥ 0.4.2 +---- + +==== weechat_bar_item_update + +Aggiorna il contenuto dell'elemento barra, chiamando la callback +che lo ha compilato. + +Prototipo: + +[source,C] +---- +void weechat_bar_item_update (const char *name); +---- + +Argomenti: + +* 'name': nome dell'elemento barra + +Esempio in C: + +[source,C] +---- +weechat_bar_item_update ("myitem"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.bar_item_update(name) + +# esempio +weechat.bar_item_update("myitem") +---- + +==== weechat_bar_item_remove + +Rimuove un elemento barra. + +Prototipo: + +[source,C] +---- +void weechat_bar_item_remove (struct t_gui_bar_item *item); +---- + +Argomenti: + +* 'item': puntatore all'elemento barra + +Esempio in C: + +[source,C] +---- +weechat_bar_item_remove (&my_item); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.bar_item_remove(item) + +# esempio +weechat.bar_item_remove(myitem) +---- + +==== weechat_bar_search + +Cerca una barra. + +Prototipo: + +[source,C] +---- +struct t_gui_bar *weechat_bar_search (const char *name); +---- + +Argomenti: + +* 'name': nome della barra + +Valore restituito: + +* puntatore alla barra trovata, NULL se non trovata + +Esempio in C: + +[source,C] +---- +struct t_gui_bar *bar = weechat_bar_search ("mybar"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +bar = weechat.bar_search(name) + +# esempio +bar = weechat.bar_search("mybar") +---- + +==== weechat_bar_new + +Crea una nuova barra. + +Prototipo: + +[source,C] +---- +struct t_gui_bar *weechat_bar_new (const char *name, + const char *hidden, + const char *priority, + const char *type, + const char *condition, + const char *position, + const char *filling_top_bottom, + const char *filling_left_right, + const char *size, + const char *size_max, + const char *color_fg, + const char *color_delim, + const char *color_bg, + const char *separator, + const char *items); +---- + +Argomenti: + +* 'name': nome della barra +* 'hidden': +** 'on': la barra è nascosta +** 'off': la barra è visibile +* 'priority': priorità per la barra (intero) +* 'type': +** 'root': barra visualizzata una sola volta, al di fuori delle finestre +** 'window': barra visualizzata in ogni finestra +* 'condition': condizioni per la visualizzazione della barra: +** 'active': la barra viene visualizzata solo nella finestra attiva +** 'inactive': la barra viene visualizzata solo nelle finestre inattive +** 'nicklist': la barra viene visualizzata nelle finestre con liste nick +* 'position': 'top', 'bottom', 'left' o 'right' +* 'filling_top_bottom': +** 'horizontal': gli elementi sono posizionati in orizzontale + (spazio dopo ogni elemento) +** 'vertical': gli elementi sono posizionati in verticale + (nuova riga dopo ogni elemento) +** 'columns_horizontal': gli elementi sono posizionati in orizzontale, + visualizzati su colonne +** 'columns_vertical': gli elementi sono posizionati in verticale, + visualizzati su colonne +* 'filling_left_right': +** 'horizontal': gli elementi sono posizionati in orizzontale + (spazio dopo ogni elemento) +** 'vertical': gli elementi sono posizionati in verticale + (nuova riga dopo ogni elemento) +** 'columns_horizontal': gli elementi sono posizionati in orizzontale, + visualizzati su colonne +** 'columns_vertical': gli elementi sono posizionati in verticale, + visualizzati su colonne +* 'size': dimensione della barra in caratteri + (0 corrisponde a dimensione automatica) +* 'size_max': dimensione massima per la barra + (0 corrisponde a nessuna dimensione massima) +* 'color_fg': colore per il testo nella barra +* 'color_delim': colore per i delimitatori nella barra +* 'color_bg': colore di sfondo per la barra +* 'separator': +** 'on': la barra ha una riga di separazione con altre finestre/barre +** 'off': nessun separatore +* 'items': elenco di elemento nella barra, separati da virgola (spazio tra + gli elementi), o "+" (elementi incollati) + +Valore restituito: + +* puntatore alla nuova barra, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_gui_bar *my_bar = weechat_bar_new ("mybar", + "off", + "100", + "window", + "", + "top", + "horizontal", + "vertical", + "0", + "5", + "default", + "cyan", + "blue", + "off", + "time,buffer_number+buffer_name"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +bar = weechat.bar_new(name, hidden, priority, type, condition, position, + filling_top_bottom, filling_left_right, size, size_max, + color_fg, color_delim, color_bg, separator, items) + +# esempio +bar = weechat.bar_new("mybar", "off", "100", "window", "", "top", "horizontal", "vertical", + "0", "5", "default", "cyan", "blue", "off", "time,buffer_number+buffer_name") +---- + +==== weechat_bar_set + +Imposta un nuovo valore per la proprietà di una barra. + +Prototipo: + +[source,C] +---- +int weechat_bar_set (struct t_gui_bar *bar, const char *property, + const char *value); +---- + +Argomenti: + +* 'bar': puntatore alla barra +* 'property': name, hidden, priority, conditions, position, filling_top_bottom, + filling_left_right, size, size_max, color_fg, color_delim, color_bg, + separator, items (consultare <<_weechat_bar_new,weechat_bar_new>>) +* 'value': nuovo valore per la proprietà + +Valore restituito: + +* 1 se il nuovo valore è stato impostato, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +weechat_bar_set (mybar, "position", "bottom"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.bar_set(bar, property, value) + +# esempio +weechat.bar_set(my_bar, "position", "bottom") +---- + +==== weechat_bar_update + +Aggiorna il contenuto di una barra su schermo. + +Prototipo: + +[source,C] +---- +void weechat_bar_update (const char *name); +---- + +Argomenti: + +* 'name': nome della barra + +Esempio in C: + +[source,C] +---- +weechat_bar_update ("mybar"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.bar_update(name) + +# esempio +weechat.bar_update("mybar") +---- + +==== weechat_bar_remove + +Rimuove una barra. + +Prototipo: + +[source,C] +---- +void weechat_bar_remove (struct t_gui_bar *bar); +---- + +Argomenti: + +* 'bar': puntatore alla barra + +Esempio in C: + +[source,C] +---- +weechat_bar_remove (mybar); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.bar_remove(bar) + +# esempio +weechat.bar_remove(my_bar) +---- + +[[commands]] +=== Comandi + +Funzioni per eseguire comandi di WeeChat. + +==== weechat_command + +Esegue un comando. + +Prototipo: + +[source,C] +---- +void weechat_command (struct t_gui_buffer *buffer, const char *command); +---- + +Argomenti: + +* 'buffer': puntatore al buffer (il comando viene eseguito su questo buffer, + utilizzare NULL per il buffer corrente) +* 'command': comando da eseguire (se preceduto da "/"), oppure il testo + viene inviato sul buffer + +Esempio in C: + +[source,C] +---- +weechat_command (weechat_buffer_search ("irc", "freenode.#weechat"), + "/whois FlashCode"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.command(buffer, command) + +# esempio +weechat.command(weechat.buffer_search("irc", "freenode.#weechat"), "/whois FlashCode") +---- + +[[network]] +=== Network + +Funzioni di rete. + +==== weechat_network_pass_proxy + +Stabilisce una connessione/autenticazione con un proxy. + +[IMPORTANT] +// TRANSLATION MISSING +This function is blocking on call to connect(), so it must be called in a forked +process only, to not block WeeChat. + +Prototipo: + +[source,C] +---- +int weechat_network_pass_proxy (const char *proxy, + int sock, + const char *address, + int port); +---- + +Argomenti: + +* 'proxy': nome del proxy da utilizzare +* 'sock': socket da utilizzare +* 'address': indirizzo (nome host o indirizzo IP) +* 'port': port + +Valore restituito: + +* 1 se la connessione è andata a buon fine, 0 in caso di + errore + +Esempio in C: + +[source,C] +---- +if (weechat_network_pass_proxy ("my_proxy", sock, "irc.freenode.net", 6667)) +{ + /* OK */ +} +else +{ + /* errore */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_network_connect_to + +// TRANSLATION MISSING +_Updated in 0.4.3._ + +Stabilisce una connessione con un host remoto. + +[IMPORTANT] +// TRANSLATION MISSING +This function is blocking on call to connect(), so it must be called in a forked +process only, to not block WeeChat. + +Prototipo: + +[source,C] +---- +int weechat_network_connect_to (const char *proxy, + struct sockaddr *address, + socklen_t address_length); +---- + +Argomenti: + +* 'proxy': nome del proxy da utilizzare +// TRANSLATION MISSING +* 'address': address to connect to (with port) +// TRANSLATION MISSING +* 'address_length': length of argument 'address' + +Valore restituito: + +// TRANSLATION MISSING +* socket number (>= 0) if connection is OK, -1 if an error occurred + +Esempio in C: + +// TRANSLATION MISSING +[source,C] +---- +struct sockaddr *addr; +socklen_t length; +int sock; + +/* allocate/set address and port in 'addr', set 'length' */ +/* ... */ + +sock = weechat_network_connect_to (NULL, addr, length); +if (sock >= 0) +{ + /* OK */ +} +else +{ + /* errore */ +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +[[infos]] +=== Info + +Funzioni per ottenere info. + +==== weechat_info_get + +Restituisce la info, come stringa, da WeeChat o da un plugin. + +Prototipo: + +[source,C] +---- +const char *weechat_info_get (const char *info_name, const char *arguments); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'info_name': nome delle informazioni da leggere (see table below) +* 'arguments': argomenti per l'informazione richiesta (opzionake, NULL se non + è richiesto alcun argomento) + +Valore restituito: + +* stringa con l'informazione richiesta, NULL in caso di errore + +// TRANSLATION MISSING +Infos: + +include::autogen/plugin_api/infos.asciidoc[] + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "Current WeeChat version is: %s (compiled on %s)", + weechat_info_get ("version", NULL), + weechat_info_get ("date", NULL)); +weechat_printf (NULL, "WeeChat home is: %s", + weechat_info_get ("weechat_dir", NULL)); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.info_get(info_name, arguments) + +# esempio +weechat.prnt("", "Current WeeChat version is: %s (compiled on %s)" + % (weechat.info_get("version", ""), weechat.info_get("date", "")) +weechat.prnt("", "WeeChat home is: %s" % weechat.info_get("weechat_dir")) +---- + +==== weechat_info_get_hashtable + +_WeeChat ≥ 0.3.4._ + +Restituisce una info, come tabella hash, da WeeChat o da un plugin. + +Prototipo: + +[source,C] +---- +struct t_hashtable *weechat_info_get_hashtable (const char *info_name, + struct t_hashtable *hashtable); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'info_name': nome della info da leggere (see table below) +* 'hashtable': tabella hash con argomenti (dipende dalla info richiesta) +* (opzionale, NULL se l'argomento non viene richiesto) + +Valore restituito: + +* tabella hash con la info richiesta, NULL in caso di errore + +// TRANSLATION MISSING +Infos: + +include::autogen/plugin_api/infos_hashtable.asciidoc[] + +Esempio in C: + +[source,C] +---- +struct t_hashtable *hashtable_in, *hashtable_out; + +hashtable_in = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (hashtable_in) +{ + weechat_hashtable_set (hashtable_in, "message", + ":nick!user@host PRIVMSG #weechat :message here"); + hashtable_out = weechat_info_get_hashtable ("irc_message_parse", + hashtable_in); + /* + * now hashtable_out has following keys/values: + * "nick" : "nick" + * "host" : "nick!user@host" + * "command" : "PRIVMSG" + * "channel" : "#weechat" + * "arguments": "#weechat :message here" + */ + weechat_hashtable_free (hashtable_in); + weechat_hashtable_free (hashtable_out); +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +dict = weechat.info_get_hashtable(info_name, dict_in) + +# esempio +dict_in = { "message": ":nick!user@host PRIVMSG #weechat :message here" } +weechat.prnt("", "message parsed: %s" + % weechat.info_get_hashtable("irc_message_parse", dict_in)) +---- + +[[infolists]] +=== Liste info + +Una lista info è una lista di "elementi". Ciascun elemento contiene +delle variabili. + +Ad esempio, la lista info "irc_server" ha N elementi (N è il numero di +server IRC definiti). Per ogni elemento, esistono variabili come "name", +"buffer", "is connected",... + +Ogni variabile ha un tipo e un valore. I tipi possibili sono: + +* 'integer': qualunque valore intero +* 'string': qualunque valore stringa +* 'pointer': qualunque puntatore +* 'buffer': buffer di lunghezza fissa, contenente qualunque dato +* 'time': valore tempo + +==== weechat_infolist_new + +Crea una nuova lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist *weechat_infolist_new (); +---- + +Valore restituito: + +* puntatore alla nuova lista info + +Esempio in C: + +[source,C] +---- +struct t_infolist *infolist = weechat_infolist_new (); +---- + +Script (Python): + +[source,python] +---- +# prototipo +infolist = weechat.infolist_new() + +# esempio +infolist = weechat.infolist_new() +---- + +==== weechat_infolist_new_item + +Aggiunge un elemento alla lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_item *weechat_infolist_new_item (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Valore restituito: + +* puntatore al nuovo elemento + +Esempio in C: + +[source,C] +---- +struct t_infolist_item *item = weechat_infolist_new_item (infolist); +---- + +Script (Python): + +[source,python] +---- +# prototipo +item = weechat.infolist_new_item(infolist) + +# esempio +item = weechat.infolist_new_item(infolist) +---- + +==== weechat_infolist_new_var_integer + +Aggiunge una variabile intera ad un elemento della +lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_new_var_integer (struct t_infolist_item *item, + const char *name, + int value); +---- + +Argomenti: + +* 'item': puntatore all'elemento della lista info +* 'name': nome variabile +* 'value': valore intero + +Valore restituito: + +* puntatore alla nuova variabile + +Esempio in C: + +[source,C] +---- +struct t_infolist_var *var = weechat_infolist_new_var_integer (item, + "my_integer", + 123); +---- + +Script (Python): + +[source,python] +---- +# prototipo +var = weechat.infolist_new_var_integer(item, name, value) + +# esempio +var = weechat.infolist_new_var_integer(item, "my_integer", 123) +---- + +==== weechat_infolist_new_var_string + +Aggiunge una variabile stringa ad un elemento +della lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_new_var_string (struct t_infolist_item *item, + const char *name, + const char *value); +---- + +Argomenti: + +* 'item': puntatore all'elemento della lista info +* 'name': nome variabile +* 'value': valore stringa + +Valore restituito: + +* puntatore alla nuova variabile + +Esempio in C: + +[source,C] +---- +struct t_infolist_var *var = weechat_infolist_new_var_string (item, + "my_string", + "value"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +var = weechat.infolist_new_var_string(item, name, value) + +# esempio +var = weechat.infolist_new_var_string(item, "my_string", "value") +---- + +==== weechat_infolist_new_var_pointer + +Aggiunge una variabile puntatore ad un elemento +della lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_new_var_pointer (struct t_infolist_item *item, + const char *name, + void *pointer); +---- + +Argomenti: + +* 'item': puntatore all'elemento della lista info +* 'name': nome variabile +* 'pointer': puntatore + +Valore restituito: + +* puntatore alla nuova variabile + +Esempio in C: + +[source,C] +---- +struct t_infolist_var *var = weechat_infolist_new_var_pointer (item, + "my_pointer", + &pointer); +---- + +Script (Python): + +[source,python] +---- +# prototipo +var = weechat.infolist_new_var_pointer(item, name, pointer) + +# esempio +var = weechat.infolist_new_var_pointer(item, "my_pointer", pointer) +---- + +==== weechat_infolist_new_var_buffer + +Aggiunge una variabile puntatore ad un elemento della lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_new_var_buffer (struct t_infolist_item *item, + const char *name, + void *pointer, + int size); +---- + +Argomenti: + +* 'item': puntatore all'elemento della lista info +* 'name': nome della variabile +* 'pointer': puntatore al buffer +* 'size': dimensione del buffer + +Valore restituito: + +* puntatore alla nuova variabile + +Esempio in C: + +[source,C] +---- +char buffer[256]; +/* ... */ +struct t_infolist_var *var = weechat_infolist_new_var_buffer (item, + "my_buffer", + &buffer, + sizeof (buffer)); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_infolist_new_var_time + +Aggiunge una variabile tempo ad un elemento della lista info. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_new_var_time (struct t_infolist_item *item, + const char *name, + time_t time); +---- + +Argomenti: + +* 'item': puntatore all'elemento della lista info +* 'name': nome della variabile +* 'time': valore tempo + +Valore restituito: + +* puntatore alla nuova variabile + +Esempio in C: + +[source,C] +---- +struct t_infolist_var *var = weechat_infolist_new_var_time (item, + "my_time", + time (NULL)); +---- + +Script (Python): + +[source,python] +---- +# prototipo +var = weechat.infolist_new_var_time(item, name, time) + +# esempio +var = weechat.infolist_new_var_time(item, "my_time", int(time.time())) +---- + +==== weechat_infolist_get + +Restituisce una lista info da WeeChat o da un plugin. + +[IMPORTANT] +Il contenuto della lista info è un duplicato dei dati attuali. Se si sta +richiedendo una lista info con molti dati (come "buffer_lines"), WeeChat +allocherà memoria per duplicare tutti i dati, e potrebbe essere necessario un +po' di tempo. + +Invece di usare liste info più grandi, è preferibilie usare hdata (ma le liste +info potrebbero avere più info di hdata, che sono dati raw), consultare <<hdata,hdata>>. + +Prototipo: + +[source,C] +---- +struct t_infolist *weechat_infolist_get (const char *infolist_name, + void *pointer, + const char *arguments); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'infolist_name': nome della lista info da leggere (see table below) +* 'pointer': puntatore ad un elemento, per ricevere solo questo + elemento nella lista info (opzionale, può essere NULL) +* 'arguments': argomenti per la lista info richiesta (opzionale, NULL se + non è necessario alcun argomento) + +Valore restituito: + +* puntatore alla lista info, NULL in caso di errore + +// TRANSLATION MISSING +Infolists: + +include::autogen/plugin_api/infolists.asciidoc[] + +Esempio in C: + +[source,C] +---- +struct t_infolist *infolist = weechat_infolist_get ("irc_server", NULL, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +infolist = weechat.infolist_get(infolist_name, pointer, arguments) + +# esempio +infolist = weechat.infolist_get("irc_server", "", "") +---- + +==== weechat_infolist_next + +Sposta "cursor" all'elemento successivo nella lista info. La prima chiamata +a questa funzione per una lista info sposta il cursore al primo elemento +nella lista info. + +Prototipo: + +[source,C] +---- +int weechat_infolist_next (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Valore restituito: + +* 1 se il cursore è stato spostato sull'elemento successivo, 0 se è + stata raggiunta la fine della lista + +Esempio in C: + +[source,C] +---- +if (weechat_infolist_next (infolist)) +{ + /* legge variabili nell'elemento... */ +} +else +{ + /* nessun altro elemento disponibile */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.infolist_next(infolist) + +# esempio +rc = weechat.infolist_next(infolist) +if rc: + # legge variabili nell'elemento... +else: + # nessun altro elemento disponibile +---- + +==== weechat_infolist_prev + +Sposta "cursor" all'elemento precedente nella lista info. La prima +chiamata a questa funzione per una lista info sposta il cursore +all'ultimo elemento. + +Prototipo: + +[source,C] +---- +int weechat_infolist_prev (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Valore restituito: + +* 1 se il cursore è stato spostato sull'elemento precedente, 0 se + è stato raggiunto l'inizio della lista + +Esempio in C: + +[source,C] +---- +if (weechat_infolist_prev (infolist)) +{ + /* legge variabili nell'elemento... */ +} +else +{ + /* nessun altro elemento disponibile */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.infolist_prev(infolist) + +# esempio +rc = weechat.infolist_prev(infolist) +if rc: + # read variables in item... +else: + # no more item available +---- + +==== weechat_infolist_reset_item_cursor + +Ripristina "cursor" per la lista info. + +Prototipo: + +[source,C] +---- +void weechat_infolist_reset_item_cursor (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Esempio in C: + +[source,C] +---- +weechat_infolist_reset_item_cursor (infolist); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.infolist_reset_item_cursor(infolist) + +# esempio +weechat.infolist_reset_item_cursor(infolist) +---- + +==== weechat_infolist_search_var + +_WeeChat ≥ 0.4.3._ + +// TRANSLATION MISSING +Search a variable in the current infolist item. + +Prototipo: + +[source,C] +---- +struct t_infolist_var *weechat_infolist_search_var (struct t_infolist *infolist, + const char *name); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'name': nome della variabile + +Valore restituito: + +// TRANSLATION MISSING +* pointer to variable found, NULL if the variable was not found + +Esempio in C: + +// TRANSLATION MISSING +[source,C] +---- +if (weechat_infolist_search_var (infolist, "name")) +{ + /* variable "name" exists */ + /* ... */ +} +---- + +Script (Python): + +// TRANSLATION MISSING +[source,python] +---- +# prototipo +var = weechat.infolist_search_var(infolist, name) + +# esempio +if weechat.infolist_search_var(infolist, "name"): + # variable "name" exists + # ... +---- + +==== weechat_infolist_fields + +Restituisce una lista di campi per l'elemento della +lista info corrente. + +Prototipo: + +[source,C] +---- +const char *weechat_infolist_fields (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Valore restituito: + +* stringa con una lista di campi per l'elemento della lista info corrente. + La lista è separata da virgole, e contiene lettere per tipo, seguite dal + nome della variabile. I tipi sono: "i" (intero), "s" (stringa), "p" (puntatore), + "b" (buffer), "t" (tempo). + +Esempio in C: + +[source,C] +---- +const char *fields = weechat_infolist_fields (infolist); +/* i campi contengono qualcosa come: + "i:my_integer,s:my_string,p:my_pointer,b:my_buffer,t:my_time" */ +---- + +Script (Python): + +[source,python] +---- +# prototipo +fields = weechat.infolist_fields(infolist) + +# esempio +fields = weechat.infolist_fields(infolist) +# i campi contengono qualcosa come: +# "i:my_integer,s:my_string,p:my_pointer,b:my_buffer,t:my_time" +---- + +==== weechat_infolist_integer + +Restituisce il valore della variabile intera nell'elemento +corrente della lista info. + +Prototipo: + +[source,C] +---- +int weechat_infolist_integer (struct t_infolist *infolist, const char *var); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'var': nome della variabile (deve essere di tipo "integer") + +Valore restituito: + +* valore intero della variabile + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "integer = %d", + weechat_infolist_integer (infolist, "my_integer")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.infolist_integer(infolist, var) + +# esempio +weechat.prnt("", "integer = %d" % weechat.infolist_integer(infolist, "my_integer")) +---- + +==== weechat_infolist_string + +Restituisce il valore della variabile stringa nell'elemento +della lista info corrente. + +Prototipo: + +[source,C] +---- +const char *weechat_infolist_string (struct t_infolist *infolist, const char *var); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'var': nome della variabile (deve essere di tipo "string") + +Valore restituito: + +* valore stringa della variabile + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "string = %s", + weechat_infolist_string (infolist, "my_string")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.infolist_string(infolist, var) + +# esempio +weechat.prnt("", "string = %s" % weechat.infolist_string(infolist, "my_string")) +---- + +==== weechat_infolist_pointer + +Restituisce il valore della variabile puntatore nell'elemento +della lista info corrente. + +Prototipo: + +[source,C] +---- +void *weechat_infolist_pointer (struct t_infolist *infolist, const char *var); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'var': nome della variabile (deve essere di tipo "pointer") + +Valore restituito: + +* puntatore al valore della variabile + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "pointer = 0x%lx", + weechat_infolist_pointer (infolist, "my_pointer")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.infolist_pointer(infolist, var) + +# esempio +weechat.prnt("", "pointer = 0x%s" % weechat.infolist_pointer(infolist, "my_pointer")) +---- + +==== weechat_infolist_buffer + +Restituisce il valore della variabile buffer nell'elemento corrente +della lista info. + +Prototipo: + +[source,C] +---- +void *weechat_infolist_buffer (struct t_infolist *infolist, const char *var, + int *size); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'var': nome della variabile (deve essere di tipo "buffer") +* 'size': puntatore ad una variabile intera, verrà impostata con la + dimensione del buffer + +Valore restituito: + +* puntatore al buffer + +Esempio in C: + +[source,C] +---- +int size; +void *pointer = weechat_infolist_buffer (infolist, "my_buffer", &size); +weechat_printf (NULL, "buffer = 0x%lx, size = %d", + pointer, size); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_infolist_time + +Restituisce il valore della variabile data/ora nell'elemento +attivo della lista info. + +Prototipo: + +[source,C] +---- +time_t weechat_infolist_time (struct t_infolist *infolist, const char *var); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info +* 'var': nome della variabile (deve essere di tipo "time") + +Valore restituito: + +* valore della variabile nel formato data/ora + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "time = %ld", + weechat_infolist_time (infolist, "my_time")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.infolist_time(infolist, var) + +# esempio +weechat.prnt("", "time = %ld" % weechat.infolist_time(infolist, "my_time")) +---- + +==== weechat_infolist_free + +Libera una lista info. + +Prototipo: + +[source,C] +---- +void weechat_infolist_free (struct t_infolist *infolist); +---- + +Argomenti: + +* 'infolist': puntatore alla lista info + +Esempio in C: + +[source,C] +---- +weechat_infolist_free (infolist); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.infolist_free(infolist) + +# esempio +weechat.infolist_free(infolist) +---- + +[[hdata]] +=== Hdata + +Funzioni per hdata (accesso raw a WeeChat o ai dati dei plugin). + +// TRANSLATION MISSING +[IMPORTANT] +Hdata fornisce un accesso in sola lettura ai dati. È *SEVERAMENTE VIETATO* +scrivere qualcosa in memoria puntato dalle variabili in hdata. + +The only way to update data is to call function +<<_weechat_hdata_update,weechat_hdata_update>>. + +==== weechat_hdata_new + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.6, updated in 0.3.9 and 0.4.0._ + +Crea un nuovo hdata. + +[NOTE] +.hdata vs infolist +==== +Hdata è un metodo veloce per leggere i dati di WeeChat o dei plugin. È simile +alle liste info, ma ci sono alcune differenze: + +* è più veloce ed usa meno memoria: lettura diretta dei dati senza duplicazione +* può contenere informazioni differenti rispetto alle liste info: esso contiene + solo dati raw in strutture (le liste info possono aggiungere alcuni dati extra + per convenienza) +==== + +Prototipo: + +[source,C] +---- +struct t_hdata *weechat_hdata_new (const char *hdata_name, const char *var_prev, const char *var_next, + int create_allowed, int delete_allowed, + int (*callback_update)(void *data, + struct t_hdata *hdata, + void *pointer, + struct t_hashtable *hashtable), + void *callback_update_data); +---- + +Argomenti: + +* 'hdata_name': nome di un hdata +* 'var_prev': nome della variabile nella struttura che è puntatore all'elemento + precedente nella lista (può essere NULL se non è disponibile tale variabile) +* 'var_next': nome della variabile nella struttura che è puntatore all'elemento + successivo nella lista (può essere NULL se non è disponibile tale variabile) +// TRANSLATION MISSING +* 'create_allowed': 1 if create of structure is allowed, otherwise 0 + _(WeeChat ≥ 0.4.0)_ +// TRANSLATION MISSING +* 'delete_allowed': 1 if delete of structure is allowed, otherwise 0 + _(WeeChat ≥ 0.3.9)_ +// TRANSLATION MISSING +* 'callback_update': callback to update data in hdata, can be NULL if no update + is allowed _(WeeChat ≥ 0.3.9)_, arguments and return value: +** 'void *data': pointer +** 'struct t_hdata *hdata': pointer to hdata +** 'struct t_hashtable *hashtable': hashtable with variables to update + (see <<_weechat_hdata_update,weechat_hdata_update>>) +** return value: number of variables updated +// TRANSLATION MISSING +* 'callback_update_data': pointer given to update callback when it is called by + WeeChat _(WeeChat ≥ 0.3.9)_ + +Valore restituito: + +* puntatore al nuovo hdata + +Esempio in C: +source,C] +---- +struct t_hdata *hdata = weechat_hdata_new ("myplugin_list", "prev", "next", 0, 0, &callback_update, NULL); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_new_var + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.6, updated in 0.3.9_ + +Crea una nuova variabile in hdata. + +Prototipo: + +[source,C] +---- +void weechat_hdata_new_var (struct t_hdata *hdata, const char *name, int offset, int type, + int update_allowed, const char *array_size, const char *hdata_name); +---- + +Argomenti: + +* 'hdata': puntatore ad hdata +* 'name': nome della variabile +* 'offset': offset della variabile nella struttura +* 'type': tipo variabile, una di: +** WEECHAT_HDATA_CHAR +** WEECHAT_HDATA_INTEGER +** WEECHAT_HDATA_LONG +** WEECHAT_HDATA_STRING +** WEECHAT_HDATA_SHARED_STRING +** WEECHAT_HDATA_POINTER +** WEECHAT_HDATA_TIME +** WEECHAT_HDATA_HASHTABLE +** WEECHAT_HDATA_OTHER +// TRANSLATION MISSING +* 'update_allowed': 1 if update of variable is allowed, otherwise 0 + _(WeeChat ≥ 0.3.9)_ +// TRANSLATION MISSING +* 'array_size': not NULL only if a variable is an array, and it can be: + _(WeeChat ≥ 0.3.9)_ +** name of variable in hdata: this variable will be used as size of array + (dynamic size for array) +** integer (as string): fixed size for array +** '*': automatic size: the size of array is computed by looking at values, when + the first NULL is found (only for type string, pointer or hashtable) +* 'hdata_name': nome di un hdata (se è un puntatore ad una struttura con dati) + +Esempio in C: + +[source,C] +---- +struct t_myplugin_list +{ + char *name; + struct t_gui_buffer *buffer; + int tags_count; + char **tags_array; + char **string_split; + struct t_myplugin_list *prev; + struct t_myplugin_list *next; +}; + +/* ... */ + +struct t_hdata *hdata = weechat_hdata_new ("myplugin_list", "prev", "next"); +weechat_hdata_new_var (hdata, "name", offsetof (struct t_myplugin_list, name), WEECHAT_HDATA_STRING, 0, NULL, NULL); +weechat_hdata_new_var (hdata, "buffer", offsetof (struct t_myplugin_list, buffer), WEECHAT_HDATA_POINTER, 0, NULL, NULL); +weechat_hdata_new_var (hdata, "tags_count", offsetof (struct t_myplugin_list, tags_count), WEECHAT_HDATA_INTEGER, 0, NULL, NULL); +weechat_hdata_new_var (hdata, "tags_array", offsetof (struct t_myplugin_list, tags_array), WEECHAT_HDATA_STRING, 0, "tags_count", NULL); +weechat_hdata_new_var (hdata, "string_split", offsetof (struct t_myplugin_list, string_split), WEECHAT_HDATA_STRING, 0, "*", NULL); +weechat_hdata_new_var (hdata, "prev", offsetof (struct t_myplugin_list, prev), WEECHAT_HDATA_POINTER, 0, NULL, "myplugin_list"); +weechat_hdata_new_var (hdata, "next", offsetof (struct t_myplugin_list, next), WEECHAT_HDATA_POINTER, 0, NULL, "myplugin_list"); +---- + +La macro "WEECHAT_HDATA_VAR" può essere usata per accorciare il codice: + +[source,C] +---- +WEECHAT_HDATA_VAR(struct t_myplugin_list, name, STRING, 0, NULL, NULL); +WEECHAT_HDATA_VAR(struct t_myplugin_list, buffer, POINTER, 0, NULL, NULL); +WEECHAT_HDATA_VAR(struct t_myplugin_list, tags_count, INTEGER, 0, NULL, NULL); +WEECHAT_HDATA_VAR(struct t_myplugin_list, tags_array, STRING, 0, "tags_count", NULL); +WEECHAT_HDATA_VAR(struct t_myplugin_list, string_split, STRING, 0, "*", NULL); +WEECHAT_HDATA_VAR(struct t_myplugin_list, prev, POINTER, 0, NULL, "myplugin_list"); +WEECHAT_HDATA_VAR(struct t_myplugin_list, next, POINTER, 0, NULL, "myplugin_list"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_new_list + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.6, updated in 1.0._ + +Crea una nuovo puntatore alla lista in hdata. + +Prototipo: + +[source,C] +---- +void weechat_hdata_new_list (struct t_hdata *hdata, const char *name, void *pointer, int flags); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome delal variabile +* 'pointer': puntatore alla lista +// TRANSLATION MISSING +* 'flags': combination of following values: _(WeeChat ≥ 1.0)_ +** 'WEECHAT_HDATA_LIST_CHECK_POINTERS': list used to check pointers + +Esempio in C: + +[source,C] +---- +struct t_myplugin_list +{ + char *name; + struct t_gui_buffer *buffer; + int tags_count; + char **tags_array; + char **string_split; + struct t_myplugin_list *prev; + struct t_myplugin_list *next; +}; + +/* ... */ + +struct t_hdata *hdata = weechat_hdata_new ("myplugin_list", "prev", "next"); +weechat_hdata_new_var (hdata, "name", offsetof (struct t_myplugin_list, name), WEECHAT_HDATA_STRING, NULL, NULL); +weechat_hdata_new_var (hdata, "buffer", offsetof (struct t_myplugin_list, buffer), WEECHAT_HDATA_POINTER, NULL, NULL); +weechat_hdata_new_var (hdata, "tags_count", offsetof (struct t_myplugin_list, tags_count), WEECHAT_HDATA_INTEGER, NULL, NULL); +weechat_hdata_new_var (hdata, "tags_array", offsetof (struct t_myplugin_list, tags_array), WEECHAT_HDATA_STRING, "tags_count", NULL); +weechat_hdata_new_var (hdata, "string_split", offsetof (struct t_myplugin_list, string_split), WEECHAT_HDATA_STRING, "*", NULL); +weechat_hdata_new_var (hdata, "prev", offsetof (struct t_myplugin_list, prev), WEECHAT_HDATA_POINTER, NULL, "myplugin_list"); +weechat_hdata_new_var (hdata, "next", offsetof (struct t_myplugin_list, next), WEECHAT_HDATA_POINTER, NULL, "myplugin_list"); + +weechat_hdata_new_list (hdata, "buffers", &buffers, WEECHAT_HDATA_LIST_CHECK_POINTERS); +weechat_hdata_new_list (hdata, "last_buffer", &last_buffer, 0); +---- + +La macro "WEECHAT_HDATA_LIST" può essere usata per accorciare il codice: + +[source,C] +---- +WEECHAT_HDATA_LIST(buffers, WEECHAT_HDATA_LIST_CHECK_POINTERS); +WEECHAT_HDATA_LIST(last_buffer, 0); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_get + +_WeeChat ≥ 0.3.6._ + +Restituisce hdata per una struttura di WeeChat o di un plugin. + +[NOTE] +Hdata non contiene dati, è una tabella hash con la posizione delle variabili +nella struttura. Ciò indica che è necessario questo hdata ed un puntatore ad +un oggetto di WeeChat/plugin per leggere dei dati. + +Prototipo: + +[source,C] +---- +struct t_hdata *weechat_hdata_get (const char *hdata_name); +---- + +Argomenti: + +// TRANSLATION MISSING +* 'hdata_name': nome di un hdata (see list below) + +Valore restituito: + +* puntatore ad un hdata, NULL in caso di errore + +// TRANSLATION MISSING +List of hdata: + +include::autogen/plugin_api/hdata.asciidoc[] + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("irc_server"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hdata = weechat.hdata_get(hdata_name) + +# esempio +hdata = weechat.hdata_get("irc_server") +---- + +==== weechat_hdata_get_var_offset + +_WeeChat ≥ 0.3.6._ + +Restituisce l'offset della variabile in hdata. + +Prototipo: + +[source,C] +---- +int weechat_hdata_get_var_offset (struct t_hdata *hdata, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome della variabile + +Valore restituito: + +* offset della variabile, 0 in caso di errore + +Esempio in C: + +[source,C] +---- +int offset = weechat_hdata_get_var_offset (hdata, "name"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +offset = weechat.hdata_get_var_offset(hdata, name) + +# esempio +offset = weechat.hdata_get_var_offset(hdata, "name") +---- + +==== weechat_hdata_get_var_type + +_WeeChat ≥ 0.3.6._ + +Restituisce il tipo di variabile in hdata (come intero). + +Prototipo: + +[source,C] +---- +int weechat_hdata_get_var_type (struct t_hdata *hdata, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome della variabile + +Valore restituito: + +* tipo della variabile, -1 in caso di errore + +Esempio in C: + +[source,C] +---- +int type = weechat_hdata_get_var_type (hdata, "name"); +switch (type) +{ + case WEECHAT_HDATA_CHAR: + /* ... */ + break; + case WEECHAT_HDATA_INTEGER: + /* ... */ + break; + case WEECHAT_HDATA_LONG: + /* ... */ + break; + case WEECHAT_HDATA_STRING: + /* ... */ + break; + case WEECHAT_HDATA_SHARED_STRING: + /* ... */ + break; + case WEECHAT_HDATA_POINTER: + /* ... */ + break; + case WEECHAT_HDATA_TIME: + /* ... */ + break; + case WEECHAT_HDATA_HASHTABLE: + /* ... */ + break; + case WEECHAT_HDATA_OTHER: + /* ... */ + break; + default: + /* variable not found */ + break; +} +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_get_var_type_string + +_WeeChat ≥ 0.3.6._ + +Restituisce il tipo di variabile in hdata (come stringa). + +Prototipo: + +[source,C] +---- +const char *weechat_hdata_get_var_type_string (struct t_hdata *hdata, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome della variabile + +Valore restituito: + +* tipo della variabile, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "type = %s", + weechat_hdata_get_var_type_string (hdata, "name")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +type = weechat.hdata_get_var_type_string(hdata, name) + +# esempio +weechat.prnt("", "type = %s" % weechat.hdata_get_var_type_string(hdata, "name")) +---- + +==== weechat_hdata_get_var_array_size + +_WeeChat ≥ 0.3.9._ + +// TRANSLATION MISSING +Return array size for variable in hdata. + +Prototipo: + +[source,C] +---- +int weechat_hdata_get_var_array_size (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntarore all'oggetto di WeeChat/plugin +* 'name': nome della variabile + +Valore restituito: + +// TRANSLATION MISSING +* array size for variable, -1 if variable is not an array or if an error occurred + +Esempio in C: + +[source,C] +---- +int array_size = weechat_hdata_get_var_array_size (hdata, pointer, "name"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +array_size = weechat.hdata_get_var_array_size(hdata, pointer, name) + +# esempio +array_size = weechat.hdata_get_var_array_size(hdata, pointer, "name") +---- + +==== weechat_hdata_get_var_array_size_string + +_WeeChat ≥ 0.3.9._ + +// TRANSLATION MISSING +Return array size for variable in hdata (as string). + +Prototipo: + +[source,C] +---- +const char *weechat_hdata_get_var_array_size_string (struct t_hdata *hdata, void *pointer, + const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntarore all'oggetto di WeeChat/plugin +* 'name': nome della variabile + +Valore restituito: + +// TRANSLATION MISSING +* array size for variable as string, NULL if variable is not an array or if an + error occurred + +Esempio in C: + +[source,C] +---- +const char *array_size = weechat_hdata_get_var_array_size_string (hdata, pointer, "name"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +array_size = weechat.hdata_get_var_array_size_string(hdata, pointer, name) + +# esempio +array_size = weechat.hdata_get_var_array_size_string(hdata, pointer, "name") +---- + +==== weechat_hdata_get_var_hdata + +_WeeChat ≥ 0.3.6._ + +Restituisce hdata per la variabile in hdata. + +Prototipo: + +[source,C] +---- +const char *weechat_hdata_get_var_hdata (struct t_hdata *hdata, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome della variabile + +Valore restituito: + +* hdata per la variabile, NULL in caso di nessun hdata presente o di errore + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "hdata = %s", weechat_hdata_get_var_hdata (hdata, "name")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hdata_name = weechat.hdata_get_var_hdata(hdata, name) + +# esempio +weechat.prnt("", "hdata = %s" % weechat.hdata_get_var_hdata(hdata, "name")) +---- + +==== weechat_hdata_get_var + +_WeeChat ≥ 0.3.6._ + +Restituisce il puntatore al contenuto della variabile in hdata. + +Prototipo: + +[source,C] +---- +void *weechat_hdata_get_var (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntarore all'oggetto di WeeChat/plugin +* 'name': nome della variabile + +Valore restituito: + +* puntatore al contenuto della variabile, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +void *pointer = weechat_hdata_get_var (hdata, buffer, "name"); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_get_var_at_offset + +_WeeChat ≥ 0.3.6._ + +Restituisce il puntatore al contenuto della variabile in hdata, usando un offset. + +Prototipo: + +[source,C] +---- +void *weechat_hdata_get_var_at_offset (struct t_hdata *hdata, void *pointer, int offset); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore ad un oggetto di WeeChat/plugin +* 'offset': offset della variabile + +Valore restituito: + +* puntatore al contenuto della variabile, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +int offset = weechat_hdata_get_var_offset (hdata, "name"); +void *pointer = weechat_hdata_get_var_at_offset (hdata, buffer, offset); +---- + +[NOTE] +Questa funzione non è disponibile nelle API per lo scripting. + +==== weechat_hdata_get_list + +_WeeChat ≥ 0.3.6._ + +Restituisce il puntatore alla lista da hdata. + +Prototipo: + +[source,C] +---- +void *weechat_hdata_get_list (struct t_hdata *hdata, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'name': nome della lista + +Valore restituito: + +* puntatore alla lista, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffers = weechat_hdata_get_list (hdata, "gui_buffers"); +---- + +Script (Python): + +[source,python] +---- +# prototipo +list = weechat.hdata_get_list(hdata, name) + +# esempio +hdata = weechat.hdata_get("buffer") +buffers = weechat.hdata_get_list(hdata, "gui_buffers") +---- + +==== weechat_hdata_check_pointer + +// TRANSLATION MISSING +_WeeChat ≥ 0.3.7, updated in 1.0._ + +Verifica se un puntatore è valido per un hdata e un puntatore della lista. + +Prototipo: + +[source,C] +---- +int weechat_hdata_check_pointer (struct t_hdata *hdata, void *list, void *pointer); +---- + +Argomenti: + +* 'hdata': puntatore hdata +// TRANSLATION MISSING +* 'list': puntatore alla lista; if NULL _(WeeChat ≥ 1.0)_, the pointer is + checked with the lists in hdata that have flag "check pointers" (see + <<_weechat_hdata_new_list,weechat_hdata_new_list>>), and if no such list + exists, the pointer is considered as valid +* 'pointer': puntatore da verificare + +Valore restituito: + +* 1 se il puntatore è in lista, 0 in caso contrario + +Esempio in C: + +[source,C] +---- +/* check if a buffer pointer is valid */ +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +if (weechat_hdata_check_pointer (hdata, + weechat_hdata_get_list (hdata, "gui_buffers"), + ptr_buffer)) +{ + /* valid pointer */ +} +else +{ + /* invalid pointer */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.hdata_check_pointer(hdata, list, pointer) + +# esempio +hdata = weechat.hdata_get("buffer") +if weechat.hdata_check_pointer(hdata, weechat.hdata_get_list(hdata, "gui_buffers"), ptr_buffer): + # valid pointer + # ... +else: + # invalid pointer + # ... +---- + +==== weechat_hdata_move + +_WeeChat ≥ 0.3.6._ + +Sposta il puntatore ad un altro elemento nella lista. + +Prototipo: + +[source,C] +---- +void *weechat_hdata_move (struct t_hdata *hdata, void *pointer, int count); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore ad un oggetto di WeeChat/plugin +* 'count': numero di salto(i) da eseguire (intero positivo o negativo, diverso + da 0) + +Valore restituito: + +* puntatore all'elemento raggiunto, NULL in caso di errore + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); + +/* passa al buffer successivo, 2 volte */ +buffer = weechat_hdata_move (hdata, buffer, 2); + +/* passa al buffer precedente */ +if (buffer) + buffer = weechat_hdata_move (hdata, buffer, -1); +---- + +Script (Python): + +[source,python] +---- +# prototipo +pointer = weechat.hdata_move(hdata, pointer, count) + +# esempio +hdata = weechat.hdata_get("buffer") +buffer = weechat.buffer_search_main() + +# passa al buffer successivo, 2 volte +buffer = weechat.hdata_move(hdata, buffer, 2) + +# passa al buffer precedente +if buffer: + buffer = weechat.hdata_move(hdata, buffer, -1) +---- + +==== weechat_hdata_search + +_WeeChat ≥ 0.4.1._ + +// TRANSLATION MISSING +Search element in a list: the expression 'search' is evaluated for each element +in list, until element is found (or end of list). + +Prototipo: + +[source,C] +---- +void *weechat_hdata_search (struct t_hdata *hdata, void *pointer, const char *search, int move); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore ad un oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'search': expression to evaluate, default pointer in expression is the name of + hdata (and this pointer changes for each element in list); for help on + expression, see command `/eval` in 'WeeChat User's guide' +// TRANSLATION MISSING +* 'move': number of jump(s) to execute after unsuccessful search (negative or + positive integer, different from 0) + +Valore restituito: + +// TRANSLATION MISSING +* pointer to element found, NULL if not found + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("irc_server"); +void *servers = weechat_hdata_get (hdata, "irc_servers"); + +/* search irc server with name "freenode" */ +void *server = weechat_hdata_search (hdata, servers, "${irc_server.name} == freenode", 1); +if (server) +{ + /* ... */ +} +---- + +Script (Python): + +// TRANSLATION MISSING +[source,python] +---- +# prototipo +pointer = weechat.hdata_search(hdata, pointer, search, count) + +# esempio +hdata = weechat.hdata_get("irc_server") +servers = weechat.hdata_get_list(hdata, "irc_servers") + +# search irc server with name "freenode" +server = weechat.hdata_search(hdata, servers, "${irc_server.name} == freenode", 1) +if server: + # ... +---- + +==== weechat_hdata_char + +_WeeChat ≥ 0.3.7._ + +Restituisce il valore di una variabile char in una struttura dati usando hdata. + +Prototipo: + +[source,C] +---- +char weechat_hdata_char (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "char"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore char della variabile + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "letter = %c", weechat_hdata_char (hdata, pointer, "letter")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_char(hdata, pointer, name) + +# esempio +weechat.prnt("", "letter = %c" % weechat.hdata_char(hdata, pointer, "letter")) +---- + +==== weechat_hdata_integer + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore di una variabile integer in una struttura dati usando hdata. + +Prototipo: + +[source,C] +---- +int weechat_hdata_integer (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "integer"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore intero della variabile + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +weechat_printf (NULL, "number = %d", weechat_hdata_integer (hdata, buffer, "number")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_integer(hdata, pointer, name) + +# esempio +hdata = weechat.hdata_get("buffer") +buffer = weechat.buffer_search_main() +weechat.prnt("", "number = %d" % weechat.hdata_integer(hdata, buffer, "number")) +---- + +==== weechat_hdata_long + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore della variabile long della struttura usando hdata. + +Prototipo: + +[source,C] +---- +long weechat_hdata_long (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "long"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore long della variabile + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "longvar = %ld", weechat_hdata_long (hdata, pointer, "longvar")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_long(hdata, pointer, name) + +# esempio +weechat.prnt("", "longvar = %ld" % weechat.hdata_long(hdata, pointer, "longvar")) +---- + +==== weechat_hdata_string + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore della variabile string nella struttura usando hdata. + +Prototipo: + +[source,C] +---- +const char *weechat_hdata_string (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "string"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore stringa della variabile + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +weechat_printf (NULL, "name = %s", weechat_hdata_string (hdata, buffer, "name")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_string(hdata, pointer, name) + +# esempio +hdata = weechat.hdata_get("buffer") +buffer = weechat.buffer_search_main() +weechat.prnt("", "name = %s" % weechat.hdata_string(hdata, buffer, "name")) +---- + +==== weechat_hdata_pointer + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore della variabile puntatore nella struttura usando hdata. + +Prototipo: + +[source,C] +---- +void *weechat_hdata_pointer (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': hdata hdata +* 'pointer': pointer all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "pointer"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore puntatore della variabile + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +weechat_printf (NULL, "lines = %lx", weechat_hdata_pointer (hdata, buffer, "lines")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_pointer(hdata, pointer, name) + +# esempio +hdata = weechat.hdata_get("buffer") +buffer = weechat.buffer_search_main() +weechat.prnt("", "lines = %lx" % weechat.hdata_pointer(hdata, buffer, "lines")) +---- + +==== weechat_hdata_time + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore della variabile time nella struttura usando hdata. + +Prototipo: + +[source,C] +---- +time_t weechat_hdata_time (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "time"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore time della variabile + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *ptr = weechat_buffer_search_main (); +ptr = weechat_hdata_pointer (hdata, ptr, "lines"); +if (ptr) +{ + hdata = weechat_hdata_get ("lines"); + ptr = weechat_hdata_pointer (hdata, ptr, "first_line"); + if (ptr) + { + hdata = weechat_hdata_get ("line"); + ptr = weechat_hdata_pointer (hdata, ptr, "data"); + if (ptr) + { + hdata = weechat_hdata_get ("line_data"); + time_t date = weechat_hdata_time (hdata, hdata, "date"); + weechat_printf (NULL, "time of last line displayed = %s", ctime (&date)); + } + } +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_time(hdata, pointer, name) + +# esempio +buf = weechat.buffer_search_main() +ptr = weechat.hdata_pointer(weechat.hdata_get("buffer"), buf, "lines") +if ptr: + ptr = weechat.hdata_pointer(weechat.hdata_get("lines"), ptr, "first_line") + if ptr: + ptr = weechat.hdata_pointer(weechat.hdata_get("line"), ptr, "data") + if ptr: + date = weechat.hdata_time(weechat.hdata_get("line_data"), ptr, "date") + weechat.prnt("", "time of first line displayed = %s" % time.strftime("%F %T", time.localtime(int(date)))) +---- + +==== weechat_hdata_hashtable + +_WeeChat ≥ 0.3.7._ + +Restituisce il valore di una variabile nella tabella hash nella struttura usando +hdata. + +Prototipo: + +[source,C] +---- +struct t_hashtable *weechat_hdata_hashtable (struct t_hdata *hdata, void *pointer, const char *name); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'pointer': puntatore all'oggetto di WeeChat/plugin +// TRANSLATION MISSING +* 'name': nome della variabile (deve essere di tipo "hashtable"); for arrays, + the name can be "N|name" where N is the index in array (starting at 0), + for example: "2|name" + +Valore restituito: + +* valore della tabella hash della variabile (puntatore alla tabella hash) + +Esempio in C: + +[source,C] +---- +struct t_hdata *hdata = weechat_hdata_get ("buffer"); +struct t_gui_buffer *buffer = weechat_buffer_search_main (); +struct t_hashtable *hashtable = weechat_hdata_hashtable (hdata, buffer, "local_variables"); +weechat_printf (NULL, "%d local variables in core buffer", + weechat_hashtable_get_integer (hashtable, "items_count")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +hashtable = weechat.hdata_hashtable(hdata, pointer, name) + +# esempio +hdata = weechat.hdata_get("buffer") +buffer = weechat.buffer_search_main() +hash = weechat.hdata_hashtable(hdata, buffer, "local_variables") +weechat.prnt("", "local variables in core buffer:") +for key in hash: + weechat.prnt("", " %s == %s" % (key, hash[key])) +---- + +// TRANSLATION MISSING +==== weechat_hdata_set + +_WeeChat ≥ 0.3.9._ + +Set new value for variable in a hdata. + +[NOTE] +This function can be called only in an update callback +(see <<_weechat_hdata_new,weechat_hdata_new>> and +<<_weechat_hdata_update,weechat_hdata_update>>), if the variable can be updated. + +Prototipo: + +[source,C] +---- +int weechat_hdata_set (struct t_hdata *hdata, void *pointer, const char *name, const char *value); +---- + +Argomenti: + +* 'hdata': hdata pointer +* 'pointer': pointer to WeeChat/plugin object +* 'name': variable name (types allowed: char, integer, long, string, pointer, + time) +* 'value': new value for variable + +Valore restituito: + +* 1 if ok, 0 if error + +Esempio in C: + +[source,C] +---- +weechat_hdata_set (hdata, pointer, "message", "test"); +---- + +[NOTE] +This function is not available in scripting API. + +// TRANSLATION MISSING +==== weechat_hdata_update + +_WeeChat ≥ 0.3.9._ + +Update data in a hdata. + +Prototipo: + +[source,C] +---- +int weechat_hdata_update (struct t_hdata *hdata, void *pointer, struct t_hashtable *hashtable); +---- + +Argomenti: + +* 'hdata': hdata pointer +* 'pointer': pointer to WeeChat/plugin object +* 'hashtable': variables to update: keys are name of variables, values are new + values for variables (keys and values are string), some special keys are + allowed: +// TRANSLATION MISSING +** key `__create_allowed` (with any value): return 1 if create is allowed for + structure, otherwise 0 _(WeeChat ≥ 0.4.0)_ +** key `__delete_allowed` (with any value): return 1 if delete is allowed for + structure, otherwise 0 +** key `__update_allowed`, value is name of a variable: return 1 if update is + allowed for this variable, otherwise 0 +** key `__delete` (with any value): delete structure (if allowed) + +Valore restituito: + +* number of variables updated + +Esempio in C: + +[source,C] +---- +/* subtract one hour on last message displayed in current buffer */ + +struct t_gui_lines *own_lines; +struct t_gui_line *line; +struct t_gui_line_data *line_data; +struct t_hdata *hdata; +struct t_hashtable *hashtable; +char str_date[64]; + +own_lines = weechat_hdata_pointer (weechat_hdata_get ("buffer"), weechat_current_buffer (), "own_lines"); +if (own_lines) +{ + line = weechat_hdata_pointer (weechat_hdata_get ("lines"), own_lines, "last_line"); + if (line) + { + line_data = weechat_hdata_pointer (weechat_hdata_get ("line"), line, "data"); + hdata = weechat_hdata_get ("line_data"); + hashtable = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); + if (hashtable) + { + snprintf (str_date, sizeof (str_date), "%ld", ((long int)weechat_hdata_time (hdata, line_data, "date")) - 3600); + weechat_hashtable_set (hashtable, "date", str_date); + weechat_hdata_update (hdata, line_data, hashtable); + weechat_hashtable_free (hashtable); + } + } +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +count = weechat.hdata_update(hdata, pointer, hashtable) + +# example: subtract one hour on last message displayed in current buffer +own_lines = weechat.hdata_pointer(weechat.hdata_get('buffer'), weechat.current_buffer(), 'own_lines') +if own_lines: + line = weechat.hdata_pointer(weechat.hdata_get('lines'), own_lines, 'last_line') + if line: + line_data = weechat.hdata_pointer(weechat.hdata_get('line'), line, 'data') + hdata = weechat.hdata_get('line_data') + weechat.hdata_update(hdata, line_data, { 'date': str(weechat.hdata_time(hdata, line_data, 'date') - 3600) }) +---- + +==== weechat_hdata_get_string + +_WeeChat ≥ 0.3.6._ + +Restituisce il valore stringa di una proprietà di hdata. + +Prototipo: + +[source,C] +---- +const char *weechat_hdata_get_string (struct t_hdata *hdata, const char *property); +---- + +Argomenti: + +* 'hdata': puntatore hdata +* 'property': nome della proprietà: +** 'var_keys': stringa con la lista di chiavi per le variabili in hdata + (formato: "key1,key2,key3") +** 'var_values': stringa con la lista di valori per le variabili in hdata + (formato: "value1,value2,value3") +** 'var_keys_values': stringa cona la lista di chiavi e valori per le variabili in hdata + (formato: "key1:value1,key2:value2,key3:value3") +** 'var_prev': nome della variabile nella struttura che fa da puntatore al + precedente elemento nella lista +** 'var_next': nome della variabile nella struttura che fa da puntatore al + successivo elemento nella lista +** 'list_keys': stringa con la lista di chiavi per le liste in hdata + (formato: "key1,key2,key3") +** 'list_values': stringa con la lista di valori per le liste in hdata + (formato: "value1,value2,value3") +** 'list_keys_values': stringa con la lista di chiavi e valori per le liste in hdata + (formato: "key1:value1,key2:value2,key3:value3") + +Valore restituito: + +* valore stringa della proprietà + +Esempio in C: + +[source,C] +---- +weechat_printf (NULL, "variables in hdata: %s", weechat_hdata_get_string (hdata, "var_keys")); +weechat_printf (NULL, "lists in hdata: %s", weechat_hdata_get_string (hdata, "list_keys")); +---- + +Script (Python): + +[source,python] +---- +# prototipo +value = weechat.hdata_get_string(hdata, property) + +# esempio +weechat.prnt("", "variables in hdata: %s" % weechat.hdata_get_string(hdata, "var_keys")) +weechat.prnt("", "lists in hdata: %s" % weechat.hdata_get_string(hdata, "list_keys")) +---- + +[[upgrade]] +=== Aggiornamento + +Funzioni per l'aggiornamento di WeeChat (comando "/upgrade"). + +==== weechat_upgrade_new + +Crea o legge un file per l'aggiornamento. + +Prototipo: + +[source,C] +---- +struct t_upgrade_file *weechat_upgrade_new (const char *filename, int write); +---- + +Argomenti: + +* 'filename': nome del file (l'estensione ".upgrade" verrà aggiunta a questo nome + da WeeChat) +* 'write': +** '1': crea il file (in modalità scrittura, prima dell'aggiornamento) +** '0': legge il file (dopo l'aggiornamento) + +Valore restituito: + +* puntatore al file di aggiornamento + +Esempio in C: + +[source,C] +---- +struct t_upgrade_file *upgrade_file = weechat_upgrade_new ("my_file", 1); +---- + +Script (Python): + +[source,python] +---- +# prototipo +upgrade_file = weechat.upgrade_new(filename, write) + +# esempio +upgrade_file = weechat.upgrade_new("my_file", 1) +---- + +==== weechat_upgrade_write_object + +Scrive un oggetto nel file di aggiornamento. + +Prototipo: + +[source,C] +---- +int weechat_upgrade_write_object (struct t_upgrade_file *upgrade_file, + int object_id, + struct t_infolist *infolist); +---- + +Argomenti: + +* 'upgrade_file': puntatore al file di aggiornamento +* 'object_id': id per l'oggetto +* 'infolist': lista info da scrivere nel file + +Valore restituito: + +* 1 se ok, 0 se errore + +Esempio in C: + +[source,C] +---- +if (weechat_upgrade_write_object (upgrade_file, 1, &infolist)) +{ + /* ok */ +} +else +{ + /* errore */ +} +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.upgrade_write_object(upgrade_file, object_id, infolist) + +# esempio +weechat.upgrade_write_object(upgrade_file, 1, infolist) +---- + +==== weechat_upgrade_read + +Legge un file di aggiornamento. + +Prototipo: + +[source,C] +---- +int weechat_upgrade_read (struct t_upgrade_file *upgrade_file, + int (*callback_read)(void *data, + struct t_upgrade_file *upgrade_file, + int object_id, + struct t_infolist *infolist), + void *callback_read_data); +---- + +Argomenti: + +* 'upgrade_file': puntatore al file di aggiornamento +* 'callback_read': funzione chiamata per ogni oggetto letto nel file + di aggiornamento, argomenti e valore restituito: +** 'void *data': puntatore +** 'struct t_upgrade_file *upgrade_file': puntatore al file di aggiornamento +** 'int object_id': id dell'oggetto +** 'struct t_infolist *infolist': lista info con il contenuto dell'oggetto +** valore restituito: +*** 'WEECHAT_RC_OK' +*** 'WEECHAT_RC_ERROR' +* 'callback_read_data': puntatore assegnato per la lettura della chiamata + quando chiamata da WeeChat + +Valore restituito: + +* 1 se ok, 0 se errore + +Esempio in C: + +[source,C] +---- +int +my_upgrade_read_cb (struct t_upgrade_file *upgrade_file, + int object_id, + struct t_infolist *infolist) +{ + /* lettura variabili... */ + return WEECHAT_RC_OK; +} + +weechat_upgrade_read (upgrade_file, &my_upgrade_read_cb, NULL); +---- + +Script (Python): + +[source,python] +---- +# prototipo +rc = weechat.upgrade_read(upgrade_file, callback_read, callback_read_data) + +# esempio +def my_upgrade_read_cb(upgrade_file, object_id, infolist): + # lettura variabili... + return weechat.WEECHAT_RC_OK + +weechat.upgrade_read(upgrade_file, "my_upgrade_read_cb", "")) +---- + +==== weechat_upgrade_close + +Chiude un file di aggiornamento. + +Prototipo: + +[source,C] +---- +void weechat_upgrade_close (struct t_upgrade_file *upgrade_file); +---- + +Argomenti: + +* 'upgrade_file': puntatore al file di aggiornamento + +Esempio in C: + +[source,C] +---- +weechat_upgrade_close (upgrade_file); +---- + +Script (Python): + +[source,python] +---- +# prototipo +weechat.upgrade_close(upgrade_file) + +# esempio +weechat.upgrade_close(upgrade_file) +---- |