From bcff9162a75d0d12457c56f3ce2a7f68d8a2b9d4 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sun, 26 Jan 2014 12:57:21 +0100 Subject: [PATCH] trigger: enable many trigger names and value "-all" in command /trigger {enable|disable|toggle} --- src/plugins/trigger/trigger-command.c | 127 ++++++++++++++++---------- 1 file changed, 78 insertions(+), 49 deletions(-) diff --git a/src/plugins/trigger/trigger-command.c b/src/plugins/trigger/trigger-command.c index 1a16adda3..bfba7b064 100644 --- a/src/plugins/trigger/trigger-command.c +++ b/src/plugins/trigger/trigger-command.c @@ -29,6 +29,32 @@ #include "trigger-config.h" +/* + * Set "enabled" value in a trigger. + * + * Argument "enable" can be: + * -1: toggle trigger + * 0: disable trigger + * 1: enable trigger + */ + +void +trigger_command_set_enabled (struct t_trigger *trigger, int enable) +{ + if (enable < 0) + { + enable = weechat_config_boolean (trigger->options[TRIGGER_OPTION_ENABLED]) ? + 0 : 1; + } + weechat_config_option_set (trigger->options[TRIGGER_OPTION_ENABLED], + (enable) ? "on" : "off", 1); + weechat_printf_tags (NULL, "no_trigger", + (enable) ? + _("Trigger \"%s\" enabled") : + _("Trigger \"%s\" disabled"), + trigger->name); +} + /* * Callback for command "/trigger": manage triggers. */ @@ -40,7 +66,7 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc, struct t_trigger *ptr_trigger; const char *option; char *name; - int i, type, count, index_option, enabled; + int i, type, count, index_option, enable; /* make C compiler happy */ (void) data; @@ -226,7 +252,51 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc, return WEECHAT_RC_OK; } - /* delete a trigger */ + /* enable/disable/toggle trigger(s) */ + if ((weechat_strcasecmp (argv[1], "enable") == 0) + || (weechat_strcasecmp (argv[1], "disable") == 0) + || (weechat_strcasecmp (argv[1], "toggle") == 0)) + { + if (argc < 3) + { + weechat_printf_tags (NULL, "no_trigger", + _("%sError: missing arguments for \"%s\" " + "command"), + weechat_prefix ("error"), "trigger"); + return WEECHAT_RC_OK; + } + enable = -1; + if (weechat_strcasecmp (argv[1], "enable") == 0) + enable = 1; + else if (weechat_strcasecmp (argv[1], "disable") == 0) + enable = 0; + if (weechat_strcasecmp (argv[2], "-all") == 0) + { + for (ptr_trigger = triggers; ptr_trigger; + ptr_trigger = ptr_trigger->next_trigger) + { + trigger_command_set_enabled (ptr_trigger, enable); + } + } + else + { + for (i = 2; i < argc; i++) + { + ptr_trigger = trigger_search (argv[i]); + if (ptr_trigger) + trigger_command_set_enabled (ptr_trigger, enable); + else + { + weechat_printf_tags (NULL, "no_trigger", + _("%sTrigger \"%s\" not found"), + weechat_prefix ("error"), argv[i]); + } + } + } + return WEECHAT_RC_OK; + } + + /* delete trigger(s) */ if (weechat_strcasecmp (argv[1], "del") == 0) { if (argc < 3) @@ -267,46 +337,6 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc, return WEECHAT_RC_OK; } - /* enable/disable/toggle a trigger */ - if ((weechat_strcasecmp (argv[1], "enable") == 0) - || (weechat_strcasecmp (argv[1], "disable") == 0) - || (weechat_strcasecmp (argv[1], "toggle") == 0)) - { - if (argc < 3) - { - weechat_printf_tags (NULL, "no_trigger", - _("%sError: missing arguments for \"%s\" " - "command"), - weechat_prefix ("error"), "trigger"); - return WEECHAT_RC_OK; - } - ptr_trigger = trigger_search (argv[2]); - if (!ptr_trigger) - { - weechat_printf_tags (NULL, "no_trigger", - _("%sTrigger \"%s\" not found"), - weechat_prefix ("error"), argv[2]); - return WEECHAT_RC_OK; - } - if (weechat_strcasecmp (argv[1], "enable") == 0) - enabled = 1; - else if (weechat_strcasecmp (argv[1], "disable") == 0) - enabled = 0; - else - { - enabled = weechat_config_boolean (ptr_trigger->options[TRIGGER_OPTION_ENABLED]) ? - 0 : 1; - } - weechat_config_option_set (ptr_trigger->options[TRIGGER_OPTION_ENABLED], - (enabled) ? "on" : "off", 1); - weechat_printf_tags (NULL, "no_trigger", - (enabled) ? - _("Trigger \"%s\" enabled") : - _("Trigger \"%s\" disabled"), - ptr_trigger->name); - return WEECHAT_RC_OK; - } - /* open the trigger monitor buffer */ if (weechat_strcasecmp (argv[1], "monitor") == 0) { @@ -331,8 +361,8 @@ trigger_command_init () " || add []" " || set