home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-19 | 19.8 KB | 745 lines | [TEXT/MPS ] |
- // Text of project PreeferMadnessTNG written on 2/19/96 at 8:17 PM
- // Beginning of text file AppConstants.f
- // Copyright © 1993 - 1996 Apple Computer, Inc. All rights reserved.
- /*
- Application constants for PreeferMadnessTNG
-
- constants for:
- app preferences
- start sound
- */
-
-
- // prefs constants
-
- DefConst('kPrefsFrame, // default prefs settings
- {tag: kAppString,
- version: 1,
- startWithSound: nil,
- onePrefOnly: true,
- philospherIndex: 0,
- });
-
- constant kPreferenceTitle := "Preefer Preferences" ;
- constant kApplicationPreferenceTitle := "Application" ;
-
-
- // philisophical constants
- DefConst('kPhilPicker,
- ["None", 'pickSeparator, "Plato", "Aristotle",
- "Descartes", "Mill", "Tsunemoto", "Nietzsche",
- "Marx", "Wittgenstien", "Heidegger", "Russell", "Popper", "Dr. Llama"]) ;
-
-
- // start sound
- r := OpenResFileX("PreeferMadness.rsrc");
- DefConst('kStartSound, GetSound("Oh la la")) ;
- CloseResFileX(r) ;
- // End of text file AppConstants.f
- // Beginning of file protoPrefsOverview
- _userproto000 :=
- {viewBounds: {left: 0, top: 0, right: 224, bottom: 220},
- viewFlags: 548,
- viewJustify: 80,
- prefItemsArray:
- // user of this proto MUST provide this!
- // an array of protoPrefRollItem's that are the preferences
- // of the application
- nil,
- OpenPref:
- DefConst( 'kPrefFrame, {
- _proto: protoFloatngo,
-
- viewJustify: vjParentLeftH + vjParentTopV,
-
- viewBounds: nil,
-
- stepChildren: nil,
-
- ReorientToScreen: ROM_DefRotateFunc,
-
- viewSetupDoneScript: func()
- begin
- local myBounds := :LocalBox();
- local prefBounds ;
-
- foreach kid in :ChildViewFrames() do
- if kid._proto = prefPanelProto then
- prefBounds := kid:LocalBox() ;
-
- if prefBounds AND myBounds.bottom < prefBounds.bottom then
- SetValue(self, 'viewBounds, RelBounds(0, 0, myBounds.right, prefBounds.bottom)) ;
- end,
- });
-
- func(prefPanel)
- begin
- local item := BuildContext( kPrefFrame );
-
- // pref panel will be attached to the root view, but want
- // to center it inside the parent view or overview
- item.viewBounds := RelBounds(:GlobalBox().left,
- :GlobalBox().top + :LocalBox().bottom DIV 2 - prefPanel.height DIV 2,
- :LocalBox().right, prefPanel.height) ;
-
- item.stepChildren := item.viewChildren;
- item.viewChildren := [prefPanel];
- item.prefPanelProto := prefPanel ;
-
- item:Open();
- return item;
- end,
- openChild: nil,
- viewQuitScript:
- func()
- begin
- if openChild then
- openChild:Close();
- inherited:?viewQuitScript(); // this method might be defined internally
- end,
- _proto: @180
- };
-
- _view000 :=
- {viewBounds: {left: 14, top: 4, right: 94, bottom: 20},
- viewSetupFormScript:
- func()
- begin
- if title then
- self.title := title ;
- else
- self.title := defaultTitle ;
-
- inherited:?viewSetupFormScript(); // this method is defined internally
- end,
- defaulttitle: "Preferences",
- _proto: @229
- };
- AddStepForm(_userproto000, _view000);
-
-
-
- _view001 :=
- {viewBounds: {left: 0, top: 16, right: 0, bottom: -16},
- viewFlags: 517,
- viewJustify: 240,
- cursor:
- {
- items: nil,
-
- index: 0,
-
- NumItems: func()
- Length(items),
-
- Entry: func()
- begin
- if index < Length(items) then
- items[index];
- end,
-
- Next: func()
- if index < Length(items)-1 then
- begin
- index := index + 1;
- items[index];
- end,
-
- Move: func(delta)
- begin
- index := Min(Max(index + delta, 0), Length(items)-1) ;
- items[index];
- end,
-
- Reset: func()
- index := 0,
-
- Clone: func()
- Clone(self),
-
- GetIndexEntry: func(theIndex)
- items[theIndex],
- },
- selectIndent: 0,
- Abstract:
- constant kIconPrefSpace := 25;
-
- r := OpenResFileX("PreeferMadness.rsrc");
- DefConst('kPrefsDefaultIcon, GetPictAsBits("defaultPrefIcon", nil));
- CloseResFileX(r);
-
- func(pref,bbox)
- begin
- [
- MakeText(pref.overview, bbox.left + kIconPrefSpace, bbox.top, bbox.right, bbox.top + 11),
- if pref.icon then
- OffsetShape(MakeShape(pref.icon),
- bbox.left + (kIconPrefSpace - pref.icon.bounds.right) DIV 2,
- bbox.top + (kIconPrefSpace - pref.icon.bounds.bottom) DIV 2);
- else
- OffsetShape(
- MakeShape(kPrefsDefaultIcon),
- bbox.left + (kIconPrefSpace - kPrefsDefaultIcon.bounds.right) DIV 2,
- bbox.top + kPrefsDefaultIcon.bounds.bottom DIV 2),
- ]
- end,
- HitItem:
- func(hitIndex, xcoord, ycoord)
- begin
- // find the actual item hit
- // i.e., compensate for any scrolling offset
- local realIndex := hitIndex + topIndex;
- if openChild then
- openChild:Close();
-
- openChild := :OpenPref(cursor:GetIndexEntry(realIndex));
- end,
- Scroller:
- func(dir)
- begin
- local newIndex := Min(Max(topIndex + dir, 0), cursor:NumItems()-1);
- local realDir := topIndex - newIndex ;
-
- // can get called when the list is at the top or
- // bottom, so check if we need to do real work
- if realDir <> 0 then
- begin
- // update the index for the item at the top of the display
- topIndex := newIndex ;
-
- // let viewSetupChildrenScript do the work
- :RedoChildren();
- end ;
- end,
- topIndex:
- // index of the item that is currently at the
- // top of the displayed items
- 0,
- viewSetupChildrenScript:
- // Required
- // use SetupAbstracts to setup the pictures shown
- func()
- begin
- // can get called when a scroll occurs
- // so clone off the cursor and move
- // it so that the first item is the
- // current top of the displayed items
- local curs := cursor:Clone();
-
- curs:Reset();
- curs:Move(topIndex);
- :SetupAbstracts(curs);
- end,
- viewSetupFormScript:
- func()
- begin
- // only need to setup cursor if not already there
- // i.e., viewSetupFormScript may get called multiple times
- if IsReadOnly(cursor) then
- begin
- cursor := {_proto: cursor,
- items: prefItemsArray};
- end ;
- end,
- nothingCheckable: true,
- autoDeselect: true,
- lineHeight: 16,
- _proto: @191
- };
- AddStepForm(_userproto000, _view001);
-
-
-
- // After Script for "_userproto000"
- thisView := _userproto000;
- // Copyright ©1996 Apple Computer, Inc. All rights reserved.
- nil
-
-
- constant |layout_protoPrefsOverview| := _userproto000;
- // End of file protoPrefsOverview
- // Beginning of file PreeferFormulaItem
-
- // Before Script for "_userproto001"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- _userproto001 :=
- {viewBounds: {left: 0, top: 22, right: 240, bottom: 88},
- overview: "Preefer Formula Overview Title",
- title: "Preefer Formula Panel Title",
- _proto: @180
- };
-
- _view002 := {viewBounds: {left: 5, top: 6, right: 77, bottom: 22}, _proto: @229}
- ;
- AddStepForm(_userproto001, _view002);
-
-
-
- _view003 :=
- {viewBounds: {left: 16, top: 32, right: 200, bottom: 56},
- viewFlags: 1,
- text: "42",
- label: "Enter the answer:",
- entryFlags: 10753,
- viewSetupFormScript:
- func()
- begin
- // make the entry line ignore spaces
- inherited:?viewSetupFormScript();
- entryLine.textFlags := vNoSpaces ;
- end,
- _proto: @189
- };
- AddStepForm(_userproto001, _view003);
-
-
-
-
- constant |layout_PreeferFormulaItem| := _userproto001;
- // End of file PreeferFormulaItem
- // Beginning of file PreeferAutoPrefsItem
-
- // Before Script for "PrefsPanelBase"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- PrefsPanelBase :=
- {viewBounds: {left: 0, top: 0, right: 0, bottom: 40},
- overview: "Preefer Prefs",
- text: "Preefer Prefs",
- prefsEntry: nil,
- viewQuitScript:
- func()
- begin
-
- //nil out slots to allow for GC
- prefsEntry := nil;
-
- end,
- height: 40,
- icon: GetPictAsBits("SmallPreeferIcon", nil),
- viewSetupFormScript:
- func()
- begin
- prefsEntry := GetAppPrefs(kAppSymbol, kPrefsFrame) ;
-
- //IMPORTANT to call the inherited ViewSetupDoneScript in our proto
- inherited:?viewSetupFormScript();
- end,
- debug: "PrefsPanelBase",
- _proto: @385
- };
-
- soundCheckbox :=
- {text: "Start with sound",
- viewBounds: {left: 24, top: 16, right: 192, bottom: 32},
- buttonValue: true,
- valueChanged:
- func()
- begin
- prefsEntry.startWithSound := viewValue;
- EntryChange(prefsEntry);
- end,
- viewValue: nil,
- viewSetupFormScript:
- func()
- begin
- viewValue := prefsEntry.startWithSound ;
- end,
- debug: "soundCheckbox",
- _proto: @164
- };
- AddStepForm(PrefsPanelBase, soundCheckbox);
- StepDeclare(PrefsPanelBase, soundCheckbox, 'soundCheckbox);
-
-
-
-
- constant |layout_PreeferAutoPrefsItem| := PrefsPanelBase;
- // End of file PreeferAutoPrefsItem
- // Beginning of file PreeferPhilPrefItem
-
- // Before Script for "_userproto002"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- _userproto002 :=
- {viewBounds: {left: 0, top: 0, right: 0, bottom: 35},
- height: 35,
- overview: "Philisophical Leaning",
- text: "Philisophical Leaning",
- icon: nil,
- prefsEntry: nil,
- viewSetupFormScript:
- func()
- begin
- prefsEntry := GetAppPrefs(kAppSymbol, kPrefsFrame);
- inherited:?viewSetupFormScript();
- end,
- _proto: @385
- };
-
- _view004 :=
- {viewBounds: {left: 25, top: 17, right: 207, bottom: 39},
- labelCommands: kPhilPicker,
- text: "Philosopher",
- textSetup:
- func()
- begin
- labelCommands[prefsEntry.philosopherIndex] ;
- end,
- labelActionScript:
- func(cmd)
- begin
- prefsEntry.philosopherIndex := cmd;
- EntryChange(prefsEntry);
- GetRoot().(kAppSymbol):RevisePhilosophy();
- end,
- _proto: @190
- };
- AddStepForm(_userproto002, _view004);
-
-
-
-
- constant |layout_PreeferPhilPrefItem| := _userproto002;
- // End of file PreeferPhilPrefItem
- // Beginning of file PreeferAppPrefsItems
-
- // Before Script for "_userproto003"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- _userproto003 :=
- {viewBounds: {left: 0, top: 0, right: 0, bottom: 50},
- height: 50,
- icon: nil,
- prefsEntry: nil,
- viewSetupFormScript:
- func()
- begin
- prefsEntry := GetAppPrefs(kAppSymbol, kPrefsFrame);
-
- // hack code, see the comment in the overview slot
- if prefsEntry.onePrefOnly then
- overview := kPreferenceTitle ;
-
- inherited:?viewSetupFormScript();
- end,
- overview:
- // Some hacking occurs here :-)
-
- // Since this sample demos either one pref or multiple prefs,
- // we need to change the title of this preference on the fly.
- // However, the protoPrefsOverview will construct the abstract for
- // the overview based on an uninstantiated template... i.e., the
- // viewSetupFormScript of this template will not run before the
- // abstract is constructed.
-
- // The bottom line is that this is the overview text for the
- // multiple pref case.
-
- kApplicationPreferenceTitle,
- text: "Is this slot used?",
- _proto: @385
- };
-
- soundCheckbox :=
- {text: "Start with sound",
- viewBounds: {left: 32, top: 16, right: 200, bottom: 32},
- buttonValue: true,
- valueChanged:
- func()
- begin
- prefsEntry.startWithSound := viewValue;
- EntryChange(prefsEntry);
- end,
- viewSetupFormScript:
- func()
- begin
- viewValue := prefsEntry.startWithSound ;
- end,
- debug: "soundCheckbox",
- _proto: @164
- };
- AddStepForm(_userproto003, soundCheckbox);
-
-
-
- onePrefItemOnlyCheckbox :=
- {text: "Only One Preference",
- viewBounds: {left: 32, top: 32, right: 200, bottom: 48},
- buttonValue: true,
- valueChanged:
- func()
- begin
- prefsEntry.onePrefOnly := viewValue;
- EntryChange(prefsEntry);
- end,
- viewSetupFormScript:
- func()
- begin
- viewValue := prefsEntry.onePrefOnly ;
- end,
- debug: "onePrefItemOnlyCheckbox",
- _proto: @164
- };
- AddStepForm(_userproto003, onePrefItemOnlyCheckbox);
-
-
-
-
- constant |layout_PreeferAppPrefsItems| := _userproto003;
- // End of file PreeferAppPrefsItems
- // Beginning of file PreeferSinglePrefFloater.t
-
- // Before Script for "_view005"
- // Copyright © 1996 Apple Computer, Inc. All rights reserved.
-
-
- _view005 :=
- {viewBounds: {left: 0, top: 0, right: 224, bottom: 50},
- viewJustify: 80,
- _proto: @180
- };
-
- _view006 := {_proto: _userproto003};
- AddStepForm(_view005, _view006);
-
-
-
-
- constant |layout_PreeferSinglePrefFloater.t| := _view005;
- // End of file PreeferSinglePrefFloater.t
- // Beginning of file PreeferMultiplePrefsOverview.t
-
- // Before Script for "_view007"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- _view007 :=
- {title: kPreferenceTitle,
- prefItemsArray:
- // MUST provide this!
- // an array of protoPrefRollItem's that are the preference items
-
- [GetLayout("PreeferAppPrefsItems"), GetLayout("PreeferPhilPrefItem")];,
- viewBounds: {left: 0, top: 0, right: 224, bottom: 65},
- _proto: _userproto000
- };
-
-
- constant |layout_PreeferMultiplePrefsOverview.t| := _view007;
- // End of file PreeferMultiplePrefsOverview.t
- // Beginning of file PreeferMadness.t
-
- // Before Script for "MyBase"
- // Copyright © 1993-6 Apple Computer, Inc. All rights reserved.
-
-
- MyBase :=
- {viewBounds: {left: 0, top: 0, right: 240, bottom: 336},
- viewSetupFormScript:
- func()
- begin
- // Resize the app to fill the screen.
- // This will look very odd on watch-size or whiteboard-sized Newton
- // devices, but then again this sample isn't exactly useful to a user...
- local l := GetAppParams() ;
- self.viewBounds := RelBounds(l.appAreaLeft, l.appAreaTop, l.appAreaWidth, l.appAreaHeight);
-
- prefsEntry := GetAppPrefs(kAppSymbol, kPrefsFrame) ;
- if prefsEntry.startWithSound then
- PlaySound(kStartSound);
- end,
- viewQuitScript:
- func()
- begin
-
- //nil out slots to allow for GC
- prefsEntry := nil;
-
- end,
- prefsEntry:
- // will be the our entry from the system preferences soup
- // set in protoApp.viewSetupFormScript
- nil,
- viewFlags: 4,
- viewFormat: 328017,
- declareSelf: 'base,
- currentPrefsVersion: 1,
- DoInfoPrefs:
- func()
- begin
- // if we have multiple preferences, open a prefs overview
- // otherwise just open the pref
-
- if prefsEntry.onePrefOnly then
- SinglePref:Open();
- else
- // open up the preferences overview
- PrefsOverview:Open();
-
- end,
- RevisePhilosophy:
- func()
- begin
- philView:RevisePhilosophy();
- end,
- ReorientToScreen: ROM_DefRotateFunc,
- viewJustify: 16,
- title: kAppName,
- debug: "MyBase",
- viewClass: 74
- };
-
- _view008 :=
- {viewBounds: {left: -6, top: 2, right: 74, bottom: 18}, _proto: @229};
- AddStepForm(MyBase, _view008);
-
-
-
- _view009 := {menuLeftButtons: [protoInfoButton], _proto: @401};
- AddStepForm(MyBase, _view009);
-
-
-
- PhilView :=
- {text: "",
- viewBounds: {left: 2, top: 42, right: 242, bottom: 218},
- viewJustify: 0,
- viewFont: {family: 'NewYork, face: kFaceBold, size: 14},
- viewSetupFormScript:
- func()
- begin
- if prefsEntry.philosopherIndex then
- text := philText[prefsEntry.philosopherIndex] ;
- else
- begin
- prefsEntry.philosopherIndex := 0 ;
- EntryChange(prefsEntry) ;
- text := "";
- end;
- end,
- philText:
- ["","",
- // Plato
- "There is an objective ideal Llama form of which all manifistations are just shadows",
- // Aristotle
- "Every Llama can be classified into one of a finite number of sub-types of Llamas",
- // Rene Descartes
- "I think, therefore there must be Llamas",
- // John Stuart Mill
- "It is up to the free will of the individual to believe in Llamas or not",
- // Tsunemoto
- "It does not matter if Llamas exist or not, it only matters than an individual live by the way of courage",
- // Nietzsche
- "The Llama is dead!",
- // Marx
- "To each Llama according to its needs, from each according to its abilities",
- // Wittgenstien
- "It is futile to talk about Llamas because we will never agree on what the concept means",
- // Heidegger
- "There is no objective ideal Llama, each individual's concept of Llama is made up of their own experiences of and about Llamas",
- // Russell
- "With the help of mathematics we have discovered that Llamas are not valid constructs",
- // Popper
- "The question of the verification of Llamas depends upon the ability to falsify that Llamas do not exist",
- // Dr. Llama
- "I am the Llama",
- ],
- RevisePhilosophy:
- func()
- begin
- SetValue(self, 'text, philText[prefsEntry.philosopherIndex]) ;
- end,
- debug: "PhilView",
- _proto: @218
- };
- AddStepForm(MyBase, PhilView);
- StepDeclare(MyBase, PhilView, 'PhilView);
-
-
-
- _view010 :=
- {
- text:
- "Click on the Info button and choose \"Prefs\" to set the application preferences"
- ,
- viewBounds: {top: -65, left: 10, right: 154, bottom: -20},
- viewJustify: 128,
- viewFont: ROM_fontsystem10,
- _proto: @218
- };
- AddStepForm(MyBase, _view010);
-
-
- PrefsOverview := LinkedSubview(_view007,
- {viewBounds: {left: 2, top: 218, right: 122, bottom: 258},
- debug: "PrefsOverview"
- });
- AddStepForm(MyBase, PrefsOverview);
- StepDeclare(MyBase, PrefsOverview, 'PrefsOverview);
- SinglePref := LinkedSubview(_view005,
- {viewBounds: {left: 130, top: 218, right: 234, bottom: 258},
- debug: "SinglePref"
- });
- AddStepForm(MyBase, SinglePref);
- StepDeclare(MyBase, SinglePref, 'SinglePref);
-
-
- constant |layout_PreeferMadness.t| := MyBase;
- // End of file PreeferMadness.t
- // Beginning of text file PackageStuff.f
- // Copyright © 1993 - 1996 Apple Computer, Inc. All rights reserved.
- /*
- package and part stuff
-
- Includes:
- part frame additions
- InstallScript
- RemoveScript
-
- */
-
-
- // These calls to SetPartFrameSlot need to be done after the layout has
- // been compiled, which is why this file is last in the build sequence.
-
- SetPartFrameSlot('PreeferFormulaItem, GetLayout("PreeferFormulaItem"));
- SetPartFrameSlot('PreeferAutoPrefsItem, GetLayout("PreeferAutoPrefsItem"));
-
-
- InstallScript := func(partFrame)
- begin
- // NOTE: only auto parts would register their prefs with the
- // system, and only if there was no other way to present
- // preferences. This is done here for demonstration purposes
- // only.
- RegPrefs(kAppSymbol, partFrame.PreeferAutoPrefsItem);
-
- // register the formula.
- // NOTE: can not use GetLayout directly in a form part installScript
- // since the InstallScript is EnsureInternal'd. If we did do
- // a GetLayout call, the layout would be copied into the NS Heap!
- RegFormulas(kAppSymbol, partFrame.PreeferFormulaItem);
-
- end;
-
-
- RemoveScript := func(partFrame)
- begin
- // NOTE: only autoparts need to register system prefs... see above
- UnregPrefs(kAppSymbol);
-
- //unregister the formula
- UnregFormulas(kAppSymbol);
-
- end;
- // End of text file PackageStuff.f
-
-
-
-