WINGs: Better presentation for example code in the tutorial
[whome.git] / WINGs_tutorial / EighthWindow.c
blob1a32b7c1804ce7632ac3c6009016e17ecbc91ea7
1 #include "editmenu.h"
3 #define WINWIDTH 300
4 #define WINHEIGHT 400
5 #define MENUWIDTH 80
6 #define MENITEMHT 21
8 struct datacouple{
9 WMWindow *window;
10 WEditMenu *menu;
11 } datacouple;
13 void closeAll(WMWidget *self,void *data)
15 WMDestroyWidget(self);
16 exit(0);
19 void getMenu(WMWidget *self, void *data)
21 WMPoint position;
22 struct datacouple *tmp = (struct datacouple *) data;
24 if (WMGetButtonSelected(self)) {
25 position = WMGetViewScreenPosition(WMWidgetView(tmp->window));
26 WEditMenuShowAt(tmp->menu,
27 (position.x > MENUWIDTH)?(position.x - MENUWIDTH):0,
28 position.y + MENITEMHT, tmp->window);
29 } else
30 WEditMenuHide(tmp->menu);
33 int main(int argc, char **argv)
35 Display *display;
36 WMScreen *screen;
37 WMWindow *win;
38 WEditMenu *submenu, *menu;
39 WEditMenuItem * menuitem;
40 struct datacouple Mainmenu;
41 WMButton *Button;
43 WMInitializeApplication("MenuWindow", &argc, argv);
44 display = XOpenDisplay("");
45 screen = WMCreateScreen(display, DefaultScreen(display));
46 win = WMCreateWindow(screen, "Menu");
47 WMResizeWidget(win, WINWIDTH, WINHEIGHT);
48 WMSetWindowCloseAction(win, closeAll, NULL);
50 submenu = WCreateEditMenu(screen, "Submenu");
51 menuitem = WAddMenuItemWithTitle(submenu, "Submenu item");
52 menu = WCreateEditMenu(screen, "Main menu");
53 menuitem = WAddMenuItemWithTitle(menu, "To submenu");
54 WSetEditMenuSubmenu(menu, menuitem, submenu);
55 menuitem = WAddMenuItemWithTitle(menu, "Main item");
57 Mainmenu.window = win;
58 Mainmenu.menu = menu;
60 Button = WMCreateButton(win, WBTPushOnPushOff);
61 WMSetButtonText(Button, "Menu");
62 WMSetButtonAction(Button, getMenu, &Mainmenu);
63 WMMoveWidget(Button, 1, 1);
65 WMRealizeWidget(win);
66 WMRealizeWidget(Button);
67 WMRealizeWidget(menu);
68 WMRealizeWidget(submenu);
70 WMMapSubwidgets(win);
71 WMMapWidget(win);
73 WMScreenMainLoop(screen);
75 return 0;