]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2006-02-07 05:36:13 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Tue, 7 Feb 2006 05:36:14 +0000 (05:36 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Tue, 7 Feb 2006 05:36:14 +0000 (05:36 +0000)
Layers added to Layout

git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@634 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

cfg.c
drv_generic_graphic.c
layout.c
layout.h
lcd4linux.conf.sample

diff --git a/cfg.c b/cfg.c
index f0e483a5b216375a9b88c68ef57e8c197a137f13..5b87baefeeddf114457c2d6288b92946fb2cbd69 100644 (file)
--- a/cfg.c
+++ b/cfg.c
@@ -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;
index af209fdbcdabf7a4534808ea35ecabf522b301ae..6a4bdeb83217b16418fcfcb82a7825542a1d30e8 100644 (file)
@@ -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
  *
 #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 */
 
@@ -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 */
index db48344ba3c6eed8decb48916200580cc06a5328..11fa1fee31a25aa68e805d915c41e3b7baaa369f 100644 (file)
--- a/layout.c
+++ b/layout.c
@@ -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);
        }
index c44b5b5adc7b82d7707d59ce7bb565fa35de7706..0e4214acee64bf41d55181d9f50ce091c4582bad 100644 (file)
--- a/layout.h
+++ b/layout.h
@@ -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
index a9216481d52e71ec8c77259df241d1a63fcb4c07..7e4d8c56c35ee826531b4ef98ef97e903ca87964 100644 (file)
@@ -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'