diff options
Diffstat (limited to '')
| -rw-r--r-- | cfg.c | 26 | ||||
| -rw-r--r-- | drv_generic_graphic.c | 10 | ||||
| -rw-r--r-- | layout.c | 26 | ||||
| -rw-r--r-- | layout.h | 8 | ||||
| -rw-r--r-- | lcd4linux.conf.sample | 40 | 
5 files changed, 89 insertions, 21 deletions
@@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.48 2006/01/30 12:53:07 reinelt Exp $^ +/* $Id: cfg.c,v 1.49 2006/02/07 05:36:13 reinelt Exp $^   *   * config file stuff   * @@ -23,6 +23,9 @@   *   *   * $Log: cfg.c,v $ + * Revision 1.49  2006/02/07 05:36:13  reinelt + * Layers added to Layout + *   * Revision 1.48  2006/01/30 12:53:07  reinelt   * replaced strncpy with strcpy where possible   * @@ -397,7 +400,7 @@ static char *dequote(char *string)  /* which if a string contains only valid chars */  /* i.e. start with a char and contains chars and nums */ -static int validchars(const char *string) +static int validchars(const char *string, const int numstart)  {      const char *c; @@ -405,8 +408,11 @@ static int validchars(const char *string)  	/* first and following chars */  	if ((*c >= 'A' && *c <= 'Z') || (*c >= 'a' && *c <= 'z') || (*c == '_'))  	    continue; +	/* number as first or following char */ +	if ((numstart || c > string) && *c >= '0' && *c <= '9') +	    continue;  	/* only following chars */ -	if ((c > string) && ((*c >= '0' && *c <= '9') || (*c == '.') || (*c == '-'))) +	if ((c > string) && ((*c == '.') || (*c == '-')))  	    continue;  	return 0;      } @@ -460,7 +466,7 @@ int cfg_cmd(const char *arg)      char *key, *val;      char *buffer; -    buffer = strdup (arg); +    buffer = strdup(arg);      key = strip(buffer, 0);      for (val = key; *val; val++) {  	if (*val == '=') { @@ -469,18 +475,18 @@ int cfg_cmd(const char *arg)  	}      }      if (*key == '\0' || *val == '\0') { -	free (buffer); +	free(buffer);  	return -1;      } -    if (!validchars(key)) { -	free (buffer); +    if (!validchars(key, 0)) { +	free(buffer);  	return -1;      }      cfg_add("", key, val, 1); -    free (buffer); +    free(buffer);      return 0;  } @@ -755,14 +761,14 @@ static int cfg_read(const char *file)  	}  	/* check key for valid chars */ -	if (!validchars(key)) { +	if (!validchars(key, 0)) {  	    error("error in config file '%s' line %d: key '%s' is invalid", file, lineno, key);  	    error = 1;  	    break;  	}  	/* on section-open, check value for valid chars */ -	if (section_open && !validchars(val)) { +	if (section_open && !validchars(val, 1)) {  	    error("error in config file '%s' line %d: section '%s' is invalid", file, lineno, val);  	    error = 1;  	    break; diff --git a/drv_generic_graphic.c b/drv_generic_graphic.c index af209fd..6a4bdeb 100644 --- a/drv_generic_graphic.c +++ b/drv_generic_graphic.c @@ -23,6 +23,9 @@   *   *   * $Log: drv_generic_graphic.c,v $ + * Revision 1.19  2006/02/07 05:36:13  reinelt + * Layers added to Layout + *   * Revision 1.18  2006/01/30 05:47:38  reinelt   * graphic subsystem changed to full-color RGBA   * @@ -136,6 +139,7 @@  #include "debug.h"  #include "cfg.h"  #include "plugin.h" +#include "layout.h"  #include "widget.h"  #include "widget_text.h"  #include "widget_icon.h" @@ -149,9 +153,6 @@  #include <dmalloc.h>  #endif -/* number of layers */ -#define LAYERS 4 -  int DROWS, DCOLS;		/* display size (pixels!) */  int XRES, YRES;			/* pixels of one char cell */ @@ -257,6 +258,7 @@ static void drv_generic_graphic_render(const int layer, const int row, const int      /* sanity checks */      if (layer < 0 || layer >= LAYERS) {  	error("%s: layer %d out of bounds (0..%d)", Driver, layer, LAYERS - 1); +	return;      }      len = strlen(txt); @@ -386,6 +388,7 @@ int drv_generic_graphic_icon_draw(WIDGET * W)      /* sanity check */      if (layer < 0 || layer >= LAYERS) {  	error("%s: layer %d out of bounds (0..%d)", Driver, layer, LAYERS - 1); +	return -1;      }      /* maybe grow layout framebuffer */ @@ -440,6 +443,7 @@ int drv_generic_graphic_bar_draw(WIDGET * W)      /* sanity check */      if (layer < 0 || layer >= LAYERS) {  	error("%s: layer %d out of bounds (0..%d)", Driver, layer, LAYERS - 1); +	return -1;      }      /* maybe grow layout framebuffer */ @@ -1,4 +1,4 @@ -/* $Id: layout.c,v 1.19 2006/01/30 05:47:38 reinelt Exp $ +/* $Id: layout.c,v 1.20 2006/02/07 05:36:13 reinelt Exp $   *   * new layouter framework   * @@ -23,6 +23,9 @@   *   *   * $Log: layout.c,v $ + * Revision 1.20  2006/02/07 05:36:13  reinelt + * Layers added to Layout + *   * Revision 1.19  2006/01/30 05:47:38  reinelt   * graphic subsystem changed to full-color RGBA   * @@ -130,7 +133,7 @@ int layout_init(const char *layout)      char *section;      char *list, *l;      char *widget; -    int row, col, num; +    int lay, row, col, num;      info("initializing layout '%s'", layout); @@ -159,12 +162,27 @@ int layout_init(const char *layout)  	if ((p = strchr(l, '|')) != NULL)  	    *p = '\0'; -	/* row/col widgets */ +	/* layer/row/col widgets */ +	i = sscanf(l, "layer:%d.row%d.col%d%n", &lay, &row, &col, &n); +	if (i == 3 && l[n] == '\0') { +	    if (lay < 0 || lay >= LAYERS) { +		error ("%s: layer %d out of bounds (0..%d)", section, lay, LAYERS-1); +	    } else { +		widget = cfg_get(section, l, NULL); +		if (widget != NULL && *widget != '\0') { +		    widget_add(widget, WIDGET_TYPE_RC, lay, row - 1, col - 1); +		} +		free(widget); +	    } +	} + +	/* row/col widgets w/o layer*/  	i = sscanf(l, "row%d.col%d%n", &row, &col, &n);  	if (i == 2 && l[n] == '\0') {  	    widget = cfg_get(section, l, NULL);  	    if (widget != NULL && *widget != '\0') { -		widget_add(widget, WIDGET_TYPE_RC, 0, row - 1, col - 1); +		/* default is layer 1 if outside layer section */ +		widget_add(widget, WIDGET_TYPE_RC, 1, row - 1, col - 1);  	    }  	    free(widget);  	} @@ -1,4 +1,4 @@ -/* $Id: layout.h,v 1.3 2005/01/18 06:30:23 reinelt Exp $ +/* $Id: layout.h,v 1.4 2006/02/07 05:36:13 reinelt Exp $   *   * new layouter framework   * @@ -23,6 +23,9 @@   *   *   * $Log: layout.h,v $ + * Revision 1.4  2006/02/07 05:36:13  reinelt + * Layers added to Layout + *   * Revision 1.3  2005/01/18 06:30:23  reinelt   * added (C) to all copyright statements   * @@ -41,6 +44,9 @@  #ifndef _LAYOUT_H_  #define _LAYOUT_H_ +/* number of layers */ +#define LAYERS 4 +  int layout_init(const char *section);  #endif diff --git a/lcd4linux.conf.sample b/lcd4linux.conf.sample index a921648..7e4d8c5 100644 --- a/lcd4linux.conf.sample +++ b/lcd4linux.conf.sample @@ -745,6 +745,7 @@ Widget Test {      class 'Text'      expression '1234567890123456789012345678901234567890'      width 40 +    foreground 'ff0000ff'  }  Widget Test1 { @@ -832,6 +833,38 @@ Layout Default {      }  } +Layout TestLayer { +    Row1 { +	Col1  'OS' +    } +    Row2 { +	Col1  'CPU' +	Col10 'RAM' +    } +    Row3 { +	Col1  'Busy' +	Col10 'Rain' +	Col11 'BusyBar' +    } +    Row4 { +	Col1 'Load' +	Col11 'LoadBar' +    } +    Row5 { +	Col1  'Disk' +	Col11 'DiskBar' +    } +    Row6 { +	Col1  'Eth0' +	Col11 'Eth0Bar' +    } +    Layer 0 { +	Row3 { +	    Col1  'Test' +	} +    } +} +  Layout L24x8 {      Row1 {  	Col1  'Load' @@ -944,15 +977,16 @@ Layout testMySQL {  #Display 'BA63'  #Display 'CT20x4'  #Display 'T6963-240x64' -#Display 'XWindow' +Display 'XWindow'  #Display 'USBLCD'  #Display 'BWCT' -Display 'Image' +#Display 'Image'  #Display 'Trefon'  #Display 'LPH7508-serdisplib'  #Display 'LPH7508' -Layout 'Default' +#Layout 'Default' +Layout 'TestLayer'  #Layout 'L8x2'  #Layout 'L16x2'  #Layout 'L20x2'  | 
