NAME
EZ_RegisterWidget - register your own widget
SYNOPSIS
#include <EZ.h>
void EZ_RegisterWidget( int type,
void (*Setup) (EZ_Widget * widget),
void (*ComputeSize) (EZ_Widget *widget , int *w , int *h),
void (*DrawWidget) (EZ_Widget *widget),
void (*FreeData) (EZ_Widget *widget)),
void (*EventHandle) (EZ_Widget *widget, XEvent *event) );
ARGUMENTS
type Specifies an integer, must be bigger than 65536.
Setup Specifies a procedure. This procedure is invoked
whenever a new widget of the specified type is created.
ComputeSize Specifies a procedure. This procedure will be
invoked when the geometry manager needs to update the
geometry of widgets of the specified type.
DrawWidget Specifies a procedure. This procedure will be
executed when the display of a widget of the given type
need to be updated.
FreeData Specifies a procedure. This procedure will be
invoked when a widget of the specified type is being
destroyed.
EventHandle Specifies a generic event handler for widgets
of the specified type.
DESCRIPTION
EZ_RegisterWidget registers a custom designed widget to
the EZ widget library. After a new widget is registered,
it can be handled the same as other widgets in the
library. Here is an example
#include "EZ.h"
#define TEST_TYPE 65537 /* type starts at 65537 */
void TESTsetup(EZ_Widget *widget) { }
void TESTfreeData(EZ_Widget *widget) { }
void TESTcomputeSize(EZ_Widget *widget, int *w, int *h)
{ *w =200; *h=60; }
void TESTdraw(EZ_Widget *widget)
{
EZ_DrawRectBorder(widget, EZ_GetWidgetWindow(widget));
}
void TESTeventHandle(EZ_Widget *widget, XEvent *event)
{ if(event->type == Expose) TESTdraw(widget); }
main(int ac, char **av)
{
EZ_Widget *frame1, *test, *btn;
EZ_Initialize(ac,av,0);
/* register our TEST widget */
EZ_RegisterWidget(TEST_TYPE, TESTsetup, TESTcomputeSize,
TESTdraw, TESTfreeData, TESTeventHandle);
frame1 = EZ_CreateWidget(EZ_WIDGET_FRAME, NULL,
EZ_FILL_MODE, EZ_FILL_BOTH,
EZ_LABEL_STRING, "Test Widget",
NULL);
test = EZ_CreateWidget(TEST_TYPE, frame1,
EZ_BORDER_TYPE, EZ_BORDER_UP,
EZ_FOREGROUND, "red",
EZ_BACKGROUND, "#00afaf",
EZ_BORDER_WIDTH, 6,
NULL);
btn = EZ_CreateWidget(EZ_WIDGET_NORMAL_BUTTON, tmp,
EZ_LABEL_STRING, "A Button",
EZ_BACKGROUND, "#af00af",
NULL);
EZ_DisplayWidget(frame1);
EZ_EventMainLoop();
}
SEE ALSO
EZ_GetWritableGC(3)