From: <wda...@us...> - 2008-05-09 21:20:19
|
Revision: 2489 http://oorexx.svn.sourceforge.net/oorexx/?rev=2489&view=rev Author: wdashley Date: 2008-05-09 14:20:17 -0700 (Fri, 09 May 2008) Log Message: ----------- ArtifactID: None Comment: Added support for events to all widgets. Modified Paths: -------------- sandbox/david/4x/Makefile sandbox/david/4x/grxwidget.cpp sandbox/david/4x/rexxgtk.cls sandbox/david/4x/rexxgtk.cpp sandbox/david/4x/rexxgtk.h Added Paths: ----------- sandbox/david/4x/grxevents.cpp Modified: sandbox/david/4x/Makefile =================================================================== --- sandbox/david/4x/Makefile 2008-05-07 20:34:41 UTC (rev 2488) +++ sandbox/david/4x/Makefile 2008-05-09 21:20:17 UTC (rev 2489) @@ -76,7 +76,8 @@ grxeventbox.o \ grxmenushell.o \ grxmenu.o \ - grxmenuitem.o + grxmenuitem.o \ + grxevents.o # Build the shared library @@ -178,8 +179,11 @@ grxmenuitem.o: grxmenuitem.cpp rexxgtk.h gcc -c $(GRXCFLAGS) grxmenuitem.cpp +grxevents.o: grxevents.cpp rexxgtk.h + gcc -c $(GRXCFLAGS) grxevents.cpp + clean: rm *.so *.o Added: sandbox/david/4x/grxevents.cpp =================================================================== --- sandbox/david/4x/grxevents.cpp (rev 0) +++ sandbox/david/4x/grxevents.cpp 2008-05-09 21:20:17 UTC (rev 2489) @@ -0,0 +1,1221 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +/* include the linux headers and our local stuff */ +#include "rexxgtk.h" + + +/*----------------------------------------------------------------------------*/ +/* Global variables */ +/*----------------------------------------------------------------------------*/ + + +/*----------------------------------------------------------------------------*/ +/* Local Definitions */ +/*----------------------------------------------------------------------------*/ + + +/*============================================================================*/ +/* Private Functions */ +/*============================================================================*/ + + +/*============================================================================*/ +/* Public Functions */ +/*============================================================================*/ + +/** + * Function: create_GdkEvent + * + * Handle a GdkEvent signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEvent(GtkWidget *window, + GdkEvent *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventKey"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventKey + * + * Handle a GdkEventKey signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventKey(GtkWidget *window, + GdkEventKey *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventKey"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + context->SendMessage1(rxevent, "keyval=", + context->UnsignedNumberToObject((size_t)event->keyval)); + context->SendMessage1(rxevent, "length=", + context->NumberToObject((wholenumber_t)event->length)); + context->SendMessage1(rxevent, "string=", + context->NewStringFromAsciiz(event->string)); + context->SendMessage1(rxevent, "hardware_keycode=", + context->UnsignedNumberToObject((size_t)event->hardware_keycode)); + context->SendMessage1(rxevent, "group=", + context->UnsignedNumberToObject((size_t)event->group)); + context->SendMessage1(rxevent, "is_modifier=", + context->UnsignedNumberToObject((size_t)event->is_modifier)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventButton + * + * Handle a GdkEventButton signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventButton(GtkWidget *window, + GdkEventButton *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventButton"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "x=", + context->DoubleToObject(event->x)); + context->SendMessage1(rxevent, "y=", + context->DoubleToObject(event->y)); + context->SendMessage1(rxevent, "axes=", + context->DoubleToObject(*event->axes)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + context->SendMessage1(rxevent, "button=", + context->UnsignedNumberToObject((size_t)event->button)); + // TODO - fix this. + context->SendMessage1(rxevent, "device=", context->Nil()); + context->SendMessage1(rxevent, "x_root=", + context->DoubleToObject(event->x_root)); + context->SendMessage1(rxevent, "y_root=", + context->DoubleToObject(event->y_root)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventScroll + * + * Handle a GdkEventScroll signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventScroll(GtkWidget *window, + GdkEventScroll *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventScroll"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "x=", + context->DoubleToObject(event->x)); + context->SendMessage1(rxevent, "y=", + context->DoubleToObject(event->y)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + context->SendMessage1(rxevent, "direction=", + context->NumberToObject((wholenumber_t)event->direction)); + // TODO - fix this. + context->SendMessage1(rxevent, "device=", context->Nil()); + context->SendMessage1(rxevent, "x_root=", + context->DoubleToObject(event->x_root)); + context->SendMessage1(rxevent, "y_root=", + context->DoubleToObject(event->y_root)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventMotion + * + * Handle a GdkEventMotion signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventMotion(GtkWidget *window, + GdkEventMotion *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventMotion"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "x=", + context->DoubleToObject(event->x)); + context->SendMessage1(rxevent, "y=", + context->DoubleToObject(event->y)); + context->SendMessage1(rxevent, "axes=", + context->DoubleToObject(*event->axes)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + context->SendMessage1(rxevent, "is_hint=", + context->UnsignedNumberToObject((size_t)event->is_hint)); + // TODO - fix this. + context->SendMessage1(rxevent, "device=", context->Nil()); + context->SendMessage1(rxevent, "x_root=", + context->DoubleToObject(event->x_root)); + context->SendMessage1(rxevent, "y_root=", + context->DoubleToObject(event->y_root)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventExpose + * + * Handle a GdkEventExpose signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventExpose(GtkWidget *window, + GdkEventExpose *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventExpose"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + eobj = context->FindClass("GdkEventExpose"); + temp = context->SendMessage0(eobj, "NEW"); + context->SendMessage1(temp, "x=", + context->NumberToObject((wholenumber_t)event->area.x)); + context->SendMessage1(temp, "y=", + context->NumberToObject((wholenumber_t)event->area.y)); + context->SendMessage1(temp, "width=", + context->NumberToObject((wholenumber_t)event->area.width)); + context->SendMessage1(temp, "height=", + context->NumberToObject((wholenumber_t)event->area.height)); + context->SendMessage1(rxevent, "area=", temp); + // TODO - fix this. + context->SendMessage1(rxevent, "region=", context->Nil()); + context->SendMessage1(rxevent, "count=", + context->NumberToObject((wholenumber_t)event->count)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventVisibility + * + * Handle a GdkEventVisibility signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventVisibility(GtkWidget *window, + GdkEventVisibility *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventVisibility"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventCrossing + * + * Handle a GdkEventCrossing signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventCrossing(GtkWidget *window, + GdkEventCrossing *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventCrossing"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->subwindow), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "subwindow=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "subwindow=", temp); + } + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "x=", + context->DoubleToObject(event->x)); + context->SendMessage1(rxevent, "y=", + context->DoubleToObject(event->y)); + context->SendMessage1(rxevent, "x_root=", + context->DoubleToObject(event->x_root)); + context->SendMessage1(rxevent, "y_root=", + context->DoubleToObject(event->y_root)); + context->SendMessage1(rxevent, "mode=", + context->NumberToObject((wholenumber_t)event->mode)); + context->SendMessage1(rxevent, "detail=", + context->NumberToObject((wholenumber_t)event->detail)); + context->SendMessage1(rxevent, "focus=", + context->NumberToObject((wholenumber_t)event->focus)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventFocus + * + * Handle a GdkEventFocus signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventFocus(GtkWidget *window, + GdkEventFocus *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventFocus"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "in=", + context->NumberToObject((wholenumber_t)event->in)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventConfigure + * + * Handle a GdkEventConfigure signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventConfigure(GtkWidget *window, + GdkEventConfigure *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventConfigure"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "x=", + context->NumberToObject((wholenumber_t)event->x)); + context->SendMessage1(rxevent, "y=", + context->NumberToObject((wholenumber_t)event->y)); + context->SendMessage1(rxevent, "width=", + context->NumberToObject((wholenumber_t)event->width)); + context->SendMessage1(rxevent, "height=", + context->NumberToObject((wholenumber_t)event->height)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventProperty + * + * Handle a GdkEventProperty signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventProperty(GtkWidget *window, + GdkEventProperty *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventProperty"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "atom=", + context->NumberToObject((wholenumber_t)event->atom)); + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "state=", + context->UnsignedNumberToObject((size_t)event->state)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventSelection + * + * Handle a GdkEventSelection signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventSelection(GtkWidget *window, + GdkEventSelection *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventSelection"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "selection=", + context->NumberToObject((wholenumber_t)event->selection)); + context->SendMessage1(rxevent, "target=", + context->NumberToObject((wholenumber_t)event->target)); + context->SendMessage1(rxevent, "property=", + context->NumberToObject((wholenumber_t)event->property)); + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "requestor=", context->Nil()); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventDND + * + * Handle a GdkEventDND signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventDND(GtkWidget *window, + GdkEventDND *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventDND"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + // TODO - fix this. + context->SendMessage1(rxevent, "context=", context->Nil()); + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "x_root=", + context->NumberToObject((wholenumber_t)event->x_root)); + context->SendMessage1(rxevent, "y_root=", + context->NumberToObject((wholenumber_t)event->y_root)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventProximity + * + * Handle a GdkEventProximity signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventProximity(GtkWidget *window, + GdkEventProximity *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventProximity"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "device=", context->Nil()); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventClient + * + * Handle a GdkEventClient signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventClient(GtkWidget *window, + GdkEventClient *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventClient"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "message_type=", + context->NumberToObject((wholenumber_t)event->message_type)); + context->SendMessage1(rxevent, "data_format=", + context->NumberToObject((wholenumber_t)event->data_format)); + RexxArrayObject temparr = context->NewArray(20); + if (event->data_format == 8) { + for (int i = 0; i < 20; i++) { + context->ArrayPut(temparr, + context->NumberToObject((wholenumber_t)event->data.b[i]), + i + 1); + } + } + else if (event->data_format == 16) { + for (int i = 0; i < 10; i++) { + context->ArrayPut(temparr, + context->NumberToObject((wholenumber_t)event->data.s[i]), + i + 1); + } + } + else if (event->data_format == 32) { + for (int i = 0; i < 5; i++) { + context->ArrayPut(temparr, + context->NumberToObject((wholenumber_t)event->data.l[i]), + i + 1); + } + } + context->SendMessage1(rxevent, "data=", temp); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventNoExpose + * + * Handle a GdkEventNoExpose signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventNoExpose(GtkWidget *window, + GdkEventNoExpose *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventNoExpose"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventWindowState + * + * Handle a GdkEventWindowState signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventWindowState(GtkWidget *window, + GdkEventWindowState *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventWindowState"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "changed_mask=", + context->NumberToObject((wholenumber_t)event->changed_mask)); + context->SendMessage1(rxevent, "new_window_state=", + context->NumberToObject((wholenumber_t)event->new_window_state)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventSetting + * + * Handle a GdkEventSetting signal by invoking the Rexx method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventSetting(GtkWidget *window, + GdkEventSetting *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventSetting"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "action=", + context->NumberToObject((wholenumber_t)event->action)); + context->SendMessage1(rxevent, "name=", + context->NewStringFromAsciiz(event->name)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventOwnerChange + * + * Handle a GdkEventOwnerChange signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventOwnerChange(GtkWidget *window, + GdkEventOwnerChange *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventOwnerChange"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "owner=", context->Nil()); + context->SendMessage1(rxevent, "reason=", + context->NumberToObject((wholenumber_t)event->reason)); + context->SendMessage1(rxevent, "selection=", + context->NumberToObject((wholenumber_t)event->selection)); + context->SendMessage1(rxevent, "time=", + context->UnsignedNumberToObject((size_t)event->time)); + context->SendMessage1(rxevent, "selection_time=", + context->UnsignedNumberToObject((size_t)event->selection_time)); + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + +/** + * Function: create_GdkEventGrabBroken + * + * Handle a GdkEventGrabBroken signal by invoking the Rexx + * method. + * + * @param window The widget pointer of the window + * + * @param event The event being signaled + * + * @param data The user specific data + * + * @return boolean + **/ +gboolean signal_GdkEventGrabBroken(GtkWidget *window, + GdkEventGrabBroken *event, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + RexxObjectPtr rxevent, temp; + gboolean retc; + + cblock->instance->AttachThread(&context); + + // Create the instance + RexxClassObject eobj = context->FindClass("GdkEventGrabBroken"); + rxevent = context->SendMessage0(eobj, "NEW"); + // Assign the standard event data + context->SendMessage1(rxevent, "type=", + context->NumberToObject((wholenumber_t)event->type)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "window=", temp); + } + context->SendMessage1(rxevent, "send_event=", + context->NumberToObject((wholenumber_t)event->send_event)); + // Assign the event specific data + context->SendMessage1(rxevent, "keyboard=", + context->NumberToObject((wholenumber_t)event->keyboard)); + context->SendMessage1(rxevent, "implicit=", + context->NumberToObject((wholenumber_t)event->implicit)); + temp = (RexxObjectPtr)g_object_get_data(G_OBJECT(event->grab_window), "OORXOBJECT"); + if (temp == NULL) { + context->SendMessage1(rxevent, "grab_window=", context->Nil()); + } + else { + context->SendMessage1(rxevent, "grab_window=", temp); + } + + temp = context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxevent); + context->ObjectToNumber(temp, &retc); + context->DetachThread(); + return retc; +} + Property changes on: sandbox/david/4x/grxevents.cpp ___________________________________________________________________ Name: svn:eol-style + native Modified: sandbox/david/4x/grxwidget.cpp =================================================================== --- sandbox/david/4x/grxwidget.cpp 2008-05-07 20:34:41 UTC (rev 2488) +++ sandbox/david/4x/grxwidget.cpp 2008-05-09 21:20:17 UTC (rev 2489) @@ -934,6 +934,25 @@ } /** + * Method: set_events + * + * Set the event mask. + * + * @return Zero + **/ +RexxMethod1(int, // Return type + GrxWidgetSetEvents, // Object_method name + int, events) // Event mask +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); + + gtk_widget_set_events(myWidget, events); + + return 0; +} + +/** * Method: signal_connect * * Connect a signal to an ooRexx method. @@ -1103,6 +1122,230 @@ G_CALLBACK(signal_func_1b), cblock); return context->True(); } + else if (strcmp(name, "button_press_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_button_press_event"; + g_signal_connect(G_OBJECT(myWidget), "button-press-event", + G_CALLBACK(signal_GdkEventButton), cblock); + return context->True(); + } + else if (strcmp(name, "button_release_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_button_release_event"; + g_signal_connect(G_OBJECT(myWidget), "button-release-event", + G_CALLBACK(signal_GdkEventButton), cblock); + return context->True(); + } + else if (strcmp(name, "client_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_client_event"; + g_signal_connect(G_OBJECT(myWidget), "client-event", + G_CALLBACK(signal_GdkEventClient), cblock); + return context->True(); + } + else if (strcmp(name, "configure_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_configure_event"; + g_signal_connect(G_OBJECT(myWidget), "configure-event", + G_CALLBACK(signal_GdkEventConfigure), cblock); + return context->True(); + } + else if (strcmp(name, "delete_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_delete_event"; + g_signal_connect(G_OBJECT(myWidget), "delete-event", + G_CALLBACK(signal_GdkEvent), cblock); + return context->True(); + } + else if (strcmp(name, "destroy_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_destroy_event"; + g_signal_connect(G_OBJECT(myWidget), "destroy-event", + G_CALLBACK(signal_GdkEvent), cblock); + return context->True(); + } + else if (strcmp(name, "enter_notify_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_enter_notify_event"; + g_signal_connect(G_OBJECT(myWidget), "enter-notify-event", + G_CALLBACK(signal_GdkEventCrossing), cblock); + return context->True(); + } + else if (strcmp(name, "event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_event"; + g_signal_connect(G_OBJECT(myWidget), "event", + G_CALLBACK(signal_GdkEvent), cblock); + return context->True(); + } + else if (strcmp(name, "event_after") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_event_after"; + g_signal_connect(G_OBJECT(myWidget), "event-after", + G_CALLBACK(signal_GdkEvent), cblock); + return context->True(); + } + else if (strcmp(name, "expose_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_expose_event"; + g_signal_connect(G_OBJECT(myWidget), "expose-event", + G_CALLBACK(signal_GdkEventExpose), cblock); + return context->True(); + } + else if (strcmp(name, "focus_in_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_focus_in_event"; + g_signal_connect(G_OBJECT(myWidget), "focus-in-event", + G_CALLBACK(signal_GdkEventFocus), cblock); + return context->True(); + } + else if (strcmp(name, "focus_out_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_focus_out_event"; + g_signal_connect(G_OBJECT(myWidget), "focus-out-event", + G_CALLBACK(signal_GdkEventFocus), cblock); + return context->True(); + } + else if (strcmp(name, "grab_broken_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_grab_broken_event"; + g_signal_connect(G_OBJECT(myWidget), "grab-broken-event", + G_CALLBACK(signal_GdkEventGrabBroken), cblock); + return context->True(); + } + else if (strcmp(name, "key_press_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_key_press_event"; + g_signal_connect(G_OBJECT(myWidget), "key-press-event", + G_CALLBACK(signal_GdkEventKey), cblock); + return context->True(); + } + else if (strcmp(name, "key_release_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_key_release_event"; + g_signal_connect(G_OBJECT(myWidget), "key-release-event", + G_CALLBACK(signal_GdkEventKey), cblock); + return context->True(); + } + else if (strcmp(name, "leave_notify_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_leave_notify_event"; + g_signal_connect(G_OBJECT(myWidget), "leave-notify-event", + G_CALLBACK(signal_GdkEventCrossing), cblock); + return context->True(); + } + else if (strcmp(name, "map_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_map_event"; + g_signal_connect(G_OBJECT(myWidget), "map-event", + G_CALLBACK(signal_GdkEvent), cblock); + return context->True(); + } + else if (strcmp(name, "motion_notify_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_motion_notify_event"; + g_signal_connect(G_OBJECT(myWidget), "motion-notify-event", + G_CALLBACK(signal_GdkEventMotion), cblock); + return context->True(); + } + else if (strcmp(name, "no_expose_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_no_expose_event"; + g_signal_connect(G_OBJECT(myWidget), "no-expose-event", + G_CALLBACK(signal_GdkEventNoExpose), cblock); + return context->True(); + } + else if (strcmp(name, "property_notify_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_property_notify_event"; + g_signal_connect(G_OBJECT(myWidget), "property-notify-event", + G_CALLBACK(signal_GdkEventProperty), cblock); + return context->True(); + } + else if (strcmp(name, "proximity_in_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_proximity_in_event"; + g_signal_connect(G_OBJECT(myWidget), "proximity-in-event", + G_CALLBACK(signal_GdkEventProximity), cblock); + return context->True(); + } + else if (strcmp(name, "proximity_out_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_proximity_out_event"; + g_signal_connect(G_OBJECT(myWidget), "proximity-out-event", + G_CALLBACK(signal_GdkEventProximity), cblock); + return context->True(); + } + else if (strcmp(name, "scroll_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_scroll_event"; + g_signal_connect(G_OBJECT(myWidget), "scroll-event", + G_CALLBACK(signal_GdkEventScroll), cblock); + return context->True(); + } + else if (strcmp(name, "selection_clear_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_selection_clear_event"; + g_signal_connect(G_OBJECT(myWidget), "selection-clear-event", + G_CALLBACK(signal_GdkEventSelection), cblock); + return context->True(); + } + else if (strcmp(name, "selection_notify_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_selection_notify_event"; + g_signal_connect(G_OBJECT(myWidget), "selection-notify-event", + G_CALLBACK(signal_GdkEventSelection), cblock); + return context->True(); + } + else if (strcmp(name, "selection_request_event") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_selection_request_event"; + g_signal_connect(G_OBJECT(myWidget), "selection-request-event", + G_CALLBACK(signal_GdkEventSelection), cblock); + return context->True(); + ... [truncated message content] |