Пример #1
0
static gpointer setup_func(xmlNodePtr node)
{
    xmlNodePtr n;
    Options *o;

    o = g_slice_new0(Options);
    o->x.pos = G_MININT;
    o->y.pos = G_MININT;
    o->w = G_MININT;
    o->h = G_MININT;
    o->monitor = CURRENT_MONITOR;

    if ((n = obt_xml_find_node(node, "x")))
        config_parse_gravity_coord(n, &o->x);

    if ((n = obt_xml_find_node(node, "y")))
        config_parse_gravity_coord(n, &o->y);

    if ((n = obt_xml_find_node(node, "width"))) {
        gchar *s = obt_xml_node_string(n);
        if (g_ascii_strcasecmp(s, "current") != 0)
            config_parse_relative_number(s, &o->w, &o->w_denom);
        g_free(s);
    }
    if ((n = obt_xml_find_node(node, "height"))) {
        gchar *s = obt_xml_node_string(n);
        if (g_ascii_strcasecmp(s, "current") != 0)
            config_parse_relative_number(s, &o->h, &o->h_denom);
        g_free(s);
    }

    if ((n = obt_xml_find_node(node, "monitor"))) {
        gchar *s = obt_xml_node_string(n);
        if (g_ascii_strcasecmp(s, "current") != 0) {
            if (!g_ascii_strcasecmp(s, "all"))
                o->monitor = ALL_MONITORS;
            else if(!g_ascii_strcasecmp(s, "next"))
                o->monitor = NEXT_MONITOR;
            else if(!g_ascii_strcasecmp(s, "prev"))
                o->monitor = PREV_MONITOR;
            else
                o->monitor = obt_xml_node_int(n) - 1;
        }
        g_free(s);
    }

    return o;
}
Пример #2
0
static void xml_node_relative(xmlNodePtr n, gint *num, gint *denom)
{
    gchar *s;

    s = obt_xml_node_string(n);
    config_parse_relative_number(s, num, denom);
    g_free(s);
}