Paul Krueger | 14 May 21:33 2013
Picon
Picon

Updated Contrib

All,

I finally checked in a completely new revision of my contrib: .../ccl/cocoa-ide/krueger/InterfaceProjects/...

All code requires OSX 10.7 or higher and CCL 1.9 or higher.

Synopsis of features:
  • Documentation
    • UserInterfaceTutorial.pdf is an extensive description of how to construct Cocoa user interfaces without having to resort to Xcode or InterfaceBuilder. It makes heavy use of Cocoa's layout constraint functionality.
    • CCL Cocoa Developer Tools Tutorial.pdf explains how to install and use application build/test code within the CCL IDE to construct apps that you can also run within the IDE for testing before creating stand-alone applications.
    • Lisp-KVO Reference & Tutorial.pdf explains functionality that lets you make slots in standard Lisp classes be KVO compliant and supports binding between Objective-C view properties and those slots. 
    • LispController Reference.pdf describes how to use the lisp-controller class as a lisp-friendly controller to manage view objects like NSTableView NSOutlineView.
  • Code Highlights
    • Major Functionality
      • Support for running Lisp apps under the CCL IDE, including swapping of the main menu
      • Tools for creating stand-along Lisp apps
      • Support for binding between Objective-C objects and Lisp slots
      • Extensive Lisp/Objective-C data conversion support via a coerce-obj method
      • Conversion of standard-instance objects to a format that can be archived to disk and restored correctly.
      • Initialize-instance :after methods for 20 common Objective-C classes that let you call make-instance for them using typical lisp keyword initialization syntax with all necessary data conversion done automatically for you. As a design principle, no default behavior is modified by these methods unless explicitly requested via a keyword argument. These are self-documenting via a window that can be invoked from the CCL Tools menu which shows and lets you search class hierarchies and see permitted initialization keywords, acceptable keyword values, and allowed binding targets.
      • Lisp interface for Apple's layout constraint functionality including the addition of several common layout idioms to make window design easier. See Appendix B in UserInterfaceTutorial.pdf for a complete description.
    • Special purpose utility classes and functionality
      • An N-dimensional sparse associative array
      • A Lisp attributed string stream class
      • Date manipulation and formatting utilities
      • Bundle interface code
      • NIB interface code
      • Lisp interface to Cocoa "undo" functionality
      • Lisp-document class which provides support for saving, loading, undo'ing, and printing documents defined with lisp data slots
      • Lisp-window-controller class which supports window "loading" using a lisp function rather than loading from a NIB file
      • Lisp interface to the Cocoa notification functionality.
      • A thread-safe queue implementation
    • Custom view classes and view-supporting classes
      • combo-box source class
      • Support for acting as a data source for NSTableView and NSOutlineView objects
      • Menu and menuitem creation functions for both common and custom items
      • Lisp interface to NSOpenPanel and NSSavePanel
      • Lisp button class that lets buttons call lisp methods
      • An organized-box-view that arranges subviews as directed
      • A resizable-box-view that dynamically rearranges its content views into a reasonable array as the box size changes
      • A radio-button box view which calls lisp methods when buttons are selected
      • A scrolled text view
      • A scrolled text view which can act as a Lisp output stream
      • Label view
      • Labeled text field
      • A form-view which is an aligned set of text fields with labels

If you run into any problems, please contact me directly and I'll try to address them. Any suggestions or other comments are welcomed.

Paul

_______________________________________________
Openmcl-devel mailing list
Openmcl-devel <at> clozure.com
http://clozure.com/mailman/listinfo/openmcl-devel

Gmane