aboutsummaryrefslogtreecommitdiffstats
path: root/plugins.m4 (follow)
AgeCommit message (Collapse)AuthorFilesLines
2007-01-14added svn properties and keywordsmichael1-1/+5
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@729 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2006-09-15[lcd4linux @ 2006-09-15 19:00:50 by entropy]entropy1-0/+14
iconv charset converter plugin git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@717 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2006-08-13[lcd4linux @ 2006-08-13 18:14:03 by harbaum]harbaum1-0/+8
Added KVV plugin git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@692 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2006-07-18[lcd4linux @ 2006-07-18 17:04:55 by nicowallmeier]nicowallmeier1-2/+3
Changed test for libmpd git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@671 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2006-04-15[lcd4linux @ 2006-04-15 05:22:52 by reinelt]reinelt1-0/+19
mpd plugin from Stefan Kuhne git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@658 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2006-02-19[lcd4linux @ 2006-02-19 15:42:18 by reinelt]reinelt1-0/+8
file plugin from Chris Maj git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@640 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-11-04[lcd4linux @ 2005-11-04 04:53:08 by reinelt]reinelt1-0/+8
sample plugin activated git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@591 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-06-01[lcd4linux @ 2005-06-01 12:46:31 by reinelt]reinelt1-7/+11
--with-python added to configure git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@563 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-05-28[lcd4linux @ 2005-05-28 09:08:30 by reinelt]reinelt1-1/+1
fixed plugins.m4 bug found by Martin git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@555 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-05-03[lcd4linux @ 2005-05-03 11:13:23 by reinelt]reinelt1-1/+3
rearranged autoconf a bit, libX11 will be linked only if really needed (i.e. when the X11 driver has been selected) plugin_python filled with life git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@537 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-05-02[lcd4linux @ 2005-05-02 10:29:20 by reinelt]reinelt1-2/+14
preparations for python bindings and python plugin git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@536 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-04-05[lcd4linux @ 2005-04-05 06:57:39 by reinelt]reinelt1-10/+10
AC_CHECK_HEADERS corrected git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@528 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-04-03[lcd4linux @ 2005-04-03 07:07:43 by reinelt]reinelt1-0/+8
added statfs plugin git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@524 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2005-01-18[lcd4linux @ 2005-01-18 06:30:21 by reinelt]reinelt1-1/+20
added (C) to all copyright statements git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@509 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2004-05-29[lcd4linux @ 2004-05-29 00:27:14 by reinelt]reinelt1-0/+8
added plugin_diskstats.c git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@443 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2004-05-22[lcd4linux @ 2004-05-22 18:30:01 by reinelt]reinelt1-0/+8
added plugin 'uptime' git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@427 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2004-04-12[lcd4linux @ 2004-04-12 11:12:24 by reinelt]reinelt1-6/+18
added plugin_isdn, removed old ISDN client fixed some real bad bugs in the evaluator git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@418 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
2004-04-11[lcd4linux @ 2004-04-11 17:37:09 by reinelt]reinelt1-0/+211
forgot these files at last checkin... sorry! git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@414 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
claration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/* $Id: widget_icon.c,v 1.14 2004/06/26 12:05:00 reinelt Exp $
 *
 * icon widget handling
 *
 * Copyright 2003,2004 Michael Reinelt <reinelt@eunet.at>
 * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *
 * $Log: widget_icon.c,v $
 * Revision 1.14  2004/06/26 12:05:00  reinelt
 *
 * uh-oh... the last CVS log message messed up things a lot...
 *
 * Revision 1.13  2004/06/26 09:27:21  reinelt
 *
 * added '-W' to CFLAGS
 * changed all C++ comments to C ones
 * cleaned up a lot of signed/unsigned mistakes
 *
 * Revision 1.12  2004/06/20 10:09:56  reinelt
 *
 * 'const'ified the whole source
 *
 * Revision 1.11  2004/03/11 06:39:59  reinelt
 * big patch from Martin:
 * - reuse filehandles
 * - memory leaks fixed
 * - earlier busy-flag checking with HD44780
 * - reuse memory for strings in RESULT and hash
 * - netdev_fast to wavid time-consuming regex
 *
 * Revision 1.10  2004/03/06 20:31:16  reinelt
 * Complete rewrite of the evaluator to get rid of the code
 * from mark Morley (because of license issues).
 * The new Evaluator does a pre-compile of expressions, and
 * stores them in trees. Therefore it should be reasonable faster...
 *
 * Revision 1.9  2004/03/03 04:44:16  reinelt
 * changes (cosmetics?) to the big patch from Martin
 * hash patch un-applied
 *
 * Revision 1.8  2004/03/03 03:47:04  reinelt
 * big patch from Martin Hejl:
 * - use qprintf() where appropriate
 * - save CPU cycles on gettimeofday()
 * - add quit() functions to free allocated memory
 * - fixed lots of memory leaks
 *
 * Revision 1.7  2004/02/15 21:43:43  reinelt
 * T6963 driver nearly finished
 * framework for graphic displays done
 * i2c_sensors patch from Xavier
 * some more old generation files removed
 *
 * Revision 1.6  2004/02/07 13:45:23  reinelt
 * icon visibility patch #2 from Xavier
 *
 * Revision 1.5  2004/02/04 19:11:44  reinelt
 * icon visibility patch from Xavier
 *
 * Revision 1.4  2004/01/30 20:57:56  reinelt
 * HD44780 patch from Martin Hejl
 * dmalloc integrated
 *
 * Revision 1.3  2004/01/29 04:40:03  reinelt
 * every .c file includes "config.h" now
 *
 * Revision 1.2  2004/01/23 07:04:39  reinelt
 * icons finished!
 *
 * Revision 1.1  2004/01/23 04:54:03  reinelt
 * icon widget added (not finished yet!)
 *
 */

/* 
 * exported functions:
 *
 * WIDGET_CLASS Widget_Icon
 *   the icon widget
 *
 */


#include "config.h"

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

#include "debug.h"
#include "cfg.h"
#include "qprintf.h"
#include "evaluator.h"
#include "timer.h"
#include "widget.h"
#include "widget_icon.h"

#ifdef WITH_DMALLOC
#include <dmalloc.h>
#endif

/* icons always are 8 pixels high  */
#define YRES 8

static void widget_icon_read_bitmap (const char *section, WIDGET_ICON *Icon)
{
  int row, n;
  char  key[15];
  char *val, *v;
  unsigned char *map;
  
  for (row=0; row<YRES; row++) {
    qprintf(key, sizeof(key), "Bitmap.Row%d", row+1);
    val=cfg_get(section, key, ""); 
    map=Icon->bitmap+row;
    n=0;
    for (v=val; *v!='\0'; v++) {
      if (n>=Icon->maxmap) {
	Icon->maxmap++;
	Icon->bitmap=realloc(Icon->bitmap, Icon->maxmap*YRES*sizeof(char));
	memset (Icon->bitmap+n*YRES, 0, YRES*sizeof(char));
	map=Icon->bitmap+n*YRES+row;
      }
      switch (*v) {
      case '|':
	n++;
	map+=YRES;
	break;
      case '*':
	(*map)<<=1;
	(*map)|=1;
	break;
      default:
	(*map)<<=1;
      }
    }
    free(val);
  }
}


void widget_icon_update (void *Self)
{
  WIDGET      *W = (WIDGET*)Self;
  WIDGET_ICON *Icon = W->data;
  RESULT result = {0, 0, 0, NULL};
  
  /* evaluate expressions */
  Icon->speed = 100;
  if (Icon->speed_tree!=NULL) {
    Eval(Icon->speed_tree, &result); 
    Icon->speed = R2N(&result); 
    if (Icon->speed<10) Icon->speed=10;
    DelResult(&result);
  }
  
  Icon->visible = 1;
  if (Icon->visible_tree!=NULL) {
    Eval(Icon->visible_tree, &result); 
    Icon->visible = R2N(&result); 
    if (Icon->visible<1) Icon->visible=0;
    DelResult(&result);
  }  
  
  /* rotate icon bitmap */
  Icon->curmap++;
  if (Icon->curmap >= Icon->maxmap)
    Icon->curmap=0;
  
  /* finally, draw it! */
  if (W->class->draw)
    W->class->draw(W);

  /* store currently visible bitmap */
  Icon->prvmap=Icon->curmap;
  
  /* add a new one-shot timer */
  timer_add (widget_icon_update, Self, Icon->speed, 1);
  
}



int widget_icon_init (WIDGET *Self) 
{
  char *section;
  WIDGET_ICON *Icon;
  
  /* prepare config section */
  /* strlen("Widget:")=7 */
  section=malloc(strlen(Self->name)+8);
  strcpy(section, "Widget:");
  strcat(section, Self->name);
  
  Icon=malloc(sizeof(WIDGET_ICON));
  memset (Icon, 0, sizeof(WIDGET_ICON));

  /* get raw expressions (we evaluate them ourselves) */
  Icon->speed_expr   = cfg_get_raw (section, "speed",    NULL);
  Icon->visible_expr = cfg_get_raw (section, "visible",  NULL);  
  
  /* compile'em */
  Compile (Icon->speed_expr,   &Icon->speed_tree);
  Compile (Icon->visible_expr, &Icon->visible_tree);
  
  /* sanity check */
  if (Icon->speed_expr==NULL || *Icon->speed_expr=='\0') {
    error ("Icon %s has no speed, using '100'", Self->name);
    Icon->speed_expr="100";
  }
  
  /* read bitmap */
  widget_icon_read_bitmap (section, Icon);
  
  free (section);
  Self->data=Icon;
  
  /* as the speed is evaluatod on every call, we use 'one-shot'-timers.  */
  /* The timer will be reactivated on every call to widget_icon_update().  */
  /* We do the initial call here... */
  Icon->prvmap=-1;

  /* reset ascii  */
  Icon->ascii=-1;
  
  /* just do it! */
  widget_icon_update(Self);

  return 0;
}


int widget_icon_quit (WIDGET *Self) 
{
  if (Self) {
    if (Self->data) {
      WIDGET_ICON *Icon = Self->data;
      DelTree(Icon->speed_tree);
      DelTree(Icon->visible_tree);
      if (Icon->bitmap) free (Icon->bitmap); 
      free(Self->data);
      Self->data=NULL;
    }
  }
  
  return 0;
  
}



WIDGET_CLASS Widget_Icon = {
  name:   "icon",
  init:   widget_icon_init,
  draw:   NULL,
  quit:   widget_icon_quit,
};