- m = menu_new("sex menu", "root", NULL);
-
- a = action_from_string("execute");
- a->data.execute.path = g_strdup("xterm");
- menu_add_entry(m, menu_entry_new("xterm", a));
- a = action_from_string("restart");
- menu_add_entry(m, menu_entry_new("restart", a));
- menu_add_entry(m, menu_entry_new_separator("--"));
- a = action_from_string("exit");
- menu_add_entry(m, menu_entry_new("exit", a));
-
- /*
- s = menu_new("subsex menu", "submenu", m);
- a = action_from_string("execute");
- a->data.execute.path = g_strdup("xclock");
- menu_add_entry(s, menu_entry_new("xclock", a));
-
- menu_add_entry(m, menu_entry_new_submenu("subz", s));
-
- s = menu_new("empty", "chub", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new("", "s-club", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new(NULL, "h-club", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new(NULL, "g-club", m);
-
- a = action_from_string("execute");
- a->data.execute.path = g_strdup("xterm");
- menu_add_entry(s, menu_entry_new("xterm", a));
- a = action_from_string("restart");
- menu_add_entry(s, menu_entry_new("restart", a));
- menu_add_entry(s, menu_entry_new_separator("--"));
- a = action_from_string("exit");
- menu_add_entry(s, menu_entry_new("exit", a));
-
- menu_add_entry(m, menu_entry_new_submenu("long", s));
- */
+ if (!(self = g_hash_table_lookup(menu_hash, name)))
+ g_warning("Attempted to access menu '%s' but it does not exist.",
+ name);
+ return self;
+}
+
+static void parse_menu_item(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
+ gpointer data)
+{
+ ObMenuParseState *state = data;
+ gchar *label;
+
+ if (state->parent) {
+ if (parse_attr_string("label", node, &label)) {
+ GSList *acts = NULL;
+
+ for (node = node->children; node; node = node->next)
+ if (!xmlStrcasecmp(node->name, (const xmlChar*) "action")) {
+ ObAction *a = action_parse
+ (i, doc, node, OB_USER_ACTION_MENU_SELECTION);
+ if (a)
+ acts = g_slist_append(acts, a);
+ }
+ menu_add_normal(state->parent, -1, label, acts);
+ g_free(label);
+ }
+ }