From: <mie...@us...> - 2012-07-11 00:38:46
|
Revision: 8034 http://oorexx.svn.sourceforge.net/oorexx/?rev=8034&view=rev Author: miesfeld Date: 2012-07-11 00:38:36 +0000 (Wed, 11 Jul 2012) Log Message: ----------- Set up infrastructure for independent ooDialog Modified Paths: -------------- ooDialog/trunk/examples/propertySheet.tabs/PropertySheetDemo.rex Added Paths: ----------- ooDialog/branches/ ooDialog/releases/ ooDialog/trunk/ ooDialog/trunk/examples/ ooDialog/trunk/examples/AnimalGame.rex ooDialog/trunk/examples/GUI_Template.rex ooDialog/trunk/examples/Makefile.am ooDialog/trunk/examples/bmp/ ooDialog/trunk/examples/calculator.rex ooDialog/trunk/examples/controls/ ooDialog/trunk/examples/dlgAreaUDemo.h ooDialog/trunk/examples/dlgAreaUDemo.rex ooDialog/trunk/examples/dlgAreaUDemoThree.rex ooDialog/trunk/examples/dlgAreaUDemoTwo.rex ooDialog/trunk/examples/editrex.rex ooDialog/trunk/examples/examples/ ooDialog/trunk/examples/ftyperex.rex ooDialog/trunk/examples/menus/ ooDialog/trunk/examples/mouse/ ooDialog/trunk/examples/oleinfo/ ooDialog/trunk/examples/ooDraw.h ooDialog/trunk/examples/ooRexxTry/ ooDialog/trunk/examples/oobandit.rex ooDialog/trunk/examples/oobmpvu.rex ooDialog/trunk/examples/oodpbar.rex ooDialog/trunk/examples/oodraw.rex ooDialog/trunk/examples/oodtree.inp ooDialog/trunk/examples/oodtree.rex ooDialog/trunk/examples/oodtreei.inp ooDialog/trunk/examples/oograph.rex ooDialog/trunk/examples/oophil.ico ooDialog/trunk/examples/oophil.rex ooDialog/trunk/examples/oostddlg.rex ooDialog/trunk/examples/oostdfct.rex ooDialog/trunk/examples/oovideo.rex ooDialog/trunk/examples/oowalk2.rex ooDialog/trunk/examples/oowalker.rex ooDialog/trunk/examples/propertySheet.tabs/ ooDialog/trunk/examples/rc/ ooDialog/trunk/examples/res/ ooDialog/trunk/examples/sample.rex ooDialog/trunk/examples/samplesSetup.rex ooDialog/trunk/examples/simple/ ooDialog/trunk/examples/sysinfo/ ooDialog/trunk/examples/tutorial/ ooDialog/trunk/examples/userGuide/ ooDialog/trunk/examples/wav/ ooDialog/trunk/examples/winsystem/ ooDialog/trunk/install/ ooDialog/trunk/ooDialog/ ooDialog/trunk/ooDialog/0_READ_ME_FIRST.txt ooDialog/trunk/ooDialog/APICommon.cpp ooDialog/trunk/ooDialog/APICommon.hpp ooDialog/trunk/ooDialog/AnimatedButton.cls ooDialog/trunk/ooDialog/AppIcon.ico ooDialog/trunk/ooDialog/AppIcon2.ico ooDialog/trunk/ooDialog/BaseDialog.cls ooDialog/trunk/ooDialog/CategoryDialog.cls ooDialog/trunk/ooDialog/ControlDialog.cls ooDialog/trunk/ooDialog/DeprecatedClasses.cls ooDialog/trunk/ooDialog/DialogControls.cls ooDialog/trunk/ooDialog/DialogExtensions.cls ooDialog/trunk/ooDialog/DynamicDialog.cls ooDialog/trunk/ooDialog/EventNotification.cls ooDialog/trunk/ooDialog/Menu.cls ooDialog/trunk/ooDialog/PlainBaseDialog.cls ooDialog/trunk/ooDialog/PropertySheet.cls ooDialog/trunk/ooDialog/RcDialog.cls ooDialog/trunk/ooDialog/ResDialog.cls ooDialog/trunk/ooDialog/UserDialog.cls ooDialog/trunk/ooDialog/UtilityClasses.cls ooDialog/trunk/ooDialog/build_ooDialog_cls.rex ooDialog/trunk/ooDialog/ooDialog.cpp ooDialog/trunk/ooDialog/ooDialog.def ooDialog/trunk/ooDialog/ooDialog.hpp ooDialog/trunk/ooDialog/oodBarControls.cpp ooDialog/trunk/ooDialog/oodBaseDialog.cpp ooDialog/trunk/ooDialog/oodBasicControls.cpp ooDialog/trunk/ooDialog/oodCommon.cpp ooDialog/trunk/ooDialog/oodCommon.hpp ooDialog/trunk/ooDialog/oodControl.cpp ooDialog/trunk/ooDialog/oodControl.hpp ooDialog/trunk/ooDialog/oodData.cpp ooDialog/trunk/ooDialog/oodData.hpp ooDialog/trunk/ooDialog/oodDeviceGraphics.cpp ooDialog/trunk/ooDialog/oodDeviceGraphics.hpp ooDialog/trunk/ooDialog/oodKeyNames.hpp ooDialog/trunk/ooDialog/oodMenu.cpp ooDialog/trunk/ooDialog/oodMenu.hpp ooDialog/trunk/ooDialog/oodMessaging.cpp ooDialog/trunk/ooDialog/oodMessaging.hpp ooDialog/trunk/ooDialog/oodMouse.cpp ooDialog/trunk/ooDialog/oodMouse.hpp ooDialog/trunk/ooDialog/oodPackageEntry.cpp ooDialog/trunk/ooDialog/oodPropertySheetDialog.cpp ooDialog/trunk/ooDialog/oodPropertySheetDialog.hpp ooDialog/trunk/ooDialog/oodResourceIDs.hpp ooDialog/trunk/ooDialog/oodResources.cpp ooDialog/trunk/ooDialog/oodResources.hpp ooDialog/trunk/ooDialog/oodRoutines.cpp ooDialog/trunk/ooDialog/oodUser.cpp ooDialog/trunk/ooDialog/oodUser.hpp ooDialog/trunk/ooDialog/oodUtilities.cpp ooDialog/trunk/ooDialog/oodViewControls.cpp ooDialog/trunk/ooDialog/oodialog.ico ooDialog/trunk/ooDialog/oodialog.mak ooDialog/trunk/ooDialog/oodialog.rc ooDialog/trunk/oorexx.ver ooDialog/trunk/orxwin32.mak Copied: ooDialog/trunk/examples/AnimalGame.rex (from rev 8008, sandbox/mark/ooDialog.beta/samples/windows/oodialog.4.2.0/AnimalGame.rex) =================================================================== --- ooDialog/trunk/examples/AnimalGame.rex (rev 0) +++ ooDialog/trunk/examples/AnimalGame.rex 2012-07-11 00:38:36 UTC (rev 8034) @@ -0,0 +1,287 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */ +/* Copyright (c) 2005-2012 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. */ +/* */ +/*----------------------------------------------------------------------------*/ + +/** + * samples\oodialog\AnimalGame.rex Animal Riddles (bitmaps come from a DLL.) + * + * This example is based on the original oopet1.rex example. However, rather + * than use the installBitmapButton() method it uses a Windows feature that + * allows the programmer to assign an image list to a button. The images in the + * image list are bitmaps that the operating system uses to paint the button + * face. + * + * This is a better way to get the same effect as installBitmapButton() because + * the OS draws the button with the same look and feel of other buttons. On + * Windows 7, the buttons look like Windows 7 buttons. Whereas with + * installBitmapButton() the buttons look like Windows 95 buttons. + */ + + -- A directory manager saves the current directory and can later go back to + -- that directory. It also sets up the environment we need. The class itself + -- is located in samplesSetup.rex + mgr = .DirectoryManager~new() + + -- Use the global .constDir for symbolic IDs and the symbol definitions are in + -- AnimalGame.h + .application~useGlobalConstDir('O', 'rc\AnimalGame.h') + + firstEditID = .constDir[IDC_EDIT_RHINO] + lastEditID = .constDir[IDC_EDIT_HORSE] + do i = firstEditID to lastEditID + b.i = "unknown animal" + end + + dlg = .AnimalDialog~new("res\AnimalGame.dll", IDD_ANIMALS, b., firstEditID, lastEditID) + + if dlg~initCode \= 0 then do + msg = 'Failed to create dialog, aborting' + title = 'Unexpected Error' + ret = MessageDialog(msg, , title, 'OK', 'WARNING') + mgr~goBack + return 99 + end + + dlg~execute("SHOWTOP") + + mgr~goBack + + return 0 + +/*------------------------------- requires ---------------------------*/ + +::requires "ooDialog.cls" +::requires "samplesSetup.rex" + +/*------------------------------- dialog class -----------------------*/ + +::class 'AnimalDialog' subclass Resdialog + +-- This constant is the diffence between the firstEditID edit control resource ID +-- and 1. +::constant EDIT_CONTROL_ID_OFFSET 2020 + +-- The pixel width and height of our bitmaps. +::constant BITMAP_WIDTH 152 +::constant BITMAP_HEIGHT 178 + +::method init + expose firstEditID lastEditID bitmaps buttonIDs + use arg resFile, id, dataStem., firstEditID, lastEditID + + self~init:super(resFile, id, dataStem.) + + imageIDs = .array~of(IDBMP_RHINO, IDBMP_TIGER, IDBMP_ELEPHANT, IDBMP_MOOSE, - + IDBMP_GOAT, IDBMP_DOG, IDBMP_SEAL, IDBMP_HORSE, - + IDBMP_KANGURU) + + buttonIDs = .array~of(IDC_PB_RHINO, IDC_PB_TIGER, IDC_PB_ELEPHANT, IDC_PB_MOOSE, - + IDC_PB_GOAT, IDC_PB_DOG, IDC_PB_SEAL, IDC_PB_HORSE) + + -- Load all our bitmaps from a resource only DLL. Since the .Size argument is + -- omitted from the getImages() method, the operating system uses the actual + -- size of the bitmap. + res = .ResourceImage~new('res\AnimalGame.dll') + bitmaps = res~getImages(imageIDs) + + -- Connect each button to a method with the same name as the symbolic ID of + -- the button + do i = 1 to buttonIDs~items + self~connectButtonEvent(buttonIDs[i], 'CLICKED', buttonIDs[i]) + end + + +::method initDialog + expose correct beenHelped bitmaps buttonIDs + + ret = Play("guess.wav", yes) + + self~configButtons(bitmaps, buttonIDs) + + correct = .array~of("rhinoceros", "tiger", "elephant", "moose", "goat", "chihuahua", "seal", "horse") + beenHelped = .false + + +::method configButtons private + use strict arg bitmaps, buttonIDs + + size = .Size~new(self~BITMAP_WIDTH, self~BITMAP_HEIGHT) + flags = .DlgUtil~or(.Image~toID(ILC_COLOR8), .Image~toID(ILC_MASK)) + margin = .Rect~new(2) + cRef = .Image~colorRef(255, 255, 153) + + do i = 1 to buttonIDs~items + if i = 6 then do + il = .ImageList~create(size, flags, 6) + normal = bitMaps[i] + press = bitMaps[9] + whiteCRef = .Image~colorRef(255, 255, 255) + + ret = il~addMasked(normal, cRef) + ret = il~addMasked(normal, cRef) + ret = il~addMasked(press, whiteCRef) + ret = il~addMasked(normal, cRef) + ret = il~addMasked(normal, cRef) + + self~newPushButton(buttonIDs[i])~setImageList(il, margin) + end + else do + il = .ImageList~create(size, flags, 1) + ret = il~addMasked(bitmaps[i], cRef) + self~newPushButton(buttonIDs[i])~setImageList(il, margin) + end + end + + +::method validate + expose correct beenHelped firstEditID lastEditID + + -- Get the edit control ID offset: + eos = self~EDIT_CONTROL_ID_OFFSET + + -- Disable the Ok button until we are through. + self~newPushButton(IDOK)~disable + + self~getDataStem(A.) + wrongstr = '' + + do i = firstEditID to lastEditID + if \ A.i~strip~caseLessEquals(correct[i - eos]) then do + wrongstr ||= '09'x || i - eos": "A.i || .endOfLine + end + end + if wrongstr = '' then do + if \ beenHelped then ret = Play("clap.wav") + + ret = Play("yourgood.wav", "YES") + + -- Put the timed message in the center of the dialog. + p = self~getRealPos + s = self~getRealSize + p~incr(s~width % 2, s~height % 2) + + if beenHelped then + ret = TimedMessage("You got them all right.... with my help ","E N D", 3000, , p) + else + ret = TimedMessage("You got them all right","B R A V O", 3000, , p) + return .true + end + else do + ret = Play("nope.wav") + + msg = "The following answer(s) is/are incorrect:" || .endOfLine~copies(2) || wrongstr + title = "Incorrect Answers for the ooRexx Animal Game" + ret = MessageDialog(msg, self~hwnd, title, 'OK', 'WARNING', 'DEFBUTTON1') + + -- We are through + self~newPushButton(IDOK)~enable + + return .false + end + + +::method IDC_PB_RHINO unguarded + ret = Play("RHINO.WAV","YES") + return self~giveHint("I only fear the 2 guys on my right", "I am strong", 2000) + + +::method IDC_PB_TIGER unguarded + ret = Play("TIGER.WAV","YES") + return self~giveHint("Hold that t...., hold that .i...", "A song about me", 2000) + + +::method IDC_PB_ELEPHANT unguarded + ret = Play("ELEPHANT.WAV","YES") + return self~giveHint("I blow my nose like a trumpet", "African Heavy Weight", 2000) + + +::method IDC_PB_MOOSE unguarded + ret = Play("MOOSE.WAV","YES") + return self~giveHint("My name rhymes with a sweet brown dessert", "Chocolate ......", 2000) + + +::method IDC_PB_GOAT unguarded + ret = Play("GOAT.WAV","YES") + return self~giveHint("My relatives climb the Matterhorn", "Mountain ....", 2000) + + +::method IDC_PB_DOG unguarded + ret = Play("TAKE.WAV","YES") + + +::method IDC_PB_SEAL unguarded + ret = Play("SEALION.WAV","YES") + return self~giveHint("I am slick in the water","Hint 4 you",2000) + + +::method IDC_PB_HORSE unguarded + ret = Play("HORSE.WAV","YES") + return self~giveHint("My son won the Kentucky Derby", "Giddyup 'N Go Pony", 2000) + + +::method giveHint unguarded private + use strict arg msg, title, ms + + pos = .Mouse~new(self)~getCursorPos + pos~incr(10, 10) + ret = TimedMessage(msg, title, ms, .true, pos) + return 0 + + +::method help unguarded + expose correct beenHelped firstEditID lastEditID + + -- Disable the help button so that it can not be clicked until we are through + -- here. + self~newPushButton(IDHELP)~disable + + beenHelped = .true + ret = Play("help.wav") + + -- Get the edit control ID offset: + eos = self~EDIT_CONTROL_ID_OFFSET + + do i = firstEditID to lastEditID + A.i = correct[i - eos] + end + + self~setDataStem(A.) + + -- Now enable Help again. + self~newPushButton(IDHELP)~enable + + Copied: ooDialog/trunk/examples/GUI_Template.rex (from rev 8008, sandbox/mark/ooDialog.beta/samples/windows/oodialog.4.2.0/GUI_Template.rex) =================================================================== --- ooDialog/trunk/examples/GUI_Template.rex (rev 0) +++ ooDialog/trunk/examples/GUI_Template.rex 2012-07-11 00:38:36 UTC (rev 8034) @@ -0,0 +1,382 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2006-2012 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. */ +/* */ +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* How to use this template: */ +/* */ +/* This template allows you to create dialogs with ooDialog without need */ +/* for the resource workshop. */ +/* */ +/* It sets out the class directive and the basic methods for a dialog */ +/* */ +/* ooDialog is very fully featured and it would not be useful to try to */ +/* anticipate and include every possible activity. */ +/* */ +/* Not all Dialogs require all the methods listed in the template. */ +/* If you are not adding any control through a particular method then you */ +/* can delete that method and let the superclass handle it */ +/* */ +/* ========================================================================= */ + +/* FIRST - Use Save As to give the template it's new filename */ + +signal on any name any /* error handling if you want */ + + /* ------------------------------------------------- */ + /* Code that you want to execute before creating */ + /* the dialog goes here. */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* You can pre-define dialog object default values */ + /* here by setting them in the a. stem */ + /* */ + /* For instance if you have an entry box with ID 20 */ + /* a.20=[default] presets it */ + /* ------------------------------------------------- */ + +MyDialog=.MyDlgClass~new /*(a.)*/ /* Create ooDialog Class instance */ + + /* ------------------------------------------------- */ + /* Here you can initialise attributes that you */ + /* associate with your controls below */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* If you want to create a non-modal dialog or have */ + /* it start minimised etc. then change the following */ + /* clause. See Show, Execute, ExecuteAsync, Popup& */ + /* PopupasChild in the ooDialog Reference */ +MyDialog~execute('ShowTop') /* Create, show and run the Windows Object */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* Here you have access to methods & Attributes of */ + /* the ooDialog Object after OK/Cancel has been */ + /* pressed. ie: MyDialog~Attribute */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* Code that you want to execute after the Dialog */ + /* has been cleared goes here. */ + /* */ + /* The stem a. can be used to pass values back from */ + /* the dialog. */ + /* ------------------------------------------------- */ + +exit +/* ========================================================================= */ +/* Error Handling routine - returns full information to console */ +/* */ +/* All error information available is written to STDOUT (usually the console)*/ +/* As this may not be present (running a GUI with REXXHIDE) a ooDialog */ +/* errorDialog popup is also presented */ +/* */ +/* While this type of error handling is useful to some people, it also will */ +/* mask the print out of many syntax errors that happen while your dialog */ +/* is executing. */ +/* */ +/* If you are having trouble debugging problems in your dialog, 1.) Comment */ +/* out the 'signal on any' line above. 2.) Execute your dialog from a */ +/* console window so that you will see any syntax messages printed out by */ +/* the interpreter. */ +/* */ +/* Those two steps will solve many of your debugging problems. */ +/* ========================================================================= */ +any: + + signal off any + + errObj=condition("o") /* get exception object */ + errObj~"_SIGL_"= SIGL /* add value of SIGL and sourceline */ + errObj~"_sourceline_"= sourceline(SIGL) + errQ=.queue~new + Say "******************* An Error has occurred *******************" + do err.val over errObj + if errObj~at(err.val)~hasMethod('HasIndex') + then do /* display them after the single liners */ + errq~queue(err.val~right(13,'-')||':') + do err.line over errObj~at(err.val) + errq~queue(" :" err.line) + end /* DO */ + errq~queue("---") + end /* DO */ + else say err.val~Right(13)||':['errObj~at(err.val)||']' + end + + do while errq~items>0 + say errq~pull + end /* DO */ + + Say "****************** End of error diagnostics ***************" + /* in case there is no console - show error message */ + + call errorDialog 'Error' errObj~rc errObj~errortext '0a'x , + 'occurred on line' errObj~_sigl_ 'of' , + errObj~program '0a'x , + errObj~Message '0a'x + +exit -1 +/* ========================================================================= */ +::requires "ooDialog.cls" +/* ========================================================================= */ +::class MyDlgClass subclass userdialog +/* */ +/* The class directive */ +/* Rename your object from MyDlgClass to something that makes sense to you */ +/* you will need to change the reference to it in the main program above */ +/* */ +/* If you are going to be calling this object from other programs using a */ +/* REQUIRES directive then add the keyword PUBLIC to the class directive */ +/* */ +/* ---------------------- */ +/* */ +/* ------------------------------------------------------------------------- */ + + +/* ------------------------------------------------------------------------- */ +/* The init method is called when the dialog is instantiated (by ~new above) */ +::method init +/* ------------------------------------------------------------------------- */ +/* expose a. */ /* Give these variables scope of the Object */ +/* use arg a. */ /* Uncomment if you passed a. as a stem */ + +/*if you do not want to define initial values with a. do not pass it to super*/ +/* otherwise rogue default values may appear in your dialog */ + self~init:super /*(a.)*/ /* we call the Super Class (userdialog) */ + width=300 ; height=200 /* Set the Width and height of dialog */ + + /* Now we create the Windows Object */ + success=self~createCenter(width,height, - + 'This text appears in the Dialog Title',,, - + 'MS Sans Serif',8) + /* The above line creates a dialog in the centre of the screen, if you */ + /* Would rather specify values for x & y use the line below instead */ + /* success=self~create(x,y,width,height,Title) */ + + if \success then do + self~initCode=1 + return + end + /* ------------------------------------------------- */ + /* Here we can initialise any attributes of our */ + /* dialog. */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* Here we can 'connect' dialog item events to */ + /* Methods or Attributes. */ + /* i.e.: self~connectListViewEvent(id,"Changed",, */ + /* "ItemSelectedMethod") */ + /* */ + /* NB: Many createXXX Methods (which appear in the */ + /* defineDialog method below) also provide a way to */ + /* define connections. */ + /* ------------------------------------------------- */ + +/* ------------------------------------------------------------------------- */ +::method defineDialog +/* expose menuBar */ /* Perhaps save a menu object if you create */ + /* one below. */ +/* ------------------------------------------------------------------------- */ +/* This is where we lay out the controls (widgets) in our dialog */ +/* Refer to the ooDialog manual for the create methods and their parameters */ +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ +/* DlgArea is a class of imaginary rectangles with an inner margin that */ +/* allows you to reference coordinates within them by dialog units or */ +/* percentages. */ +/* ------------------------------------------------------------------------- */ +/* u = .DlgAreaU~new(self) -- Whole dialog */ +/* a = .DlgArea~new(u~x(''),u~y(''),u~w(''),u~h('')) */ + + /* ------------------------------------------------- */ + /* Here we add the control objects to our dialog */ + /* Dialog Width is available to us as self~sizeX & */ + /* Dialog Height is available to us as self~sizeY */ + /* ------------------------------------------------- */ + + self~createPushButton(IDOK,self~sizeX-60 ,self~sizeY-20,50,15,'DEFAULT','OK') + self~createPushButton(IDCANCEL,self~sizeX-120,self~sizeY-20,50,15,,'Cancel') + +/* examples to cut & paste: */ +/* self~createPushButton(id,x,y,cx,cy,'options','text','method') */ +/* self~createCheckBox(id,x,y,cx,cy,'options',text,'attribute') */ +/* self~createComboBox(id,x,y,cx,cy,'options','attribute') */ +/* self~createEdit(id,x,y,cx,cy,'options','attribute') */ +/* self~createListView(id,x,y,cx,cy,'options','attribute') */ +/* self~createTreeView(id,x,y,cx,cy,'options','attribute') */ +/* self~createStaticText(id, x,y,cx,cy,'options','text') */ +/* self~create[Black|White|Gray]Rect(id,x,y,cx,cy,'options') */ +/* etc. etc. ... */ +/* other controls should have unique ids over 100 (or -1 for static text) */ + + /* ------------------------------------------------- */ + /* You could create a menu here, or really anywhere, */ + /* using one of the menu classes such as the */ + /* .UserMenuBar, and the menu methods. */ + /* */ + /* Save the menu and have it attach to the dialog in */ + /* the initDialog() method. It could be saved in an */ + /* exposed variable for instance. */ + /* ------------------------------------------------- */ + +/* menuBar = .UserMenuBar~new(200, self, ...) */ +/* menuBar~addPopUp(id, 'text', options, ...) */ +/* menuBar~addItem(id, 'someText', options, ...) */ +/* menuBar~addSeparator */ +/* menuBar~complete */ +/* ------------------------------------------------------------------------- */ +::method initDialog +/* expose menuBar */ /* If you are adding a menu perhaps. */ +/* ------------------------------------------------------------------------- */ +/* If you have no need to initialise/populate items delete this method */ + + /* ------------------------------------------------- */ + /* Code here is run after the underlying windows */ + /* dialog object has been created. Whether the */ + /* dialog is displayed depends on the style keywords */ + /* used in the createCenter(), (or create()) method. */ + /* By default the dialog will be created invisible. */ + /* If you use the VISIBLE keyword, the dialog will */ + /* be visisble at this point. */ + /* ------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* Here we can populate list boxes etc. */ + /* ------------------------------------------------- */ + +/* for example: */ +/* List = self~newListView([id]) */ +/* if List \= .Nil then do */ +/* list~setImageList(imageList, .Image~toID(LVSIL_SMALL)) */ +/* list~addStyle("[Style1 style2...]") */ +/* list~insertColumn(0,"[Title]",[width],[style]) */ +/* list~insertColumn(1,"[Title]",[width],[style]) */ +/* do data over dataset */ +/* ordinal=list~addrow(,[icon_no],[column 0 text],[column 1 text]...) */ +/* end */ +/* end */ + + /* ------------------------------------------------- */ + /* If you created a menu in defineDialog(), attach */ + /* it: */ + /* ------------------------------------------------- */ + +/* menuBar~attachTo(self) */ + +/* ------------------------------------------------------------------------- */ +::method ok +/* ------------------------------------------------------------------------- */ +/* The ok() method is invoked automatically by the ooDialog framework when */ +/* the user pushes or clicks a button, or a menu item, with the resource ID */ +/* of IDOK (1). If you do not need to do, or do not want to do, any */ +/* processing here, you can delete this method. The ooDialog framework */ +/* provides the correct implementation for you. The framework also provides */ +/* a default implementation of the validate method. By default validate() */ +/* returns true. If you want to have a chance to validate the user's input, */ +/* and perhaps prevent the dialog from closing, then over-ride the validate */ +/* method. From validate() return true to close the dialog, or false to */ +/* prevent the dialog from closing. */ + + /* ------------------------------------------------- */ + /* If you want to do your validation here, you can */ + /* add the valdiation code here. Then, if you want */ + /* to allow the dialog to close normally, invoke the */ + /* super class's ok() method. If you want to */ + /* prevent dialog from closing, simply return 0 with */ + /* out invoking the super class ok. */ + /* */ + /* By invoking the super class ok() method you */ + /* ensure the dialog is closed properly. That is */ + /* really the best way to end the dialog. The best */ + /* way to not end the dialog at this point is to */ + /* simply return 0. */ + /* ------------------------------------------------- */ + +return self~oK:super + +/* ------------------------------------------------------------------------- */ +::method cancel +/* ------------------------------------------------------------------------- */ +/* The cancel() method is invoked automatically by the ooDialog framework */ +/* when the user pushes or clicks a button, or a menu item, with the */ +/* resource ID of IDCANCEL (2), or the user hits the escape key. If you do */ +/* not need to do, or do not want to do, any processing here, you can delete */ +/* this method. The ooDialog framework provides the correct implementation */ +/* of the cancel method for you. */ + + /* ------------------------------------------------- */ + /* You can add code for closing with cancel here, if */ + /* you want to. Then, to prevent the dialog from */ + /* closing at this point, simply return 0. To */ + /* continue with the normal closing of the dialog, */ + /* invoke the super class's cancel method. */ + /* */ + /* By invoking the super class cancel() method you */ + /* ensure the dialog is closed properly. That is */ + /* really the best way to end the dialog. The best */ + /* to not end the dialog at this point is to simply */ + /* return 0. */ + /* ------------------------------------------------- */ +return self~cancel:super + +/* ------------------------------------------------------------------------- */ +::method validate +/* ------------------------------------------------------------------------- */ +/* This is called by the ok:super method. Returning .false stops the dialog */ +/* from closing. Returning .true allows the dialog to close. If you do not */ +/* need this method - delete it */ +valid=.true + +/* + valid=.false + select + when [error_condition] then call errorDialog [error_condition_message] + when [error_condition] then call errorDialog [error_condition_message] + otherwise + valid=.true + end /* select */ +*/ + +return valid +/* ------------------------------------------------------------------------- */ + + /* ------------------------------------------------- */ + /* here we can define other attributes and methods */ + /* ------------------------------------------------- */ + Copied: ooDialog/trunk/examples/Makefile.am (from rev 8008, sandbox/mark/ooDialog.beta/samples/windows/oodialog.4.2.0/Makefile.am) =================================================================== --- ooDialog/trunk/examples/Makefile.am (rev 0) +++ ooDialog/trunk/examples/Makefile.am 2012-07-11 00:38:36 UTC (rev 8034) @@ -0,0 +1,46 @@ +#/*----------------------------------------------------------------------------*/ +#/* */ +#/* Copyright (c) 2005-2012 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. */ +#/* */ +#/*----------------------------------------------------------------------------*/ + +.NOTPARALLEL: + +SUBDIRS = bmp controls examples menus mouse oleinfo ooRexxTry propertySheet.tabs rc res simple sysinfo tutorial userGuide wav winsystem +DIST_SUBDIRS = bmp controls examples menus mouse oleinfo ooRexxTry propertySheet.tabs rc res simple sysinfo tutorial userGuide wav winsystem + +MAINTAINERCLEANFILES = Makefile.in *~ + +EXTRA_DIST = *.rex *.h *.inp *.ico + Copied: ooDialog/trunk/examples/calculator.rex (from rev 8008, sandbox/mark/ooDialog.beta/samples/windows/oodialog.4.2.0/calculator.rex) =================================================================== --- ooDialog/trunk/examples/calculator.rex (rev 0) +++ ooDialog/trunk/examples/calculator.rex 2012-07-11 00:38:36 UTC (rev 8034) @@ -0,0 +1,305 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */ +/* Copyright (c) 2005-2012 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. */ +/* */ +/*----------------------------------------------------------------------------*/ +/****************************************************************************/ +/* Name: CALCULATOR.REX */ +/* Type: Object REXX Script */ +/* Resource: CALCULATOR */ +/* */ +/* Description: */ +/* Sample that demonstrates the usage of RxMath and ooDialog */ +/* */ +/****************************************************************************/ + + +/* create the dialog */ +calcDlg = .Calculator~new + +/* Set the defaults for arithmetic operations (optional) */ +NUMERIC DIGITS 9 /* precision can be up to 16 digits for RxMath */ +NUMERIC FORM SCIENTIFIC /* controls exponential notation */ +NUMERIC FUZZ 0 /* number of digits ignored for numeric comparison */ + +/* Display the dialog */ +if calcDlg~initCode = 0 then do + rc = calcDlg~execute("SHOWTOP") +end + +exit /* leave program */ + +/* error handling: Display the cause of the error and restart the programm */ +any: + call errorDialog "Error" rc "occurred at line" sigl":" errortext(rc) "a"x condition("o")~message + if calcDlg~isDialogActive then do + calcDlg~finished = .true + calcDlg~stopDialog + end + signal reStart + +::requires "ooDialog.cls" + +/* This requires loads the RxMath functions. */ +::requires "rxmath" library + +/* The Calculator dialog class */ +::class 'Calculator' subclass UserDialog + +::method init + forward class (super) continue /* call parent constructor */ + InitRet = Result + + if self~load("rc\CALCULATOR.RC", ) \= 0 then do + self~initCode = 1 + return 1 + end + + /* Connect dialog control items to class methods */ + self~connectButtonEvent("BNO1", "CLICKED", "BNO1") + self~connectButtonEvent("BNO2", "CLICKED", "BNO2") + self~connectButtonEvent("BNO3", "CLICKED", "BNO3") + self~connectButtonEvent("BNO4", "CLICKED", "BNO4") + self~connectButtonEvent("BNO5", "CLICKED", "BNO5") + self~connectButtonEvent("BNO6", "CLICKED", "BNO6") + self~connectButtonEvent("BNO7", "CLICKED", "BNO7") + self~connectButtonEvent("BNO8", "CLICKED", "BNO8") + self~connectButtonEvent("BNO9", "CLICKED", "BNO9") + self~connectButtonEvent("BNO0", "CLICKED", "BNO0") + self~connectButtonEvent("BSIGN", "CLICKED", "BSIGN") + self~connectButtonEvent("BPOINT", "CLICKED", "BPOINT") + self~connectButtonEvent("BDIVIDE", "CLICKED", "BDIVIDE") + self~connectButtonEvent("BTIMES", "CLICKED", "BTIMES") + self~connectButtonEvent("BMINUS", "CLICKED", "BMINUS") + self~connectButtonEvent("BPLUS", "CLICKED", "BPLUS") + self~connectButtonEvent("BSQRT", "CLICKED", "BSQRT") + self~connectButtonEvent("BLOG", "CLICKED", "BLOG") + self~connectButtonEvent("BLOG10", "CLICKED", "BLOG10") + self~connectButtonEvent("BPI", "CLICKED", "BPI") + self~connectButtonEvent("BBACKSPACE", "CLICKED", "BBACKSPACE") + self~connectButtonEvent("BCLEAR", "CLICKED", "BCLEAR") + self~connectButtonEvent("BCALC", "CLICKED", "BCALC") + self~connectButtonEvent("BSINUS", "CLICKED", "BSINUS") + self~connectButtonEvent("BCOSINUS", "CLICKED", "BCOSINUS") + self~connectButtonEvent("BTANGENS", "CLICKED", "BTANGENS") + self~connectButtonEvent("BARCSIN", "CLICKED", "BARCSIN") + self~connectButtonEvent("BARCCOS", "CLICKED", "BARCCOS") + self~connectButtonEvent("BARCTAN", "CLICKED", "BARCTAN") + + /* Initial values that are assigned to the object attributes */ + self~TLine= '0' /* set text-line to 0 initially */ + + /* Add your initialization code here */ + return InitRet + +::method initDialog + expose tl + tl = self~newEdit(TLine) /* get the EditControl object */ + +::method getLine + /* Return the current text-line content, */ + /* or 0 if infinity has been reached. */ + + expose tl + if tl~getText~Left(5) = 'ERROR' then + return 0 + return tl~getText + +::method setLine + /* Set the argument as new text-line. If this is ERROR raise an */ + /* errorDialog with additional information. */ + + expose tl + use arg line, merror + if line~left(5) = 'ERROR' then + call errorDialog "RxCalc returned an error:" merror + tl~setText(line) + +::method justZero + /* Return true if the current text-line is only one 0. */ + /* Most functions will then ignore the current text-line */ + + line = self~getLine + if line~Length = 1 & line = 0 then + return 1 + return 0 + +::method getCheckedLine + /* Return the result of the current calculation or the line */ + /* if it is only a number. DataType will not return NUM */ + /* if any operators are present. */ + + line = self~getLine + if DataType(line) = 'NUM' then + return line + else do + interpret 'calcResult =' line + return calcResult + end + +/* --------------------- message handler -----------------------------------*/ + +::method UNKNOWN + /* The UNKNOWN-method is called, whenever the defined message for a */ + /* button cannot be found. This is a good way to roll all the methods for */ + /* the 10 digits into one. The last character of the argument is the */ + /* number that was pressed. */ + + use arg message + number = message~SubStr(4) + if self~justZero then + self~setLine(number) + else self~setLine(self~getLine||number) + +::method BSIGN + /* Toggles the sign of the leading number on the text line. */ + + if self~justZero then + self~setLine('-') + else do + select + when left(self~getLine,1)='-' then + self~setLine('+'||substr(self~getLine,2)) + when left(self~getLine,1)='+' then + self~setLine('-'||substr(self~getLine,2)) + otherwise + self~setLine('-'||self~getLine) + end + end + +::method BPOINT + /* Append a point.. */ + self~setLine(self~getLine||'.') + +::method BDIVIDE + /* Appends a 'divide' symbol to the checked line. */ + self~setLine(self~GetCheckedLine||'/') + +::method BTIMES + /* Append a 'multiply' symbol to the checked line. */ + self~setLine(self~GetCheckedLine||'*') + +::method BMINUS + /* Appends a 'minus' symbol to the checked line. */ + self~setLine(self~GetCheckedLine||'-') + +::method BPLUS + /* Appends a 'plus' symbol to the checked line. */ + self~setLine(self~GetCheckedLine||'+') + +::method BSQRT + /* Displays the square root of the checked line. */ + /* MATHERRNO is filled with additional information if the */ + /* RxMath-funtion detects an error. */ + self~setLine(RxCalcSqrt(self~GetCheckedLine), MATHERRNO) + +::method BLOG + /* Displays the natural logarithm of the checked line */ + self~setLine(RxCalcLog(self~GetCheckedLine), MATHERRNO) + +::method BLOG10 + /* Displays the 10-base logarithm of the checked line */ + self~setLine(RxCalcLog10(self~GetCheckedLine), MATHERRNO) + +::method BPI + /* Displays the number Pi */ + if self~justZero then + self~setLine(RxCalcPi(), MATHERRNO) + else self~setLine(self~getLine||RxCalcPi(), MATHERRNO) + +::method BBACKSPACE + /* Delete the last character of the line */ + line = self~getLine + line = line~Left(line~Length - 1) + if line = '' then /* if the line is empty set it to 0 */ + self~setLine(0) + else self~setLine(line) + +::method BCLEAR + /* Set the line to 0 */ + self~setLine(0) + +::method BCALC + /* Interpret the current line = calculate the result */ + interpret 'calcResult =' self~getLine + self~setLine(calcResult) + +::method BSINUS + /* Display the sine of the checked line */ + self~setLine(RxCalcSin(self~getCheckedLine), MATHERRNO) + +::method BCOSINUS + /* Display the cosine of the checked line */ + self~setLine(RxCalcCos(self~GetCheckedLine), MATHERRNO) + +::method BTANGENS + /* Display the tangent of the checked line */ + self~setLine(RxCalcTan(self~GetCheckedLine), MATHERRNO) + +::method BARCSIN + /* Display the arc sine of the checked line */ + self~setLine(RxCalcArcSin(self~GetCheckedLine), MATHERRNO) + +::method BARCCOS + /* Display the arc cosine of the checked line */ + self~setLine(RxCalcArcCos(self~GetCheckedLine), MATHERRNO) + +::method BARCTAN + /* Display the arc tangent of the checked line */ + self~setLine(RxCalcArcTan(self~GetCheckedLine), MATHERRNO) + +::method Ok + /* + This is the method connected to our exit-button. You don't have to implement it, + ooDialog supplies a default implementation of the ok method. Note that the ok + method is always connected to the button with resource ID 1. Note also, that + once you invoke the superclass ok method, if validate() returns true, the dialog + will close. + + This is what the default implementation of ok does: it invokes the validate() + method. If validate() returns false, then ok() does nothing and just returns. + If validate() returns true then ok() sets self~initCode to 1 and + self~finished to true, which ends the dialog. + + This over-ride sets the calculator display to 0 before ending the dialog. Again, + this is not necessary, it is just done to demonstrate how to over-ride the ok + method + */ + if \ self~validate then return 0 + + self~setLine(0) + self~initCode = 1 + self~finished = .true + return self~finished Copied: ooDialog/trunk/examples/dlgAreaUDemo.h (from rev 8008, sandbox/mark/ooDialog.beta/samples/windows/oodialog.4.2.0/dlgAreaUDemo.h) =================================================================== --- ooDialog/trunk/examples/dlgAreaUDemo.h (rev 0) +++ ooDialog/trunk/examples/dlgAreaUDemo.h 2012-07-11 00:38:36 UTC (rev 8034) @@ -0,0 +1,51 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2010-2012 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 */ +/... [truncated message content] |