summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2014-02-14 18:35:29 +0100
committerSebastien Helleu <flashcode@flashtux.org>2014-02-14 18:35:29 +0100
commit8e63a9a52f903bd9245534d6bf49f3ca208c5104 (patch)
tree1cdc88240acd4eaec555400e9bb5f3ff848469fc /src
parentf52770137f066fccbffe1fd833e2bf7ed2432800 (diff)
downloadweechat-8e63a9a52f903bd9245534d6bf49f3ca208c5104.zip
trigger: add option trigger.look.enabled (can be changed with /trigger enable|disable|toggle)
Diffstat (limited to 'src')
-rw-r--r--src/plugins/trigger/trigger-callback.h2
-rw-r--r--src/plugins/trigger/trigger-command.c53
-rw-r--r--src/plugins/trigger/trigger-config.c75
-rw-r--r--src/plugins/trigger/trigger-config.h7
-rw-r--r--src/plugins/trigger/trigger.c4
-rw-r--r--src/plugins/trigger/trigger.h1
6 files changed, 102 insertions, 40 deletions
diff --git a/src/plugins/trigger/trigger-callback.h b/src/plugins/trigger/trigger-callback.h
index 3b6f9f3de..29ec9b9d9 100644
--- a/src/plugins/trigger/trigger-callback.h
+++ b/src/plugins/trigger/trigger-callback.h
@@ -27,6 +27,8 @@
pointers = NULL; \
extra_vars = NULL; \
(void) trigger_rc; \
+ if (!trigger_enabled) \
+ return __rc; \
trigger = (struct t_trigger *)data; \
if (!trigger || trigger->hook_running) \
return __rc; \
diff --git a/src/plugins/trigger/trigger-command.c b/src/plugins/trigger/trigger-command.c
index 6addfbcfb..0b05090a6 100644
--- a/src/plugins/trigger/trigger-command.c
+++ b/src/plugins/trigger/trigger-command.c
@@ -30,6 +30,18 @@
/*
+ * Displays the status of triggers (global status).
+ */
+
+void
+trigger_command_display_status ()
+{
+ weechat_printf_tags (NULL, "no_trigger",
+ (trigger_enabled) ?
+ _("Triggers enabled") : _("Triggers disabled"));
+}
+
+/*
* Displays one trigger (internal function, must not be called directly).
*/
@@ -234,13 +246,15 @@ trigger_command_list (const char *message, int verbose)
{
struct t_trigger *ptr_trigger;
+ weechat_printf_tags (NULL, "no_trigger", "");
+ trigger_command_display_status ();
+
if (!triggers)
{
weechat_printf_tags (NULL, "no_trigger", _("No trigger defined"));
return;
}
- weechat_printf_tags (NULL, "no_trigger", "");
weechat_printf_tags (NULL, "no_trigger", message);
for (ptr_trigger = triggers; ptr_trigger;
@@ -720,10 +734,25 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc,
{
if (argc < 3)
{
- weechat_printf_tags (NULL, "no_trigger",
- _("%sError: missing arguments for \"%s\" "
- "command"),
- weechat_prefix ("error"), "trigger");
+ if (weechat_strcasecmp (argv[1], "restart") == 0)
+ {
+ weechat_printf_tags (NULL, "no_trigger",
+ _("%sError: missing arguments for \"%s\" "
+ "command"),
+ weechat_prefix ("error"), "trigger");
+ goto end;
+ }
+ if (weechat_strcasecmp (argv[1], "enable") == 0)
+ weechat_config_option_set (trigger_config_look_enabled, "1", 1);
+ else if (weechat_strcasecmp (argv[1], "disable") == 0)
+ weechat_config_option_set (trigger_config_look_enabled, "0", 1);
+ else if (weechat_strcasecmp (argv[1], "toggle") == 0)
+ {
+ weechat_config_option_set (trigger_config_look_enabled,
+ (trigger_enabled) ? "0" : "1",
+ 1);
+ }
+ trigger_command_display_status ();
goto end;
}
enable = -1;
@@ -875,7 +904,8 @@ trigger_command_init ()
" || input|output|recreate <name>"
" || set <name> <option> <value>"
" || rename|copy <name> <new_name>"
- " || enable|disable|toggle|restart <name>|-all [<name>...]"
+ " || enable|disable|toggle [<name>|-all [<name>...]]"
+ " || restart <name>|-all [<name>...]"
" || show <name>"
" || del <name>|-all [<name>...]"
" || default -yes"
@@ -918,10 +948,13 @@ trigger_command_init ()
" value: new value for the option\n"
" rename: rename a trigger\n"
" copy: copy a trigger\n"
- " enable: enable trigger(s)\n"
- " disable: disable trigger(s)\n"
- " toggle: toggle trigger(s)\n"
- " restart: restart trigger(s) (for timer)\n"
+ " enable: enable trigger(s) (without arguments: enable triggers "
+ "globally)\n"
+ " disable: disable trigger(s) (without arguments: disable triggers "
+ "globally)\n"
+ " toggle: toggle trigger(s) (without arguments: toggle triggers "
+ "globally)\n"
+ " restart: restart trigger(s) (only for a timer)\n"
" show: show detailed info on a trigger (with some stats)\n"
" del: delete a trigger\n"
" -all: do action on all triggers\n"
diff --git a/src/plugins/trigger/trigger-config.c b/src/plugins/trigger/trigger-config.c
index 5be4cc96a..cc4c97ec6 100644
--- a/src/plugins/trigger/trigger-config.c
+++ b/src/plugins/trigger/trigger-config.c
@@ -33,6 +33,7 @@ struct t_config_section *trigger_config_section_trigger = NULL;
/* trigger config, look section */
+struct t_config_option *trigger_config_look_enabled;
struct t_config_option *trigger_config_look_monitor_strip_colors;
/* trigger config, color section */
@@ -93,12 +94,26 @@ char *trigger_config_default_list[][1 + TRIGGER_NUM_OPTIONS] =
/*
- * Callback called when trigger option "enabled" is changed.
+ * Callback for changes on option "trigger.look.enabled".
*/
void
trigger_config_change_enabled (void *data, struct t_config_option *option)
{
+ /* make C compiler happy */
+ (void) data;
+
+ trigger_enabled = weechat_config_boolean (option);
+}
+
+/*
+ * Callback for changes on option "trigger.trigger.xxx.enabled".
+ */
+
+void
+trigger_config_change_trigger_enabled (void *data,
+ struct t_config_option *option)
+{
struct t_trigger *ptr_trigger;
/* make C compiler happy */
@@ -115,11 +130,11 @@ trigger_config_change_enabled (void *data, struct t_config_option *option)
}
/*
- * Callback called when trigger option "hook" is changed.
+ * Callback for changes on option "trigger.trigger.xxx.hook".
*/
void
-trigger_config_change_hook (void *data, struct t_config_option *option)
+trigger_config_change_trigger_hook (void *data, struct t_config_option *option)
{
struct t_trigger *ptr_trigger;
@@ -135,11 +150,12 @@ trigger_config_change_hook (void *data, struct t_config_option *option)
}
/*
- * Callback called when trigger option "arguments" is changed.
+ * Callback for changes on option "trigger.trigger.xxx.arguments".
*/
void
-trigger_config_change_arguments (void *data, struct t_config_option *option)
+trigger_config_change_trigger_arguments (void *data,
+ struct t_config_option *option)
{
struct t_trigger *ptr_trigger;
@@ -155,11 +171,11 @@ trigger_config_change_arguments (void *data, struct t_config_option *option)
}
/*
- * Callback called when trigger option "regex" is changed.
+ * Callback for changes on option "trigger.trigger.xxx.regex".
*/
void
-trigger_config_change_regex (void *data, struct t_config_option *option)
+trigger_config_change_trigger_regex (void *data, struct t_config_option *option)
{
struct t_trigger *ptr_trigger;
@@ -175,11 +191,12 @@ trigger_config_change_regex (void *data, struct t_config_option *option)
}
/*
- * Callback called when trigger option "command" is changed.
+ * Callback for changes on option "trigger.trigger.xxx.command".
*/
void
-trigger_config_change_command (void *data, struct t_config_option *option)
+trigger_config_change_trigger_command (void *data,
+ struct t_config_option *option)
{
struct t_trigger *ptr_trigger;
@@ -202,8 +219,8 @@ trigger_config_change_command (void *data, struct t_config_option *option)
*/
struct t_config_option *
-trigger_config_create_option (const char *trigger_name, int index_option,
- const char *value)
+trigger_config_create_trigger_option (const char *trigger_name, int index_option,
+ const char *value)
{
struct t_config_option *ptr_option;
int length;
@@ -228,8 +245,8 @@ trigger_config_create_option (const char *trigger_name, int index_option,
option_name, "boolean",
N_("if disabled, the hooks are removed from trigger, so it is "
"not called any more"),
- NULL, 0, 0, value, NULL, 0,
- NULL, NULL, &trigger_config_change_enabled, NULL, NULL, NULL);
+ NULL, 0, 0, value, NULL, 0, NULL, NULL,
+ &trigger_config_change_trigger_enabled, NULL, NULL, NULL);
break;
case TRIGGER_OPTION_HOOK:
ptr_option = weechat_config_new_option (
@@ -237,8 +254,8 @@ trigger_config_create_option (const char *trigger_name, int index_option,
option_name, "integer",
N_("type of hook used"),
trigger_hook_option_values,
- 0, 0, value, NULL, 0,
- NULL, NULL, &trigger_config_change_hook, NULL, NULL, NULL);
+ 0, 0, value, NULL, 0, NULL, NULL,
+ &trigger_config_change_trigger_hook, NULL, NULL, NULL);
break;
case TRIGGER_OPTION_ARGUMENTS:
ptr_option = weechat_config_new_option (
@@ -248,8 +265,8 @@ trigger_config_create_option (const char *trigger_name, int index_option,
"signal/hsignal/modifier: name[;name...], for print: "
"buffer;tags;strip_colors;message, for timer: "
"interval;align_second;max_calls"),
- NULL, 0, 0, value, NULL, 0,
- NULL, NULL, &trigger_config_change_arguments, NULL, NULL, NULL);
+ NULL, 0, 0, value, NULL, 0, NULL, NULL,
+ &trigger_config_change_trigger_arguments, NULL, NULL, NULL);
break;
case TRIGGER_OPTION_CONDITIONS:
ptr_option = weechat_config_new_option (
@@ -276,16 +293,16 @@ trigger_config_create_option (const char *trigger_name, int index_option,
"identical chars), except '\\' and parentheses; matching "
"groups can be used in replace: $0 to $99, $+ for last "
"match and $.cN to replace all chars of group N by char c"),
- NULL, 0, 0, value, NULL, 0,
- NULL, NULL, &trigger_config_change_regex, NULL, NULL, NULL);
+ NULL, 0, 0, value, NULL, 0, NULL, NULL,
+ &trigger_config_change_trigger_regex, NULL, NULL, NULL);
break;
case TRIGGER_OPTION_COMMAND:
ptr_option = weechat_config_new_option (
trigger_config_file, trigger_config_section_trigger,
option_name, "string",
N_("command run if conditions are OK, after regex replacements"),
- NULL, 0, 0, value, NULL, 0,
- NULL, NULL, &trigger_config_change_command, NULL, NULL, NULL);
+ NULL, 0, 0, value, NULL, 0, NULL, NULL,
+ &trigger_config_change_trigger_command, NULL, NULL, NULL);
break;
case TRIGGER_OPTION_RETURN_CODE:
ptr_option = weechat_config_new_option (
@@ -315,8 +332,8 @@ trigger_config_create_option_temp (struct t_trigger *temp_trigger,
{
struct t_config_option *new_option;
- new_option = trigger_config_create_option (temp_trigger->name,
- index_option, value);
+ new_option = trigger_config_create_trigger_option (temp_trigger->name,
+ index_option, value);
if (new_option
&& (index_option >= 0) && (index_option < TRIGGER_NUM_OPTIONS))
{
@@ -343,9 +360,9 @@ trigger_config_use_temp_triggers ()
if (!ptr_temp_trigger->options[i])
{
ptr_temp_trigger->options[i] =
- trigger_config_create_option (ptr_temp_trigger->name,
- i,
- trigger_option_default[i]);
+ trigger_config_create_trigger_option (ptr_temp_trigger->name,
+ i,
+ trigger_option_default[i]);
}
if (ptr_temp_trigger->options[i])
num_options_ok++;
@@ -545,6 +562,12 @@ trigger_config_init ()
return 0;
}
+ trigger_config_look_enabled = weechat_config_new_option (
+ trigger_config_file, ptr_section,
+ "enabled", "boolean",
+ N_("enable trigger support"),
+ NULL, 0, 0, "on", NULL, 0, NULL, NULL,
+ &trigger_config_change_enabled, NULL, NULL, NULL);
trigger_config_look_monitor_strip_colors = weechat_config_new_option (
trigger_config_file, ptr_section,
"monitor_strip_colors", "boolean",
diff --git a/src/plugins/trigger/trigger-config.h b/src/plugins/trigger/trigger-config.h
index 6a940bd5f..6e0fc9df9 100644
--- a/src/plugins/trigger/trigger-config.h
+++ b/src/plugins/trigger/trigger-config.h
@@ -26,6 +26,7 @@
extern struct t_config_file *trigger_config_file;
extern struct t_config_section *trigger_config_section_trigger;
+extern struct t_config_option *trigger_config_look_enabled;
extern struct t_config_option *trigger_config_look_monitor_strip_colors;
extern struct t_config_option *trigger_config_color_flag_command;
@@ -39,9 +40,9 @@ extern struct t_config_option *trigger_config_color_trigger_disabled;
extern char *trigger_config_default_list[][1 + TRIGGER_NUM_OPTIONS];
-extern struct t_config_option *trigger_config_create_option (const char *trigger_name,
- int index_option,
- const char *value);
+extern struct t_config_option *trigger_config_create_trigger_option (const char *trigger_name,
+ int index_option,
+ const char *value);
extern int trigger_config_init ();
extern int trigger_config_read ();
extern int trigger_config_write ();
diff --git a/src/plugins/trigger/trigger.c b/src/plugins/trigger/trigger.c
index 4eb46f584..4a580469a 100644
--- a/src/plugins/trigger/trigger.c
+++ b/src/plugins/trigger/trigger.c
@@ -75,6 +75,8 @@ int triggers_count = 0; /* number of triggers */
struct t_trigger *triggers_temp = NULL; /* first temporary trigger */
struct t_trigger *last_trigger_temp = NULL; /* last temporary trigger */
+int trigger_enabled = 1; /* 0 if triggers are disabled */
+
/*
* Searches for a trigger option name.
@@ -874,7 +876,7 @@ trigger_new (const char *name, const char *enabled, const char *hook,
for (i = 0; i < TRIGGER_NUM_OPTIONS; i++)
{
- option[i] = trigger_config_create_option (name, i, value[i]);
+ option[i] = trigger_config_create_trigger_option (name, i, value[i]);
}
new_trigger = trigger_new_with_options (name, option);
diff --git a/src/plugins/trigger/trigger.h b/src/plugins/trigger/trigger.h
index 4ca8ad00d..4c5e251ea 100644
--- a/src/plugins/trigger/trigger.h
+++ b/src/plugins/trigger/trigger.h
@@ -119,6 +119,7 @@ extern struct t_trigger *last_trigger;
extern int triggers_count;
extern struct t_trigger *triggers_temp;
extern struct t_trigger *last_trigger_temp;
+extern int trigger_enabled;
extern int trigger_search_option (const char *option_name);
extern int trigger_search_hook_type (const char *type);