Ejemplo n.º 1
0
/* SYNTAX: SET [-clear] [<key> [<value>] */
static void cmd_set(char *data)
{
    GHashTable *optlist;
    GSList *sets, *tmp;
    const char *last_section;
    char *key, *value;
    void *free_arg;
    int found, clear;

    if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST | PARAM_FLAG_OPTIONS,
                        "set", &optlist, &key, &value))
        return;

    clear = g_hash_table_lookup(optlist, "clear") != NULL;

    last_section = "";
    found = 0;
    sets = settings_get_sorted();
    for (tmp = sets; tmp != NULL; tmp = tmp->next) {
        SETTINGS_REC *rec = tmp->data;

        if (((clear || *value != '\0') && g_strcasecmp(rec->key, key) != 0) ||
                (*value == '\0' && *key != '\0' && stristr(rec->key, key) == NULL))
            continue;

        if (strcmp(last_section, rec->section) != 0) {
            /* print section */
            printtext(NULL, NULL, MSGLEVEL_CLIENTCRAP, "%_[ %s ]", rec->section);
            last_section = rec->section;
        }

        if (clear || *value != '\0') {
            /* change the setting */
            switch (rec->type) {
            case SETTING_TYPE_BOOLEAN:
                set_boolean(key, clear ? FALSE : value);
                break;
            case SETTING_TYPE_INT:
                settings_set_int(key, clear ? 0 : atoi(value));
                break;
            case SETTING_TYPE_STRING:
                settings_set_str(key, clear ? "" : value);
                break;
            }
            signal_emit("setup changed", 0);
        }

        set_print(rec);
        found = TRUE;

        if (clear || *value != '\0')
            break;
    }
    g_slist_free(sets);

    if (!found)
        printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Unknown setting %s", key);

    cmd_params_free(free_arg);
}
Ejemplo n.º 2
0
static void set_int(const char *key, const char *value)
{
	char *endp;
	long longval;
	int error;

	errno = 0;
	longval = strtol(value, &endp, 10);
	error = errno;
	while (i_isspace(*endp))
		endp++;
	if (error != 0 || *endp != '\0' || longval < INT_MIN || longval > INT_MAX)
		printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_INVALID_NUMBER);
	else
		settings_set_int(key, (int)longval);
}
Ejemplo n.º 3
0
//------------------------------------------------------------------------------
void settings_set(settings_t* s, const char* name, const char* value)
{
    const setting_decl_t* decl = settings_get_decl_by_name(s, name);
    if (decl != NULL)
    {
        if (decl_is_string_type(decl))
        {
            set_value(s, decl, value);
        }
        else
        {
            int i;
            i = atoi(value);
            settings_set_int(s, name, i);
        }
    }
}
Ejemplo n.º 4
0
/* SYNTAX: SET [-clear | -default] [<key> [<value>]] */
static void cmd_set(char *data)
{
        GHashTable *optlist;
	char *key, *value;
	void *free_arg;
	int clear, set_default;
	SETTINGS_REC *rec;

	if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST |
			    PARAM_FLAG_OPTIONS,
			    "set", &optlist, &key, &value))
		return;

	clear = g_hash_table_lookup(optlist, "clear") != NULL;
	set_default = g_hash_table_lookup(optlist, "default") != NULL;

	if (*key == '\0')
		clear = set_default = FALSE;

	if (!(clear || set_default || *value != '\0'))
		set_print_pattern(key);
	else {
		rec = settings_get_record(key);
		if (rec != NULL) {
			/* change the setting */
			switch (rec->type) {
			case SETTING_TYPE_BOOLEAN:
				if (clear)
					settings_set_bool(key, FALSE);
				else if (set_default)
					settings_set_bool(key, rec->default_value.v_bool);
				else
					set_boolean(key, value);
				break;
			case SETTING_TYPE_INT:
				if (clear)
					settings_set_int(key, 0);
				else if (set_default)
					settings_set_int(key, rec->default_value.v_int);
				else
					set_int(key, value);
				break;
			case SETTING_TYPE_CHOICE:
				if (clear || set_default)
					settings_set_choice(key, rec->choices[rec->default_value.v_int]);
				else
					set_choice(key, value);
				break;
			case SETTING_TYPE_STRING:
				settings_set_str(key, clear ? "" :
						 set_default ? rec->default_value.v_string :
						 value);
				break;
			case SETTING_TYPE_TIME:
				if (!settings_set_time(key, clear ? "0" :
						       set_default ? rec->default_value.v_string : value))
					printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_INVALID_TIME);
				break;
			case SETTING_TYPE_LEVEL:
				if (!settings_set_level(key, clear ? "" :
							set_default ? rec->default_value.v_string : value))
					printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_INVALID_LEVEL);
				break;
			case SETTING_TYPE_SIZE:
				if (!settings_set_size(key, clear ? "0" :
						       set_default ? rec->default_value.v_string : value))
					printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_INVALID_SIZE);
				break;
			case SETTING_TYPE_ANY:
				/* Unpossible! */
				break;
			}
			signal_emit("setup changed", 0);
			printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_SET_TITLE, rec->section);
			set_print(rec);
		} else
			printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SET_UNKNOWN, key);
	}

	cmd_params_free(free_arg);
}
Ejemplo n.º 5
0
void
state_changed()
{
    hotkey_t hk;
    REFRESH_KEY_SETTING(trigger);
    settings_set(TRIGGER_KEY, &hk);

    REFRESH_KEY_SETTING(english);
    settings_set(ENG_KEY, &hk);

    varchar colorstr;
    REFRESH_COLOR_SETTING(background_color_btn);
    settings_set(PREEDIT_COLOR, colorstr);

    REFRESH_COLOR_SETTING(font_color_btn);
    settings_set(PREEDIT_FONT_COLOR, colorstr);

    /* font and size information */
    settings_set(PREEDIT_FONT, (void*) gtk_font_button_get_font_name(font_btn));

    /* font color information */
    settings_set_double(PREEDIT_OPACITY,
                        gtk_adjustment_get_value(opacity_value));

    settings_set_int(CANDIDATES_SIZE,
                     gtk_adjustment_get_value(ncandidates));

    /* page up and down trigger */
    settings_set_int(PAGE_MINUS_PLUS,
                     gtk_toggle_button_get_active(minus_plus_check));
    settings_set_int(PAGE_COMMA_PERIOD,
                     gtk_toggle_button_get_active(comma_period_check));
    settings_set_int(PAGE_PAREN,
                     gtk_toggle_button_get_active(paren_check));

    /* fuzzy segmentation */
    settings_set_int(FUZZY_SEGMENTATION,
                     gtk_toggle_button_get_active(fuzzy_seg_check));
    settings_set_int(FUZZY_INNER_SEGMENTATION,
                     gtk_toggle_button_get_active(fuzzy_inner_seg_check));

    /* cancel on backspace */
    settings_set_int(CANCEL_ON_BACKSPACE,
                     gtk_toggle_button_get_active(cancel_on_backspace_check));

    /* smart punctuation */
    settings_set_int(SMART_PUNCT,
                     gtk_toggle_button_get_active(smart_punct_check));

    settings_set_int(SHUANGPIN, gtk_toggle_button_get_active(shuangpin_check));
    int sche_idx = gtk_combo_box_get_active(shuangpin_combo);
    if (sche_idx < UI_SHUANGPIN_SCHEMES_NUM)
        settings_set_string(SHUANGPIN_SCHEME, ui_shuangpin_schemes[sche_idx]);

    /* skins */
    settings_set_string(SKIN_NAME, gtk_combo_box_get_active_text(skin_combo));

    /* whether hide icbar */
    settings_set_int(HIDE_ICBAR, gtk_toggle_button_get_active(hide_icbar_check));

    /* init status */
    settings_set_int(INIT_PUNC_TYPE, gtk_toggle_button_get_active(punc_english_radio));
    settings_set_int(INIT_WIDTH, gtk_toggle_button_get_active(half_width_radio));
    settings_set_int(INIT_LANGUAGE, gtk_toggle_button_get_active(lang_english_radio));
    
    settings_save();
    send_reload();
}