summaryrefslogtreecommitdiffstats
path: root/fltk/fltk/compat/FL/menubar.h
diff options
context:
space:
mode:
authorBastian Wissler2009-04-01 18:57:04 +0200
committerBastian Wissler2009-04-01 18:57:04 +0200
commitfd33e001bb3ab76b6aef97f641ddcbee9ab384ef (patch)
treeeb485719b893df5068da6c063c094ae2aa32621b /fltk/fltk/compat/FL/menubar.h
parentvmchooser source: (diff)
downloadvmchooser-fd33e001bb3ab76b6aef97f641ddcbee9ab384ef.tar.gz
vmchooser-fd33e001bb3ab76b6aef97f641ddcbee9ab384ef.tar.xz
vmchooser-fd33e001bb3ab76b6aef97f641ddcbee9ab384ef.zip
vmchooser source:
* added fltk libs and includes git-svn-id: http://svn.openslx.org/svn/openslx/openslx-src-tools/vmchooser/trunk@2778 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'fltk/fltk/compat/FL/menubar.h')
-rw-r--r--fltk/fltk/compat/FL/menubar.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/fltk/fltk/compat/FL/menubar.h b/fltk/fltk/compat/FL/menubar.h
new file mode 100644
index 0000000..83b3af8
--- /dev/null
+++ b/fltk/fltk/compat/FL/menubar.h
@@ -0,0 +1,65 @@
+// This is an additional header file for "DDForms", which was our internal
+// enhancement of Forms. This defines the precursor of the Fl_Menu class.
+//
+// Unfortunately it defined the callbacks as taking a long rather
+// than a void* argument, requiring some dubious casts to emulate it:
+
+#include "Fl_Menu_Bar.h"
+
+struct FL_API MenuEntry {
+ const char *text; /*initial character indicates "type", 0 = end of menu*/
+ ulong bind; /* key binding in forms format (#x, etc) */
+ void (*cb)(Fl_Widget *,long); /* callback */
+ long data; /* value for callback */
+ int flags; /* see below for flags */
+ uchar labeltype;
+ uchar labelfont;
+ uchar labelsize;
+ uchar labelcolor;
+};
+
+#define CHECKED FL_MENU_CHECK
+#define UNCHECKED FL_MENU_BOX
+#define DISABLED FL_MENU_INACTIVE
+
+/* Turn a box into a menu bar: */
+inline void MenuBar(Fl_Widget *o,MenuEntry *m) {
+ Fl_Menu_Bar *mb = new Fl_Menu_Bar(o->x(),o->y(),o->w(),o->h());
+ mb->menu((Fl_Menu_Item*)m);
+ mb->box(0);
+ Fl_Group *g = (Fl_Group *)(o->parent());
+ int i = g->find(*o);
+ g->insert(*mb, i<g->children()-1 ? g->child(i+1) : 0);
+}
+
+/* advance to the Nth item in menu, skipping submenus: */
+inline MenuEntry *MenuGetEntry(MenuEntry *m,int i) {
+ return (MenuEntry*)(((Fl_Menu_Item*)m)->next(i));
+}
+
+/* Init the shortcuts for a widget with a popup menu: */
+inline void MenuSetShortcuts(Fl_Widget *, MenuEntry *) {}
+
+inline void MenuAdd(
+ MenuEntry m[],
+ int, /* number of entries in menutable, ignored here */
+ const char *text,
+ const char *bind,
+ void (*cb)(Fl_Widget *,long),
+ long data,
+ int flags) {
+ ((Fl_Menu_Item*)m)->add(text,bind,(Fl_Callback*)cb,(void *)data,flags);
+}
+
+inline MenuEntry *MenuPopup(Fl_Widget *o,const char *title,MenuEntry *m,
+ int x, int y) {
+ const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->popup(x,y,title);
+ if (v && v->callback_) v->do_callback(o);
+ return (MenuEntry *)v;
+}
+
+inline MenuEntry *MenuHandleShortcut(Fl_Widget *o,MenuEntry *m,char) {
+ const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->test_shortcut();
+ if (v && v->callback_) v->do_callback(o);
+ return (MenuEntry *)v;
+}