Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 spec-
       ified 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)

NAME | SYNOPSIS | ARGUMENTS | DESCRIPTION | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=EZ_RegisterWidget&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help