Moving Nightingale to Cocoa: First Steps - AMNS/Nightingale GitHub Wiki

What Geoff tried to demonstrate with this demonstration-of-concept (https://github.com/1000milestare/Ovenbyrd):

  1. draw something with Quartz 2D.

  2. display a custom icon using a bitmap (which was extracted from the old resource file).

  3. call C++ functions from Cocoa/Objective C land (the C++ code was more or less copied over verbatim from old Nightingale Carbon version).

  4. extract strings from old resource file; the old "About" text has been extracted from the resource file and formatted into "Credits.rtf", which displays in the About box.

5?) dialogs (PUNT): I've experimented with extracting/converting other GUI resources (specifically dialog windows from resource file, importing into an old version InterfaceBuilder to attempt to create Carbon nibs). I have concluded that the path of lesser resistance is to just create new Cocoa dialogs. Generating and hooking up the imported Carbon dialogs is time consuming, kludgy, and is already deprecated (as is Carbon in its entirety) in MacOS version 10.8.

  1. Tests: there's also a framework for unit tests in NightingaleTests.m. These can be run via Product > Test and use SenTestingKit. I've implemented one unit test (for testing MetricStrength)... It should be expanded with many more tests.

Items #1 and #2 replace QuickDraw, since it is no longer supported.

Basically, all the drawing and GUI code and windows need to be rewritten, but all the rest of the C/C++ guts should work without much change.

These are the first baby steps. Now we think it's just a matter of taking about 9 billion more in the same direction.