parse resources before command-line options
[xmenu] / xmenu.h
diff --git a/xmenu.h b/xmenu.h
index 04a4ddf..051bc4a 100644 (file)
--- a/xmenu.h
+++ b/xmenu.h
@@ -1,14 +1,21 @@
 #define PROGNAME "xmenu"
 
 #define PROGNAME "xmenu"
 
-/* macros for keyboard menu navigation */
-#define ITEMPREV 0
-#define ITEMNEXT 1
+/* 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))
 
 /* 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};
 
 /* color enum */
 enum {ColorFG, ColorBG, ColorLast};
@@ -35,6 +42,7 @@ struct Config {
        int triangle_height;
        int iconpadding;
        int horzpadding;
        int triangle_height;
        int iconpadding;
        int horzpadding;
+       int alignment;
 
        /* the values below are set by options */
        int monitor;
 
        /* the values below are set by options */
        int monitor;
@@ -42,7 +50,6 @@ struct Config {
 
        /* the value below is computed by xmenu */
        int iconsize;
 
        /* the value below is computed by xmenu */
        int iconsize;
-       int screenw, screenh;   /* screen width and height */
 };
 
 /* draw context structure */
 };
 
 /* draw context structure */
@@ -54,6 +61,7 @@ struct DC {
 
        GC gc;
 
 
        GC gc;
 
+       FcPattern *pattern;
        XftFont **fonts;
        size_t nfonts;
 };
        XftFont **fonts;
        size_t nfonts;
 };
@@ -65,7 +73,7 @@ struct Item {
        char *file;             /* filename of the icon */
        int y;                  /* item y position relative to menu */
        int h;                  /* item height */
        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 */
        struct Item *prev;      /* previous item */
        struct Item *next;      /* next item */
        struct Menu *submenu;   /* submenu spawned by clicking on item */
@@ -73,7 +81,7 @@ struct Item {
        Imlib_Image icon;
 };
 
        Imlib_Image icon;
 };
 
-/* monitor and cursor geometry structure */
+/* monitor geometry structure */
 struct Monitor {
        int x, y, w, h;         /* monitor geometry */
 };
 struct Monitor {
        int x, y, w, h;         /* monitor geometry */
 };
@@ -85,7 +93,9 @@ 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 */
        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 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 */
 };
        unsigned level;         /* menu level relative to root */
        Window win;             /* menu window to map on the screen */
 };