- if (!g_ascii_strcasecmp(name, "stacking")) {
- if (value->type != TOKEN_STRING)
- yyerror("invalid value");
- else {
- if (!g_ascii_strcasecmp(value->data.string, "bottom"))
- config_dock_layer = Layer_Below;
- else if (!g_ascii_strcasecmp(value->data.string, "normal"))
- config_dock_layer = Layer_Normal;
- else if (!g_ascii_strcasecmp(value->data.string, "top"))
- config_dock_layer = Layer_Top;
- else
- yyerror("invalid layer");
- }
- } else if (!g_ascii_strcasecmp(name, "position")) {
- if (value->type != TOKEN_STRING)
- yyerror("invalid value");
- else {
- if (!g_ascii_strcasecmp(value->data.string, "topleft"))
- config_dock_pos = DockPos_TopLeft;
- else if (!g_ascii_strcasecmp(value->data.string, "top"))
- config_dock_pos = DockPos_Top;
- else if (!g_ascii_strcasecmp(value->data.string, "topright"))
- config_dock_pos = DockPos_TopRight;
- else if (!g_ascii_strcasecmp(value->data.string, "right"))
- config_dock_pos = DockPos_Right;
- else if (!g_ascii_strcasecmp(value->data.string, "bottomright"))
- config_dock_pos = DockPos_BottomRight;
- else if (!g_ascii_strcasecmp(value->data.string, "bottom"))
- config_dock_pos = DockPos_Bottom;
- else if (!g_ascii_strcasecmp(value->data.string, "bottomleft"))
- config_dock_pos = DockPos_BottomLeft;
- else if (!g_ascii_strcasecmp(value->data.string, "left"))
- config_dock_pos = DockPos_Left;
- else if (!g_ascii_strcasecmp(value->data.string, "floating"))
- config_dock_pos = DockPos_Floating;
- else
- yyerror("invalid position");
- }
- } else if (!g_ascii_strcasecmp(name, "floatingx")) {
- if (value->type != TOKEN_INTEGER)
- yyerror("invalid value");
- else {
- config_dock_x = value->data.integer;
- }
- } else if (!g_ascii_strcasecmp(name, "floatingy")) {
- if (value->type != TOKEN_INTEGER)
- yyerror("invalid value");
- else {
- config_dock_y = value->data.integer;
- }
- } else if (!g_ascii_strcasecmp(name, "horizontal")) {
- if (value->type != TOKEN_BOOL)
- yyerror("invalid value");
- else {
- config_dock_horz = value->data.bool;
- }
- } else if (!g_ascii_strcasecmp(name, "autohide")) {
- if (value->type != TOKEN_BOOL)
- yyerror("invalid value");
- else {
- config_dock_hide = value->data.bool;
- }
- } else if (!g_ascii_strcasecmp(name, "hidetimeout")) {
- if (value->type != TOKEN_INTEGER)
- yyerror("invalid value");
- else {
- config_dock_hide_timeout = value->data.integer;
- }
- } else
- yyerror("invalid option");
- parse_free_token(value);
+ xmlNodePtr n;
+
+ node = node->xmlChildrenNode;
+
+ if ((n = parse_find_node("position", node))) {
+ if (parse_contains("TopLeft", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_NORTHWEST;
+ else if (parse_contains("Top", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_NORTH;
+ else if (parse_contains("TopRight", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_NORTHEAST;
+ else if (parse_contains("Right", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_EAST;
+ else if (parse_contains("BottomRight", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_SOUTHEAST;
+ else if (parse_contains("Bottom", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_SOUTH;
+ else if (parse_contains("BottomLeft", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_SOUTHWEST;
+ else if (parse_contains("Left", doc, n))
+ config_dock_floating = FALSE,
+ config_dock_pos = OB_DIRECTION_WEST;
+ else if (parse_contains("Floating", doc, n))
+ config_dock_floating = TRUE;
+ }
+ if (config_dock_floating) {
+ if ((n = parse_find_node("floatingX", node)))
+ config_dock_x = parse_int(doc, n);
+ if ((n = parse_find_node("floatingY", node)))
+ config_dock_y = parse_int(doc, n);
+ }
+ if ((n = parse_find_node("stacking", node))) {
+ if (parse_contains("top", doc, n))
+ config_dock_layer = OB_STACKING_LAYER_TOP;
+ else if (parse_contains("normal", doc, n))
+ config_dock_layer = OB_STACKING_LAYER_NORMAL;
+ else if (parse_contains("bottom", doc, n))
+ config_dock_layer = OB_STACKING_LAYER_BELOW;
+ }
+ if ((n = parse_find_node("direction", node))) {
+ if (parse_contains("horizontal", doc, n))
+ config_dock_orient = OB_ORIENTATION_HORZ;
+ else if (parse_contains("vertical", doc, n))
+ config_dock_orient = OB_ORIENTATION_VERT;
+ }
+ if ((n = parse_find_node("autoHide", node)))
+ config_dock_hide = parse_bool(doc, n);
+ if ((n = parse_find_node("hideTimeout", node)))
+ config_dock_hide_timeout = parse_int(doc, n);