// Text of project PeriodicElements written on 11/21/95 at 4:01 PM // Beginning of file PeriodicElements Layout // Before Script for "myapp" // Copyright © 1995 by Apple Computer, Inc. All rights reserved. myapp := {title: "PeriodicElements", viewBounds: {left: 0, top: 10, right: 220, bottom: 245}, viewFormat: 83951953, AlarmsEnabled: func() begin true; // alarms will always be enabled. end, PeriodicAlarm: func(alarm) begin write("PeriodicElements Alarm called: "); print(alarm); // ensure we are open (only needed if there is an app user interface for the alarm // or the alarms behavior is implemented by views which must be open if not Visible(self) then :Open(); :SysBeep(); :SysBeep(); :SysBeep(); SetValue(lastReported, 'text, "Last Alarm:" && DateNTime(Time())); // we will be automatically called the next time end, myEditor: // holds a reference to editor view (so we can close in viewQuitScript) , viewQuitScript: // must return the value of inherited:?viewQuitScript(); func() begin if myEditor then begin myEditor:Close(); myEditor := nil; end; inherited:?viewQuitScript(); // this method is defined internally end, debug: "myapp", _proto: @157 }; editAlarms := { buttonClickScript: func() begin local editor := { _proto: protoPeriodicAlarmEditor, ownerName: kAppName, // do not translate ownerSymbol: kAppSymbol, title: "Auto Beep", viewQuitScript: func() SetValue(base, 'myEditor, nil), // nil out myEditor slot }; // we need to keep track of the opened editor view, so we can close it when // our app closes. So use a slot in the base view ('myEditor) to track it. if not myEditor then myEditor := BuildContext(editor); myEditor:Open(); end, text: "Auto Beep Editor", viewBounds: {left: 58, top: 34, right: 166, bottom: 54}, debug: "editAlarms", _proto: @226 }; AddStepForm(myapp, editAlarms); currentDate := {text: "Static Text", viewBounds: {left: 24, top: 128, right: 192, bottom: 152}, viewSetupDoneScript: func() begin :SetupIdle(1); // start our idle routine end, viewIdleScript: func() begin // This is a fairly ugly way to display the time in seconds. However, you usually do // not want to be displaying the time in seconds anyway... but for this sample it is handy. SetValue(self, 'text, "It is now" && DateNTime(time()) && $( & TimeInSeconds() mod 60 & $) ); 500; // Return the number of milliseconds to delay or nil to end idling. end, viewJustify: 8388610, debug: "currentDate", _proto: @218 }; AddStepForm(myapp, currentDate); lastReported := {text: "", viewBounds: {left: 8, top: 64, right: 216, bottom: 88}, debug: "lastReported", _proto: @218 }; AddStepForm(myapp, lastReported); StepDeclare(myapp, lastReported, 'lastReported); jumpBack := { buttonClickScript: func() begin SetTime(time() - 60 * 24); end, text: "Jump -1 Day", viewBounds: {left: 18, top: 162, right: 102, bottom: 182}, debug: "jumpBack", _proto: @226 }; AddStepForm(myapp, jumpBack); jumpForward := { buttonClickScript: func() begin SetTime(time() + 60 * 24); end, text: "Jump 1 Day", viewBounds: {left: 122, top: 162, right: 206, bottom: 182}, debug: "jumpForward", _proto: @226 }; AddStepForm(myapp, jumpForward); jumpBackMinute := { buttonClickScript: func() begin SetTime(time() - 1); end, text: "Jump -1 Minute", viewBounds: {left: 18, top: 192, right: 102, bottom: 212}, debug: "jumpBackMinute", _proto: @226 }; AddStepForm(myapp, jumpBackMinute); jumpForwardMinute := { buttonClickScript: func() begin SetTime(time() + 1); end, text: "Jump 1 Minute", viewBounds: {left: 122, top: 192, right: 206, bottom: 212}, debug: "jumpForwardMinute", _proto: @226 }; AddStepForm(myapp, jumpForwardMinute); constant |layout_PeriodicElements Layout| := myapp; // End of file PeriodicElements Layout