DragonFly On-Line Manual Pages
    
    
	
EZ_RegisterWidget(3)            EZWGL Functions           EZ_RegisterWidget(3)
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)
EZWGL                                                     EZ_RegisterWidget(3)