DIRECTORY Buttons, Commander USING [CommandProc, Register], Process, CKViewerButtons; CKViewerButtonsImpl: PROGRAM IMPORTS CKViewerButtons, Buttons, Process, Commander EXPORTS CKViewerButtons = BEGIN CKViewer: TYPE = CKViewerButtons.CKViewer; CKViewerData: TYPE = CKViewerButtons.CKViewerData; Quit: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.quit _ TRUE; }; Bpp24: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 24; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.twentyfourButton, $WhiteOnBlack]; }; Bpp8: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 8; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.eightButton, $WhiteOnBlack]; }; Bpp4: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 4; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.fourButton, $WhiteOnBlack]; }; Bpp2: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 2; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.twoButton, $WhiteOnBlack]; }; Bpp1: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 1; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.oneButton, $WhiteOnBlack]; }; AChan: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.aToggle _ TRUE; }; BChan: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bToggle _ TRUE; }; Slow: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.slow _ NOT ckv.state.slow; Buttons.SetDisplayStyle[ckv.buttons.slowButton, IF ckv.state.slow THEN $WhiteOnBlack ELSE $BlackOnWhite]; }; Freeze: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ NOT ckv.state.freeze; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, IF ckv.state.freeze THEN $WhiteOnBlack ELSE $BlackOnWhite]; IF NOT ckv.state.freeze THEN { --NOT freeze RESETS Scramble and Roll Buttons.SetDisplayStyle[ckv.buttons.scrambleButton, $BlackOnWhite]; Buttons.SetDisplayStyle[ckv.buttons.rollButton, $BlackOnWhite]; }; }; Scramble: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ TRUE; ckv.state.scramble _ TRUE; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, $WhiteOnBlack]; Buttons.SetDisplayStyle[ckv.buttons.scrambleButton, $WhiteOnBlack]; }; Roll: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ TRUE; ckv.state.roll _ TRUE; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, $WhiteOnBlack]; Buttons.SetDisplayStyle[ckv.buttons.rollButton, $WhiteOnBlack]; }; CKRandom: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.random _ TRUE; SetStaticButtons[ckv, ckv.buttons.randomButton]; }; Symmetric: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.symmetric _ TRUE; SetStaticButtons[ckv, ckv.buttons.symmetricButton]; }; Diag: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.diag _ TRUE; SetStaticButtons[ckv, ckv.buttons.diagButton]; }; TestPattern: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.testPattern _ TRUE; SetStaticButtons[ckv, ckv.buttons.testButton]; }; CBars: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.cbars _ TRUE; SetStaticButtons[ckv, ckv.buttons.cBarsButton]; }; Converge: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.converge _ TRUE; SetStaticButtons[ckv, ckv.buttons.convergeButton]; }; BigRed: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigRed _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigRedButton]; }; BigGreen: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigGreen _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigGreenButton]; }; BigBlue: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigBlue _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigBlueButton]; }; SmallRed: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallRed _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallRedButton]; }; SmallGreen: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallGreen _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallGreenButton]; }; SmallBlue: PUBLIC Buttons.ButtonProc = TRUSTED { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallBlue _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallBlueButton]; }; ResetBPPButtons: PROC [ckv: CKViewer] = TRUSTED { Buttons.SetDisplayStyle[button: ckv.buttons.twentyfourButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.eightButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.fourButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.twoButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.oneButton, style: $BlackOnWhite]; }; SetStaticButtons: PUBLIC PROC [ckv: CKViewer, button: Buttons.Button] = TRUSTED { Buttons.SetDisplayStyle[button: ckv.buttons.randomButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.symmetricButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.diagButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.testButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.cBarsButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.convergeButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigRedButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigGreenButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigBlueButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallRedButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallGreenButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallBlueButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: button, style: $WhiteOnBlack]; }; ForkInit: Commander.CommandProc = TRUSTED { ckViewer: CKViewer; ckViewer _ CKViewerButtons.CreateCKViewer[]; Process.Detach[FORK CKViewerButtons.Go[ckViewer]]; }; Commander.Register[key: "CKViewer", proc: ForkInit, doc: "ColorKinetic with viewer control panel"]; END. xFile: CKViewerButtonsImpl.mesa Last Edited by: Pier, August 9, 1983 10:56 am Wyatt, September 13, 1983 12:17 pm Êì˜Jšœ™™J™J™"—J™šÏk ˜ J˜Jšœ œ˜(Jšœ˜Jšœ˜J˜—Jšœœœ-˜RJšœ˜J˜Jšœ œ˜*šœœ!˜3J™—šœœœ˜+Jšœœ ˜#Jšœœ˜Jšœ˜—J˜šœœœ˜,Jšœœ ˜#Jšœ˜Jšœ˜JšœE˜E˜J˜——šœœœ˜+Jšœœ ˜#Jšœ˜Jšœ˜Jšœ@˜@J˜J˜—šœœœ˜+Jšœœ ˜#Jšœ˜Jšœ˜Jšœ?˜?˜J˜——šœœœ˜+Jšœœ ˜#Jšœ˜Jšœ˜Jšœ>˜>Jšœ˜J˜J˜—šœœœ˜+Jšœœ ˜#Jšœ˜Jšœ˜Jšœ>˜>Jšœ˜J˜—šœœœ˜,Jšœœ ˜#Jšœœ˜Jšœ˜J˜—šœœœ˜,Jšœœ ˜#Jšœœ˜Jšœ˜J˜—šœœœ˜+Jšœœ ˜#Jšœœ˜$Jšœ0œœœ˜iJšœ˜J˜—šœœœ˜-Jšœœ ˜#Jšœœ˜(Jšœ2œœœ˜mšœœœÏc%˜DJšœC˜CJšœ?˜?J˜—Jšœ˜—J˜šœ œœ˜/Jšœœ ˜#Jšœœ˜Jšœœ˜JšœA˜AJšœC˜CJšœ˜—J˜šœœœ˜+Jšœœ ˜#Jšœœ˜Jšœœ˜JšœA˜AJšœ?˜?Jšœ˜—J˜šœ œœ˜/Jšœœ ˜#Jšœœ˜Jšœ0˜0Jšœ˜—šœ œœ˜0Jšœœ ˜#Jšœœ˜Jšœ3˜3Jšœ˜—šœœœ˜+Jšœœ ˜#Jšœœ˜Jšœ.˜.Jšœ˜—J˜šœ œœ˜2Jšœœ ˜#Jšœœ˜Jšœ.˜.Jšœ˜J˜—šœœœ˜,Jšœœ ˜#Jšœœ˜Jšœ/˜/Jšœ˜—J˜šœ œœ˜/Jšœœ ˜#Jšœœ˜Jšœ2˜2Jšœ˜—J˜šœœœ˜-Jšœœ ˜#Jšœœ˜Jšœ0˜0Jšœ˜—J˜šœ œœ˜/Jšœœ ˜#Jšœœ˜Jšœ2˜2Jšœ˜—J˜šœ œœ˜.Jšœœ ˜#Jšœœ˜Jšœ1˜1Jšœ˜—J˜šœ œœ˜/Jšœœ ˜#Jšœœ˜Jšœ2˜2Jšœ˜—J˜šœ œœ˜1Jšœœ ˜#Jšœœ˜Jšœ4˜4Jšœ˜—J˜šœ œœ˜0Jšœœ ˜#Jšœœ˜Jšœ3˜3Jšœ˜—J˜šÏnœœœ˜2JšœT˜TJšœO˜OJšœN˜NJšœM˜MJšœM˜MJ˜—J˜šŸœ œ+œ˜RJšœP˜PJšœS˜SJšœN˜NJšœN˜NJšœO˜OJšœR˜RJšœP˜PJšœR˜RJšœQ˜QJšœR˜RJšœT˜TJšœS˜SJšœ>˜>J˜—J˜šœ"œ˜+J˜J˜,Jšœœ˜2˜J˜——Jšœc˜cJ˜J˜Jšœ˜—…—Ú!>