From e2854bdb20aa686e18df912e133b790ae39ad44d Mon Sep 17 00:00:00 2001 From: reinelt Date: Sun, 11 Jan 2004 09:26:15 +0000 Subject: [lcd4linux @ 2004-01-11 09:26:15 by reinelt] layout starts to exist... git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@305 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- cfg.c | 23 +++++++++++++++++++---- drv_MatrixOrbital.c | 11 +++++++---- layout.c | 43 +++++++++++++++++++++++++++++++++++-------- widget.c | 9 ++++++--- 4 files changed, 67 insertions(+), 19 deletions(-) diff --git a/cfg.c b/cfg.c index ddf9f4b..c5983d4 100644 --- a/cfg.c +++ b/cfg.c @@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.24 2004/01/10 20:22:33 reinelt Exp $^ +/* $Id: cfg.c,v 1.25 2004/01/11 09:26:15 reinelt Exp $^ * * config file stuff * @@ -23,6 +23,9 @@ * * * $Log: cfg.c,v $ + * Revision 1.25 2004/01/11 09:26:15 reinelt + * layout starts to exist... + * * Revision 1.24 2004/01/10 20:22:33 reinelt * added new function 'cfg_list()' (not finished yet) * added layout.c (will replace processor.c someday) @@ -150,6 +153,11 @@ * cfg_cmd can be called _before_ cfg_read() * returns 0 if ok, -1 if arg cannot be parsed * + * cfg_list (section) + * returns a list of all keys in the specified section + * This list was allocated be cfg_list() and must be + * freed by the caller! + * * cfg_get (section, key, defval) * return the a value for a given key in a given section * or if key does not exist @@ -323,7 +331,7 @@ int l4l_cfg_cmd (char *arg) char *l4l_cfg_list (char *section) { int i, len; - char *key; + char *key, *list; // calculate key length len=strlen(section)+1; @@ -333,14 +341,21 @@ char *l4l_cfg_list (char *section) strcpy (key, section); strcat (key, "."); + // start with empty string + list=malloc(1); + *list='\0'; + // search matching entries for (i=0; i #include #include +#include #include "debug.h" #include "cfg.h" #include "layout.h" -#define MAX_ROWS 32 -#define MAX_COLS 80 +void layout_addItem (char *name, int row, int col) +{ + + debug ("layout_addItem(%s, %d, %d)", name, row, col); +} + int layout_init (char *layout) { - char *section, *widget; - char buffer[15]; + char *section; + char *list; + char *key; + char *widget; int row, col; + char buffer[32]; + info ("initializing layout '%s'", layout); // prepare config section - // strlen("Layout:")=7, +1=8 + // strlen("Layout:")=7 section=malloc(strlen(layout)+8); strcpy(section, "Layout:"); strcat(section, layout); - cfg_list(section); - + list=cfg_list(section); + key=strtok(list, "|"); + while (key!=NULL) { + int i, n; + char *k; + // map to lower char for scanf() + for (k=key; *k!='\0'; k++) *k=tolower(*k); + i=sscanf (key, "row%d.col%d%n", &row, &col, &n); + if (i==2 && key[n]=='\0') { + widget=cfg_get(section, key, NULL); + if (widget!=NULL && *widget!='\0') { + layout_addItem (widget, row, col); + } + } + key=strtok(NULL, "|"); + } + free (list); return 0; } diff --git a/widget.c b/widget.c index e152571..301914d 100644 --- a/widget.c +++ b/widget.c @@ -1,4 +1,4 @@ -/* $Id: widget.c,v 1.4 2004/01/10 20:22:33 reinelt Exp $ +/* $Id: widget.c,v 1.5 2004/01/11 09:26:15 reinelt Exp $ * * generic widget handling * @@ -21,6 +21,9 @@ * * * $Log: widget.c,v $ + * Revision 1.5 2004/01/11 09:26:15 reinelt + * layout starts to exist... + * * Revision 1.4 2004/01/10 20:22:33 reinelt * added new function 'cfg_list()' (not finished yet) * added layout.c (will replace processor.c someday) @@ -60,8 +63,8 @@ static WIDGET_CLASS *Classes=NULL; static int nClasses=0; -static WIDGET *Widgets=NULL; -static int nWidgets=0; +static WIDGET *Widgets=NULL; +static int nWidgets=0; int widget_register (WIDGET_CLASS *widget) -- cgit v1.2.3