mirror of
https://github.com/gryf/window-maker.github.io.git
synced 2025-12-17 19:20:17 +01:00
71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
#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;
|
|
}
|