<> <> <> DIRECTORY Containers, CKViewerPanel, CKViewerButtons, CKViewerTables, ChoiceButtons, Labels, NumberLabels, IO, Rope, Rules, ViewerIO, ViewerOps, VFonts ; CKViewerPanelImpl: PROGRAM IMPORTS Rules, Labels, NumberLabels, CKViewerPanel, ChoiceButtons, ViewerIO, ViewerOps, VFonts, Containers, Rope, IO EXPORTS CKViewerPanel = { OPEN IO, CKViewerTables; CKViewer: TYPE = CKViewerButtons.CKViewer; panelHTab1: CARDINAL = 20; panelHTab2: CARDINAL = 300; panelSGHTab: CARDINAL = 200; entryHeight: CARDINAL = 14; -- height of a line of items entryVSpace: CARDINAL = 6; -- vertical leading between lines StopGoProc: ChoiceButtons.SelectionNotifierProc = TRUSTED { ckv: CKViewer _ NARROW[clientdata]; IF Rope.Equal[name,"GOING"] THEN CKViewerPanel.StartTest[ckv] ELSE CKViewerPanel.StopTest[]; }; BuildPanel: PUBLIC PROC [ckViewer: CKViewer] = { OPEN ChoiceButtons; rule1, rule2: Rules.Rule; timeString: LONG STRING _ [60]; stopOptions: ButtonList = CONS["STOPPED",CONS["GOING",NIL]]; tableOpOptions: ButtonList = CONS["WriteReadCheck", CONS["WriteRead", CONS["WriteOnly", CONS["ReadAndCheck", CONS["ReadAndShow", CONS["ReadOnly", CONS["Sweep", NIL]]]]]]]; tableOptions: ButtonList = CONS["ALL", CONS["A", CONS["B", CONS["C", NIL]]]]; actionOptions: ButtonList = CONS["Count", CONS["Random", CONS["Fixed", CONS["Cycle", NIL]]]]; reportOptions: ButtonList = CONS["Short", CONS["None", CONS["Long", NIL]]]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; rule1 _ Rules.Create[info: [wx: 0, wy: ckViewer.height, wh: 1, parent: ckViewer.container]]; Containers.ChildXBound[container: ckViewer.container, child: rule1]; ckViewer.height _ ckViewer.height+entryVSpace; ckViewer.panel.passLabel _ Labels.Create[info: [name: "PASSES", wx: panelHTab1, wy: ckViewer.height, parent: ckViewer.container]]; ckViewer.panel.passCount _ NumberLabels.CreateNumber[info: [wx: ckViewer.panel.passLabel.wx+ckViewer.panel.passLabel.ww+6, wy: ckViewer.height, parent: ckViewer.container, border: FALSE], chars: 10]; ckViewer.panel.stopGo _ BuildEnumTypeSelection[viewer: ckViewer.container, x: panelSGHTab, y: ckViewer.height, title: "STOP/GO", buttonNames: stopOptions, default: "STOPPED", borderOnButtons: TRUE, notifyClientProc: StopGoProc, permit: NIL, clientdata: ckViewer, style: flipThru, allInOneRow: TRUE, maxWidth: LAST[INTEGER]]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; ckViewer.panel.tableOp _ BuildEnumTypeSelection[viewer: ckViewer.container, x: panelHTab1, y: ckViewer.height, title: "Read/Write", buttonNames: tableOpOptions, default: "WriteReadCheck", borderOnButtons: FALSE, notifyClientProc: NIL, permit: NIL, clientdata: ckViewer, style: flipThru, allInOneRow: TRUE, maxWidth: 200]; ckViewer.panel.table _ BuildEnumTypeSelection[viewer: ckViewer.container, x: panelHTab2, y: ckViewer.height, title: "Table", buttonNames: tableOptions, default: "ALL", borderOnButtons: TRUE, notifyClientProc: NIL, permit: NIL, clientdata: ckViewer, style: flipThru, allInOneRow: TRUE, maxWidth: 200]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; ckViewer.panel.action _ BuildEnumTypeSelection[viewer: ckViewer.container, x: panelHTab1, y: ckViewer.height, title: "PatternAction", buttonNames: actionOptions, default: "Random", borderOnButtons: TRUE, notifyClientProc: NIL, permit: NIL, clientdata: ckViewer, style: flipThru, allInOneRow: TRUE, maxWidth: 200]; ckViewer.panel.pattern _ BuildTextPrompt[viewer: ckViewer.container, x: panelHTab2, y: ckViewer.height, title: "Pattern", default: "123456B", font: VFonts.defaultFont, textViewerWidth: 300, clientdata: ckViewer, notify: NIL, permit: NIL]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; ckViewer.panel.firstAddr_ BuildTextPrompt[viewer: ckViewer.container, x: panelHTab1, y: ckViewer.height, title: "First Address:", default: "0000B", font: VFonts.defaultFont, textViewerWidth: 100, clientdata: ckViewer, notify: NIL, permit: NIL]; ckViewer.panel.lastAddr_ BuildTextPrompt[viewer: ckViewer.container, x: panelHTab2, y: ckViewer.height, title: "Last Address:", default: "1777B", font: VFonts.defaultFont, textViewerWidth: 100, clientdata: ckViewer, notify: NIL, permit: NIL]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; ckViewer.panel.incAddr_ BuildTextPrompt[viewer: ckViewer.container, x: panelHTab1, y: ckViewer.height, title: "Address Increment:", default: "1", font: VFonts.defaultFont, textViewerWidth: 100, clientdata: ckViewer, notify: NIL, permit: NIL]; ckViewer.panel.report _ BuildEnumTypeSelection[viewer: ckViewer.container, x: panelHTab2, y: ckViewer.height, title: "Reports", buttonNames: reportOptions, default: "Long", borderOnButtons: TRUE, notifyClientProc: NIL, permit: NIL, clientdata: ckViewer, style: flipThru, allInOneRow: TRUE, maxWidth: 200]; ckViewer.height _ ckViewer.height+entryVSpace+entryHeight; rule2 _ Rules.Create[info: [wx: 0, wy: ckViewer.height, wh: 1, parent: ckViewer.container]]; Containers.ChildXBound[container: ckViewer.container, child: rule2]; ckViewer.height _ ckViewer.height+entryVSpace; ckViewer.panel.script _ ViewerOps.CreateViewer[flavor: $Typescript, info: [name: "ColorTableTest", wx: 0, wy: ckViewer.height, iconic: FALSE, parent: ckViewer.container, border: FALSE]]; Containers.ChildXBound[container: ckViewer.container, child: ckViewer.panel.script]; Containers.ChildYBound[container: ckViewer.container, child: ckViewer.panel.script]; [in: , out: ckViewer.panel.stream] _ ViewerIO.CreateViewerStreams[name: NIL, viewer: ckViewer.panel.script, editedStream: FALSE]; IO.Put[stream: ckViewer.panel.stream, v1: IO.rope["Color Table Tester of August 16, 1983 on "], v2: IO.time[], v3: IO.rope["\n"]]; }; }.