{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \margl1440\margr1440\vieww13560\viewh11700\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\b\fs30 \cf0 Synopsis of Version changes for:\ \ Cocoa Interfaces Using the Apple Interface Builder (IB) and Clozure Common Lisp (CCL)\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \b0\fs24 \cf0 \ Copyright \'a9 2010-2011 Paul L. Krueger All rights reserved.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \b \cf0 Version 3.1 February 2011 \b0 \ \ Eliminated the need to have an "ip:" logical directory defined in order to use example code. See Tools Revision Notes for code change details.\ \ \b Version 3.0 July 2010 \b0 \ \ This version adds functionality to better support a development model that progresses from first testing code under the IDE, to testing a stand-alone code with some IDE functionality available as needed, to a stand-alone code with no IDE functionality present. A new application build window is available to let developers specify all the various parameters needed to specify how to build a stand-alone application.\ \ Functionality is provided to convert back and forth from Lisp class descriptions that contain foreign slots to Objective-C .h files which describe the outlets and actions for that class. Developers can either first develop a Lisp class and then generate a .h file that can be read into IB (making it unnecessary to reenter class outlets and action names within IB) or can create the class description within IB, write out the .h file from IB, and import and convert the .h file to a .lisp file with the appropriate class slots and skeleton method definitions. In either case it is only necessary to enter outlet and action descriptions one time.\ \ When a lisp-controller is used as a binding target for some user interface field in Interface Builder, it is now possible to set up a "when edited" notification function that is called when the user interface element modifies a Lisp value in some way. See the newest lisp controller reference manual for more detail.\ \b \ Version 2.1 April 2010 \b0 \ \ This version adds a "binding" capability to the LispController class added in Version 2.0. It is now possible to bind user interface values to Lisp slots as long as a LispController is the first element of the binding path. \ \ The documentation was rearranged somewhat. Instead of treating the LispController implementation as a new project and documenting it in the Tutorial, it is treated like any other Objective-C class that is used by a Lisp developer. So the LispController reference document now documents the implementation (formerly project #8 in the tutorial) and the Tutorial now includes four projects (8-11) that use it in different ways. The tutorial projects are duplicated in the reference manual as examples of how to use the LispController.\ \ \b Version 2.0 April 2010 \b0 \ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \i \cf0 New in Version 2.0 \i0 \ \ Project 8: LispController\ This project creates a lisp-controller class similar to NSArrayController, NSTreeController, etc. but which manages and displays arbitrary Lisp data structures using an NSTableView or NSOutlineView. An Xcode project is provided that can be used to build an IB plugin containing the lisp-controller class and an associated Framework that will be used by the Interface Builder. This allows developers to add lisp-controller objects to their interface designs and configure them. Configuration includes specifying Lisp forms which are used to access objects for display in different columns of one of the table views. Lisp forms can also be provided to specify how to construct new lisp objects and add them to the collection of objects being displayed. See the "LispController Reference" document for more information about how to use it or the InterfaceBuilderWithCCLTutorial2.0 for information about how it was implemented.\ \ \i Fixes to Version 1.0 \i0 \ \ Thanks to Ben Hyde for finding problems and making useful comments.\ \ Added appropriate "(eval-when ...)" so that "(require ...)" forms are evaluated at compile time too.\ \ Fixed areas of documentation that were confusing.\ \ I've discovered that if you are using Interface Builder version 3.2 or later, then the process for adding an object that will be defined in Lisp is somewhat different. As currently found in my tutorial, the process is to put a new generic object in the document window and then change its class name in the identity inspector before adding outlets and actions via the inspector window. Starting in IB version 3.2 that functionality has been moved to the Library window. There you should select the "Classes" tab, select the class you want to subclass, from the action menu select "New Subclass", enter the name of the Lisp subclass, and choose not to generate source code. Then you can use controls in the library window to add outlets and actions as discussed in the tutorial.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \b \cf0 Version 1.0 January 2010 \b0 \ \ Initial contents containing the following projects:\ Hello World\ Simple Sum\ Menu\ Speech\ PackageView\ Loan Calc\ Loan Document\ \ plus the following utility source files:\ AlertDialog.lisp\ date.lisp\ decimal.lisp\ nib.lisp\ ns-string-utils.lisp\ nslog-utils.lisp\ selector-utils.lisp\ \ See InterfaceBuilderwithCCLTutorial.pdf for detailed descriptions of everything.\ \ }