open-insight/LSL2/STPROC/PACKREACTSTATUSWIN.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

147 lines
2.6 KiB
Plaintext

COMPILE ROUTINE PackReactStatusWin(Dummy)
ROWDEF(CHARSTR)
DECLARE SUBROUTINE Send_Dyn,Send_Info
DECLARE FUNCTION Get_Status, Set_Printer
OPEN 'SYSREPOSWINS' TO RWFile ELSE GOTO Bail
BaseX = 92 ;* Final position
BaseY = 82
*BaseX =102 ;* Expanded position
*BaseY = 92
WindowName = 'REACT_STATUS_EVEN' ; ReactNo = 20
GOSUB Main
WindowName = 'REACT_STATUS_ODD' ; ReactNo = 21
GOSUB Main
GOTO Bail
* * * * * * *
Main:
* * * * * * *
READ WinStruct FROM RWFile,'LSL2**':WindowName ELSE
GOTO Bail
END
Size = FIELD(Winstruct,@RM,1)
Win = FIELD(Winstruct,@RM,2)
Ctrls = FIELD(Winstruct,@RM,3)
Menu = FIELD(Winstruct,@RM,4)
ReactNos = ''
RModes = ''
RWOs = ''
RCusts = ''
Tims = ''
Escs = ''
RPanels = ''
Row = 1
FOR RNo = 1 TO 30
Col = MOD(RNo,5)
IF Col = 0 THEN Col = 5
PanelX = ((Col - 1)*BaseX)
PanelY = ((Row - 1)*BaseY)
RModeX = PanelX + 8 ; RModey = PanelY + 29
RWoX = PanelX + 12 ; RWoY = PanelY + 14
RCustX = PanelX + 11 ; RCustY = PanelY + 62
TimX = PanelX + 45 ; TimY = PanelY + 30
EscX = PanelX + 45 ; EscY = PanelY + 48
LOCATE ReactNo IN ReactNos BY 'AR' USING @FM SETTING Pos ELSE
ReactNos = INSERT(ReactNos,Pos,0,0,ReactNo)
RModes = INSERT(RModes,Pos,1,0,RModeX:@VM:RModeY)
RWOs = INSERT(RWOs,Pos,1,0,RWoX:@VM:RWoY)
RCusts = INSERT(RCusts,Pos,1,0,RCustX:@VM:RCustY)
Tims = INSERT(Tims,Pos,1,0,TimX:@VM:TimY)
Escs = INSERT(Escs,Pos,1,0,EscX:@VM:EscY)
RPanels = INSERT(RPanels,Pos,1,0,PanelX:@VM:PanelY)
END
ReactNo += 2
IF Col = 5 THEN Row += 1
NEXT RNo
OrgCtrls = Ctrls
CtrlCnt = COUNT(Ctrls,@FM)
FOR I = 1 TO CtrlCnt
Ctrl = Ctrls<I>
Name = Ctrl<1,1>
BaseName = Name
Reactor = BaseName[-2,2]
LOCATE Reactor IN ReactNos USING @FM SETTING Offset ELSE
NULL
END
BaseName[-2,2] = ''
BEGIN CASE
CASE BaseName = 'RPANEL' ; CalcPos = RPanels<Offset>
CASE BaseName = 'RMODE' ; CalcPos = RModes<Offset>
CASE BaseName = 'RWO' ; CalcPos = RWOs<Offset>
CASE BaseName = 'RCUST' ; CalcPos = RCusts<Offset>
CASE BaseName = 'TIM' ; CalcPos = Tims<Offset>
CASE BaseName = 'ESC' ; CalcPos = Escs<Offset>
CASE 1 ; CalcPos = 'WTFO'
END CASE
SWAP @VM WITH ',' IN CalcPos
X = Ctrl<1,5>
Y = Ctrl<1,6>
Send_Dyn(Name:' (':X:',':Y:') (':CalcPos:')')
Ctrls<I,5> = CalcPos[1,',']
Ctrls<I,6> = CalcPos[COL2()+1,',']
IF BaseName NE 'RPANEL' THEN
Ctrls<I,9> = Name
END
NEXT I
Winstruct = FIELDSTORE(Winstruct,@RM,3,0,Ctrls)
WRITE WinStruct ON RWFile,'LSL2**':WindowName ELSE
GOTO Bail
END
RETURN
* * * * * * *
Bail:
* * * * * * *
END