hotcocoa 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown
CHANGED
@@ -14,7 +14,7 @@ From rubygems:
|
|
14
14
|
|
15
15
|
Or to get the bleeding edge, you can clone the repository on Github and install from there:
|
16
16
|
|
17
|
-
$ git clone git://github.com/
|
17
|
+
$ git clone git://github.com/HotCocoa/hotcocoa
|
18
18
|
$ cd hotcocoa
|
19
19
|
$ sudo macrake install
|
20
20
|
|
@@ -29,13 +29,13 @@ in order to run HotCocoa. Read about it on the
|
|
29
29
|
|
30
30
|
### Documentation
|
31
31
|
|
32
|
-
The documentation can be found on [rdoc.info](http://rdoc.info/github/
|
32
|
+
The documentation can be found on [rdoc.info](http://rdoc.info/github/HotCocoa/hotcocoa/master/frames).
|
33
33
|
|
34
34
|
The most important pages are:
|
35
35
|
|
36
|
-
* [the overview](http://rubydoc.info/github/
|
37
|
-
* [a guide to the mappings](http://rubydoc.info/github/
|
38
|
-
* [troubleshooting](http://rubydoc.info/github/
|
36
|
+
* [the overview](http://rubydoc.info/github/HotCocoa/hotcocoa/master/file/docs/Overview.markdown)
|
37
|
+
* [a guide to the mappings](http://rubydoc.info/github/HotCocoa/hotcocoa/master/file/docs/Mappings.markdown)
|
38
|
+
* [troubleshooting](http://rubydoc.info/github/HotCocoa/hotcocoa/master/file/docs/Troubleshooting.markdown)
|
39
39
|
|
40
40
|
The documentation currently does not cover the shipped mappings right now due to the
|
41
41
|
way that mappings are implemented; a YARD plug-in or new YARD features
|
@@ -43,7 +43,7 @@ will be needed (stay tuned).
|
|
43
43
|
|
44
44
|
### Examples
|
45
45
|
|
46
|
-
Have a look in the [examples folder](https://github.com/
|
46
|
+
Have a look in the [examples folder](https://github.com/HotCocoa/hotcocoa/tree/master/examples) to see some sample apps which use HotCocoa.
|
47
47
|
|
48
48
|
## Contributing
|
49
49
|
|
@@ -73,7 +73,7 @@ send in the patch :)).
|
|
73
73
|
(The MIT License)
|
74
74
|
|
75
75
|
Copyright (c) 2009-2010 Richard Kilmer
|
76
|
-
Copyright (c) 2011 Mark Rada
|
76
|
+
Copyright (c) 2011-2012 Mark Rada
|
77
77
|
|
78
78
|
Permission is hereby granted, free of charge, to any person obtaining
|
79
79
|
a copy of this software and associated documentation files (the
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
system('test -d /System/Library/BridgeSupport/include')
|
4
|
+
bridge_support_required = $?.to_i
|
5
|
+
|
6
|
+
if bridge_support_required
|
7
|
+
$stderr.puts ""
|
8
|
+
$stderr.puts "###################################################################"
|
9
|
+
$stderr.puts "# #"
|
10
|
+
$stderr.puts "# BridgeSupport installation required. #"
|
11
|
+
$stderr.puts "# Get the latest version at: http://www.MacRuby.org/files #"
|
12
|
+
$stderr.puts "# #"
|
13
|
+
$stderr.puts "###################################################################"
|
14
|
+
$stderr.puts ""
|
15
|
+
end
|
16
|
+
|
17
|
+
create_makefile('hotcocoa/hotcocoa')
|
@@ -0,0 +1 @@
|
|
1
|
+
#include </System/Library/BridgeSupport/include/_BS_bool.h>
|
data/lib/hotcocoa/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: hotcocoa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.6.
|
5
|
+
version: 0.6.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Richard Kilmer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-01-03 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -21,14 +21,14 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: "2.
|
24
|
+
version: "2.10"
|
25
25
|
type: :development
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
none: false
|
28
28
|
requirements:
|
29
29
|
- - ~>
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: "2.
|
31
|
+
version: "2.10"
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: yard
|
34
34
|
prerelease: false
|
@@ -68,12 +68,12 @@ email:
|
|
68
68
|
- mrada@marketcircle.com
|
69
69
|
executables:
|
70
70
|
- hotcocoa
|
71
|
-
extensions:
|
71
|
+
extensions:
|
72
|
+
- ext/hotcocoa/extconf.rb
|
72
73
|
extra_rdoc_files:
|
73
74
|
- README.markdown
|
74
75
|
- History.markdown
|
75
76
|
- docs/Contributors.markdown
|
76
|
-
- docs/HeatingUpWithHotCocoa-part1.markdown
|
77
77
|
- docs/Mappings.markdown
|
78
78
|
- docs/MappingsExplained.markdown
|
79
79
|
- docs/Overview.markdown
|
@@ -182,6 +182,8 @@ files:
|
|
182
182
|
- template/lib/menu.rb
|
183
183
|
- template/Rakefile
|
184
184
|
- template/resources/HotCocoa.icns
|
185
|
+
- ext/hotcocoa/noop_bridge_support_check.c
|
186
|
+
- ext/hotcocoa/extconf.rb
|
185
187
|
- test/application/helper.rb
|
186
188
|
- test/application/test_builder.rb
|
187
189
|
- test/application/test_document_type_specification.rb
|
@@ -212,7 +214,6 @@ files:
|
|
212
214
|
- README.markdown
|
213
215
|
- History.markdown
|
214
216
|
- docs/Contributors.markdown
|
215
|
-
- docs/HeatingUpWithHotCocoa-part1.markdown
|
216
217
|
- docs/Mappings.markdown
|
217
218
|
- docs/MappingsExplained.markdown
|
218
219
|
- docs/Overview.markdown
|
@@ -220,7 +221,7 @@ files:
|
|
220
221
|
- docs/Troubleshooting.markdown
|
221
222
|
- docs/Tutorial.markdown
|
222
223
|
has_rdoc: true
|
223
|
-
homepage: http://github.com/
|
224
|
+
homepage: http://github.com/HotCocoa/hotcocoa
|
224
225
|
licenses:
|
225
226
|
- MIT
|
226
227
|
post_install_message:
|
@@ -1,189 +0,0 @@
|
|
1
|
-
Originally written by Dan Sinclair, this tutorial has been updated for
|
2
|
-
newer HotCocoa features.
|
3
|
-
|
4
|
-
I've had my eye on giving HotCocoa a test run for a while now. Other
|
5
|
-
things have conspired to come up over the last few months so I haven't
|
6
|
-
had a chance to give it a spin. That is, until now. I started poking
|
7
|
-
at it the other day, a few things still confuse me, but I'm getting
|
8
|
-
there.
|
9
|
-
|
10
|
-
I figured I'd write stuff down as I plow my way through the code and
|
11
|
-
create a simple little application. The application is nothing fancy,
|
12
|
-
I'm going to query [PostRank](http://www.postrank.com) and pull back
|
13
|
-
engagement information on a feed entered into a text box. This will be
|
14
|
-
a multi-part tutorial.
|
15
|
-
|
16
|
-
In the usual fashion, let's start at the start. What is HotCocoa?
|
17
|
-
Well, HotCocoa is a layer of Ruby code that sits on top of the Mac OS
|
18
|
-
X frameworks including
|
19
|
-
[Cocoa](http://developer.apple.com/cocoa/). HotCocoa is part of the
|
20
|
-
[MacRuby](http://www.macruby.org) distribution which will ship with
|
21
|
-
figure versions of OS X. MacRuby is a port of Ruby 1.9 to run on top
|
22
|
-
of Objective-C.
|
23
|
-
|
24
|
-
I'm going to assume you have MacRuby installed for this tutorial.
|
25
|
-
|
26
|
-
The HotCocoa developers make life easy to get started developing your
|
27
|
-
application. There is a `hotcocoa` command that is installed when you
|
28
|
-
install MacRuby. This will create the basic application structure and
|
29
|
-
Rakefile to get you up and running.
|
30
|
-
|
31
|
-
titania:Development dj2$ hotcocoa Postie
|
32
|
-
|
33
|
-
We can then execute our application by changing into the `Postie`
|
34
|
-
directory and executing `macrake`. *Note*, this uses `mac`rake and not
|
35
|
-
regular rake. MacRuby installs alongside the normal Ruby runtime on OS
|
36
|
-
X. You'll need to make sure you use `macrake`, `macirb`, `macgem` and
|
37
|
-
`macruby` to work with the MacRuby versions. You should see a `Hello
|
38
|
-
from HotCooca` window if everything worked correctly.
|
39
|
-
|
40
|
-

|
41
|
-
|
42
|
-
You'll notice that you now have a Postie.app in your root
|
43
|
-
directory. This application can be executed by double clicking like
|
44
|
-
any other Mac application, although, you'll need MacRuby installed for
|
45
|
-
it to execute. You can also execute `macruby lib/application.rb` to
|
46
|
-
execute the application. This allows passing flags to `macruby` for
|
47
|
-
things like enabling debug mode.
|
48
|
-
|
49
|
-
Let's take a quick look at the files generated by the `hotcocoa`
|
50
|
-
command.
|
51
|
-
|
52
|
-
```sh
|
53
|
-
./Rakefile
|
54
|
-
./config/build.yml
|
55
|
-
./resources/HotCocoa.icns
|
56
|
-
./lib/application.rb
|
57
|
-
./lib/menu.rb
|
58
|
-
```
|
59
|
-
|
60
|
-
The `build.yml` file contains information used by `hotcocoa` to build
|
61
|
-
your application. This includes things like the name, version, icon
|
62
|
-
and source files. The icon, by default, is `HotCocoa.icns`. The main
|
63
|
-
files we're interested in are `application.rb` and `menu.rb`.
|
64
|
-
|
65
|
-
```ruby
|
66
|
-
module HotCocoa
|
67
|
-
def application_menu
|
68
|
-
menu do |main|
|
69
|
-
main.submenu :apple do |apple|
|
70
|
-
apple.item :about, :title => "About #{NSApp.name}"
|
71
|
-
apple.separator
|
72
|
-
apple.item :preferences, :key => ","
|
73
|
-
apple.separator
|
74
|
-
apple.submenu :services
|
75
|
-
apple.separator
|
76
|
-
apple.item :hide, :title => "Hide #{NSApp.name}", :key => "h"
|
77
|
-
apple.item :hide_others, :title => "Hide Others", :key => "h", :modifiers => [:command, :alt]
|
78
|
-
apple.item :show_all, :title => "Show All"
|
79
|
-
apple.separator
|
80
|
-
apple.item :quit, :title => "Quit #{NSApp.name}", :key => "q"
|
81
|
-
end
|
82
|
-
main.submenu :file do |file|
|
83
|
-
file.item :new, :key => "n"
|
84
|
-
file.item :open, :key => "o"
|
85
|
-
end
|
86
|
-
main.submenu :window do |win|
|
87
|
-
win.item :minimize, :key => "m"
|
88
|
-
win.item :zoom
|
89
|
-
win.separator
|
90
|
-
win.item :bring_all_to_front, :title => "Bring All to Front", :key => "o"
|
91
|
-
end
|
92
|
-
main.submenu :help do |help|
|
93
|
-
help.item :help, :title => "#{NSApp.name} Help"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
```
|
99
|
-
|
100
|
-
The `menu.rb` file contains information about the menu for our
|
101
|
-
applcation. This includes the menu names, hot keys, modifiers and
|
102
|
-
general layout.
|
103
|
-
|
104
|
-
The `:apple` submenu is special and will appear with a menu title
|
105
|
-
based on your application name, as is typical for OS X
|
106
|
-
applications. For the other submenus, by default, the menu title will
|
107
|
-
be the capitalized version of the symbol name converted to a
|
108
|
-
string. You can also provide a `:title => 'foo'` option to specify a
|
109
|
-
different name. `menu.submenu :postrank, :title => 'PostRank'`.
|
110
|
-
|
111
|
-
The symbol provided to each submenu `item`, e.g. `file.item :new` will
|
112
|
-
be used to form the name of the method invoked in your application
|
113
|
-
delegate. The methods are named `on_<key>`. For our `:new` item the
|
114
|
-
`on_new` menu item will be invoked. If there is no `on_<key>` method
|
115
|
-
the menu item will be disabled. As you can see above you can also
|
116
|
-
specify `:modifiers` and `:key` equivalents for your items.
|
117
|
-
|
118
|
-
As with the menu titles, the items names will be formed from
|
119
|
-
capitalizing the symbol provided unless a `:title` is provided.
|
120
|
-
|
121
|
-
In the case of `Postie` I've erased everything but the `:apple`
|
122
|
-
submenu for now. I don't need any extra menu items at the moment. This
|
123
|
-
also means all of the `on_*` methods can be removed from
|
124
|
-
`application.rb`.
|
125
|
-
|
126
|
-
The default `application.rb` provided by the `hotcocoa` command is
|
127
|
-
pretty short.
|
128
|
-
|
129
|
-
```ruby
|
130
|
-
require 'hotcocoa'
|
131
|
-
|
132
|
-
class Application
|
133
|
-
include HotCocoa
|
134
|
-
|
135
|
-
def start
|
136
|
-
application(:name => "Postie") do |app|
|
137
|
-
app.delegate = self
|
138
|
-
window(:frame => [100, 100, 500, 500], :title => "Postie") do |win|
|
139
|
-
win << label(:text => "Hello from HotCocoa", :layout => {:start => false})
|
140
|
-
win.will_close { exit }
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
Application.new.start
|
147
|
-
```
|
148
|
-
|
149
|
-
Let's take a quick look and see if we can figure out what's going
|
150
|
-
on. We need to `require hotcocoa'` to get access to the needed
|
151
|
-
HotCocoa classes. We then `include HotCocoa` into our `Application`
|
152
|
-
class to make everything shorter. Feel free to rename `Application`
|
153
|
-
just do it in the class definition and at the bottom of the file.
|
154
|
-
|
155
|
-
Jumping to the bottom, you can see we're calling
|
156
|
-
`Application.new.start` so the `Application#start` method will be
|
157
|
-
invoked. It's worth noting, the application will not return from
|
158
|
-
`Application#start`.
|
159
|
-
|
160
|
-
Going back to `Application#start` we call `application` to create our
|
161
|
-
application, setting the title as desired. We then set ourselves as
|
162
|
-
the application delegate. This means that our class will receive all
|
163
|
-
of the callbacks that are called on the Cocoa application. This
|
164
|
-
includes the menu `on_*`callbacks we talked about earlier.
|
165
|
-
|
166
|
-
We then proceed to create a `window`. We're setting a `:frame` on the
|
167
|
-
window to position it at X 100, Y 100 (from the bottom left) with a
|
168
|
-
width of 500 and height of 500. We `:title` the window as `Postie`.
|
169
|
-
If you don't want to specify the entire frame of the window you can
|
170
|
-
specify just the `:size => [500, 500]` of the window. You can also
|
171
|
-
specify `:center => true` to center the window on the desktop. If you
|
172
|
-
look at the Objective-C documentation for NSWindow the options
|
173
|
-
available in Obj-C are available in the HotCocoa layer.
|
174
|
-
|
175
|
-
Once the window is created we add a `label` to the window and set the
|
176
|
-
`will_close` handler to `exit` when executed.
|
177
|
-
|
178
|
-
The `will_close` callback is the HotCocoa name for the Cocoa
|
179
|
-
`windowWillClose:`. Many of the Cocoa callbacks have been remapped to
|
180
|
-
make the names more Ruby like. You can view all the HotCocoa mappings
|
181
|
-
for windows at the bottom of the
|
182
|
-
[NSWindow mapping file](https://github.com/ferrous26/hotcocoa/blob/master/lib/hotcocoa/mappings/appkit/window.rb).
|
183
|
-
|
184
|
-
That's it for part I. We've now setup with our basic application
|
185
|
-
structure and have an idea of what we're working with. In the next
|
186
|
-
installment, we'll work on getting our application views setup as we
|
187
|
-
want.
|
188
|
-
|
189
|
-
[Read the next article: “Application Layout”](https://github.com/ferrous26/hotcocoa/wiki/Application-Layout)
|