Cocoa meets WebKit for more rapid UI development
Objective-C C JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
cocui.xcodeproj
frameworks/Sparkle.framework
manager
resources
src
.gitignore
LICENSE
README.md

README.md

Cocui

COCoa User Interface mockup.

For rapidly building functional Cocoa applications using WebKit (HTML, CSS and JavaScript).

Download

Latest releases from http://hunch.se/cocui/

Cocui will keep itself up to date using Sparkle and requires Mac OS X 10.5 or later.

What awesome stuff can I do with this?

Everyone love bullet-points:

  • Write your app like a regular HTML page with javascript
  • Opening of files by associating your app with one or more file types
  • Retains the WebKit debugger, profiler, console and inspector developer tools
  • Unrestricted XHR (can load and interact with any resource on the web or local)
  • NSApplication events propagated as native Javascript events in your document (i.e. "applicationWillBecomeActive", etc)
  • Full control over window (resizing, minimizing, hiding, closing, etc through "App.window")
  • Full control over NSApp (terminating, etc through "App.app")
  • Access to NSUserDefaults (system-native application settings) through "App.defaults"
  • Single namespace exposes the "bridge" between Cocoa and Javascript -- "App"
  • Most of these things demonstrated in the demo app resources/index.html

The Javascript-to-Cocoa bridge enables access to most things, like your NSApplication and your NSWindow.

You can do stuff like this:

<a href="javascript:Win.miniaturize()">Minimize application</a>

and

var window = App.loadWindow({
  uri: 'index.html',
  rect: { size: { width: 500, height: 400 } }
})
window.makeKeyAndOrderFront();

Native drag and drop is already supported by WebKit.

Development mode

Development mode enables a series of tools, aiding development:

  • Interactive javascript console
  • DOM and CSS inspector
  • Javascript profiler
  • Javascript debugger
  • Resource tracker (aka "the timeline")
  • HTML5 database manager
  • Access to a streaming text log of messages both from your application (using console.log() etc) and from the runner core.
  • Quick restarting (reloading) of your app w/o restarting the actual process

To enable development mode for a Cocui application, set the boolean defaults key "DevelopmentMode" to true for.

Example:

$ defaults write my.cocui.app DevelopmentMode -bool yes

You need to restart the native app after changing this key. Afterwards, a new menu item will appear: "Develop".

When creating new application projects using the Cocui app, DevelopmentMode is already set for you.

Creating a new project

You create a new app project by running the Cocui application. Choose a name and a UTI (and optionally a few other things, like icon and document types). Cocui will then create a new project for you and get you going. If you have TextMate or SubEthaEdit, your editor will launch together with your new application.