This is the README for Starter.1.1.s.tar.gz [Download] [Browse] [Up]
This is README for the Starter App, written by Robert Vasvari Dec 1994. The Starter Application What is Starter ? Starter is an app that does nothing and looks great doing it... :) When a developer set out to build a new app, there are many functionalities and mechanisms that need to be implemented. The purpose of the Starter app is to provide the developer with a framework that has all these mechanisms already working in some basic way, so that instead of implementing them from scratch, they can simply be extended in a kind of "fill in the blanks" way. Starter is great for developers who are not yet familiar with all the basic Mechanisms in NEXTSTEP and would still like to write an app that conforms to the general guide lines of NS. The code is not complicated, and browsing through it is a great way to learn NEXTSTEP programming. List of these general features: 1: Create, destroy, open, revert and save document files All documents are in their seperate zones. When a document is closed, its zone is destroyed. All three save functions (Save, Save As, Save To) are provided. Saving documents is done by opening a stream, putting clear text into it, then saving it to a file. 2: Multiple screen Inspector panel that changes with the currently selected document. This Inspector is modeled after the Workspace Inspector. The top part contains a textfield for the filename that will change its font to make sure the entire name fits (within reasonable limits, of course). The default implementation contains two screens. More screens can very easily be added. The screens can be invoked by by typing <COMMAND><Screen#> just like the Workspace. 3: Multiple screen Preferences window. Each screen contains items that are saved as defaults for the program. The Set and Revert buttons become enabled/disabled according to changes made (even on the textfields). Pressing the Set button saves the changes into the Defaults Database. There are utility routines provided to get defaults of different types with error checking (util.h/m). 4: Menus that enable/disable themselves according to current selection. This done through the [NXApp updateWindows] method which gets called after any change in the program. The method in turn calls each window in the app (including the menus) to update themselves. 5: A Controller object that is the delegate of NXApp, it performs all interfacing between the menus, the worspace and the documents. Also keeps a list of documents. A document can either be opened or just put to the fron if it is already open. Upon termination a standard process is performed to save altered documents. 6: A RemoteManager object is a simple Distributed Objects interface. It makes Starter a server, such that other apps can remotely message it to open, hide docs, etc... These simple operations demonstrate the ease of use for the DO interface. List of classes: AdjFontTextField: changes fontsize according to contents. ClockView: Displays date graphically in the inspector. CommandView: routes <COMMAND><Screen#> keystrokes to the inspector. Controller: Application's delegate. DocumentWindow: sends updateWindows message on Miniaturize. Document: Generic document that Save/Load itself. InspectorManager: subclass of MultipleScreenManager that dynamically changes its contents according to the current selection. KeyPanel: subclass of panel with a button that shows a return sign only if the panel is the Key Window af the app. MenuController: subclass of controller that updates all menucells. MultipleScreenManager: Changes the screens by the popup button on the top of the panel. PreferenceManager: subclass of MultipleScreenManager, saves changes per screeen. RemoteServer: provides methods that can be called from other apps through the Distributed Objects interface. util.m/h: utility routines. How do I use Starter ? There are a few simple steps to perform to change the name to the new name of your application: 1: Change the name of the project directory to AppName; 2: Change the name of English.lproj/Starter.nib to English.lproj/AppName.nib; 3: in defs.h change the value for DOC_EXTENSION to the new document ext.; 4: Start Project Builder by double-clicking on PB.project; a: In the Attributes Window, change project name and doc extension; b: In the Files/Interfaces Window remove Starter.nib and add AppName.nib; c: Save PB.project 5: build app; 6: At this point you are ready to implement your own features.. Release Notes on current version: This version is using the foundation kit as much as possible. The document object is a subclass of NSObject (and that is what counts). There are also some utility additions to NSObject and window that are kinda handy. The current release contains more classes than the previous one. The idea is, that the classes whose name starts with ST should be subclassed, and the real work should be done by the subclasses only. This permits the easy implementation of "high level" changes. Correspondence: Please send me ideas on what other general functionalities to implement in Starter! Comments, bugreports, suggestions should all go to: vrobi@futon.sfsu.edu Enjoy!!! =[vrobi]= Legal Stuff: I make no promises to the fitness of this stuff for any purpose, blah, blah, lawyer crap, etc.... Whatever you do with it, do not stuff it down your throat.
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.