X-Git-Url: http://git.subgeniuskitty.com/xmenu/.git/blobdiff_plain/b6cf4847cedfc09ccad10db651e2e97d7ac89184..60ddf397e389f25f0a038548d9c808c83d815ba7:/xmenu.h diff --git a/xmenu.h b/xmenu.h index bf5cb80..5e369a2 100644 --- a/xmenu.h +++ b/xmenu.h @@ -1,14 +1,29 @@ #define PROGNAME "xmenu" -/* macros for keyboard menu navigation */ -#define ITEMPREV 0 -#define ITEMNEXT 1 +/* Actions for the main loop */ +#define ACTION_NOP 0 +#define ACTION_CLEAR 1<<0 /* clear text */ +#define ACTION_SELECT 1<<1 /* select item */ +#define ACTION_MAP 1<<2 /* remap menu windows */ +#define ACTION_DRAW 1<<3 /* redraw menu windows */ +#define ACTION_WARP 1<<4 /* warp the pointer */ + +/* enum for keyboard menu navigation */ +enum { ITEMPREV, ITEMNEXT, ITEMFIRST, ITEMLAST }; + +/* enum for text alignment */ +enum {LeftAlignment, CenterAlignment, RightAlignment}; /* macros */ #define LEN(x) (sizeof (x) / sizeof (x[0])) #define MAX(x,y) ((x)>(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y)) #define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) +#define GETNUM(n, s) { \ + unsigned long __TMP__; \ + if ((__TMP__ = strtoul((s), NULL, 10)) < INT_MAX) \ + (n) = __TMP__; \ + } /* color enum */ enum {ColorFG, ColorBG, ColorLast}; @@ -35,6 +50,7 @@ struct Config { int triangle_height; int iconpadding; int horzpadding; + int alignment; /* the values below are set by options */ int monitor; @@ -53,6 +69,7 @@ struct DC { GC gc; + FcPattern *pattern; XftFont **fonts; size_t nfonts; }; @@ -64,7 +81,7 @@ struct Item { char *file; /* filename of the icon */ int y; /* item y position relative to menu */ int h; /* item height */ - size_t labellen; /* strlen(label) */ + int textw; /* text width */ struct Item *prev; /* previous item */ struct Item *next; /* next item */ struct Menu *submenu; /* submenu spawned by clicking on item */ @@ -72,7 +89,7 @@ struct Item { Imlib_Image icon; }; -/* monitor and cursor geometry structure */ +/* monitor geometry structure */ struct Monitor { int x, y, w, h; /* monitor geometry */ }; @@ -84,7 +101,10 @@ struct Menu { struct Item *list; /* list of items contained by the menu */ struct Item *selected; /* item currently selected in the menu */ int x, y, w, h; /* menu geometry */ + int hasicon; /* whether the menu has item with icons */ int drawn; /* whether the menu was already drawn */ + int maxtextw; /* maximum text width */ unsigned level; /* menu level relative to root */ Window win; /* menu window to map on the screen */ + XIC xic; /* input context */ };