📄 menu.h
字号:
//**************************************************************//* filename: menu.h *//* *//**************************************************************//* programmed by: Thomas Wagner *//* last change: (XXX: not updated) *//**************************************************************#include <stdio.h>#include <stdlib.h>#include <X11/Xlib.h>class Menu;class MenuIcon;class PulldownMenu;#ifndef MENU_H#define MENU_H#include "icon.h"#define MINMENUWIDTH 10#define MENUVERTDISTANCE 2#define MENUBORDER 1#define MENUHORIZONTALSPACE 10#define MENUEBORDERWIDTH 1#define MARKSIZE 12#define PULLDOWNBORDER 2// defines for Menu.status#define MENUSTATUS_DEFAULT 0#define MENUSTATUS_SELECTED (1<<0)// defines for MenuIcon.status#define STATUS_DEFAULT 0#define STATUS_CENTER (1<<0)#define STATUS_UNSELECTABLE (1<<1)#define STATUS_TOP (1<<2)#define STATUS_MARKED (1<<3)#define STATUS_MARKABLE (1<<4)#define STATUS_SELECTED (1<<5)#define STATUS_MAPPED (1<<6)typedef struct MenuIconInfo { char *bartext; int barstatus; int actionnumber, value;} MenuIconInfo;class MenuIcon: public Icon{ BigWindow *menuparentwindow; Window_Info *parent; short textx, texty; int actionnumber, value; PulldownMenu *sonpulldownmenu; public: MenuIcon (Display * initdisplay, GC initgc, BigWindow * initMenuParentWindow, Window_Info * Parentwindow, XFontStruct * fontstruct, int initx, int inity, int initwidth, int initheight, MenuIconInfo * Infos); virtual ~ MenuIcon (); virtual void HandleEvent (XEvent * Event); virtual void UnmapMe () { XUnmapWindow (display, window); status &= ~STATUS_MAPPED; } virtual void MapMe () { XMapWindow (display, window); status |= STATUS_MAPPED; } void AddMenuStatus (int addstatus); void DelMenuStatus (int delstatus); inline unsigned short GetActionnumber () { return actionnumber; } void SetSonPulldownMenu (PulldownMenu * setpulldownmenu); PulldownMenu *GetPulldownMenu (); PulldownMenu *GetSonPulldownMenu () { return sonpulldownmenu; } void DrawMenuIcon (); protected: void Changetomarked ();};class Menu: public Window_Info{ unsigned short status; BigWindow *parentwindow; Pixmap pixmap, markpixmap; MenuIcon **menuicons; unsigned short pulldownnumber; public: Menu (Display * initdisplay, GC initgc, BigWindow * ParentWindow, XFontStruct * fontstruct, int initx, int inity); virtual ~ Menu (); virtual void HandleEvent (XEvent * Event); void DrawMenu (); Pixmap Getmarkpixmap () { return markpixmap; } void MakeUnselectable (); void MakeSelectable (); void PlaceMe (unsigned short newx, unsigned short newy); void AddPulldownMenu (MenuIconInfo * Infos, unsigned short number); void AddMenuStatus (int addstatus, int menuidentifier); void DelMenuStatus (int addstatus, int menuidentifier); void MapmyPulldownMenu (MenuIcon * my); void UnmapallPulldownMenus (); void SelectMe () { status |= MENUSTATUS_SELECTED; } void UnselectMe () { status &= ~MENUSTATUS_SELECTED; } int IsSelected () { return status & MENUSTATUS_SELECTED; } PulldownMenu *GetPulldownMenu (short index);};class PulldownMenu: public Window_Info{ unsigned short iconnumber; MenuIcon **menuicons; BigWindow *parentwindow; Menu *parentmenu; Pixmap pixmap; public: PulldownMenu (Display * initdisplay, GC initgc, BigWindow * ParentWindow, Menu * ParentMenu, XFontStruct * fontstruct, int initx, int inity, int initwidth, MenuIconInfo * Infos, unsigned short number); virtual ~ PulldownMenu (); virtual void HandleEvent (XEvent * Event); BigWindow *GetParentwindow () { return parentwindow; } Menu *GetParentmenu () { return parentmenu; } virtual void UnmapMe (); virtual void MapMe (); void EnteredMe (MenuIcon * me); unsigned short Geticonnumber () { return iconnumber; } virtual void MoveMe (short xdiff, short ydiff); MenuIcon *GetMenuIcon (unsigned short number) { return (menuicons[number]); }};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -