plugin.c plugin.h \
plugin_math.c \
plugin_string.c \
+plugin_cfg.c \
plugin_xmms.c \
plugin_i2c_sensors.c \
widget.c widget.h \
lcd4linux_LDFLAGS = $(X_LIBS)
lcd4linux_LDADD = liblcd4linux.la @DRVLIBS@
-lcd4linux_SOURCES = lcd4linux.c pid.c pid.h parser.c parser.h processor.c processor.h layout.c layout.h evaluator.c evaluator.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_xmms.c plugin_i2c_sensors.c widget.c widget.h widget_text.c widget_text.h system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h
+lcd4linux_SOURCES = lcd4linux.c pid.c pid.h parser.c parser.h processor.c processor.h layout.c layout.h evaluator.c evaluator.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_xmms.c plugin_i2c_sensors.c widget.c widget.h widget_text.c widget_text.h system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h
liblcd4linux_la_DEPENDENCIES = @DRIVERS@
lcd4linux_OBJECTS = lcd4linux.$(OBJEXT) pid.$(OBJEXT) parser.$(OBJEXT) \
processor.$(OBJEXT) layout.$(OBJEXT) evaluator.$(OBJEXT) \
plugin.$(OBJEXT) plugin_math.$(OBJEXT) plugin_string.$(OBJEXT) \
-plugin_xmms.$(OBJEXT) plugin_i2c_sensors.$(OBJEXT) widget.$(OBJEXT) \
-widget_text.$(OBJEXT) system.$(OBJEXT) isdn.$(OBJEXT) wifi.$(OBJEXT) \
-mail.$(OBJEXT) seti.$(OBJEXT) battery.$(OBJEXT) dvb.$(OBJEXT) \
-filter.$(OBJEXT) exec.$(OBJEXT) expr.$(OBJEXT) mail2.$(OBJEXT) \
-socket.$(OBJEXT) imon.$(OBJEXT)
+plugin_cfg.$(OBJEXT) plugin_xmms.$(OBJEXT) plugin_i2c_sensors.$(OBJEXT) \
+widget.$(OBJEXT) widget_text.$(OBJEXT) system.$(OBJEXT) isdn.$(OBJEXT) \
+wifi.$(OBJEXT) mail.$(OBJEXT) seti.$(OBJEXT) battery.$(OBJEXT) \
+dvb.$(OBJEXT) filter.$(OBJEXT) exec.$(OBJEXT) expr.$(OBJEXT) \
+mail2.$(OBJEXT) socket.$(OBJEXT) imon.$(OBJEXT)
lcd4linux_DEPENDENCIES = liblcd4linux.la
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
.deps/expr.P .deps/filter.P .deps/fontmap.P .deps/icon.P .deps/imon.P \
.deps/isdn.P .deps/layout.P .deps/lcd4linux.P .deps/lock.P .deps/mail.P \
.deps/mail2.P .deps/parport.P .deps/parser.P .deps/pid.P .deps/pixmap.P \
-.deps/plugin.P .deps/plugin_i2c_sensors.P .deps/plugin_math.P \
-.deps/plugin_string.P .deps/plugin_xmms.P .deps/processor.P \
-.deps/seti.P .deps/socket.P .deps/system.P .deps/udelay.P \
-.deps/widget.P .deps/widget_text.P .deps/wifi.P
+.deps/plugin.P .deps/plugin_cfg.P .deps/plugin_i2c_sensors.P \
+.deps/plugin_math.P .deps/plugin_string.P .deps/plugin_xmms.P \
+.deps/processor.P .deps/seti.P .deps/socket.P .deps/system.P \
+.deps/udelay.P .deps/widget.P .deps/widget_text.P .deps/wifi.P
SOURCES = $(liblcd4linux_la_SOURCES) $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES)
OBJECTS = $(liblcd4linux_la_OBJECTS) $(lcd4linux_OBJECTS)
-/* $Id: cfg.c,v 1.25 2004/01/11 09:26:15 reinelt Exp $^
+/* $Id: cfg.c,v 1.26 2004/01/11 18:26:02 reinelt Exp $^
*
* config file stuff
*
*
*
* $Log: cfg.c,v $
+ * Revision 1.26 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.25 2004/01/11 09:26:15 reinelt
* layout starts to exist...
*
#include "debug.h"
#include "cfg.h"
-#include "plugin.h"
typedef struct {
char *key;
int l4l_cfg_number (char *section, char *key, int defval, int min, int max, int *value)
{
-
char *s, *e;
+ // start with default value
+ // in case of an (uncatched) error, you have the
+ // default value set, which may be handy...
+ *value=defval;
+
s=cfg_get(section, key, NULL);
if (s==NULL) {
- *value=defval;
return 0;
}
val++;
}
- // provess 'value' in single-quotes
- else if (*val=='\'' && *end=='\'') {
- *end='\0';
- val++;
- }
-
// if key is '}', a section has been closed
if (strcmp(key, "}")==0) {
section_close=1;
}
-static void cfg_plugin (RESULT *result, int argc, RESULT *argv[])
-{
- int i, len;
- char *value;
- char *buffer;
-
- // calculate key length
- len=0;
- for (i=0; i<argc; i++) {
- len+=strlen(R2S(argv[i]))+1;
- }
-
- // allocate key buffer
- buffer=malloc(len+1);
-
- // prepare key buffer
- *buffer='\0';
- for (i=0; i<argc; i++) {
- strcat (buffer, ".");
- strcat (buffer, R2S(argv[i]));
- }
-
- // buffer starts with '.', so cut off first char
- value=cfg_get("", buffer+1, "");
-
- // free buffer again
- free (buffer);
-
- // store result
- SetResult(&result, R_STRING, value);
-}
-
-
int l4l_cfg_init (char *file)
{
if (cfg_check_source(file) == -1) {
if (Config_File) free (Config_File);
Config_File=strdup(file);
- // register as a plugin
- AddFunction ("cfg", -1, cfg_plugin);
-
return 0;
}
-/* $Id: drv_MatrixOrbital.c,v 1.5 2004/01/11 09:26:15 reinelt Exp $
+/* $Id: drv_MatrixOrbital.c,v 1.6 2004/01/11 18:26:02 reinelt Exp $
*
* new style driver for Matrix Orbital serial display modules
*
*
*
* $Log: drv_MatrixOrbital.c,v $
+ * Revision 1.6 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.5 2004/01/11 09:26:15 reinelt
* layout starts to exist...
*
// register text widget
wc=Widget_Text;
- wc.render=NULL;
+ wc.draw=NULL; //Fixme
widget_register(&wc);
// register plugins
-/* $Id: layout.c,v 1.2 2004/01/11 09:26:15 reinelt Exp $
+/* $Id: layout.c,v 1.3 2004/01/11 18:26:02 reinelt Exp $
*
* new layouter framework
*
*
*
* $Log: layout.c,v $
+ * Revision 1.3 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.2 2004/01/11 09:26:15 reinelt
* layout starts to exist...
*
#include "layout.h"
-void layout_addItem (char *name, int row, int col)
+int layout_addItem (char *name, int row, int col)
{
-
- debug ("layout_addItem(%s, %d, %d)", name, row, col);
+ // allocate widget
+ widget_add (name);
+
}
char *widget;
int row, col;
- char buffer[32];
-
info ("initializing layout '%s'", layout);
// prepare config section
-/* $Id: plugin.c,v 1.8 2004/01/10 20:22:33 reinelt Exp $
+/* $Id: plugin.c,v 1.9 2004/01/11 18:26:02 reinelt Exp $
*
* plugin handler for the Evaluator
*
*
*
* $Log: plugin.c,v $
+ * Revision 1.9 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.8 2004/01/10 20:22:33 reinelt
* added new function 'cfg_list()' (not finished yet)
* added layout.c (will replace processor.c someday)
// Prototypes
int plugin_init_math (void);
int plugin_init_string (void);
+int plugin_init_cfg (void);
int plugin_init_xmms (void);
int plugin_init_i2c_sensors (void);
{
plugin_init_math();
plugin_init_string();
+ plugin_init_cfg();
plugin_init_xmms();
// MR: segfaults here
// plugin_init_i2c_sensors();
-/* $Id: plugin_string.c,v 1.1 2003/12/19 05:50:34 reinelt Exp $
+/* $Id: plugin_string.c,v 1.2 2004/01/11 18:26:02 reinelt Exp $
*
* string plugin
*
- * Copyright 2003 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2003,2004 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
*
* This file is part of LCD4Linux.
*
*
*
* $Log: plugin_string.c,v $
+ * Revision 1.2 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.1 2003/12/19 05:50:34 reinelt
* added plugin_math.c and plugin_string.c
*
-/* $Id: widget.c,v 1.5 2004/01/11 09:26:15 reinelt Exp $
+/* $Id: widget.c,v 1.6 2004/01/11 18:26:02 reinelt Exp $
*
* generic widget handling
*
*
*
* $Log: widget.c,v $
+ * Revision 1.6 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.5 2004/01/11 09:26:15 reinelt
* layout starts to exist...
*
}
-int widget_add (char *section, char *name)
+int widget_add (char *name)
{
+ int i;
+ char *section;
+ char *class;
+
+ WIDGET_CLASS *Class;
+ WIDGET *Widget;
+
+ // prepare config section
+ // strlen("Widget:")=7
+ section=malloc(strlen(name)+8);
+ strcpy(section, "Widget:");
+ strcat(section, name);
+
+ // get widget class
+ class=cfg_get(section, "class", NULL);
+ if (class==NULL || *class=='\0') {
+ error ("error: widget '%s' has no class!", name);
+ return -1;
+ }
+
+ // lookup widget class
+ for (i=0; i<nClasses; i++) {
+ if (strcasecmp(class, Classes[i].name)==0) {
+ Class=&(Classes[i]);
+ break;
+ }
+ }
+ if (i==nClasses) {
+ error ("widget '%s': class '%s' not supported");
+ return -1;
+ }
+
nWidgets++;
Widgets=realloc(Widgets, nWidgets*sizeof(WIDGET));
-
- Widgets[nWidgets-1].name = name;
+ Widget=&(Widgets[nWidgets-1]);
+
+ Widget->name = name;
+ Widget->class = Class;
+ if (Class->init!=0) {
+ Class->init(Widget);
+ }
+
return 0;
}
-/* $Id: widget.h,v 1.4 2004/01/10 20:22:33 reinelt Exp $
+/* $Id: widget.h,v 1.5 2004/01/11 18:26:02 reinelt Exp $
*
* generic widget handling
*
*
*
* $Log: widget.h,v $
+ * Revision 1.5 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* 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)
struct WIDGET; // forward declaration
+
typedef struct WIDGET_CLASS {
char *name;
int (*init) (struct WIDGET *Self);
- int (*update) (struct WIDGET *Self);
- int (*render) (struct WIDGET *Self);
+ int (*update) (struct WIDGET *Self); // Fixme: do we really need this?
+ int (*draw) (struct WIDGET *Self);
int (*quit) (struct WIDGET *Self);
} WIDGET_CLASS;
+
typedef struct WIDGET{
- char *name;
+ char *name;
WIDGET_CLASS *class;
+ void *data;
} WIDGET;
+
int widget_register (WIDGET_CLASS *widget);
-/* $Id: widget_text.c,v 1.1 2004/01/10 20:22:33 reinelt Exp $
+/* $Id: widget_text.c,v 1.2 2004/01/11 18:26:02 reinelt Exp $
*
* simple text widget handling
*
*
*
* $Log: widget_text.c,v $
+ * Revision 1.2 2004/01/11 18:26:02 reinelt
+ * further widget and layout processing
+ *
* Revision 1.1 2004/01/10 20:22:33 reinelt
* added new function 'cfg_list()' (not finished yet)
* added layout.c (will replace processor.c someday)
#include "widget.h"
+typedef struct WIDGET_TEXT {
+ char *value;
+ char *align;
+ int width;
+ int update;
+} WIDGET_TEXT;
+
+
+int widget_text_init (WIDGET *Self) {
+
+ char *section;
+ WIDGET_TEXT *data;
+
+ debug ("Michi: widget_text_init(%s)", Self->name);
+
+ // prepare config section
+ // strlen("Widget:")=7
+ section=malloc(strlen(Self->name)+8);
+ strcpy(section, "Widget:");
+ strcat(section, Self->name);
+
+ data=malloc(sizeof(WIDGET_TEXT));
+
+ data->value = cfg_get (section, "value", "''");
+ data->align = cfg_get (section, "align", "L");
+
+ cfg_number (section, "width", 5, 0, 99999, &(data->width));
+ cfg_number (section, "update", -1, -1, 99999, &(data->update));
+
+ free (section);
+ Self->data=data;
+
+
+ return 0;
+}
+
+
+int widget_text_quit (WIDGET *Self) {
+
+ if (Self->data) {
+ free (Self->data);
+ Self->data=NULL;
+ }
+
+ return 0;
+
+}
+
+
+
WIDGET_CLASS Widget_Text = {
name: "text",
- init: NULL,
+ init: widget_text_init,
update: NULL,
- render: NULL,
- quit: NULL,
+ draw: NULL,
+ quit: widget_text_quit,
};