Subroutine MTF.REDRAW.B ****************************************************************************** * * Repaint MOTIF menu screen * * 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. * 05/15/96 18330 LDG Changed LEN() function to LENDP() for NLS DBCS. * 05/13/91 8345 DTM Changed print to tprint * 06/28/90 7236 JWT New MOTIF like new capability * ******************************************************************************* * This subroutine repaints all the stacked MOTIF menu objects on the * terminal screen upon return from an executed subprogram. The stacked * menu objects are retrieved from the common data stucture area. The * element stk.top is the number of stacked elements. The other common * data element used are: * * stk.title - menu stack, menu title * * stk.items - menu stack, menu item captions * * stk.x.orig - menu stack, menu x (horizontal) anchor point * * stk.y.orig - menu stack, menu y (vertical) anchor point * * stk.width - menu stack, menu width if vertical; dynamic array of * x start and end points for each caption if horizontal * * stk.cursor - menu stack, menu cursor location * * stk.choices - menu stack, menu number of captions on menu * * By the convention of usage, the bottom stack element (element 1) is * the menubar, and all the rest are menu boxes. id = "%W%" $include UNIVERSE.INCLUDE MTF.INCL.H * Calculate the x position of the menu title, we center the title on the screen * and then adjust the position by one space if the terminal has visable * attributes. title.pos = (COLUMNS - lendp(stk.title(1))) / 2 if VIDEO.SPACES then title.pos -= 1 * Clear screen to remove stuff left by previous program, then display menu * and call MTF.PAINT.B to paint the main menubar tprint @(-1) tprint @(title.pos+lendp(stk.title(1))+1,0):@(-16):@(title.pos,0):@(-15):stk.title(1):@(-16) call *MTF.PAINT.B(1, stk.x.orig(1), stk.y.orig(1), stk.width(1), stk.choices(1), stk.items(1)) * If the cursor position for the menubar is set, display the selection * indicator characters '<' '>' if stk.cursor(1) then tprint @(stk.width(1),stk.y.orig(1)):'<': tprint @(stk.width(1),stk.y.orig(1)):'>': end * Now redisplay each of the open menu boxes in the order they were entered. * This is necessary since we do no real window management. for i = 2 to stk.top call *MTF.PAINT.B(VERTICAL, stk.x.orig(i), stk.y.orig(i), stk.width(i), stk.choices(i), stk.items(i)) if stk.cursor(i) then tprint @(stk.x.orig(i) + 1, stk.y.orig(i) + stk.cursor(i)):'<': tprint @(stk.x.orig(i) + stk.width(i) - 2, stk.y.orig(i) + stk.cursor(i)):'>': end next i return end