From: <wda...@us...> - 2008-04-16 01:28:59
|
Revision: 2436 http://oorexx.svn.sourceforge.net/oorexx/?rev=2436&view=rev Author: wdashley Date: 2008-04-15 18:29:03 -0700 (Tue, 15 Apr 2008) Log Message: ----------- ArtifactID: None Comment: Added expander methods to the 4x stuff. Modified Paths: -------------- sandbox/david/4x/Makefile sandbox/david/4x/rexxgtk.cls sandbox/david/4x/rexxgtk.cpp sandbox/david/4x/rexxgtk.h Added Paths: ----------- sandbox/david/4x/grxexpander.cpp Modified: sandbox/david/4x/Makefile =================================================================== --- sandbox/david/4x/Makefile 2008-04-16 00:53:41 UTC (rev 2435) +++ sandbox/david/4x/Makefile 2008-04-16 01:29:03 UTC (rev 2436) @@ -58,9 +58,9 @@ grxdialog.o \ grxassistant.o \ grxlabel.o \ - grxfixed.o + grxfixed.o \ + grxexpander.o \ # grxqueue.o \ -# grxexpander.o \ # grxhandlebox.o \ # grxnotebook.o \ # grxeventbox.o \ @@ -116,8 +116,8 @@ grxfixed.o: grxfixed.cpp rexxgtk.h gcc -c $(GRXCFLAGS) grxfixed.cpp -grxexpander.o: grxexpander.c rexxgtk.h - gcc -c $(GRXCFLAGS) grxexpander.c +grxexpander.o: grxexpander.cpp rexxgtk.h + gcc -c $(GRXCFLAGS) grxexpander.cpp grxhandlebox.o: grxhandlebox.c rexxgtk.h gcc -c $(GRXCFLAGS) grxhandlebox.c Copied: sandbox/david/4x/grxexpander.cpp (from rev 2347, sandbox/david/grxexpander.c) =================================================================== --- sandbox/david/4x/grxexpander.cpp (rev 0) +++ sandbox/david/4x/grxexpander.cpp 2008-04-16 01:29:03 UTC (rev 2436) @@ -0,0 +1,229 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* 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 */ +/*============================================================================*/ + +static void signal_func_0(GtkWidget *window, + gpointer data) +{ + cbcb *cblock = (cbcb *)data; + RexxObjectPtr rxobj = (RexxObjectPtr)g_object_get_data(G_OBJECT(window), "OORXOBJECT"); + RexxThreadContext *context; + + cblock->instance->AttachThread(&context); + context->SendMessage0(rxobj, ((cbcb *)data)->signal_name); + context->DetachThread(); + return; +} + + +/*============================================================================*/ +/* Public Functions */ +/*============================================================================*/ + +/* + * Method: init + * + * Create an assistant. + * + * @param label The expander label + * + * @return Zero. + */ +RexxMethod2(int, // Return type + GrxExpanderNew, // Object_method name + OSELF, self, // Self + CSTRING, label) // Expander label +{ + GtkWidget *myWidget; + + myWidget = gtk_expander_new(label); + context->SetObjectVariable("!POINTER", context->NewPointer(myWidget)); + g_object_set_data(G_OBJECT(myWidget), "OORXOBJECT", self); + + return 0; +} + +/* + * Method: set_expanded + * + * Set the expander state. + * + * @param state The expander state flag + * + * @return Zero. + */ +RexxMethod1(int, // Return type + GrxExpanderSetExpanded, // Object_method name + logical_t, state) // Expander state +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkExpander *myWidget = (GtkExpander *)context->PointerValue(rxptr); + + gtk_expander_set_expanded(myWidget, state); + + return 0; +} + +/* + * Method: set_label + * + * Set the expander label. + * + * @param label The expander label + * + * @return Zero. + */ +RexxMethod1(int, // Return type + GrxExpanderSetLabel, // Object_method name + CSTRING, label) // Expander label +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkExpander *myWidget = (GtkExpander *)context->PointerValue(rxptr); + + gtk_expander_set_label(myWidget, label); + + return 0; +} + +/* + * Method: get_label + * + * Get the expander label. + * + * @return Label + */ +RexxMethod0(CSTRING, // Return type + GrxExpanderGetLabel) // Object_method name +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkExpander *myWidget = (GtkExpander *)context->PointerValue(rxptr); + + return gtk_expander_get_label(myWidget); +} + +/* + * Method: use_underline + * + * Set the expander underline. + * + * @param flag The expander underline flag + * + * @return Zero. + */ +RexxMethod1(int, // Return type + GrxExpanderSetUnderline, // Object_method name + logical_t, flag) // Expander underline boolean +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkExpander *myWidget = (GtkExpander *)context->PointerValue(rxptr); + + gtk_expander_set_use_underline(myWidget, flag); + + return 0; +} + +/* + * Method: use_spacing + * + * Set the expander spacing. + * + * @param spacing The expander spacing amount + * + * @return Zero. + */ +RexxMethod1(int, // Return type + GrxExpanderSetSpacing, // Object_method name + int, spacing) // Expander spacing amount +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkExpander *myWidget = (GtkExpander *)context->PointerValue(rxptr); + + gtk_expander_set_spacing(myWidget, spacing); + + return 0; +} + +/** + * Method: signal_connect + * + * Connect a signal to an ooRexx method. + * + * @param name The signal name + * + * @return Zero + */ +RexxMethod1(RexxObjectPtr, // Return type + GrxExpanderSignalConnect, // Object_method name + CSTRING, name) // Signal name +{ + RexxPointerObject rxptr = (RexxPointerObject)context->GetObjectVariable("!POINTER"); + GtkWidget *myWidget = (GtkWidget *)context->PointerValue(rxptr); + cbcb *cblock; + + if (strcmp(name, "activate") == 0) { + cblock = (cbcb *)malloc(sizeof(cbcb)); + cblock->instance = context->threadContext->instance; + cblock->signal_name = "signal_activate"; + g_signal_connect(G_OBJECT(myWidget), "activate", + G_CALLBACK(signal_func_0), cblock); + return context->True(); + } + RexxObjectPtr parent = context->GetSuper(); + return context->SendMessage0(parent, name); +} + Modified: sandbox/david/4x/rexxgtk.cls =================================================================== --- sandbox/david/4x/rexxgtk.cls 2008-04-16 00:53:41 UTC (rev 2435) +++ sandbox/david/4x/rexxgtk.cls 2008-04-16 01:29:03 UTC (rev 2436) @@ -1252,3 +1252,29 @@ return self~signal_connect:super(event) +/*============================================================================*/ +/* Class: GtkExpander */ +/*============================================================================*/ + +::class GtkExpander public subclass GtkContainer + +::METHOD init EXTERNAL "LIBRARY rexxgtk GrxExpanderNew" +::METHOD set_expanded EXTERNAL "LIBRARY rexxgtk GrxExpanderSetExpanded" +::METHOD 'expanded=' EXTERNAL "LIBRARY rexxgtk GrxExpanderSetExpanded" +::METHOD label EXTERNAL "LIBRARY rexxgtk GrxExpanderGetLabel" +::METHOD get_label EXTERNAL "LIBRARY rexxgtk GrxExpanderGetLabel" +::METHOD set_label EXTERNAL "LIBRARY rexxgtk GrxExpanderSetLabel" +::METHOD 'label=' EXTERNAL "LIBRARY rexxgtk GrxExpanderSetLabel" +::METHOD set_use_underline EXTERNAL "LIBRARY rexxgtk GrxExpanderSetUseUnderline" +::METHOD 'use_underline=' EXTERNAL "LIBRARY rexxgtk GrxExpanderSetUseUnderline" +::METHOD set_spacing EXTERNAL "LIBRARY rexxgtk GrxExpanderSetSpacing" +::METHOD 'spacing=' EXTERNAL "LIBRARY rexxgtk GrxExpanderSetSpacing" +::METHOD signal_connect EXTERNAL "LIBRARY rexxgtk GrxExpanderSignalSpacing" + +-- The following are the methods that can be connected to signals. By default +-- they do nothing. + +::method signal_activate +return + + Modified: sandbox/david/4x/rexxgtk.cpp =================================================================== --- sandbox/david/4x/rexxgtk.cpp 2008-04-16 00:53:41 UTC (rev 2435) +++ sandbox/david/4x/rexxgtk.cpp 2008-04-16 01:29:03 UTC (rev 2436) @@ -377,6 +377,13 @@ REXX_METHOD(GrxFixedNew, GrxFixedNew), REXX_METHOD(GrxFixedPut, GrxFixedPut), REXX_METHOD(GrxFixedMove, GrxFixedMove), + REXX_METHOD(GrxExpanderNew, GrxExpanderNew), + REXX_METHOD(GrxExpanderSetExpanded, GrxExpanderSetExpanded), + REXX_METHOD(GrxExpanderSetLabel, GrxExpanderSetLabel), + REXX_METHOD(GrxExpanderGetLabel, GrxExpanderGetLabel), + REXX_METHOD(GrxExpanderSetUseUnderline, GrxExpanderSetUseUnderline), + REXX_METHOD(GrxExpanderSetSpacing, GrxExpanderSetSpacing), + REXX_METHOD(GrxExpanderSignalConnect, GrxExpanderSignalConnect), REXX_LAST_METHOD() }; Modified: sandbox/david/4x/rexxgtk.h =================================================================== --- sandbox/david/4x/rexxgtk.h 2008-04-16 00:53:41 UTC (rev 2435) +++ sandbox/david/4x/rexxgtk.h 2008-04-16 01:29:03 UTC (rev 2436) @@ -237,6 +237,13 @@ REXX_METHOD_PROTOTYPE(GrxFixedNew) REXX_METHOD_PROTOTYPE(GrxFixedPut) REXX_METHOD_PROTOTYPE(GrxFixedMove) +REXX_METHOD_PROTOTYPE(GrxExpanderNew) +REXX_METHOD_PROTOTYPE(GrxExpanderSetExpanded) +REXX_METHOD_PROTOTYPE(GrxExpanderSetLabel) +REXX_METHOD_PROTOTYPE(GrxExpanderGetLabel) +REXX_METHOD_PROTOTYPE(GrxExpanderSetUseUnderline) +REXX_METHOD_PROTOTYPE(GrxExpanderSetSpacing) +REXX_METHOD_PROTOTYPE(GrxExpanderSignalConnect) #endif /* REXXGTK_H */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |