From: <wda...@us...> - 2008-04-09 16:27:00
|
Revision: 2423 http://oorexx.svn.sourceforge.net/oorexx/?rev=2423&view=rev Author: wdashley Date: 2008-04-09 09:26:46 -0700 (Wed, 09 Apr 2008) Log Message: ----------- ArtifactID: None Comment: Completely removed the need for a database of widget and oorexx object pointers. Modified Paths: -------------- sandbox/david/4x/Makefile sandbox/david/4x/grxbutton.cpp sandbox/david/4x/grxcontainer.cpp sandbox/david/4x/grxpaned.cpp sandbox/david/4x/grxwidget.cpp sandbox/david/4x/grxwindow.cpp sandbox/david/4x/rexxgtk.cls sandbox/david/4x/rexxgtk.h Removed Paths: ------------- sandbox/david/4x/rexxdb.c Modified: sandbox/david/4x/Makefile =================================================================== --- sandbox/david/4x/Makefile 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/Makefile 2008-04-09 16:26:46 UTC (rev 2423) @@ -47,7 +47,6 @@ -I/home/dashley/ad/svn/sandbox/rick/opt/api \ -I/home/dashley/ad/svn/sandbox/rick/opt/api/platform/unix OBJECTS = rexxgtk.o \ - rexxdb.o \ grxwidget.o \ grxwindow.o \ grxcontainer.o \ @@ -87,9 +86,6 @@ rexxgtk.o: rexxgtk.cpp rexxgtk.h gcc -c $(GRXCFLAGS) rexxgtk.cpp -rexxdb.o: rexxdb.c rexxgtk.h - gcc -c $(GRXCFLAGS) rexxdb.c - grxwidget.o: grxwidget.cpp rexxgtk.h gcc -c $(GRXCFLAGS) grxwidget.cpp Modified: sandbox/david/4x/grxbutton.cpp =================================================================== --- sandbox/david/4x/grxbutton.cpp 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/grxbutton.cpp 2008-04-09 16:26:46 UTC (rev 2423) @@ -61,8 +61,9 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(widget), "OORXOBJECT"); - cblock->context->SendMessage0(GrxDBFindObject(widget), ((cbcb *)data)->signal_name); + cblock->context->SendMessage0(rxobj, ((cbcb *)data)->signal_name); return; } @@ -85,8 +86,7 @@ myWidget = gtk_button_new(); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -108,8 +108,7 @@ myWidget = gtk_button_new_from_stock(type); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -207,8 +206,7 @@ myWidget = gtk_toggle_button_new(); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -346,8 +344,7 @@ myWidget = gtk_check_button_new(); } context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -377,8 +374,7 @@ gtk_button_set_label(GTK_BUTTON(myWidget), text); } context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -402,8 +398,7 @@ myWidget = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(srcWidget)); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -423,7 +418,7 @@ GSList *head = NULL; head = gtk_radio_button_get_group(GTK_RADIO_BUTTON(myWidget)); - return GrxDBFindObject((GtkWidget *)head); + return (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); } /* @@ -473,8 +468,7 @@ myWidget = gtk_color_button_new_with_color(&color); } context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -567,8 +561,7 @@ myWidget = gtk_file_chooser_button_new(title, (GtkFileChooserAction)action); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -587,8 +580,7 @@ myWidget = gtk_font_button_new(); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } Modified: sandbox/david/4x/grxcontainer.cpp =================================================================== --- sandbox/david/4x/grxcontainer.cpp 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/grxcontainer.cpp 2008-04-09 16:26:46 UTC (rev 2423) @@ -61,8 +61,9 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); - cblock->context->SendMessage0(GrxDBFindObject(window), ((cbcb *)data)->signal_name); + cblock->context->SendMessage0(rxobj, ((cbcb *)data)->signal_name); return; } @@ -71,9 +72,10 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxObjectPtr rxwidget = (RexxObjectPtr)g_object_get_data(G_OBJECT(widget), "OORXOBJECT"); - cblock->context->SendMessage1(GrxDBFindObject(window), ((cbcb *)data)->signal_name, - GrxDBFindObject(widget)); + cblock->context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxwidget); return; } @@ -234,8 +236,7 @@ myWidget = gtk_vbox_new(homogeneous, spacing); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -260,8 +261,7 @@ myWidget = gtk_hbox_new(homogeneous, spacing); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -292,8 +292,7 @@ myWidget = gtk_alignment_new(xalign, yalign, xscale, yscale); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -378,8 +377,7 @@ myWidget = gtk_viewport_new(hadj, vadj); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } Modified: sandbox/david/4x/grxpaned.cpp =================================================================== --- sandbox/david/4x/grxpaned.cpp 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/grxpaned.cpp 2008-04-09 16:26:46 UTC (rev 2423) @@ -172,8 +172,7 @@ myWidget = gtk_vpaned_new(); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } @@ -192,8 +191,7 @@ myWidget = gtk_hpaned_new(); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } Modified: sandbox/david/4x/grxwidget.cpp =================================================================== --- sandbox/david/4x/grxwidget.cpp 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/grxwidget.cpp 2008-04-09 16:26:46 UTC (rev 2423) @@ -62,8 +62,9 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(widget), "OORXOBJECT"); - cblock->context->SendMessage0(GrxDBFindObject(widget), ((cbcb *)data)->signal_name); + cblock->context->SendMessage0(rxobj, ((cbcb *)data)->signal_name); return; } @@ -85,31 +86,11 @@ GtkWidget *myWidget = NULL; context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - context->SetObjectVariable("!ACCESS_OBJ", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); +// g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf); return 0; } /** - * Method: uninit - * - * Destroy the widget. - * - * @return Zero. - */ -RexxMethod0(int, // Return type - GrxWidgetUninit) // Object_method name -{ - RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); - GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); - - GrxDBRemoveObject(myWidget); - - return 0; -} - -/** * Method: show * * Show the widget. @@ -219,9 +200,6 @@ GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); gtk_widget_destroy(myWidget); - rxptr = NULL; - context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - GrxDBRemoveObject(myWidget); return 0; } @@ -560,7 +538,7 @@ if (parent == NULL) { return context->Nil(); } - parentptr = GrxDBFindObject(myWidget); + parentptr = (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); if (parentptr == NULL) { return context->Nil(); } @@ -587,7 +565,7 @@ if (parentWidget == NULL) { return context->Nil(); } - parentptr = GrxDBFindObject(parentWidget); + parentptr = (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); if (parentptr == NULL) { return context->Nil(); } @@ -638,7 +616,7 @@ if (ancestor == NULL) { return context->Nil(); } - ancestorptr = GrxDBFindObject(ancestor); + ancestorptr = (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); if (ancestorptr == NULL) { return context->Nil(); } @@ -829,7 +807,7 @@ if (atk == NULL) { return context->Nil(); } - atkptr = GrxDBFindObject((GtkWidget *)atk); + atkptr = (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); if (atkptr == NULL) { return context->Nil(); } @@ -872,7 +850,7 @@ if (root == NULL) { return context->Nil(); } - rootptr = GrxDBFindObject(root); + rootptr = (RexxObjectPtr)g_object_get_data(G_OBJECT(myWidget), "OORXOBJECT"); if (rootptr == NULL) { return context->Nil(); } @@ -903,7 +881,6 @@ cblock->signal_name = "signal_destroy"; g_signal_connect(G_OBJECT(myWidget), "destroy", G_CALLBACK(signal_func_0), cblock); - GrxDBRemoveObject(myWidget); } else { return 0; Modified: sandbox/david/4x/grxwindow.cpp =================================================================== --- sandbox/david/4x/grxwindow.cpp 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/grxwindow.cpp 2008-04-09 16:26:46 UTC (rev 2423) @@ -61,8 +61,9 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); - cblock->context->SendMessage0(GrxDBFindObject(window), ((cbcb *)data)->signal_name); + cblock->context->SendMessage0(rxobj, ((cbcb *)data)->signal_name); return; } @@ -71,9 +72,10 @@ gpointer data) { cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxObjectPtr rxwidget = (RexxObjectPtr)g_object_get_data(G_OBJECT(widget), "OORXOBJECT"); - cblock->context->SendMessage1(GrxDBFindObject(window), ((cbcb *)data)->signal_name, - GrxDBFindObject(widget)); + cblock->context->SendMessage1(rxobj, ((cbcb *)data)->signal_name, rxwidget); return; } @@ -99,8 +101,7 @@ myWidget = gtk_window_new((GtkWindowType)type); context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); - // add the widget to the db - GrxDBAdd(context->GetSelf(), myWidget); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", context->GetSelf()); return 0; } Deleted: sandbox/david/4x/rexxdb.c =================================================================== --- sandbox/david/4x/rexxdb.c 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/rexxdb.c 2008-04-09 16:26:46 UTC (rev 2423) @@ -1,147 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* */ -/* 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...> */ -/* */ -/*----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------*/ -/* Definitions */ -/*----------------------------------------------------------------------------*/ - -#include "rexxgtk.h" - - -/*----------------------------------------------------------------------------*/ -/* Global variables */ -/*----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------*/ -/* Local variables and definitions */ -/*----------------------------------------------------------------------------*/ - -static GList *rxgtkdb = NULL; - -typedef struct _dbentry { - RexxObjectPtr object; - const GtkWidget *widget; -} dbentry; - - -/*----------------------------------------------------------------------------*/ -/* Functions */ -/*----------------------------------------------------------------------------*/ - -static int custom_compare1( - gconstpointer a, - gconstpointer b) { - - dbentry *aa = (dbentry *)a; - dbentry *bb = (dbentry *)b; - if (aa->widget != bb->widget) { - return -1; - } - return 0; -} - -static int custom_compare2( - gconstpointer a, - gconstpointer b) { - - dbentry *aa = (dbentry *)a; - dbentry *bb = (dbentry *)b; - if (aa->object != bb->object) { - return -1; - } - return 0; -} - -int GrxDBAdd( - const RexxObjectPtr rxobj, // the object to be added - const GtkWidget *widget) { // the widget pointer - - dbentry *newentry = (dbentry *)malloc(sizeof(dbentry)); - newentry->object = rxobj; - newentry->widget = widget; - rxgtkdb = g_list_prepend(rxgtkdb, newentry); -} - -int GrxDBRemoveObject( - const GtkWidget *widget) { // the widget pointer - dbentry searchentry; - - searchentry.widget = widget; - GList *entry = g_list_find_custom(rxgtkdb, &searchentry, custom_compare1); - if (entry != NULL) { - free(entry->data); - rxgtkdb = g_list_remove(rxgtkdb, entry); - return 0; - } - return 1; -} - - -int GrxDBRemoveWidget( - const RexxObjectPtr obj) { // the Rexx object pointer - dbentry searchentry; - - searchentry.object = obj; - GList *entry = g_list_find_custom(rxgtkdb, &searchentry, custom_compare2); - if (entry != NULL) { - rxgtkdb = g_list_remove(rxgtkdb, entry); - free(entry->data); - return 0; - } - return 1; -} - - -RexxObjectPtr GrxDBFindObject( - const GtkWidget *widget) { // the widget pointer - dbentry searchentry; - dbentry *fentry; - - searchentry.widget = widget; - GList *entry = g_list_find_custom(rxgtkdb, &searchentry, custom_compare1); - if (entry != NULL) { - fentry = (dbentry *)entry->data; - return fentry->object; - } - return NULL; -} - Modified: sandbox/david/4x/rexxgtk.cls =================================================================== --- sandbox/david/4x/rexxgtk.cls 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/rexxgtk.cls 2008-04-09 16:26:46 UTC (rev 2423) @@ -341,7 +341,6 @@ ::class GtkWidget public ::METHOD init EXTERNAL "LIBRARY rexxgtk GrxWidgetNew" -::METHOD uninit EXTERNAL "LIBRARY rexxgtk GrxWidgetUninit" ::method pointer private -- return the pointer object to the widget Modified: sandbox/david/4x/rexxgtk.h =================================================================== --- sandbox/david/4x/rexxgtk.h 2008-04-09 02:13:16 UTC (rev 2422) +++ sandbox/david/4x/rexxgtk.h 2008-04-09 16:26:46 UTC (rev 2423) @@ -71,16 +71,6 @@ /* Function Prototypes */ /*----------------------------------------------------------------------------*/ -int GrxDBAdd( - const RexxObjectPtr rxobj, // the object to be added - const GtkWidget *widget); // the widget pointer -int GrxDBRemoveWidget( - const RexxObjectPtr obj); // the widget pointer -int GrxDBRemoveObject( - const GtkWidget *widget); // the widget pointer -RexxObjectPtr GrxDBFindObject( - const GtkWidget *widget); // the widget pointer - REXX_METHOD_PROTOTYPE(GrxWidgetNew) REXX_METHOD_PROTOTYPE(GrxWidgetUninit) REXX_METHOD_PROTOTYPE(GrxWidgetShow) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |