DIRECTORY CD, CDApplications, CDCommands, CDCommandOps, CDOps, CDOrient, CDSequencer, TerminalIO, CDInline; CDSelectCommands: CEDAR PROGRAM IMPORTS CDApplications, CDCommandOps, CDCommands, CDOps, CDSequencer, TerminalIO, CDInline = BEGIN SelectExclusive: PROC [comm: CDSequencer.Command] = BEGIN TerminalIO.WriteRope["Select pointed"]; CDCommands.DeselectAll[comm.design]; CDCommands.Select[comm.design, comm.pos]; TerminalIO.WriteLn[]; END; ReSelect: PROC [design: CD.Design, pos: CD.DesignPosition, verbose: BOOL_TRUE] RETURNS [done: BOOL_TRUE] = BEGIN Deselect: PROC[a: CD.ApplicationPtr] = INLINE BEGIN IF a.selected THEN { a.selected _ FALSE; CDOps.DelayedRedraw[design, CDApplications.ARectO[a], TRUE] } END; DeselectList: PROC[list: CD.ApplicationList] = BEGIN FOR w: CD.ApplicationList _ list, w.rest WHILE w#NIL DO Deselect[w.first] ENDLOOP END; ap: CD.ApplicationPtr _ NIL; --any application where pos points to FOR w: CD.ApplicationList _ CDOps.AppList[design], w.rest WHILE w#NIL DO IF CDApplications.PointToO[pos, w.first] AND CDApplications.PointToI[pos, w.first] THEN { IF w.first.selected THEN { DeselectList[w.rest]; CDOps.ReOrderApplication[design, w.first]; IF verbose THEN CDCommandOps.WriteInfo[w.first]; RETURN } ELSE IF ap=NIL THEN ap _ w.first } ELSE Deselect[w.first] ENDLOOP; IF ap#NIL THEN { ap.selected _ TRUE; CDOps.ReOrderApplication[design, ap]; CDOps.DelayedRedraw[design, CDApplications.ARectO[ap], FALSE]; IF verbose THEN CDCommandOps.WriteInfo[ap] } ELSE { done _ FALSE; IF verbose THEN TerminalIO.WriteRope[" (no object)"]; } END; RectDist: PROC[pos: CD.DesignPosition, r: CD.Rect] RETURNS [CD.DesignNumber] = BEGIN RETURN [MAX[ (IF pos.xr.x2 THEN (pos.x-r.x2) ELSE 0), (IF pos.yr.y2 THEN (pos.y-r.y2) ELSE 0) ]] END; CloseReSelect: PROC [design: CD.Design, pos: CD.DesignPosition, verbose: BOOL_TRUE, dist: CD.DesignNumber_100] = BEGIN IF ~ReSelect[design, pos, verbose] THEN { ap: CD.ApplicationPtr _ NIL; FOR w: CD.ApplicationList _ CDOps.AppList[design], w.rest WHILE w#NIL DO d: CD.DesignNumber = RectDist[pos, CDApplications.ARectI[w.first]]; IF dJšžœ žœ˜*J˜—šžœ˜Jšœžœ˜ Jšžœ žœ'˜6J˜—Jšžœ˜J˜—š Ÿœžœžœžœžœžœ˜NJ™*Jšž˜šžœžœ˜ Jš œžœ žœžœžœ žœžœ˜NJš œžœ žœžœžœ žœžœ˜MJ˜—Jšžœ˜—J˜šŸ œžœ žœžœžœžœžœ˜pJšž˜šžœ!žœ˜)Jšœžœžœ˜š žœžœ1žœžœž˜HJšœžœ>˜CJšžœžœ˜'Jšžœ˜—šžœžœžœ˜Jšœžœ˜Jšœ7žœ˜>šžœ žœ˜Jšœ+˜+Jšœ˜J˜—J˜—J˜—Jšžœ˜J˜—šŸœžœ˜5Jšœ'™'J™TJšž˜J˜+Jšœ%˜%J˜Jšžœ˜J˜—šŸœžœ˜8Jšœ'™'J™TJ™"Jšž˜J˜,Jšœ*žœ˜4J˜Jšžœ˜J˜—J˜J˜šŸœžœ˜3Jšž˜J˜,J˜*Jšžœ˜J˜—šŸ œžœ žœžœžœžœžœžœžœ˜nJšžœ˜Jšœžœžœ˜š žœžœ1žœžœž˜Hšžœžœ˜Jšžœ žœ'žœ˜GJ˜—Jšžœ˜—šžœžœžœ˜Jšœžœ˜Jšœžœ˜ Jšœ8˜8J˜—Jšžœ˜J˜—šŸœžœ˜8Jšž˜J˜,Jšœ)žœ˜.Jšžœ˜J˜—šŸ œžœ˜0Jšž˜J˜)J˜)J˜Jšžœ˜J˜—šŸ œžœ˜/Jšž˜J˜(J˜#Jšžœ˜J˜—šŸœžœ˜2Jšž˜J˜+J˜&Jšžœ˜J˜—šŸ œžœ˜1Jšž˜J˜*J˜/Jšžœ˜J˜—šŸ œžœ˜-Jšž˜J˜&J˜!Jšžœ˜—J˜šŸ œžœ˜1Jšž˜J˜1JšœH˜HJšžœ˜—J˜šŸ œžœ˜.Jšœ™Jšž˜šžœžœ˜J˜,Jšœ)˜)J˜Jšœ˜—šžœ˜J˜,JšœH˜HJ˜—Jšžœ˜—J˜šŸœžœ˜9Jšž˜J˜5JšœIžœ˜NJšžœ˜—J˜šŸœžœ˜2Jšž˜J˜1Jšœ$˜$JšœH˜HJšžœ˜—J˜šŸ œžœ˜-Jšœ™Jšž˜J˜$Jšžœžœ+˜EJšžœK˜OJšžœ˜—J˜šŸ œžœ˜0Jšž˜J˜)JšœJ˜JJšžœ˜—J˜šŸœžœ˜8Jšž˜J˜-JšœKžœ˜PJšžœ˜—J˜JšœF˜FJšœJ˜JJšœR˜RJšœB˜BJ˜JšœR˜RJšœJ˜JJšœE˜EJšœ@˜@Jšœ>˜>JšœH˜HJ˜JšœF˜FJšœV˜VJšœ@˜@J˜JšœD˜DJšœT˜TJšœ>˜>Jšžœ˜—…—f&`