( -------------------------------------------------
( FILE:         ui.rpl
( DESCRIPTION:  RPL interface to GUI
( VERSION:      3.0
( DATE:	        39-Dec-94
( -------------------------------------------------
( Copyright © 1994 Realsoft.  All rights reserved
( -------------------------------------------------

?& UI.RPL NOT ?IF
37 CONSTANT UI.RPL

( Tags for gadgets

0  CONSTANT UI_Done
1  CONSTANT UI_Disabled
2  CONSTANT UICB_Checked
3  CONSTANT UIST_String
4  CONSTANT UIST_MaxChars
5  CONSTANT UITX_Text
6  CONSTANT UITX_Border
7  CONSTANT UISL_Min
8  CONSTANT UISL_Max
9  CONSTANT UISL_Level
10 CONSTANT UIMX_Labels
11 CONSTANT UIMX_Active

( Window callback values
0 CONSTANT UIWM_Move	( mouse move
1 CONSTANT UIWM_LMBDown ( Left mouse button down
2 CONSTANT UIWM_LMBUp	( Left mouse button up
3 CONSTANT UIWM_Close	( close clicked
4 CONSTANT UIWM_Selected ( selected objects and/or current working level changed
5 CONSTANT UIWM_Refresh ( user has modified objects, refresh window

?& NULL NOT ?IF
	0 CONSTANT NULL
	0 CONSTANT FALSE
	1 CONSTANT TRUE
?ENDIF

( Define new data type 'pointer array'. This is makes it easier to set up
( string pointer array required by 'UI_MX' gadget. 

: PARRAY ( iSize )
	<BUILDS 4 * ALLOT DOES>
;

: PSTORE ( sString iIndex aArray)
	4 * + STORE 
;

: PFETCH ( iIndex aArray)
	4 * + FETCH
;

: PINIT ( 0 sStringN ... string2 sTring1 aArray )
    PARAM
        VARIABLE aArray
    ENDPARAM
    VARIABLE iIndex

    0 iIndex STORE
    BEGIN 
        DUP 
    WHILE
        aArray FETCH iIndex FETCH PSTORE
        1 iIndex FETCH + iIndex STORE
    REPEAT
    DROP
    0 aArray FETCH iIndex FETCH PSTORE
;

?ENDIF ( UI.RPL

