Subroutine MTF.SUB.B( menu.title, menu.items, menu.help, menu.mneumonic, menu.x.orig, menu.y.orig, menu.width, menu.choices, menu.actions, submenu.flag, exit.code) ****************************************************************************** * * Drive MOTIF like sub-menu * * Module %M% Version %I% Date %H% * * (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved * This is unpublished proprietary source code of Ardent Software Inc. * The copyright notice above does not evidence any actual or intended * publication of such source code. * ******************************************************************************* * * Maintenence log - insert most recent change descriptions at top * * Date.... GTAR# WHO Description......................................... * 10/14/98 23801 SAP Change copyrights. * 11/28/90 7760 DPB changed PTERM options before and after execute. * 8/30/90 7403 DTM added menu.items to MTF.INPUT.B * ******************************************************************************* id = "%W%" $include UNIVERSE.INCLUDE MTF.INCL.H if not(inited) then stop UVREADMSG(075000,"") if stk.top >= STACK.LIMIT then stop UVREADMSG(075001,STACK.LIMIT) stk.top += 1 stk.orient(stk.top) = 1 stk.title(stk.top) = menu.title stk.items(stk.top) = menu.items stk.x.orig(stk.top) = menu.x.orig stk.y.orig(stk.top) = menu.y.orig stk.width(stk.top) = menu.width stk.choices(stk.top) = menu.choices cursor.location = 1 10: call *MTF.INPUT.B(VERTICAL, menu.x.orig, menu.y.orig, menu.width, menu.choices, submenu.flag, menu.help, cursor.location, menu.mneumonic, exit.code,menu.items) BEGIN CASE CASE exit.code=DOWN.ARROW cursor.location += 1 if cursor.location > menu.choices then cursor.location = 1 goto 10: CASE exit.code=UP.ARROW cursor.location -= 1 if cursor.location < 1 then cursor.location = menu.choices goto 10: CASE exit.code=RIGHT.ARROW if submenu.flag then goto 20: else goto 100: CASE exit.code=ESCAPE goto 100: CASE exit.code=F.10 goto 100: CASE exit.code=LEFT.ARROW goto 100: CASE exit.code#SEL.ACTION goto 10: END CASE 20: * enter sub-menu stk.cursor(stk.top) = cursor.location print @(menu.x.orig + 1, menu.y.orig + cursor.location):'<': print @(menu.x.orig + menu.width - 2, menu.y.orig + cursor.location):'>': call *MTF.LOAD.B(menu.actions, VERTICAL, menu.x.orig + menu.width, menu.y.orig + cursor.location, menu.flag, submenu.title, submenu.items, submenu.help, submenu.mneumonic, submenu.x.orig, submenu.y.orig, submenu.width, submenu.choices, submenu.actions, subsubmenu.flag) if menu.flag # '1' then if menu.flag = '0' then print @(-1) prompt saved.prompt pterm.option=0 GOSUB pterm.set break on execute menu.actions break off pterm.option=1 GOSUB pterm.set sleep 2 prompt '' call *MTF.REDRAW.B end else print @(0,LINES-1):menu.flag: end goto 10: end call *MTF.PAINT.B(VERTICAL, submenu.x.orig, submenu.y.orig, submenu.width, submenu.choices,submenu.items) call *MTF.SUB.B( submenu.title, submenu.items, submenu.help, submenu.mneumonic, submenu.x.orig, submenu.y.orig, submenu.width, submenu.choices, submenu.actions, subsubmenu.flag, exit.code) if exit.code = ESCAPE then goto 100: call *MTF.ERASE.B(VERTICAL, submenu.x.orig, submenu.y.orig, submenu.width, submenu.choices) if exit.code = F.10 or exit.code = RIGHT.ARROW then goto 100: stk.cursor(stk.top) = 0 print @(menu.x.orig + 1, menu.y.orig + cursor.location):' ': print @(menu.x.orig + menu.width - 2, menu.y.orig + cursor.location):' ': call *MTF.FIXSCR.B(submenu.x.orig, submenu.y.orig, submenu.width, submenu.choices) goto 10: 100: * pop menu stack and return stk.top -= 1 return pterm.set: IF pterm.option=0 THEN TTYGET tty$ ELSE NULL CRMODE.INLCR=0 CRMODE.IGNCR=0 CRMODE.ICRNL=1 CRMODE.ONLCR=1 CRMODE.OCRNL=0 CRMODE.ONOCR=0 CRMODE.ONLRET=0 ECHO.ON=1 TTYSET tty$ ELSE NULL END ELSE TTYGET tty$ ELSE NULL CRMODE.INLCR=0 CRMODE.IGNCR=0 CRMODE.ICRNL=0 CRMODE.ONLCR=0 CRMODE.OCRNL=0 CRMODE.ONOCR=0 CRMODE.ONLRET=0 ECHO.ON=0 TTYSET tty$ ELSE NULL END RETURN end