static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; o = g_slice_new0(Options); if ((n = obt_xml_find_node(node, "command")) || (n = obt_xml_find_node(node, "execute"))) { gchar *s = obt_xml_node_string(n); o->cmd = obt_paths_expand_tilde(s); g_free(s); } if ((n = obt_xml_find_node(node, "prompt"))) o->prompt = obt_xml_node_string(n); if ((n = obt_xml_find_node(node, "startupnotify"))) { xmlNodePtr m; if ((m = obt_xml_find_node(n->children, "enabled"))) o->sn = obt_xml_node_bool(m); if ((m = obt_xml_find_node(n->children, "name"))) o->sn_name = obt_xml_node_string(m); if ((m = obt_xml_find_node(n->children, "icon"))) o->sn_icon = obt_xml_node_string(m); if ((m = obt_xml_find_node(n->children, "wmclass"))) o->sn_wmclass = obt_xml_node_string(m); } return o; }
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; }
static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n, c; Options *o; gboolean x_pos_given = FALSE; o = g_slice_new0(Options); o->monitor = -1; if ((n = obt_xml_find_node(node, "menu"))) o->name = obt_xml_node_string(n); if ((n = obt_xml_find_node(node, "position"))) { if ((c = obt_xml_find_node(n->children, "x"))) { if (!obt_xml_node_contains(c, "default")) { config_parse_gravity_coord(c, &o->position.x); x_pos_given = TRUE; } } if (x_pos_given && (c = obt_xml_find_node(n->children, "y"))) { if (!obt_xml_node_contains(c, "default")) { config_parse_gravity_coord(c, &o->position.y); o->use_position = TRUE; } } /* unlike client placement, x/y is needed to specify a monitor, * either it's under the mouse or it's in an exact actual position */ if (o->use_position && (c = obt_xml_find_node(n->children, "monitor"))) { if (!obt_xml_node_contains(c, "default")) { gchar *s = obt_xml_node_string(c); if (!g_ascii_strcasecmp(s, "mouse")) o->monitor_type = OB_PLACE_MONITOR_MOUSE; else if (!g_ascii_strcasecmp(s, "active")) o->monitor_type = OB_PLACE_MONITOR_ACTIVE; else if (!g_ascii_strcasecmp(s, "primary")) o->monitor_type = OB_PLACE_MONITOR_PRIMARY; else if (!g_ascii_strcasecmp(s, "all")) o->monitor_type = OB_PLACE_MONITOR_ALL; else o->monitor = obt_xml_node_int(c) - 1; g_free(s); } } } return o; }
static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; o = g_slice_new0(Options); if ((n = obt_xml_find_node(node, "edge"))) { gchar *s = obt_xml_node_string(n); o->corner_specified = TRUE; if (!g_ascii_strcasecmp(s, "top")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOP); else if (!g_ascii_strcasecmp(s, "bottom")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOM); else if (!g_ascii_strcasecmp(s, "left")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_LEFT); else if (!g_ascii_strcasecmp(s, "right")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_RIGHT); else if (!g_ascii_strcasecmp(s, "topleft")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPLEFT); else if (!g_ascii_strcasecmp(s, "topright")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPRIGHT); else if (!g_ascii_strcasecmp(s, "bottomleft")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT); else if (!g_ascii_strcasecmp(s, "bottomright")) o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT); else o->corner_specified = FALSE; g_free(s); } return o; }
gchar* tree_get_string(const gchar *node, const gchar *def) { xmlNodePtr n; n = tree_get_node(node, def); return obt_xml_node_string(n); }
static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; o = g_slice_new0(Options); o->dir = OB_DIRECTION_NORTH; if ((n = obt_xml_find_node(node, "direction"))) { gchar *s = obt_xml_node_string(n); if (!g_ascii_strcasecmp(s, "north") || !g_ascii_strcasecmp(s, "up")) o->dir = OB_DIRECTION_NORTH; else if (!g_ascii_strcasecmp(s, "south") || !g_ascii_strcasecmp(s, "down")) o->dir = OB_DIRECTION_SOUTH; else if (!g_ascii_strcasecmp(s, "west") || !g_ascii_strcasecmp(s, "left")) o->dir = OB_DIRECTION_WEST; else if (!g_ascii_strcasecmp(s, "east") || !g_ascii_strcasecmp(s, "right")) o->dir = OB_DIRECTION_EAST; g_free(s); } return o; }
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); }
static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; o = g_slice_new0(Options); if ((n = obt_xml_find_node(node, "string"))) o->str = obt_xml_node_string(n); return o; }