Resource values are strings.
EZwgl can only convert resource
values to the four basic data types:
int, float, ulong and string.
Although pointers can be used as configuration
values, they cannot be specified by resources
directly. If you need to convert resource
values to pointers, you have to provide
a convertion mechanism to translate
strings to pointers. In the next example, we use
resource to select a callback
procedure for a button. Since there is only
one private resource in this example, we'll
extract it directly instead of registering it
to the button widget.
#include "EZ.h"
static void sayHi(EZ_Widget *widget, void *data)
{ printf("Hello, there\n"); }
static void sayBye(EZ_Widget *widget, void *data)
{ printf("Goodbye!\n"); }
static EZ_ResourceSpec exampleResources[] =
{
{ 1234, "callback", "Callback", "string" },
};
int configure(void *widget, int option, EZ_Value *values)
{
if(option == 1234)
{
if(!strncmp(values[0].value.str, "hi",2))
EZ_AddWidgetCallBack(widget, EZ_CALLBACK, sayHi, NULL, 0);
else if(!strncmp(values[0].value.str, "bye",3))
EZ_AddWidgetCallBack(widget, EZ_CALLBACK, sayBye, NULL, 0);
}
}
main(int ac, char **av)
{
EZ_Widget *btn;
EZ_Initialize(ac, av, 0);
fprintf(stderr, "\nRun with: %s -xrm \"*btn.callback: hi\" \nor\n %s -xrm \"*btn.callback: bye\"\n", av[0],av[0]);
btn = EZ_CreateWidgetXrm(EZ_WIDGET_NORMAL_BUTTON, NULL,
"Btn", "btn",
EZ_LABEL_STRING, "The callbacks of this button\nis set by Resource",
EZ_RESOURCES_HANDLE, 1, exampleResources, configure,
0);
EZ_DisplayWidget(btn);
EZ_EventMainLoop();
}