323 lines
12 KiB
Plaintext
323 lines
12 KiB
Plaintext
Compile function RDS_LAYER_EVENTS(CtrlEntId, Event, @PARAMS)
|
|
/***********************************************************************************************************************
|
|
|
|
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
|
permission from Infineon.
|
|
|
|
Name : RDS_LAYER_EVENTS
|
|
|
|
Description : This function acts as a commuter module for all events related to this window.
|
|
|
|
Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the
|
|
application-specific promoted event handler. This makes it possible to add QuickEvents that need to
|
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
|
limited to the events which are currently promoted.
|
|
|
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
|
formatted like this:
|
|
|
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
|
|
|
Parameters :
|
|
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
|
Param1-15 [in] -- Additional event parameter holders
|
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
|
EVENT_SETUP insert
|
|
|
|
History : (Date, Initials, Notes)
|
|
10/04/18 djs Created initial commuter module.
|
|
10/12/18 djs Added a check to see if PSN and Reactor are set before attempting to set current run
|
|
parameters. If a Reactor has not yet been assigned to this RDS, then the code fetches
|
|
the scheduled reactor for this work order.
|
|
|
|
***********************************************************************************************************************/
|
|
#pragma precomp SRP_PreCompiler
|
|
#window RDS_LAYER
|
|
|
|
$Insert EVENT_SETUP
|
|
$Insert RDS_EQUATES
|
|
$Insert APP_INSERTS
|
|
$Insert RLIST_EQUATES
|
|
$Insert SECURITY_RIGHTS_EQU
|
|
$Insert DICT_EQUATES
|
|
|
|
EQU COL$MET_NO TO 1
|
|
EQU COL$ZONE TO 2
|
|
EQU COL$THICK_AVG TO 3
|
|
EQU COL$THICK_STDV TO 4
|
|
EQU COL$RES_AVG TO 5
|
|
EQU COL$RES_STDV TO 6
|
|
EQU COL$RES_UNITS TO 7
|
|
EQU COL$OUT_OF_SPEC TO 8
|
|
|
|
EQU HIDDEN$ TO 32
|
|
|
|
Declare subroutine Comm_RDS_Layer, Tool_Parms_Services, Set_Status, RList, Errmsg, Database_Services, Msg
|
|
Declare subroutine PlaceDialog, obj_RDS_Layer, Security_Err_Msg
|
|
Declare function Tool_Parms_Services, Get_Property, Database_Services, Security_Check, MemberOf, Get_EventStatus
|
|
|
|
GoToEvent Event for CtrlEntId else
|
|
// Event not implemented
|
|
end
|
|
|
|
Return EventFlow or 1
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// EVENT HANDLERS
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
Event WINDOW.CREATE(CreateParam)
|
|
|
|
RDSLayerID = CreateParam
|
|
RDSNo = Field(RDSLayerID, '*', 1, 1)
|
|
LayerID = Field(RDSLayerID, '*', 2, 1)
|
|
Set_Property(@Window:'.RDS_NO', 'TEXT', RDSNo)
|
|
Set_Property(@Window:'.LS_ID', 'TEXT', LayerID)
|
|
// Center window in middle of user's screen
|
|
PlaceDialog( -2, -2 )
|
|
Send_Event(@Window, 'READ')
|
|
GoSub Refresh
|
|
|
|
end event
|
|
|
|
|
|
Event WINDOW.READ()
|
|
|
|
CurrRecord = Get_Property(@WINDOW,'RECORD')
|
|
Set_Property(@WINDOW,'@ORG_RECORD',CurrRecord)
|
|
|
|
end event
|
|
|
|
|
|
Event WINDOW.WRITE()
|
|
|
|
CurrRecord = Get_Property(@WINDOW,'RECORD')
|
|
OrgRecord = Get_Property(@WINDOW,'@ORG_RECORD')
|
|
|
|
IF CurrRecord NE OrgRecord THEN
|
|
CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
|
|
NewLine = @USER4:@VM:CurrDTM
|
|
Send_Message(@WINDOW:'.MODIFY_USER', 'INSERT', 1, NewLine)
|
|
END
|
|
|
|
IOOptions = Get_Property(@Window, 'IOOPTIONS')
|
|
IOOptions<6> = 1
|
|
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
|
Set_Status(0)
|
|
Forward_Event()
|
|
errCode = ''
|
|
|
|
If Get_EventStatus(errCode) then
|
|
EventFlow = EVENT_STOP$
|
|
end else
|
|
Post_Event(@WINDOW,'CLOSE')
|
|
end
|
|
|
|
end event
|
|
|
|
|
|
Event PUB_CONFIRM_PARMS.CLICK()
|
|
|
|
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
|
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
|
RDSRec<RDS_RDS_LAYER_ACK$> = True$
|
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
|
Set_Property(@Window:'.PUB_CONFIRM_PARMS', 'ENABLED', False$)
|
|
Set_Property(@Window:'.PUB_CONFIRM_PARMS', 'HELPTEXT', 'Confirmation not required.')
|
|
Post_Event(@Window, 'CLOSE')
|
|
|
|
end event
|
|
|
|
|
|
Event PUB_UPDATE_LIMITS.CLICK()
|
|
|
|
IF Security_Check( 'Recipe', Write$ ) or MemberOf(@User4, 'ENGINEERING_LEAD') or MemberOf(@User4, 'ENGINEERING') THEN
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
|
LSId = Get_Property(@WINDOW:'.LS_ID','DEFPROP')
|
|
|
|
IF RDSNo EQ '' OR LSId EQ '' THEN RETURN
|
|
IOOptions = Get_Property(@Window, 'IOOPTIONS')
|
|
IOOptions<6> = 1
|
|
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
obj_RDS_Layer('UpdateLimits',RDSNo:@RM:LSId)
|
|
IF Get_Status(errCode) THEN ErrMsg(errCode)
|
|
Send_Event(@Window, 'READ')
|
|
|
|
END ELSE
|
|
Security_Err_Msg( 'Recipe', Write$ )
|
|
END
|
|
|
|
end event
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Internal GoSubs
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
ClearCursors:
|
|
|
|
For counter = 0 to 8
|
|
ClearSelect counter
|
|
Next counter
|
|
|
|
return
|
|
|
|
|
|
Refresh:
|
|
|
|
LSId = Get_Property(@WINDOW:'.LS_ID','TEXT')
|
|
|
|
BEGIN CASE
|
|
CASE LSId = 'L1'
|
|
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',RCV_BLUE$)
|
|
|
|
CASE LSId = 'L2'
|
|
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',PRE_BLUE$)
|
|
|
|
CASE LSId = '2'
|
|
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',INP_BLUE$)
|
|
|
|
CASE 1
|
|
Set_Property(@WINDOW:'.LS_ID','BACKCOLOR',KEY_YELLOW$)
|
|
|
|
END CASE
|
|
|
|
Set_Property(@WINDOW:'.OVERRIDE_LIMITS_GROUP','ENABLED',0)
|
|
|
|
RDSNo = Get_Property( @WINDOW:'.RDS_NO', 'DEFPROP' )
|
|
RDSRec = XLATE('RDS',RDSNo,'','X')
|
|
|
|
LayerSetID = Get_Property(@WINDOW:'.LS_ID','DEFPROP')
|
|
|
|
PSNId = RDSRec< RDS_PROD_SPEC_ID$ >
|
|
RecipeNo = Get_Property(@WINDOW:'.RECIPE_NO','DEFPROP')
|
|
|
|
RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY') ;* Entered by user
|
|
RecipeLimits = Get_Property(@WINDOW:'.RECIPE_LIMITS','LIST')<1>
|
|
|
|
CONVERT @VM TO @FM IN RecipeLimits
|
|
|
|
ColCnt = COUNT(RecipeLimits,@FM) + (RecipeLimits NE '') ;* This is 16 columns as of the development of this window
|
|
|
|
RecipeParms = Get_Property(@WINDOW:'.RECIPE_PARMS','ARRAY')
|
|
|
|
ParameterStyles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, '' )
|
|
LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, '' )
|
|
|
|
CONVERT @VM TO '' IN RecipeParms
|
|
|
|
ColNames = Get_Property( @WINDOW:'.RECIPE_PARMS', 'COLUMN' )
|
|
|
|
OutOfSpecCols = ''
|
|
FOR Col = 1 TO ColCnt
|
|
IF RecipeLimits<Col> = '' AND RecipeParms<Col> = '' THEN
|
|
ParameterStyles<Col> = BitOr( ParameterStyles<Col>, HIDDEN$ ) ;* Column not used -> Hide
|
|
LimitStyles<Col> = BitOr( LimitStyles<Col>, HIDDEN$ )
|
|
END ELSE
|
|
ParameterStyles<Col> = BitAnd( ParameterStyles<Col>, BitNot(HIDDEN$) ) ;* Column used -> Show
|
|
LimitStyles<Col> = BitAnd( LimitStyles<Col>, BitNot(HIDDEN$) )
|
|
|
|
LimitData = RecipeLimits<Col>
|
|
ParamData = RecipeParms<Col>
|
|
|
|
ColName = ColNames<1,1,Col>
|
|
Conversion = XLATE('DICT.RDS_LAYER',ColName,DICT_CONV$,'X')
|
|
|
|
SWAP ' ~ ' WITH @VM IN LimitData
|
|
|
|
IF Conversion NE '' THEN
|
|
ParamData = ICONV(ParamData,Conversion)
|
|
LimitData = ICONV(LimitData,Conversion)
|
|
END
|
|
|
|
Minimum = LimitData<1,1>
|
|
Maximum = LimitData<1,2>
|
|
|
|
IF ParamData NE '' THEN
|
|
IF ParamData < Minimum OR ParamData > Maximum THEN
|
|
Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,RED$)
|
|
OutOfSpecCols = INSERT(OutOfSpecCols,Col,0,0,1)
|
|
END ELSE
|
|
Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$)
|
|
END
|
|
END ELSE
|
|
Send_Message(@WINDOW:'.RECIPE_PARMS','COLOR_BY_POS',Col,1,WHITE$)
|
|
END
|
|
|
|
END
|
|
|
|
NEXT Col
|
|
|
|
LOCATE '1' IN OutOfSpecCols USING @FM SETTING Pos THEN
|
|
Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',1)
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.OUT_OF_SPEC','CHECK',0)
|
|
END
|
|
|
|
Parameter_Styles = Send_Message( @WINDOW:'.RECIPE_PARMS', "COLSTYLE", 0, ParameterStyles )
|
|
LimitStyles = Send_Message( @WINDOW:'.RECIPE_LIMITS', "COLSTYLE", 0, LimitStyles )
|
|
|
|
* QBF buttons
|
|
|
|
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
|
|
|
|
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
|
|
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
|
|
END ELSE
|
|
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
|
|
END
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
* Turn edit table symbolic column backgrounds to green
|
|
|
|
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
|
|
|
|
ETCtrls = ETSymbolics<1>
|
|
ETCols = ETSymbolics<2>
|
|
|
|
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
|
|
ETCtrl = ETCtrls<1,I>
|
|
ETList = Get_Property(ETCtrl,'LIST')
|
|
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
|
|
IF ETList<Line,1> NE '' THEN
|
|
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
|
|
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
|
|
NEXT N
|
|
END
|
|
NEXT I
|
|
NEXT I
|
|
|
|
TestList = Get_Property(@WINDOW:'.RDS_TEST_KEYS','LIST')
|
|
|
|
FOR I = 1 TO COUNT(TestList,@FM) + (TestList NE '')
|
|
IF ICONV(TestList<I,COL$OUT_OF_SPEC>,'B') = 1 THEN
|
|
Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,RED$)
|
|
END ELSE
|
|
Send_Message(@WINDOW:'.RDS_TEST_KEYS','COLOR_BY_POS',0,I,WHITE$)
|
|
END
|
|
NEXT I
|
|
|
|
IsTestWafer = Xlate('RDS', RDSNo, 'ON_TW_FREQ', 'X')
|
|
RDSLayerAck = RDSRec<RDS_RDS_LAYER_ACK$>
|
|
If ( (IsTestWafer EQ True$) and ( (RDSLayerAck EQ False$) or (RDSLayerAck EQ '') ) ) then
|
|
Set_Property(@Window:'.PUB_CONFIRM_PARMS', 'ENABLED', True$)
|
|
end else
|
|
Set_Property(@Window:'.PUB_CONFIRM_PARMS', 'ENABLED', False$)
|
|
Set_Property(@Window:'.PUB_CONFIRM_PARMS', 'HELPTEXT', 'Confirmation not required.')
|
|
end
|
|
|
|
RETURN
|
|
|