EZ_RegisterWidget(3) EZWGL Functions EZ_RegisterWidget(3)NAMEEZ_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 spec‐
ified type.
DESCRIPTIONEZ_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 ALSOEZ_GetWritableGC(3)EZWGLEZ_RegisterWidget(3)