declare vars at top
[dana/openbox.git] / plugins / menu / include_menu.c
1 #include <glib.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <errno.h>
5 #include <string.h>
6 #include <stdio.h>
7 #include <sys/types.h>
8 #include <sys/wait.h>
9 #include <unistd.h>
10 #include <sys/stat.h>
11
12 #include "kernel/menu.h"
13 #include "kernel/timer.h"
14 #include "kernel/action.h"
15 #include "kernel/event.h"
16
17 static char *PLUGIN_NAME = "include_menu";
18
19 void plugin_setup_config() { }
20 void plugin_startup()
21 { }
22 void plugin_shutdown() { }
23
24 void include_menu_clean_up(ObMenu *m) { }
25
26 void *plugin_create(PluginMenuCreateData *data)
27 {
28     char *id;
29     char *label;
30     char *filename;
31     ObMenu *m;
32     xmlDocPtr doc;
33
34     parse_attr_string("id", data->node, &id);
35     parse_attr_string("label", data->node, &label);
36     
37     m = menu_new( (label != NULL ? label : ""),
38                   (id != NULL ? id : PLUGIN_NAME),
39                   data->parent);
40
41     m->plugin = PLUGIN_NAME;
42
43     parse_attr_string("filename", data->node, &filename);
44
45     doc = xmlParseFile(filename);
46     if (doc) {
47         xmlNodePtr node = xmlDocGetRootElement(doc);
48         if (node) {
49             parse_menu_full(doc, node, m, FALSE);
50         }
51         xmlFreeDoc(doc);
52     }
53
54     if (data->parent)
55         menu_add_entry(data->parent, menu_entry_new_submenu(
56                            (label != NULL ? label : ""),
57                            m));
58
59     return (void *)m;
60 }
61
62 void plugin_destroy (void *m)
63 {
64     include_menu_clean_up(m);
65 }