Synopsis of Version changes for:

Cocoa Interfaces Using the Apple Interface Builder (IB) and Clozure Common Lisp (CCL)

Copyright © 2010 Paul L. Krueger All rights reserved.

Version 2.1 April 2010

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.

Version 2.0 April 2010

New in Version 2.0

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.

Fixes to Version 1.0

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.

Version 1.0 January 2010

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.