/* $Id$ * $URL$ * * XMMS-Plugin for LCD4Linux * Copyright (C) 2003 Markus Keil * * This file is part of LCD4Linux. * * LCD4Linux 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. * * LCD4Linux 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. * */ /* * exported functions: * * int plugin_init_xmms (void) * adds parser for /tmp/xmms-info * */ /* * The Argument 'arg1' must be one of these Things (without brackets): * * 'Title' - The title of the current song * 'Status' - The status of XMMS (playing, pause, ...) * 'Tunes in playlist' - How many entries are in the playlist * 'Currently playing' - which playlist-entry is playing * 'uSecPosition' - The position of the title in seconds (usefull for bargraphs ;-) ) * 'Position' - The position of the title in mm:ss * 'uSecTime' - The length of the current title in seconds * 'Time' - The length of the current title in mm:ss * 'Current bitrate' - The current bitrate in bit * 'Samping Frequency' - The current samplingfreqency in Hz * 'Channels' - The current number of audiochannels * 'File' - The full path of the current file * * These arguments are case-sensitive */ #include "config.h" #include #include #include #include "hash.h" #include "debug.h" #include "plugin.h" static HASH xmms; static int parse_xmms_info(void) { int age; FILE *xmms_stream; char zeile[200]; /* reread every 100msec only */ age = hash_age(&xmms, NULL); if (age >= 0 && age <= 200) return 0; /* Open Filestream for '/tmp/xmms-info' */ xmms_stream = fopen("/tmp/xmms-info", "r"); /* Check for File */ if (!xmms_stream) { error("Error: Cannot open XMMS-Info Stream! Is XMMS started?"); return -1; } /* Read Lines from the Stream */ while (fgets(zeile, sizeof(zeile), xmms_stream)) { char *c, *key, *val; c = strchr(zeile, ':'); if (c == NULL) continue; key = zeile; val = c + 1; /* strip leading blanks from key */ while (isspace(*key)) *key++ = '\0'; /* strip trailing blanks from key */ do *c = '\0'; while (isspace(*--c)); /* strip leading blanks from value */ while (isspace(*val)) *val++ = '\0'; /* strip trailing blanks from value */ for (c = val; *c != '\0'; c++); while (isspace(*--c)) *c = '\0'; hash_put(&xmms, key, val); } fclose(xmms_stream); return 0; } static void my_xmms(RESULT * result, RESULT * arg1) { char *key, *val; if (parse_xmms_info() < 0) { SetResult(&result, R_STRING, ""); return; } key = R2S(arg1); val = hash_get(&xmms, key, NULL); if (val == NULL) val = ""; SetResult(&result, R_STRING, val); } int plugin_init_xmms(void) { hash_create(&xmms); /* register xmms info */ AddFunction("xmms", 1, my_xmms); return 0; } void plugin_exit_xmms(void) { hash_destroy(&xmms); } n24'>24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
/* $Id: widget_bar.h,v 1.3 2004/03/06 20:31:16 reinelt Exp $
 *
 * bar widget handling
 *
 * Copyright 2003,2004 Michael Reinelt <reinelt@eunet.at>
 * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
 *
 * This file is part of LCD4Linux.
 *
 * LCD4Linux 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.
 *
 * LCD4Linux 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_bar.h,v $
 * Revision 1.3  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.2  2004/01/20 04:51:39  reinelt
 * moved generic stuff from drv_MatrixOrbital to drv_generic
 * implemented new-stylish bars which are nearly finished
 *
 * Revision 1.1  2004/01/18 21:25:16  reinelt
 * Framework for bar widget opened
 *
 */


#ifndef _WIDGET_BAR_H_
#define _WIDGET_BAR_H_

typedef enum { DIR_EAST=1, DIR_WEST=2, DIR_NORTH=4, DIR_SOUTH=8 } DIRECTION;

typedef struct WIDGET_BAR {
  char      *expression1;  // expression that delivers the value
  char      *expression2;  // expression that delivers the value
  char      *expr_min;     // expression that delivers the minimum value
  char      *expr_max;     // expression that delivers the maximum value
  void      *tree1;        // pre-compiled expression that delivers the value
  void      *tree2;        // pre-compiled expression that delivers the value
  void      *tree_min;     // pre-compiled expression that delivers the minimum value
  void      *tree_max;     // pre-compiled expression that delivers the maximum value
  DIRECTION  direction;    // bar direction
  int        length;       // bar length
  int        update;       // update interval (msec)
  double     val1;         // bar value, 0.0 ... 1.0
  double     val2;         // bar value, 0.0 ... 1.0
  double     min;          // minimum value
  double     max;          // maximum value
} WIDGET_BAR;


extern WIDGET_CLASS Widget_Bar;

#endif