/*
 * widget.h
 * This file is part of LCDd, the lcdproc server.
 *
 * This file is released under the GNU General Public License. Refer to the
 * COPYING file distributed with this package.
 *
 * Copyright (c) 1999, William Ferrell, Scott Scriven
 *
 */

#include "screen.h"
/* These headers are placed here on purpose ! (circular references) */

#ifndef WIDGET_H
#define WIDGET_H

struct Widget;

/* These correspond to the index into the "types" array...*/
typedef enum WidgetType {
	WID_NONE = 0,
	WID_STRING,
	WID_HBAR,
	WID_VBAR,
	WID_ICON,
	WID_TITLE,
	WID_SCROLLER,
	WID_FRAME,
	WID_NUM
} WidgetType;

typedef struct Widget {
	char *id;
	WidgetType type;
	Screen *screen;			/* What screen is this widget in ? */
	int x, y;			/* Position */
	int width, height;		/* Visible size */
	int left, top, right, bottom;	/* bounding rectangle */
	int length;			/* size or direction */
	int speed;			/* For scroller... */
	char *text;			/* text or binary data */
	struct Screen *frame_screen;	/* frame widget get an associated screen */
	//LinkedList *kids;		/* Frames can contain more widgets...*/
} Widget;

#define WID_MAX_DIR 4

/* Create new widget */
Widget *widget_create(char *id, WidgetType type, Screen *screen);

/* Destroy a widget */
int widget_destroy(Widget *w);

/* Convert a widget typename to a widget type */
WidgetType widget_typename_to_type(char *typename);

/* Convert a widget typename to a widget type */
char *widget_type_to_typename(WidgetType t);

/* Search subwidgets of a widget */
Widget *widget_search_subs(Widget *w, char *id);

/* Convert icon number to icon name */
char *widget_icon_to_iconname(int icon);

/* Convert iconname to icon number */
int widget_iconname_to_icon(char *iconname);

#endif


syntax highlighted by Code2HTML, v. 0.9.1