From 882b3f5b940a0d0a80133c124a05f925d27e4479 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Mon, 13 Oct 2008 21:04:19 +0200 Subject: [PATCH] [ALL + structs.h] Add structs.h #2 --- structs.h | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 structs.h diff --git a/structs.h b/structs.h new file mode 100644 index 0000000..1900e0f --- /dev/null +++ b/structs.h @@ -0,0 +1,197 @@ +/* +* structs.h +* Copyright © 2008 Martin Duquesnoy +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are +* met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following disclaimer +* in the documentation and/or other materials provided with the +* distribution. +* * Neither the name of the nor the names of its +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef STRUCTS_H +#define STRUCTS_H + +#include "wmfs.h" + +#define NBUTTON 5 +#define MAXTAG 36 +#define MAXLAYOUT 3 + +/* typedef */ +typedef const char* uicb_t; + +/* Enum */ +enum { CurNormal, CurResize, CurMove, CurLast }; +enum { WMState, WMProtocols, WMName, WMDelete, WMLast }; +enum { NetSupported, NetWMName, NetLast }; + +/* BarWindow Structure + * (titlebar, topbar..) */ +typedef struct +{ + Window win; + Drawable dr; + int x, y; + uint w ,h; + uint color; + int bord; +} BarWindow; + +/* Client Structure. */ +typedef struct Client Client; +struct Client +{ + /* Client title */ + char *title; + /* Tag num */ + int tag; + /* Window attribute */ + int x, y, w, h; + /* Old window attribute */ + int ox, oy, ow, oh; + /* For resizehint usage */ + int basew, baseh, incw, inch; + int maxw, maxh, minw, minh; + int minax, maxax, minay, maxay; + /* Window */ + Window win; + /* Titlebar */ + BarWindow *tbar; + /* Titlebar Button */ + Window button; + /* Client Layout Information */ + Bool max, tile, free; + Bool hint, hide, lmax; + /* Struct in chains */ + Client *next; + Client *prev; +}; + +/* Keybind Structure */ +typedef struct +{ + uint mod; + KeySym keysym; + void (*func)(uicb_t); + char *cmd; +} Key; + + +/* Bar Button */ +typedef struct +{ + Bool type; /* False -> text, True -> image. */ + char *content; + BarWindow *bw; + char *fg_color; + int bg_color; + uint x; + int nmousesec; + void (*func[NBUTTON])(uicb_t); + char *cmd[NBUTTON]; + uint mouse[NBUTTON]; +} BarButton; + +/* Layout Structure */ +typedef struct +{ + char *image; + void (*func)(void); +} Layout; + + +/* Tag Structure */ +typedef struct +{ + char *name; + float mwfact; + int nmaster; + Bool resizehint; + Layout layout; +} Tag; + +/* Configuration structure */ +typedef struct +{ + char *font; + bool raisefocus; + bool raiseswitch; + bool bartop; + int borderheight; + int ttbarheight; + int tagbordwidth; + struct + { + /* Only the colors will be use for text + * are 'char*' (for xprint -> XftColorAllocName) */ + uint bordernormal; + uint borderfocus; + uint bar; + char *text; + char *tagselfg; + uint tagselbg; + uint tagbord; + char *layout_fg; + uint layout_bg; + char *ttbar_text_focus; + char *ttbar_text_normal; + uint button; + uint button_border; + } colors; + Tag tag[MAXTAG]; + Layout layout[MAXLAYOUT]; + BarButton *barbutton; + int ntag; + int nkeybind; + int nbutton; + int nlayout; +} Conf; + +/* Config.c struct */ +typedef struct +{ + char *name; + void *func; +} func_name_list_t; + +typedef struct +{ + char *name; + KeySym keysym; +} key_name_list_t; + +typedef struct +{ + char *name; + uint button; +} name_to_uint_t; + +typedef struct +{ + char *name; + char *content; +} Variable; + +#endif /* STRUCTS_H */