Cocoa Interface

From Free Pascal wiki
Revision as of 20:31, 1 January 2014 by Jwdietrich (talk | contribs)

Other Interfaces

Platform specific Tips

Interface Development Articles

Cocoa bindings

When this interface was started, it used a set of wrappers to access Cocoa, called PasCocoa. After this, native support in Free Pascal for direct communication with Objective-C was added through the Objective Pascal dialect.

Compiling the Cocoa Interfaces

If you want to try Cocoa widgetset, or use some Cocoa features from Carbon application, you'll need to install PasCocoa library first.

1 - Download PasCocoa from subversion

Instructions here: PasCocoa#Subversion

2- Add the path to PasCocoa to your fpc.cfg file

In a standard installation this file will be located in: /etc/fpc.cfg

Please add at the end of this file the following (remember to adapt it to the paths in your system!):

# Search path for Cocoa bindings
-Fu/Users/felipe/Programas/lazarus-ccr/bindings/objc
-Fu/Users/felipe/Programas/lazarus-ccr/bindings/pascocoa/appkit
-Fu/Users/felipe/Programas/lazarus-ccr/bindings/pascocoa/foundation
-Fu/Users/felipe/Programas/lazarus-ccr/bindings/pascocoa/applicationservices/coregraphics

Since the file is write protected, only administrator accounts will be able to edit it. It is also possible to have a local fpc.cfg file. For more information google or ask in the mailling list.

3 - Compile a test PasCocoa project

In Lazarus, open /Users/felipe/Programas/lazarus-ccr/bindings/pascocoa/example/statusitem/statusitem.lpi (or similar acording to your local paths) and build the project.

This should guarantee that PasCocoa was installed correctly and create the .o files for it.

4 - Compile LCL-Cocoa

In Lazarus go to the Tools-->Configure Build Lazarus menu. Go to advanced, set everything to NONE and only LCL to clean+build, set the widgetset to Cocoa and push the Build button.

You can now build LCL-Cocoa applications by setting the target widgetset to cocoa in the Compiler Options dialog of your projects.

Roadmap

Located here: Roadmap#Status_of_features_on_each_widgetset