home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 August
/
PCWorld_2000-08_cd.bin
/
Software
/
TemaCD
/
xbasic
/
xbpro.exe
/
xb
/
app
/
tmenu.x
< prev
next >
Wrap
Text File
|
1995-08-11
|
5KB
|
160 lines
'
' ####################
' ##### PROLOG #####
' ####################
'
PROGRAM "tmenu"
VERSION "0.0000"
'
IMPORT "xst"
IMPORT "xgr"
IMPORT "xui"
'
INTERNAL FUNCTION Menu ( )
INTERNAL FUNCTION GetDisplayGrid ( @label )
INTERNAL FUNCTION DisplayCallback ( grid, message$, v0, v1, v2, v3, kid, r1$ )
'
'
' ##################
' ##### Menu #####
' ##################
'
FUNCTION Menu ()
$XuiMenu = 12
'
GetDisplayGrid ( @label )
'
' create window with XuiMenu grid
'
DIM menu$[15] ' callback arguments
menu$[ 0] = "_File"
menu$[ 1] = " _Load" ' v0 = 1 : v1 = 0
menu$[ 2] = " _Save" ' v0 = 1 : v1 = 1
menu$[ 3] = " _Quit" ' v0 = 1 : v1 = 2
menu$[ 4] = "_Edit"
menu$[ 5] = " _Cut" ' v0 = 2 : v1 = 0
menu$[ 6] = " _Grab" ' v0 = 2 : v1 = 1
menu$[ 7] = " _Paste" ' v0 = 2 : v1 = 2
menu$[ 8] = "_View"
menu$[ 9] = " _First" ' v0 = 3 : v1 = 0
menu$[10] = " _Last" ' v0 = 3 : v1 = 1
menu$[11] = " _All" ' v0 = 3 : v1 = 2
menu$[12] = "_Help"
menu$[13] = " _Contents" ' v0 = 4 : v1 = 0
menu$[14] = " _Summary" ' v0 = 4 : v1 = 1
menu$[15] = " _Index" ' v0 = 4 : v1 = 2
'
XuiCreateWindow (@grid, @"XuiMenu", 100, 256, 256, 24, 0, "")
XuiSendStringMessage ( grid, @"SetCallback", grid, &XuiQueueCallbacks(), -1, -1, $XuiMenu, -1)
XuiSendStringMessage ( grid, @"SetGridName", 0, 0, 0, 0, 0, @"Menu")
XuiSendStringMessage ( grid, @"SetTextArray", 0, 0, 0, 0, 0, @menu$[])
XuiSendStringMessage ( grid, @"DisplayWindow", 0, 0, 0, 0, 0, 0)
'
' convenience function message loop
'
DO
XgrProcessMessages (1)
DO WHILE XuiGetNextCallback (@grid, @message$, @v0, @v1, @v2, @v3, @kid, @r1$)
GOSUB Callback
LOOP
LOOP
RETURN
'
' callback
'
SUB Callback
win = kid >> 16
kid = kid AND 0xFF
SELECT CASE message$
CASE "CloseWindow" : QUIT (0)
CASE "Selection" : GOSUB Selection
CASE ELSE : DisplayCallback (grid, @message$, v0, v1, v2, v3, kid, @r1$)
END SELECT
END SUB
'
' Selection message
'
SUB Selection
XuiSendStringMessage (grid, @"GetTextArray", 0, 0, 0, 0, 0, @text$[])
IF text$[] THEN
u = UBOUND (text$[])
menubar = 0
FOR i = 0 TO u
text$ = text$[i]
IF text$ THEN
char = text${0}
IF ((char != ' ') AND (char != ' ')) THEN ' not tab or space
INC menubar
IF (menubar = v0) THEN header = i : EXIT FOR
END IF
END IF
NEXT i
IF (v0 = menubar) THEN
menu$ = text$[header]
list = header + v1 + 1
IF (list <= u) THEN list$ = text$[list]
v0$ = " : Menu entry : \"" + menu$ + "\""
v1$ = " : List entry : \"" + list$ + "\""
END IF
END IF
'
text$ = "XuiMenu"
text$ = text$ + "\n grid = " + HEX$ (grid,8)
text$ = text$ + "\n message = " + message$
text$ = text$ + "\n state = " + HEX$ (v0,8) + v0$
text$ = text$ + "\n v1 = " + HEX$ (v1,8) + v1$
text$ = text$ + "\n v2 = " + HEX$ (v2,8)
text$ = text$ + "\n v3 = " + HEX$ (v3,8)
text$ = text$ + "\n kid = " + HEX$ (kid,8)
text$ = text$ + "\n r1$ = " + r1$
XuiSendStringMessage (label, @"SetTextString", 0, 0, 0, 0, 0, @text$) ' set message text
XuiSendStringMessage (label, @"Redraw", 0, 0, 0, 0, 0, 0) ' redraw label
END SUB
END FUNCTION
'
'
' ###############################
' ##### GetDisplayGrid () #####
' ###############################
'
FUNCTION GetDisplayGrid ( label )
STATIC grid
'
IFZ grid THEN
XuiCreateWindow (@grid, @"XuiLabel", 100, 100, 512, 128, 0, "")
XuiSendStringMessage ( grid, @"SetColor", $$BrightGreen, -1, -1, -1, 0, 0)
XuiSendStringMessage ( grid, @"SetAlign", $$AlignUpperLeft, 0, 0, 0, 0, 0)
XuiSendStringMessage ( grid, @"SetJustify", $$JustifyLeft, 0, 0, 0, 0, 0)
XuiSendStringMessage ( grid, @"SetIndent", 6, 4, 0, 0, 0, 0)
XuiSendStringMessage ( grid, @"DisplayWindow", 0, 0, 0, 0, 0, 0)
END IF
'
label = grid
END FUNCTION
'
'
' ################################
' ##### DisplayCallback () #####
' ################################
'
FUNCTION DisplayCallback ( grid, message$, v0, v1, v2, v3, kid, r1$ )
'
XgrGetGridType (grid, @gridType)
XgrGridTypeNumberToName (gridType, @gridType$)
'
text$ = gridType$ + "\n"
text$ = text$ + " grid = " + HEX$ (grid, 8) + "\n"
text$ = text$ + " message = " + message$ + "\n"
text$ = text$ + " v0 = " + HEX$ (v0,8) + "\n"
text$ = text$ + " v1 = " + HEX$ (v1,8) + "\n"
text$ = text$ + " v2 = " + HEX$ (v2,8) + "\n"
text$ = text$ + " v3 = " + HEX$ (v3,8) + "\n"
text$ = text$ + " kid = " + HEX$ (kid,8) + "\n"
text$ = text$ + " r1$ = " + r1$
'
GetDisplayGrid (@label)
XuiSendStringMessage (label, @"SetTextString", 0, 0, 0, 0, 0, @text$)
XuiSendStringMessage (label, @"Redraw", 0, 0, 0, 0, 0, 0)
END FUNCTION
END PROGRAM