#include "editmenu.h" #define WINWIDTH 300 #define WINHEIGHT 400 #define MENUWIDTH 80 #define MENITEMHT 21 struct datacouple{WMWindow *window; WEditMenu *menu; } datacouple; void closeAll(WMWidget *self,void *data){ WMDestroyWidget(self); exit(0); } void getMenu(WMWidget *self, void *data){ WMPoint position; struct datacouple *tmp=(struct datacouple *)data; if(WMGetButtonSelected(self)){ position=WMGetViewScreenPosition(WMWidgetView(tmp->window)); WEditMenuShowAt(tmp->menu,(position.x>MENUWIDTH)?position.x-MENUWIDTH:0, position.y+MENITEMHT,tmp->window); }else WEditMenuHide(tmp->menu); } int main (int argc, char **argv){ Display *display; WMScreen *screen; WMWindow *win; WEditMenu *submenu, *menu; WEditMenuItem * menuitem; struct datacouple Mainmenu; WMButton *Button; WMInitializeApplication("MenuWindow", &argc, argv); display = XOpenDisplay(""); screen = WMCreateScreen(display, DefaultScreen(display)); win = WMCreateWindow(screen, "Menu"); WMResizeWidget(win, WINWIDTH, WINHEIGHT); WMSetWindowCloseAction(win, closeAll, NULL); submenu=WCreateEditMenu(screen,"Submenu"); menuitem =WAddMenuItemWithTitle(submenu,"Submenu item"); menu=WCreateEditMenu(screen,"Main menu"); menuitem = WAddMenuItemWithTitle(menu,"To submenu"); WSetEditMenuSubmenu(menu, menuitem , submenu); menuitem = WAddMenuItemWithTitle(menu,"Main item"); Mainmenu.window=win; Mainmenu.menu=menu; Button =WMCreateButton(win,WBTPushOnPushOff); WMSetButtonText (Button, "Menu"); WMSetButtonAction (Button, getMenu, &Mainmenu); WMMoveWidget(Button, 1,1); WMRealizeWidget(win); WMRealizeWidget(Button); WMRealizeWidget(menu); WMRealizeWidget(submenu); WMMapSubwidgets(win); WMMapWidget(win); WMScreenMainLoop(screen); return 0; }