summaryrefslogtreecommitdiff
path: root/openbox/menu.h
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-14 21:26:01 +0000
committerDana Jansens <danakj@orodu.net>2003-04-14 21:26:01 +0000
commit3d6e0f941d36ff335ad13ecf83405a40775e4c04 (patch)
tree7e855531c6f8690e0308f4ebd47aac546409f66f /openbox/menu.h
parent677bc6ed2db3448bd2bee48fd4598079b27b18c1 (diff)
these menus should not be removed, they are good and will be used.
Diffstat (limited to 'openbox/menu.h')
-rw-r--r--openbox/menu.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/openbox/menu.h b/openbox/menu.h
new file mode 100644
index 00000000..b3e712c3
--- /dev/null
+++ b/openbox/menu.h
@@ -0,0 +1,67 @@
+#ifndef __menu_h
+#define __menu_h
+
+#include "action.h"
+#include <glib.h>
+
+typedef struct Menu {
+ char *label;
+ char *name;
+
+ GList *entries;
+ /* GList *tail; */
+
+ /* ? */
+ gboolean shown;
+ gboolean invalid;
+
+ struct Menu *parent;
+
+ /* waste o' pointers */
+ void (*show)( /* some bummu */);
+ void (*hide)( /* some bummu */);
+ void (*update)( /* some bummu */);
+ void (*mouseover)( /* some bummu */);
+ void (*selected)( /* some bummu */);
+} Menu;
+
+typedef enum MenuEntryRenderType {
+ MenuEntryRenderType_None = 0,
+ MenuEntryRenderType_Submenu = 1 << 0,
+ MenuEntryRenderType_Boolean = 1 << 1,
+ MenuEntryRenderType_Separator = 1 << 2,
+
+ MenuEntryRenderType_Other = 1 << 7
+} MenuEntryRenderType;
+
+
+typedef struct {
+ char *label;
+ Menu *parent;
+
+ Action action;
+
+ MenuEntryRenderType render_type;
+ gboolean enabled;
+ gboolean boolean_value;
+ gpointer render_data; /* where the engine can store anything it likes */
+
+ Menu *submenu;
+} MenuEntry;
+
+Menu *menu_new(const char *label, const char *name, Menu *parent);
+void menu_free(const char *name);
+
+MenuEntry *menu_entry_new_full(const char *label, Action *action,
+ const MenuEntryRenderType render_type,
+ gpointer render_data, gpointer submenu);
+
+#define menu_entry_new(label, action) \
+ menu_entry_new(label, action, MenuEntryRenderType_None, NULL, NULL)
+
+void menu_entry_free(const MenuEntry *entry);
+
+void menu_entry_set_submenu(MenuEntry *entry, Menu *submenu);
+
+void menu_add_entry(Menu *menu, MenuEntry *entry);
+#endif