From 4c8b4d608002a44fba14e496e273f836e0849087 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Fri, 24 Oct 2008 18:17:10 +0200 Subject: [PATCH] Add "enabled" flag for each filter (now possible to disable only one or some filters) --- po/cs.po | 55 +++++++++++++------- po/de.po | 53 +++++++++++++------- po/es.po | 53 +++++++++++++------- po/fr.po | 58 ++++++++++----------- po/hu.po | 53 +++++++++++++------- po/ru.po | 53 +++++++++++++------- po/weechat.pot | 33 ++++++------ src/core/wee-command.c | 111 +++++++++++++++++++++++++++++++++++------ src/core/wee-config.c | 9 +++- src/gui/gui-filter.c | 74 ++++++++++++++++++++------- src/gui/gui-filter.h | 10 ++-- 11 files changed, 386 insertions(+), 176 deletions(-) diff --git a/po/cs.po b/po/cs.po index 7f0c42c3d..ba0c38757 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: 2008-09-17 16:19+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -227,29 +227,42 @@ msgid "%sPlugin \"%s\" not found" msgstr "%s adresa \"%s\" nenalezena\n" #, fuzzy -msgid "Filters are enabled" -msgstr "uživatel byl zablokován" +msgid "Message filtering enabled" +msgstr "Žádné aliasy nejsou definovány.\n" #, fuzzy -msgid "Filters are disabled" -msgstr "uživatel byl zablokován" +msgid "Message filtering disabled" +msgstr "Filtry zpráv:" msgid "Message filters:" msgstr "Filtry zpráv:" #, fuzzy, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" msgstr " (není obsluhovač zprávy)\n" +#, fuzzy +msgid "(disabled)" +msgstr "uživatel byl zablokován" + #, fuzzy msgid "No message filter defined" msgstr "Žádné aliasy nejsou definovány.\n" -msgid "Filters enabled" +#, fuzzy, c-format +msgid "Filter %d enabled" msgstr "Filtry povoleny" -#, fuzzy -msgid "Filters disabled" +#, fuzzy, c-format +msgid "%sError: filter not found" +msgstr "%s plugin \"%s\" nenalezen\n" + +#, fuzzy, c-format +msgid "%sError: wrong filter number" +msgstr "%s nekorektní číslo bufferu\n" + +#, fuzzy, c-format +msgid "Filter %d disabled" msgstr "uživatel byl zablokován" #, fuzzy, c-format @@ -276,14 +289,6 @@ msgstr "uživatel byl zablokován" msgid "Filter deleted" msgstr "uživatel byl zablokován" -#, fuzzy, c-format -msgid "%sError: filter not found" -msgstr "%s plugin \"%s\" nenalezen\n" - -#, fuzzy, c-format -msgid "%sError: wrong filter number" -msgstr "%s nekorektní číslo bufferu\n" - #. TRANSLATORS: %s is "weechat" #, fuzzy, c-format msgid "%s internal commands:" @@ -4891,6 +4896,22 @@ msgstr "%s DCC: nemohu nastavit 'neblokovaci' volbu na soket\n" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s chybí argument pro volbu \"%s\"\n" +#, fuzzy +#~ msgid "Message filtering is enabled" +#~ msgstr "Filtry zpráv:" + +#, fuzzy +#~ msgid "Message filtering is disabled" +#~ msgstr "Filtry zpráv:" + +#, fuzzy +#~ msgid "Filters are enabled" +#~ msgstr "uživatel byl zablokován" + +#, fuzzy +#~ msgid "Filters are disabled" +#~ msgstr "uživatel byl zablokován" + #~ msgid "" #~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " #~ "nick and '%m' by nick modes)" diff --git a/po/de.po b/po/de.po index 176deaca5..7bf505c1d 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Thomas Schuetz \n" "Language-Team: weechat-dev \n" @@ -232,29 +232,42 @@ msgid "%sPlugin \"%s\" not found" msgstr "%s Adresse \"%s\" nicht gefunden\n" #, fuzzy -msgid "Filters are enabled" -msgstr "/users wurde deaktiviert" +msgid "Message filtering enabled" +msgstr "Keine Aliases definiert.\n" #, fuzzy -msgid "Filters are disabled" -msgstr "/users wurde deaktiviert" +msgid "Message filtering disabled" +msgstr "Keine Aliases definiert.\n" msgid "Message filters:" msgstr "" #, fuzzy, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" msgstr " (kein Message-Handler)\n" +#, fuzzy +msgid "(disabled)" +msgstr "/users wurde deaktiviert" + #, fuzzy msgid "No message filter defined" msgstr "Keine Aliases definiert.\n" -msgid "Filters enabled" -msgstr "" +#, fuzzy, c-format +msgid "Filter %d enabled" +msgstr "/users wurde deaktiviert" -#, fuzzy -msgid "Filters disabled" +#, fuzzy, c-format +msgid "%sError: filter not found" +msgstr "%s Plugin \"%s\" nicht gefunden\n" + +#, fuzzy, c-format +msgid "%sError: wrong filter number" +msgstr "%s falsche Puffernummer\n" + +#, fuzzy, c-format +msgid "Filter %d disabled" msgstr "/users wurde deaktiviert" #, fuzzy, c-format @@ -281,14 +294,6 @@ msgstr "/users wurde deaktiviert" msgid "Filter deleted" msgstr "/users wurde deaktiviert" -#, fuzzy, c-format -msgid "%sError: filter not found" -msgstr "%s Plugin \"%s\" nicht gefunden\n" - -#, fuzzy, c-format -msgid "%sError: wrong filter number" -msgstr "%s falsche Puffernummer\n" - #. TRANSLATORS: %s is "weechat" #, fuzzy, c-format msgid "%s internal commands:" @@ -4791,6 +4796,18 @@ msgstr "%s DCC: kann die 'nonblock'-Option für den Socket nicht festlegen\n" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s fehlende Argumente für die \"--dir\"-Option\n" +#, fuzzy +#~ msgid "Message filtering is enabled" +#~ msgstr "Keine Aliases definiert.\n" + +#, fuzzy +#~ msgid "Message filtering is disabled" +#~ msgstr "Keine Aliases definiert.\n" + +#, fuzzy +#~ msgid "Filters are disabled" +#~ msgstr "/users wurde deaktiviert" + #~ msgid "" #~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " #~ "nick and '%m' by nick modes)" diff --git a/po/es.po b/po/es.po index 64be63753..fcc478572 100644 --- a/po/es.po +++ b/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: 2007-09-19 12:09+0200\n" "Last-Translator: Roberto González Cardenete \n" "Language-Team: weechat-dev \n" @@ -228,29 +228,42 @@ msgid "%sPlugin \"%s\" not found" msgstr "%s dirección \"%s\" no encontrada\n" #, fuzzy -msgid "Filters are enabled" -msgstr "los usuarios han sido desactivados" +msgid "Message filtering enabled" +msgstr "Ningún alias definido.\n" #, fuzzy -msgid "Filters are disabled" -msgstr "los usuarios han sido desactivados" +msgid "Message filtering disabled" +msgstr "Ningún alias definido.\n" msgid "Message filters:" msgstr "" #, fuzzy, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" msgstr " (sin manejador de mensaje)\n" +#, fuzzy +msgid "(disabled)" +msgstr "los usuarios han sido desactivados" + #, fuzzy msgid "No message filter defined" msgstr "Ningún alias definido.\n" -msgid "Filters enabled" -msgstr "" +#, fuzzy, c-format +msgid "Filter %d enabled" +msgstr "los usuarios han sido desactivados" -#, fuzzy -msgid "Filters disabled" +#, fuzzy, c-format +msgid "%sError: filter not found" +msgstr "%s plugin \"%s\" no encontrado\n" + +#, fuzzy, c-format +msgid "%sError: wrong filter number" +msgstr "%s número de búfer incorrecto\n" + +#, fuzzy, c-format +msgid "Filter %d disabled" msgstr "los usuarios han sido desactivados" #, fuzzy, c-format @@ -277,14 +290,6 @@ msgstr "los usuarios han sido desactivados" msgid "Filter deleted" msgstr "los usuarios han sido desactivados" -#, fuzzy, c-format -msgid "%sError: filter not found" -msgstr "%s plugin \"%s\" no encontrado\n" - -#, fuzzy, c-format -msgid "%sError: wrong filter number" -msgstr "%s número de búfer incorrecto\n" - #. TRANSLATORS: %s is "weechat" #, fuzzy, c-format msgid "%s internal commands:" @@ -4796,6 +4801,18 @@ msgstr "%s no es posible crear el servidor\n" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s falta un argumento para la opción --dir\n" +#, fuzzy +#~ msgid "Message filtering is enabled" +#~ msgstr "Ningún alias definido.\n" + +#, fuzzy +#~ msgid "Message filtering is disabled" +#~ msgstr "Ningún alias definido.\n" + +#, fuzzy +#~ msgid "Filters are disabled" +#~ msgstr "los usuarios han sido desactivados" + #~ msgid "" #~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " #~ "nick and '%m' by nick modes)" diff --git a/po/fr.po b/po/fr.po index 0af94f1d4..31bb58bfc 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" -"PO-Revision-Date: 2008-10-23 18:38+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" +"PO-Revision-Date: 2008-10-24 18:03+0200\n" "Last-Translator: FlashCode \n" "Language-Team: weechat-dev \n" "MIME-Version: 1.0\n" @@ -221,27 +221,40 @@ msgstr "Pas de variable locale définie pour le tampon \"%s\"" msgid "%sPlugin \"%s\" not found" msgstr "%sExtension \"%s\" non trouvée" -msgid "Filters are enabled" -msgstr "Les filtres sont activés" +msgid "Message filtering enabled" +msgstr "Filtrage de messages activé" -msgid "Filters are disabled" -msgstr "Les filtres sont désactivés" +msgid "Message filtering disabled" +msgstr "Filtrage de message désactivé" msgid "Message filters:" msgstr "Filtres de messages:" #, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" -msgstr " %s[%s%d%s]%s tampon: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" +msgstr " %s[%s%d%s]%s tampon: %s%s%s / tags: %s / regex: %s %s" + +msgid "(disabled)" +msgstr "(désactivé)" msgid "No message filter defined" msgstr "Pas de filtre de message défini" -msgid "Filters enabled" -msgstr "Filtres activés" +#, c-format +msgid "Filter %d enabled" +msgstr "Filtre %d activé" -msgid "Filters disabled" -msgstr "Filtres désactivés" +#, c-format +msgid "%sError: filter not found" +msgstr "%sErreur: filtre non trouvé" + +#, c-format +msgid "%sError: wrong filter number" +msgstr "%sErreur: numéro de filtre incorrect" + +#, c-format +msgid "Filter %d disabled" +msgstr "Filtre %d désactivé" #, c-format msgid "%sError: filter already exists" @@ -266,14 +279,6 @@ msgstr "Tous les filtres ont été supprimés" msgid "Filter deleted" msgstr "Filtre supprimé" -#, c-format -msgid "%sError: filter not found" -msgstr "%sErreur: filtre non trouvé" - -#, c-format -msgid "%sError: wrong filter number" -msgstr "%sErreur: numéro de filtre incorrect" - #. TRANSLATORS: %s is "weechat" #, c-format msgid "%s internal commands:" @@ -4837,16 +4842,3 @@ msgstr "%s%s: impossible de positionner l'option \"nonblock\" pour la socket" #, c-format msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s%s: délai d'attente dépassé pour \"%s\" avec %s" - -#~ msgid "" -#~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " -#~ "nick and '%m' by nick modes)" -#~ msgstr "" -#~ "format pour l'invite de la zone de saisie ('%c' est remplacé par le canal " -#~ "ou serveur, '%n' par le pseudo et '%m' par les modes du pseudo)" - -#~ msgid "Text search (exact): " -#~ msgstr "Recherche texte (exact): " - -#~ msgid "Text search: " -#~ msgstr "Recherche texte: " diff --git a/po/hu.po b/po/hu.po index 08c97cb00..f4043024d 100644 --- a/po/hu.po +++ b/po/hu.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: 2007-10-10 18:07+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -233,29 +233,42 @@ msgid "%sPlugin \"%s\" not found" msgstr "%s cím \"%s\" nem található\n" #, fuzzy -msgid "Filters are enabled" -msgstr "a felhasználók le lettek tiltva" +msgid "Message filtering enabled" +msgstr "Nincs aliasz definiálva.\n" #, fuzzy -msgid "Filters are disabled" -msgstr "a felhasználók le lettek tiltva" +msgid "Message filtering disabled" +msgstr "Nincs aliasz definiálva.\n" msgid "Message filters:" msgstr "" #, fuzzy, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" msgstr " (nincs üzenetkezelő)\n" +#, fuzzy +msgid "(disabled)" +msgstr "a felhasználók le lettek tiltva" + #, fuzzy msgid "No message filter defined" msgstr "Nincs aliasz definiálva.\n" -msgid "Filters enabled" -msgstr "" +#, fuzzy, c-format +msgid "Filter %d enabled" +msgstr "a felhasználók le lettek tiltva" -#, fuzzy -msgid "Filters disabled" +#, fuzzy, c-format +msgid "%sError: filter not found" +msgstr "%s a \"%s\" modul nem található\n" + +#, fuzzy, c-format +msgid "%sError: wrong filter number" +msgstr "%s helytelen pufferszám\n" + +#, fuzzy, c-format +msgid "Filter %d disabled" msgstr "a felhasználók le lettek tiltva" #, fuzzy, c-format @@ -282,14 +295,6 @@ msgstr "a felhasználók le lettek tiltva" msgid "Filter deleted" msgstr "a felhasználók le lettek tiltva" -#, fuzzy, c-format -msgid "%sError: filter not found" -msgstr "%s a \"%s\" modul nem található\n" - -#, fuzzy, c-format -msgid "%sError: wrong filter number" -msgstr "%s helytelen pufferszám\n" - #. TRANSLATORS: %s is "weechat" #, fuzzy, c-format msgid "%s internal commands:" @@ -4814,6 +4819,18 @@ msgstr "%s DCC: nem sikerült 'nonblock' opciót beállítani a csatornán\n" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n" +#, fuzzy +#~ msgid "Message filtering is enabled" +#~ msgstr "Nincs aliasz definiálva.\n" + +#, fuzzy +#~ msgid "Message filtering is disabled" +#~ msgstr "Nincs aliasz definiálva.\n" + +#, fuzzy +#~ msgid "Filters are disabled" +#~ msgstr "a felhasználók le lettek tiltva" + #~ msgid "" #~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " #~ "nick and '%m' by nick modes)" diff --git a/po/ru.po b/po/ru.po index 2c9479e16..86f00958d 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Pavel Shevchuk \n" "Language-Team: weechat-dev \n" @@ -229,29 +229,42 @@ msgid "%sPlugin \"%s\" not found" msgstr "%s адрес \"%s\" не найден\n" #, fuzzy -msgid "Filters are enabled" -msgstr "команда users отключена" +msgid "Message filtering enabled" +msgstr "Сокращения не заданы.\n" #, fuzzy -msgid "Filters are disabled" -msgstr "команда users отключена" +msgid "Message filtering disabled" +msgstr "Сокращения не заданы.\n" msgid "Message filters:" msgstr "" #, fuzzy, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" msgstr " (нет обработчика сообщений)\n" +#, fuzzy +msgid "(disabled)" +msgstr "команда users отключена" + #, fuzzy msgid "No message filter defined" msgstr "Сокращения не заданы.\n" -msgid "Filters enabled" -msgstr "" +#, fuzzy, c-format +msgid "Filter %d enabled" +msgstr "команда users отключена" -#, fuzzy -msgid "Filters disabled" +#, fuzzy, c-format +msgid "%sError: filter not found" +msgstr "%s plugin \"%s\" не найден\n" + +#, fuzzy, c-format +msgid "%sError: wrong filter number" +msgstr "%s неправильный номер буфера\n" + +#, fuzzy, c-format +msgid "Filter %d disabled" msgstr "команда users отключена" #, fuzzy, c-format @@ -278,14 +291,6 @@ msgstr "команда users отключена" msgid "Filter deleted" msgstr "команда users отключена" -#, fuzzy, c-format -msgid "%sError: filter not found" -msgstr "%s plugin \"%s\" не найден\n" - -#, fuzzy, c-format -msgid "%sError: wrong filter number" -msgstr "%s неправильный номер буфера\n" - #. TRANSLATORS: %s is "weechat" #, fuzzy, c-format msgid "%s internal commands:" @@ -4796,6 +4801,18 @@ msgstr "%s DCC: не могу установить неблокирующий р msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s нет аргумента для параметра \"%s\"\n" +#, fuzzy +#~ msgid "Message filtering is enabled" +#~ msgstr "Сокращения не заданы.\n" + +#, fuzzy +#~ msgid "Message filtering is disabled" +#~ msgstr "Сокращения не заданы.\n" + +#, fuzzy +#~ msgid "Filters are disabled" +#~ msgstr "команда users отключена" + #~ msgid "" #~ "format for input prompt ('%c' is replaced by channel or server, '%n' by " #~ "nick and '%m' by nick modes)" diff --git a/po/weechat.pot b/po/weechat.pot index 8444b7c9e..da970d358 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-10-24 12:58+0200\n" +"POT-Creation-Date: 2008-10-24 18:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -202,26 +202,39 @@ msgstr "" msgid "%sPlugin \"%s\" not found" msgstr "" -msgid "Filters are enabled" +msgid "Message filtering enabled" msgstr "" -msgid "Filters are disabled" +msgid "Message filtering disabled" msgstr "" msgid "Message filters:" msgstr "" #, c-format -msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s" +msgid " %s[%s%d%s]%s buffer: %s%s%s / tags: %s / regex: %s %s" +msgstr "" + +msgid "(disabled)" msgstr "" msgid "No message filter defined" msgstr "" -msgid "Filters enabled" +#, c-format +msgid "Filter %d enabled" msgstr "" -msgid "Filters disabled" +#, c-format +msgid "%sError: filter not found" +msgstr "" + +#, c-format +msgid "%sError: wrong filter number" +msgstr "" + +#, c-format +msgid "Filter %d disabled" msgstr "" #, c-format @@ -245,14 +258,6 @@ msgstr "" msgid "Filter deleted" msgstr "" -#, c-format -msgid "%sError: filter not found" -msgstr "" - -#, c-format -msgid "%sError: wrong filter number" -msgstr "" - #. TRANSLATORS: %s is "weechat" #, c-format msgid "%s internal commands:" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 914cb9717..7291ea28f 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -790,7 +790,8 @@ command_filter (void *data, struct t_gui_buffer *buffer, gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, "%s", (gui_filters_enabled) ? - _("Filters are enabled") : _("Filters are disabled")); + _("Message filtering enabled") : + _("Message filtering disabled")); if (gui_filters) { @@ -803,7 +804,7 @@ command_filter (void *data, struct t_gui_buffer *buffer, i++; gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, _(" %s[%s%d%s]%s buffer: %s%s%s " - "/ tags: %s / regex: %s"), + "/ tags: %s / regex: %s %s"), GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), GUI_COLOR(GUI_COLOR_CHAT), i, @@ -813,7 +814,9 @@ command_filter (void *data, struct t_gui_buffer *buffer, ptr_filter->buffer, GUI_COLOR(GUI_COLOR_CHAT), ptr_filter->tags, - ptr_filter->regex); + ptr_filter->regex, + (ptr_filter->enabled) ? + "" : _("(disabled)")); } } else @@ -825,26 +828,102 @@ command_filter (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_OK; } - /* enable filters */ + /* enable global filtering or a filter */ if (string_strcasecmp (argv[1], "enable") == 0) { - if (!gui_filters_enabled) + if (argc > 2) { - gui_filter_enable (); - gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, - _("Filters enabled")); + /* enable a filter */ + error = NULL; + number = strtol (argv[2], &error, 10); + if (error && !error[0]) + { + ptr_filter = gui_filter_search_by_number (number); + if (ptr_filter) + { + if (!ptr_filter->enabled) + { + gui_filter_enable (ptr_filter); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filter %d enabled"), + number); + } + } + else + { + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: filter not found"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + } + else + { + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: wrong filter number"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + } + else + { + /* enable global filtering */ + if (!gui_filters_enabled) + { + gui_filter_global_enable (); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Message filtering enabled")); + } } return WEECHAT_RC_OK; } - /* disable filters */ + /* disable global filtering or a filter */ if (string_strcasecmp (argv[1], "disable") == 0) { - if (gui_filters_enabled) + if (argc > 2) { - gui_filter_disable (); - gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, - _("Filters disabled")); + /* enable a filter */ + error = NULL; + number = strtol (argv[2], &error, 10); + if (error && !error[0]) + { + ptr_filter = gui_filter_search_by_number (number); + if (ptr_filter) + { + if (ptr_filter->enabled) + { + gui_filter_disable (ptr_filter); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filter %d disabled"), + number); + } + } + else + { + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: filter not found"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + } + else + { + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: wrong filter number"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + } + else + { + /* disable global filtering */ + if (gui_filters_enabled) + { + gui_filter_global_disable (); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Message filtering disabled")); + } } return WEECHAT_RC_OK; } @@ -853,9 +932,9 @@ command_filter (void *data, struct t_gui_buffer *buffer, if (string_strcasecmp (argv[1], "toggle") == 0) { if (gui_filters_enabled) - gui_filter_disable (); + gui_filter_global_disable (); else - gui_filter_enable (); + gui_filter_global_enable (); return WEECHAT_RC_OK; } @@ -887,7 +966,7 @@ command_filter (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_ERROR; } - if (gui_filter_new (argv[2], argv[3], argv_eol[4])) + if (gui_filter_new (1, argv[2], argv[3], argv_eol[4])) { gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, _("Filter added")); diff --git a/src/core/wee-config.c b/src/core/wee-config.c index b5bf36a6d..c884b15ab 100644 --- a/src/core/wee-config.c +++ b/src/core/wee-config.c @@ -706,7 +706,11 @@ config_weechat_filter_read (void *data, argv_eol = string_explode (value, ";", 1, 0, NULL); if (argv && argv_eol && (argc >= 3)) { - gui_filter_new (argv[0], argv[1], argv_eol[2]); + if (argc == 3) + gui_filter_new (1, argv[0], argv[1], argv_eol[2]); + else + gui_filter_new ((string_strcasecmp (argv[0], "on") == 0) ? 1 : 0, + argv[1], argv[2], argv_eol[3]); } if (argv) string_free_exploded (argv); @@ -737,7 +741,8 @@ config_weechat_filter_write (void *data, struct t_config_file *config_file, { config_file_write_line (config_file, "filter", - "%s;%s;%s", + "%s;%s;%s;%s", + (ptr_filter->enabled) ? "on" : "off", ptr_filter->buffer, ptr_filter->tags, ptr_filter->regex); diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c index 577264b68..158971cbb 100644 --- a/src/gui/gui-filter.c +++ b/src/gui/gui-filter.c @@ -84,22 +84,25 @@ gui_filter_check_line (struct t_gui_buffer *buffer, struct t_gui_line *line) for (ptr_filter = gui_filters; ptr_filter; ptr_filter = ptr_filter->next_filter) { - /* check buffer name */ - if (string_match (buffer->name, ptr_filter->buffer, 0)) + if (ptr_filter->enabled) { - if ((strcmp (ptr_filter->tags, "*") == 0) - || (gui_chat_line_match_tags (line, - ptr_filter->tags_count, - ptr_filter->tags_array))) + /* check buffer name */ + if (string_match (buffer->name, ptr_filter->buffer, 0)) { - /* check line with regex */ - if (!ptr_filter->regex_prefix && !ptr_filter->regex_message) - return 0; - - if (gui_chat_line_match_regex (line, - ptr_filter->regex_prefix, - ptr_filter->regex_message)) - return 0; + if ((strcmp (ptr_filter->tags, "*") == 0) + || (gui_chat_line_match_tags (line, + ptr_filter->tags_count, + ptr_filter->tags_array))) + { + /* check line with regex */ + if (!ptr_filter->regex_prefix && !ptr_filter->regex_message) + return 0; + + if (gui_chat_line_match_regex (line, + ptr_filter->regex_prefix, + ptr_filter->regex_message)) + return 0; + } } } } @@ -168,11 +171,11 @@ gui_filter_all_buffers () } /* - * gui_filter_enable: enable filters + * gui_filter_global_enable: enable message filtering */ void -gui_filter_enable () +gui_filter_global_enable () { if (!gui_filters_enabled) { @@ -184,11 +187,11 @@ gui_filter_enable () } /* - * gui_filter_disable: disable filters + * gui_filter_global_disable: disable message filtering */ void -gui_filter_disable () +gui_filter_global_disable () { if (gui_filters_enabled) { @@ -199,6 +202,34 @@ gui_filter_disable () } } +/* + * gui_filter_enable: enable a filter + */ + +void +gui_filter_enable (struct t_gui_filter *filter) +{ + if (filter && !filter->enabled) + { + filter->enabled = 1; + gui_filter_all_buffers (); + } +} + +/* + * gui_filter_disable: disable a filter + */ + +void +gui_filter_disable (struct t_gui_filter *filter) +{ + if (filter && filter->enabled) + { + filter->enabled = 0; + gui_filter_all_buffers (); + } +} + /* * gui_filter_search: search a filter */ @@ -249,7 +280,8 @@ gui_filter_search_by_number (int number) */ struct t_gui_filter * -gui_filter_new (const char *buffer, const char *tags, const char *regex) +gui_filter_new (int enabled, const char *buffer, const char *tags, + const char *regex) { struct t_gui_filter *new_filter; regex_t *regex1, *regex2; @@ -314,6 +346,7 @@ gui_filter_new (const char *buffer, const char *tags, const char *regex) if (new_filter) { /* init filter */ + new_filter->enabled = enabled; new_filter->buffer = (buffer) ? strdup (buffer) : strdup ("*"); if (tags) { @@ -429,6 +462,8 @@ gui_filter_add_to_infolist (struct t_infolist *infolist, if (!ptr_item) return 0; + if (!infolist_new_var_integer (ptr_item, "enabled", filter->enabled)) + return 0; if (!infolist_new_var_string (ptr_item, "buffer", filter->buffer)) return 0; if (!infolist_new_var_string (ptr_item, "tags", filter->tags)) @@ -465,6 +500,7 @@ gui_filter_print_log () { log_printf (""); log_printf ("[filter (addr:0x%x)]", ptr_filter); + log_printf (" enabled. . . . . . . . : %d", ptr_filter->enabled); log_printf (" buffer . . . . . . . . : '%s'", ptr_filter->buffer); log_printf (" tags . . . . . . . . . : '%s'", ptr_filter->tags); log_printf (" regex. . . . . . . . . : '%s'", ptr_filter->regex); diff --git a/src/gui/gui-filter.h b/src/gui/gui-filter.h index 4e249b5de..0d79a5eef 100644 --- a/src/gui/gui-filter.h +++ b/src/gui/gui-filter.h @@ -30,6 +30,7 @@ struct t_gui_line; struct t_gui_filter { + int enabled; /* 1 if filter enabled, otherwise 0 */ char *buffer; /* name of buffer */ char *tags; /* tags */ int tags_count; /* number of tags */ @@ -51,13 +52,16 @@ extern int gui_filters_enabled; extern int gui_filter_check_line (struct t_gui_buffer *buffer, struct t_gui_line *line); -extern void gui_filter_enable (); -extern void gui_filter_disable (); +extern void gui_filter_global_enable (); +extern void gui_filter_global_disable (); +extern void gui_filter_enable (struct t_gui_filter *filter); +extern void gui_filter_disable (struct t_gui_filter *filter); extern struct t_gui_filter *gui_filter_search (const char *buffer, const char *tags, const char *regex); extern struct t_gui_filter *gui_filter_search_by_number (int number); -extern struct t_gui_filter *gui_filter_new (const char *buffer, +extern struct t_gui_filter *gui_filter_new (int enabled, + const char *buffer, const char *tags, const char *regex); extern void gui_filter_free (struct t_gui_filter *filter);