-/* $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
*
*
*
* $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
*
/* 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;
/* 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;
}
char *key, *val;
char *buffer;
- buffer = strdup (arg);
+ buffer = strdup(arg);
key = strip(buffer, 0);
for (val = key; *val; val++) {
if (*val == '=') {
}
}
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;
}
}
/* 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;
*
*
* $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
*
#include "debug.h"
#include "cfg.h"
#include "plugin.h"
+#include "layout.h"
#include "widget.h"
#include "widget_text.h"
#include "widget_icon.h"
#include <dmalloc.h>
#endif
-/* number of layers */
-#define LAYERS 4
-
int DROWS, DCOLS; /* display size (pixels!) */
int XRES, YRES; /* pixels of one char cell */
/* sanity checks */
if (layer < 0 || layer >= LAYERS) {
error("%s: layer %d out of bounds (0..%d)", Driver, layer, LAYERS - 1);
+ return;
}
len = strlen(txt);
/* 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 */
/* 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 */
-/* $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
*
*
*
* $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
*
char *section;
char *list, *l;
char *widget;
- int row, col, num;
+ int lay, row, col, num;
info("initializing layout '%s'", 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);
}
-/* $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
*
*
*
* $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
*
#ifndef _LAYOUT_H_
#define _LAYOUT_H_
+/* number of layers */
+#define LAYERS 4
+
int layout_init(const char *section);
#endif
class 'Text'
expression '1234567890123456789012345678901234567890'
width 40
+ foreground 'ff0000ff'
}
Widget Test1 {
}
}
+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'
#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'