summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/fset/fset-buffer.c63
-rw-r--r--src/plugins/fset/fset-command.c8
-rw-r--r--src/plugins/fset/fset-mouse.c12
-rw-r--r--src/plugins/fset/fset-option.c116
-rw-r--r--src/plugins/fset/fset-option.h15
5 files changed, 145 insertions, 69 deletions
diff --git a/src/plugins/fset/fset-buffer.c b/src/plugins/fset/fset-buffer.c
index 12db4265f..eaa80f89e 100644
--- a/src/plugins/fset/fset-buffer.c
+++ b/src/plugins/fset/fset-buffer.c
@@ -104,7 +104,7 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
const char *ptr_field, *ptr_parent_value;
int selected_line;
int default_value_undef, value_undef, value_changed;
- int add_quotes, add_quotes_parent;
+ int type, add_quotes, add_quotes_parent;
struct t_config_option *ptr_option_color_value;
selected_line = (y == fset_buffer_selected_line) ? 1 : 0;
@@ -150,25 +150,70 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
"parent_name", str_field);
/* type */
- ptr_field = weechat_hdata_string (fset_hdata_fset_option,
- fset_option, "type");
- snprintf (str_field, sizeof (str_field), "%s", ptr_field);
+ type = weechat_hdata_integer (fset_hdata_fset_option, fset_option, "type");
+ snprintf (str_field, sizeof (str_field),
+ "%s", _(fset_option_type_string[type]));
weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
"__type", str_field);
snprintf (str_field, sizeof (str_field),
"%s%s",
weechat_color (weechat_config_string (fset_config_color_type[selected_line])),
- (ptr_field) ? ptr_field : "");
+ _(fset_option_type_string[type]));
weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
"_type", str_field);
fset_buffer_fills_field (str_field, sizeof (str_field), "type", 8);
weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
"type", str_field);
+ /* type_en */
+ snprintf (str_field, sizeof (str_field),
+ "%s", fset_option_type_string[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "__type_en", str_field);
+ snprintf (str_field, sizeof (str_field),
+ "%s%s",
+ weechat_color (weechat_config_string (fset_config_color_type[selected_line])),
+ fset_option_type_string[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "_type_en", str_field);
+ fset_buffer_fills_field (str_field, sizeof (str_field), "type_en", 8);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "type_en", str_field);
+
+ /* type_short */
+ snprintf (str_field, sizeof (str_field),
+ "%s", fset_option_type_string_short[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "__type_short", str_field);
+ snprintf (str_field, sizeof (str_field),
+ "%s%s",
+ weechat_color (weechat_config_string (fset_config_color_type[selected_line])),
+ fset_option_type_string_short[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "_type_short", str_field);
+ fset_buffer_fills_field (str_field, sizeof (str_field), "type_short", 4);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "type_short", str_field);
+
+ /* type_tiny */
+ snprintf (str_field, sizeof (str_field),
+ "%s", fset_option_type_string_tiny[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "__type_tiny", str_field);
+ snprintf (str_field, sizeof (str_field),
+ "%s%s",
+ weechat_color (weechat_config_string (fset_config_color_type[selected_line])),
+ fset_option_type_string_tiny[type]);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "_type_tiny", str_field);
+ fset_buffer_fills_field (str_field, sizeof (str_field), "type_tiny", 1);
+ weechat_hashtable_set (fset_buffer_hashtable_extra_vars,
+ "type_tiny", str_field);
+
/* default_value */
ptr_field = weechat_hdata_string (fset_hdata_fset_option,
fset_option, "default_value");
- add_quotes = (ptr_field && (strcmp (fset_option->type, "string") == 0)) ? 1 : 0;
+ add_quotes = (ptr_field && (fset_option->type == FSET_OPTION_TYPE_STRING)) ? 1 : 0;
if (default_value_undef)
ptr_option_color_value = fset_config_color_value_undef[selected_line];
else
@@ -194,7 +239,7 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
/* value */
ptr_field = weechat_hdata_string (fset_hdata_fset_option,
fset_option, "value");
- add_quotes = (ptr_field && (strcmp (fset_option->type, "string") == 0)) ? 1 : 0;
+ add_quotes = (ptr_field && (fset_option->type == FSET_OPTION_TYPE_STRING)) ? 1 : 0;
if (value_undef)
ptr_option_color_value = fset_config_color_value_undef[selected_line];
else if (value_changed)
@@ -224,7 +269,7 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
fset_option, "parent_value");
if (value_undef && ptr_parent_value)
{
- add_quotes_parent = (ptr_parent_value && (strcmp (fset_option->type, "string") == 0)) ? 1 : 0;
+ add_quotes_parent = (ptr_parent_value && (fset_option->type == FSET_OPTION_TYPE_STRING)) ? 1 : 0;
snprintf (str_field, sizeof (str_field),
"%s -> %s",
(ptr_field) ? ptr_field : FSET_OPTION_VALUE_NULL,
@@ -277,7 +322,7 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
/* parent_value (set only if value is NULL and inherited from parent) */
if (value_undef && ptr_parent_value)
{
- add_quotes_parent = (ptr_parent_value && (strcmp (fset_option->type, "string") == 0)) ? 1 : 0;
+ add_quotes_parent = (ptr_parent_value && (fset_option->type == FSET_OPTION_TYPE_STRING)) ? 1 : 0;
snprintf (str_field, sizeof (str_field),
"%s",
(ptr_parent_value) ? ptr_parent_value : FSET_OPTION_VALUE_NULL);
diff --git a/src/plugins/fset/fset-command.c b/src/plugins/fset/fset-command.c
index eea8263e3..ae095d6fa 100644
--- a/src/plugins/fset/fset-command.c
+++ b/src/plugins/fset/fset-command.c
@@ -164,15 +164,15 @@ fset_command_fset (const void *pointer, void *data,
if (weechat_strcasecmp (argv[1], "-toggle") == 0)
{
- if (strcmp (ptr_fset_option->type, "boolean") == 0)
+ if (ptr_fset_option->type == FSET_OPTION_TYPE_BOOLEAN)
weechat_config_option_set (ptr_option, "toggle", 1);
return WEECHAT_RC_OK;
}
if (weechat_strcasecmp (argv[1], "-add") == 0)
{
- if ((strcmp (ptr_fset_option->type, "integer") == 0)
- || (strcmp (ptr_fset_option->type, "color") == 0))
+ if ((ptr_fset_option->type == FSET_OPTION_TYPE_INTEGER)
+ || (ptr_fset_option->type == FSET_OPTION_TYPE_COLOR))
{
value = 1;
if (argc > 2)
@@ -212,7 +212,7 @@ fset_command_fset (const void *pointer, void *data,
append = (weechat_strcasecmp (argv[1], "-append") == 0) ? 1 : 0;
use_mute = weechat_config_boolean (fset_config_look_use_mute);
add_quotes = (ptr_fset_option->value
- && strcmp (ptr_fset_option->type, "string") == 0) ? 1 : 0;
+ && (ptr_fset_option->type == FSET_OPTION_TYPE_STRING)) ? 1 : 0;
snprintf (str_input, sizeof (str_input),
"%s/set %s %s%s%s",
(use_mute) ? "/mute " : "",
diff --git a/src/plugins/fset/fset-mouse.c b/src/plugins/fset/fset-mouse.c
index 902d20354..9791859b2 100644
--- a/src/plugins/fset/fset-mouse.c
+++ b/src/plugins/fset/fset-mouse.c
@@ -84,7 +84,7 @@ fset_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
weechat_hashtable_set (info, "fset_option", str_value);
weechat_hashtable_set (info, "fset_option_name", ptr_fset_option->name);
weechat_hashtable_set (info, "fset_option_parent_name", ptr_fset_option->parent_name);
- weechat_hashtable_set (info, "fset_option_type", ptr_fset_option->type);
+ weechat_hashtable_set (info, "fset_option_type", fset_option_type_string[ptr_fset_option->type]);
weechat_hashtable_set (info, "fset_option_default_value", ptr_fset_option->default_value);
weechat_hashtable_set (info, "fset_option_value", ptr_fset_option->value);
weechat_hashtable_set (info, "fset_option_parent_value", ptr_fset_option->parent_value);
@@ -173,14 +173,14 @@ fset_hsignal_cb (const void *pointer, void *data, const char *signal,
{
snprintf (str_command, sizeof (str_command),
"/fset %s",
- (strcmp (ptr_fset_option->type, "boolean") == 0) ? "-toggle" : "-set");
+ (ptr_fset_option->type == FSET_OPTION_TYPE_BOOLEAN) ? "-toggle" : "-set");
weechat_command (fset_buffer, str_command);
}
else if (weechat_string_match (ptr_key, "button2-gesture-left*", 1))
{
distance = fset_mouse_get_distance_x (hashtable);
- if ((strcmp (ptr_fset_option->type, "integer") == 0)
- || (strcmp (ptr_fset_option->type, "color") == 0))
+ if ((ptr_fset_option->type == FSET_OPTION_TYPE_INTEGER)
+ || (ptr_fset_option->type == FSET_OPTION_TYPE_COLOR))
{
snprintf (str_command, sizeof (str_command),
"/fset -add -%d",
@@ -191,8 +191,8 @@ fset_hsignal_cb (const void *pointer, void *data, const char *signal,
else if (weechat_string_match (ptr_key, "button2-gesture-right*", 1))
{
distance = fset_mouse_get_distance_x (hashtable);
- if ((strcmp (ptr_fset_option->type, "integer") == 0)
- || (strcmp (ptr_fset_option->type, "color") == 0))
+ if ((ptr_fset_option->type == FSET_OPTION_TYPE_INTEGER)
+ || (ptr_fset_option->type == FSET_OPTION_TYPE_COLOR))
{
snprintf (str_command, sizeof (str_command),
"/fset -add %d",
diff --git a/src/plugins/fset/fset-option.c b/src/plugins/fset/fset-option.c
index 095a80de6..98c65adac 100644
--- a/src/plugins/fset/fset-option.c
+++ b/src/plugins/fset/fset-option.c
@@ -34,6 +34,13 @@ struct t_arraylist *fset_options = NULL;
struct t_hashtable *fset_option_max_length_field = NULL;
char *fset_option_filter = NULL;
+char *fset_option_type_string[FSET_OPTION_NUM_TYPES] =
+{ N_("boolean"), N_("integer"), N_("string"), N_("color") };
+char *fset_option_type_string_short[FSET_OPTION_NUM_TYPES] =
+{ "bool", "int", "str", "col" };
+char *fset_option_type_string_tiny[FSET_OPTION_NUM_TYPES] =
+{ "b", "i", "s", "c" };
+
/*
* Checks if a fset option pointer is valid.
@@ -128,7 +135,7 @@ fset_option_value_is_changed (struct t_fset_option *fset_option)
void
fset_option_set_value_string (struct t_config_option *option,
- const char *type, void *value,
+ enum t_fset_option_type type, void *value,
int default_value,
char **value_string)
{
@@ -139,38 +146,38 @@ fset_option_set_value_string (struct t_config_option *option,
{
*value_string = NULL;
}
- else if (strcmp (type, "boolean") == 0)
- {
- *value_string = strdup (*((int *)value) ? "on" : "off");
- }
- else if (strcmp (type, "integer") == 0)
+ else
{
- ptr_string_values = weechat_config_option_get_pointer (
- option, "string_values");
- if (ptr_string_values)
+ switch (type)
{
- *value_string = strdup (
- (default_value) ? weechat_config_string_default (option) : weechat_config_string (option));
+ case FSET_OPTION_TYPE_BOOLEAN:
+ *value_string = strdup (*((int *)value) ? "on" : "off");
+ break;
+ case FSET_OPTION_TYPE_INTEGER:
+ ptr_string_values = weechat_config_option_get_pointer (
+ option, "string_values");
+ if (ptr_string_values)
+ {
+ *value_string = strdup (
+ (default_value) ? weechat_config_string_default (option) : weechat_config_string (option));
+ }
+ else
+ {
+ snprintf (str_value, sizeof (str_value), "%d", *((int *)value));
+ *value_string = strdup (str_value);
+ }
+ break;
+ case FSET_OPTION_TYPE_STRING:
+ *value_string = strdup (
+ (default_value) ? weechat_config_string_default (option) : weechat_config_string (option));
+ break;
+ case FSET_OPTION_TYPE_COLOR:
+ *value_string = strdup (
+ (default_value) ? weechat_config_color_default (option) : weechat_config_color (option));
+ break;
+ case FSET_OPTION_NUM_TYPES:
+ break;
}
- else
- {
- snprintf (str_value, sizeof (str_value), "%d", *((int *)value));
- *value_string = strdup (str_value);
- }
- }
- else if (strcmp (type, "string") == 0)
- {
- *value_string = strdup (
- (default_value) ? weechat_config_string_default (option) : weechat_config_string (option));
- }
- else if (strcmp (type, "color") == 0)
- {
- *value_string = strdup (
- (default_value) ? weechat_config_color_default (option) : weechat_config_color (option));
- }
- else
- {
- *value_string = strdup ("");
}
}
@@ -287,11 +294,11 @@ void
fset_option_set_values (struct t_fset_option *fset_option,
struct t_config_option *option)
{
- const char *ptr_parent_name, *ptr_type, *ptr_description;
+ const char *ptr_parent_name, *ptr_description;
const char **ptr_string_values;
void *ptr_default_value, *ptr_value;
struct t_config_option *ptr_parent_option;
- int *ptr_min, *ptr_max;
+ int *ptr_type, *ptr_min, *ptr_max;
char str_value[64];
/* parent name */
@@ -304,13 +311,8 @@ fset_option_set_values (struct t_fset_option *fset_option,
fset_option->parent_name = (ptr_parent_name) ? strdup (ptr_parent_name) : NULL;
/* type */
- if (fset_option->type)
- {
- free (fset_option->type);
- fset_option->type = NULL;
- }
- ptr_type = weechat_config_option_get_string (option, "type");
- fset_option->type = strdup ((ptr_type) ? ptr_type : "");
+ ptr_type = weechat_config_option_get_pointer (option, "type");
+ fset_option->type = *ptr_type;
/* default value */
if (fset_option->default_value)
@@ -442,13 +444,29 @@ fset_option_set_max_length_fields_option (struct t_fset_option *fset_option)
/* type */
fset_option_set_max_length_field (
- "type", weechat_strlen_screen (fset_option->type));
+ "type",
+ weechat_strlen_screen (_(fset_option_type_string[fset_option->type])));
+
+ /* type_en */
+ fset_option_set_max_length_field (
+ "type_en",
+ weechat_strlen_screen (fset_option_type_string[fset_option->type]));
+
+ /* type_short */
+ fset_option_set_max_length_field (
+ "type_short",
+ weechat_strlen_screen (fset_option_type_string_short[fset_option->type]));
+
+ /* type_tiny */
+ fset_option_set_max_length_field (
+ "type_tiny",
+ weechat_strlen_screen (fset_option_type_string_tiny[fset_option->type]));
/* default_value */
if (fset_option->default_value)
{
length = weechat_strlen_screen (fset_option->default_value);
- if (strcmp (fset_option->type, "string") == 0)
+ if (fset_option->type == FSET_OPTION_TYPE_STRING)
length += 2;
}
else
@@ -461,7 +479,7 @@ fset_option_set_max_length_fields_option (struct t_fset_option *fset_option)
if (fset_option->value)
{
length_value = weechat_strlen_screen (fset_option->value);
- if (strcmp (fset_option->type, "string") == 0)
+ if (fset_option->type == FSET_OPTION_TYPE_STRING)
length_value += 2;
}
else
@@ -474,7 +492,7 @@ fset_option_set_max_length_fields_option (struct t_fset_option *fset_option)
if (fset_option->parent_value)
{
length_parent_value = weechat_strlen_screen (fset_option->parent_value);
- if (strcmp (fset_option->type, "string") == 0)
+ if (fset_option->type == FSET_OPTION_TYPE_STRING)
length_parent_value += 2;
}
else
@@ -571,7 +589,7 @@ fset_option_alloc (struct t_config_file *config_file,
{
new_fset_option->name = option_name;
new_fset_option->parent_name = NULL;
- new_fset_option->type = NULL;
+ new_fset_option->type = 0;
new_fset_option->default_value = NULL;
new_fset_option->value = NULL;
new_fset_option->parent_value = NULL;
@@ -691,8 +709,6 @@ fset_option_free (struct t_fset_option *fset_option)
free (fset_option->name);
if (fset_option->parent_name)
free (fset_option->parent_name);
- if (fset_option->type)
- free (fset_option->type);
if (fset_option->default_value)
free (fset_option->default_value);
if (fset_option->value)
@@ -931,7 +947,7 @@ fset_option_hdata_option_cb (const void *pointer, void *data,
{
WEECHAT_HDATA_VAR(struct t_fset_option, name, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_fset_option, parent_name, STRING, 0, NULL, NULL);
- WEECHAT_HDATA_VAR(struct t_fset_option, type, STRING, 0, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_fset_option, type, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_fset_option, default_value, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_fset_option, value, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_fset_option, parent_value, STRING, 0, NULL, NULL);
@@ -968,7 +984,7 @@ fset_option_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!weechat_infolist_new_var_string (ptr_item, "parent_name", fset_option->parent_name))
return 0;
- if (!weechat_infolist_new_var_string (ptr_item, "type", fset_option->type))
+ if (!weechat_infolist_new_var_string (ptr_item, "type", fset_option_type_string[fset_option->type]))
return 0;
if (!weechat_infolist_new_var_string (ptr_item, "default_value", fset_option->default_value))
return 0;
@@ -1006,7 +1022,9 @@ fset_option_print_log ()
weechat_log_printf ("[fset option (addr:0x%lx)]", ptr_fset_option);
weechat_log_printf (" name. . . . . . . . . : '%s'", ptr_fset_option->name);
weechat_log_printf (" parent_name . . . . . : '%s'", ptr_fset_option->parent_name);
- weechat_log_printf (" type. . . . . . . . . : '%s'", ptr_fset_option->type);
+ weechat_log_printf (" type. . . . . . . . . : %d ('%s')",
+ ptr_fset_option->type,
+ fset_option_type_string[ptr_fset_option->type]);
weechat_log_printf (" default_value . . . . : '%s'", ptr_fset_option->default_value);
weechat_log_printf (" value . . . . . . . . : '%s'", ptr_fset_option->value);
weechat_log_printf (" parent_value. . . . . : '%s'", ptr_fset_option->parent_value);
diff --git a/src/plugins/fset/fset-option.h b/src/plugins/fset/fset-option.h
index d1b7551e6..60a88604c 100644
--- a/src/plugins/fset/fset-option.h
+++ b/src/plugins/fset/fset-option.h
@@ -22,11 +22,21 @@
#define FSET_OPTION_VALUE_NULL "null"
+enum t_fset_option_type
+{
+ FSET_OPTION_TYPE_BOOLEAN = 0,
+ FSET_OPTION_TYPE_INTEGER,
+ FSET_OPTION_TYPE_STRING,
+ FSET_OPTION_TYPE_COLOR,
+ /* number of option types */
+ FSET_OPTION_NUM_TYPES,
+};
+
struct t_fset_option
{
char *name; /* option name */
char *parent_name; /* parent option name */
- char *type; /* option type */
+ enum t_fset_option_type type; /* option type */
char *default_value; /* option default value */
char *value; /* option value */
char *parent_value; /* parent option value */
@@ -41,6 +51,9 @@ struct t_fset_option
extern struct t_arraylist *fset_options;
extern struct t_hashtable *fset_option_max_length_field;
extern char *fset_option_filter;
+extern char *fset_option_type_string[];
+extern char *fset_option_type_string_short[];
+extern char *fset_option_type_string_tiny[];
extern int fset_option_valid (struct t_fset_option *option);
extern struct t_fset_option *fset_option_search_by_name (const char *name,