Exemple #1
0
static void theme_set_format(THEME_REC *theme, MODULE_THEME_REC *rec,
			     const char *module,
			     const char *key, const char *value)
{
	int num;

        num = format_find_tag(module, key);
	if (num != -1) {
		rec->formats[num] = g_strdup(value);
		rec->expanded_formats[num] = theme_format_expand(theme, value);
	}
}
Exemple #2
0
static char *gui_window_line_get_format(WINDOW_REC *window, LINE_REC *line,
                                        GString *raw)
{
    const unsigned char *text;
    char *module, *format_name, *args[MAX_FORMAT_PARAMS], *ret;
    TEXT_DEST_REC dest;
    int formatnum, argcount;

    text = (const unsigned char *) line->text;

    /* skip the beginning of the line until we find the format */
    g_free(line_read_format(&text));
    if (text[1] == LINE_CMD_FORMAT_CONT) {
        g_string_append_c(raw, '\0');
        g_string_append_c(raw, (char)LINE_CMD_FORMAT_CONT);
        return NULL;
    }

    /* read format information */
    module = line_read_format(&text);
    format_name = line_read_format(&text);

    if (raw != NULL) {
        g_string_append_c(raw, '\0');
        g_string_append_c(raw, (char)LINE_CMD_FORMAT);

        g_string_append(raw, module);

        g_string_append_c(raw, '\0');
        g_string_append_c(raw, (char)LINE_CMD_FORMAT);

        g_string_append(raw, format_name);
    }

    formatnum = format_find_tag(module, format_name);
    if (formatnum == -1)
        ret = NULL;
    else {
        argcount = 0;
        memset(args, 0, sizeof(args));
        while (*text != '\0' || text[1] != LINE_CMD_EOL) {
            args[argcount] = line_read_format(&text);
            if (raw != NULL) {
                g_string_append_c(raw, '\0');
                g_string_append_c(raw,
                                  (char)LINE_CMD_FORMAT);

                g_string_append(raw, args[argcount]);
            }
            argcount++;
        }

        /* get the format text */
        format_create_dest(&dest, NULL, NULL, line->level, window);
        ret = format_get_text_theme_charargs(current_theme,
                                             module, &dest,
                                             formatnum, args);
        while (argcount > 0)
            g_free(args[--argcount]);
    }

    g_free(module);
    g_free(format_name);

    return ret;
}