View Single Post
Hi Dave,

OmniPlan is 99% Cocoa. The gantt and resource views are both subclasses of an abstract superclass which we call OPDateScalableView, which handles all the date calculations and scale changes for the horizontal axis. The subclasses contain lists of 'blob' objects for the tasks and the code for manipulating them is all there, with calls back to the superclass methods to translate date to X-position or X-position to date.

The 'blob' objects themselves do their own drawing, and use a mixture of Cocoa's NSBezierPath class (for most of the drawing) and Quartz 2D (for the gradient fill effects).

So yes, these views are all custom and don't use any standard widgets.

I would personally suggest using Cocoa for most new development. You can get all the control you would want via Cocoa, all that you need Carbon for is if there are esoteric pieces where there isn't Cocoa API. (I.e. Carbon is more complete, but generally requires more work and for most types of apps is entirely avoidable.)

Hope this helps!