rucola 0.0.1

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.
Files changed (107) hide show
  1. data/ChangeLog +628 -0
  2. data/History.txt +4 -0
  3. data/License.txt +20 -0
  4. data/Manifest.txt +106 -0
  5. data/README.txt +126 -0
  6. data/Rakefile +32 -0
  7. data/TODO +28 -0
  8. data/app_generators/rucola/USAGE +6 -0
  9. data/app_generators/rucola/rucola_generator.rb +112 -0
  10. data/app_generators/rucola/templates/Rakefile.erb +12 -0
  11. data/app_generators/rucola/templates/Rakefile.erb.old +156 -0
  12. data/app_generators/rucola/templates/app/controllers/application_controller.rb +22 -0
  13. data/app_generators/rucola/templates/config/Info.plist.erb +28 -0
  14. data/app_generators/rucola/templates/config/boot.rb +2 -0
  15. data/app_generators/rucola/templates/config/environment.rb +11 -0
  16. data/app_generators/rucola/templates/config/environments/debug.rb +3 -0
  17. data/app_generators/rucola/templates/config/environments/release.rb +3 -0
  18. data/app_generators/rucola/templates/config/environments/test.rb +3 -0
  19. data/app_generators/rucola/templates/config/ib_external_class_defs.yml +13 -0
  20. data/app_generators/rucola/templates/misc/English.lproj/InfoPlist.strings.erb +3 -0
  21. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/classes.nib +40 -0
  22. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/info.nib +18 -0
  23. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
  24. data/app_generators/rucola/templates/misc/main.m.erb +15 -0
  25. data/app_generators/rucola/templates/misc/rb_main.rb.erb +13 -0
  26. data/app_generators/rucola/templates/project.pbxproj.erb +299 -0
  27. data/app_generators/rucola/templates/script/plugin +84 -0
  28. data/app_generators/rucola/templates/test/controllers/test_application_controller.rb +10 -0
  29. data/app_generators/rucola/templates/test/test_helper.rb +10 -0
  30. data/bin/rucola +12 -0
  31. data/config/hoe.rb +71 -0
  32. data/config/requirements.rb +17 -0
  33. data/lib/rucola.rb +3 -0
  34. data/lib/rucola/info_plist.rb +37 -0
  35. data/lib/rucola/initializer.rb +313 -0
  36. data/lib/rucola/nib.rb +99 -0
  37. data/lib/rucola/rucola_support.rb +9 -0
  38. data/lib/rucola/rucola_support/controllers.rb +2 -0
  39. data/lib/rucola/rucola_support/controllers/rc_controller.rb +7 -0
  40. data/lib/rucola/rucola_support/controllers/rc_window_controller.rb +12 -0
  41. data/lib/rucola/rucola_support/core_ext.rb +2 -0
  42. data/lib/rucola/rucola_support/core_ext/objc.rb +4 -0
  43. data/lib/rucola/rucola_support/core_ext/objc/nsobject.rb +22 -0
  44. data/lib/rucola/rucola_support/core_ext/ruby.rb +4 -0
  45. data/lib/rucola/rucola_support/core_ext/ruby/string.rb +21 -0
  46. data/lib/rucola/rucola_support/initialize_hooks.rb +21 -0
  47. data/lib/rucola/rucola_support/models.rb +1 -0
  48. data/lib/rucola/rucola_support/models/rc_document.rb +10 -0
  49. data/lib/rucola/rucola_support/notifications.rb +1 -0
  50. data/lib/rucola/rucola_support/notifications/notifications.rb +146 -0
  51. data/lib/rucola/rucola_support/rc_app.rb +101 -0
  52. data/lib/rucola/tasks/freeze.rake +44 -0
  53. data/lib/rucola/tasks/interface_builder.rake +80 -0
  54. data/lib/rucola/tasks/main.rake +29 -0
  55. data/lib/rucola/tasks/xcode.rake +43 -0
  56. data/lib/rucola/test_helper.rb +57 -0
  57. data/lib/rucola/version.rb +9 -0
  58. data/lib/rucola/xcode.rb +148 -0
  59. data/log/debug.log +0 -0
  60. data/rucola_generators/controller/USAGE +5 -0
  61. data/rucola_generators/controller/controller_generator.rb +84 -0
  62. data/rucola_generators/controller/templates/controller_template.rb.erb +5 -0
  63. data/rucola_generators/controller/templates/test_controller_template.rb.erb +10 -0
  64. data/rucola_generators/document_model/USAGE +5 -0
  65. data/rucola_generators/document_model/document_model_generator.rb +67 -0
  66. data/rucola_generators/document_model/templates/document_model_template.rb.erb +27 -0
  67. data/rucola_generators/document_model/templates/test_document_model_template.rb.erb +10 -0
  68. data/rucola_generators/window_controller/USAGE +6 -0
  69. data/rucola_generators/window_controller/templates/Window.nib/classes.nib.erb +35 -0
  70. data/rucola_generators/window_controller/templates/Window.nib/info.nib +16 -0
  71. data/rucola_generators/window_controller/templates/Window.nib/keyedobjects.nib +0 -0
  72. data/rucola_generators/window_controller/templates/test_window_controller_template.rb.erb +10 -0
  73. data/rucola_generators/window_controller/templates/window_controller_template.rb.erb +19 -0
  74. data/rucola_generators/window_controller/window_controller_generator.rb +74 -0
  75. data/script/destroy +14 -0
  76. data/script/generate +14 -0
  77. data/script/txt2html +74 -0
  78. data/setup.rb +1585 -0
  79. data/tasks/deployment.rake +27 -0
  80. data/tasks/environment.rake +7 -0
  81. data/tasks/website.rake +17 -0
  82. data/test/fixtures/Info.plist +28 -0
  83. data/test/fixtures/MainMenu.nib/classes.nib +32 -0
  84. data/test/fixtures/MainMenu.nib/info.nib +18 -0
  85. data/test/fixtures/MainMenu.nib/keyedobjects.nib +0 -0
  86. data/test/test_controller_generator.rb +75 -0
  87. data/test/test_core_ext.rb +15 -0
  88. data/test/test_document_model_generator.rb +64 -0
  89. data/test/test_generator_helper.rb +20 -0
  90. data/test/test_helper.rb +13 -0
  91. data/test/test_info_plist.rb +31 -0
  92. data/test/test_nib.rb +73 -0
  93. data/test/test_notifications.rb +75 -0
  94. data/test/test_objc_core_ext.rb +37 -0
  95. data/test/test_rc_app.rb +63 -0
  96. data/test/test_rc_document.rb +18 -0
  97. data/test/test_rc_window_controller.rb +13 -0
  98. data/test/test_rucola.rb +11 -0
  99. data/test/test_rucola_generator.rb +87 -0
  100. data/test/test_window_controller_generator.rb +50 -0
  101. data/test/test_xcode.rb +128 -0
  102. data/website/index.html +199 -0
  103. data/website/index.txt +126 -0
  104. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  105. data/website/stylesheets/screen.css +138 -0
  106. data/website/template.rhtml +48 -0
  107. metadata +189 -0
@@ -0,0 +1,156 @@
1
+ # -*- mode:ruby; indent-tabs-mode:nil; coding:utf-8 -*-
2
+ # vim:ts=2:sw=2:expandtab:
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'rake/clean'
6
+ require 'rake/testtask'
7
+ require 'pathname'
8
+
9
+ # Application own Settings
10
+ APPNAME = "<%= name %>"
11
+ TARGET = "#{APPNAME}.app"
12
+ #APPVERSION = "rev#{`svn info`[/Revision: (\d+)/, 1]}"
13
+ APPVERSION = Time.now.strftime("%Y-%m-%d")
14
+ PUBLISH = 'yourname@yourhost:path'
15
+ DEFAULT_TARGET = APPNAME
16
+ DEFAULT_CONFIGURATION = 'Release'
17
+ RELEASE_CONFIGURATION = 'Release'
18
+
19
+ # Tasks
20
+ task :default => [:run]
21
+
22
+ desc "Build the default and run it."
23
+ task :run => [:build] do
24
+ sh %{open "build/Release/#{APPNAME}.app"}
25
+ end
26
+
27
+ desc 'Build the default target using the default configuration'
28
+ task :build => "xcode:build:#{DEFAULT_TARGET}:#{DEFAULT_CONFIGURATION}"
29
+
30
+ desc 'Deep clean of everything'
31
+ task :clean do
32
+ puts %x{ xcodebuild -alltargets clean }
33
+ end
34
+
35
+ desc "Add files to Xcode project"
36
+ task :add do |t|
37
+ files = ARGV[1..-1]
38
+ project = %x{ xcodebuild -list }[/Information about project "([^"]+)":/, 1]
39
+ files << "#{project}.xcodeproj"
40
+ exec("rubycocoa", "add", *files)
41
+ end
42
+
43
+ desc "Create ruby skelton and add to Xcode project"
44
+ task :create do |t|
45
+ args = ARGV[1..-1]
46
+ if system("rubycocoa", "create", *args)
47
+ project = %x{ xcodebuild -list }[/Information about project "([^"]+)":/, 1]
48
+ exec("rubycocoa", "add", args.last + ".rb", "#{project}.xcodeproj")
49
+ end
50
+ end
51
+
52
+ desc "Update nib with ruby file"
53
+ task :update do |t|
54
+ args = ARGV[1..-1]
55
+ args.unshift("English.lproj/MainMenu.nib")
56
+ exec("rubycocoa", "update", *args)
57
+ end
58
+
59
+ desc "Package the application"
60
+ task :package => ["xcode:build:#{DEFAULT_TARGET}:#{RELEASE_CONFIGURATION}", "pkg"] do
61
+ name = "#{APPNAME}.#{APPVERSION}"
62
+ mkdir "image"
63
+ sh %{rubycocoa standaloneify "build/#{DEFAULT_CONFIGURATION}/#{APPNAME}.app" "image/#{APPNAME}.app"}
64
+ puts 'Creating Image...'
65
+ sh %{
66
+ hdiutil create -volname '#{name}' -srcfolder image '#{name}'.dmg
67
+ rm -rf image
68
+ mv '#{name}.dmg' pkg
69
+ }
70
+ end
71
+
72
+ directory 'pkg'
73
+
74
+ desc 'Make Localized nib from English.lproj and Lang.lproj/nib.strings'
75
+ rule(/.nib$/ => [proc {|tn| File.dirname(tn) + '/nib.strings' }]) do |t|
76
+ p t.name
77
+ lproj = File.dirname(t.name)
78
+ target = File.basename(t.name)
79
+ rm_rf t.name
80
+ sh %{
81
+ nibtool -d #{lproj}/nib.strings -w #{t.name} English.lproj/#{target}
82
+ }
83
+ end
84
+
85
+ # [Rubycocoa-devel 906] dynamically xcode rake tasks
86
+ # [Rubycocoa-devel 907]
87
+ #
88
+ def xcode_targets
89
+ out = %x{ xcodebuild -list }
90
+ out.scan(/.*Targets:\s+(.*)Build Configurations:.*/m)
91
+
92
+ targets = []
93
+ $1.each_line do |l|
94
+ l = l.strip.sub(' (Active)', '')
95
+ targets << l unless l.nil? or l.empty?
96
+ end
97
+ targets
98
+ end
99
+
100
+ def xcode_configurations
101
+ out = %x{ xcodebuild -list }
102
+ out.scan(/.*Build Configurations:\s+(.*)If no build configuration.*/m)
103
+
104
+ configurations = []
105
+ $1.each_line do |l|
106
+ l = l.strip.sub(' (Active)', '')
107
+ configurations << l unless l.nil? or l.empty?
108
+ end
109
+ configurations
110
+ end
111
+
112
+ namespace :xcode do
113
+ targets = xcode_targets
114
+ configs = xcode_configurations
115
+
116
+ %w{build clean}.each do |action|
117
+ namespace "#{action}" do
118
+
119
+ targets.each do |target|
120
+ desc "#{action} #{target}"
121
+ task "#{target}" do |t|
122
+ puts %x{ xcodebuild -target '#{target}' #{action} }
123
+ end
124
+
125
+ # alias the task above using a massaged name
126
+ massaged_target = target.downcase.gsub(/[\s*|\-]/, '_')
127
+ task "#{massaged_target}" => "xcode:#{action}:#{target}"
128
+
129
+
130
+ namespace "#{target}" do
131
+ configs.each do |config|
132
+ desc "#{action} #{target} #{config}"
133
+ task "#{config}" do |t|
134
+ puts %x{ xcodebuild -target '#{target}' -configuration '#{config}' #{action} }
135
+ end
136
+ end
137
+ end
138
+
139
+ # namespace+task aliases of the above using massaged names
140
+ namespace "#{massaged_target}" do
141
+ configs.each { |conf| task "#{conf.downcase.gsub(/[\s*|\-]/, '_')}" => "xcode:#{action}:#{target}:#{conf}" }
142
+ end
143
+
144
+ end
145
+
146
+ end
147
+ end
148
+ end
149
+
150
+
151
+ if ["update", "add", "create"].include? ARGV[0]
152
+ # dupe rake
153
+ ARGV.map! {|a| a.sub(/^\+/, "-") }
154
+ Rake.application[ARGV[0].to_sym].invoke
155
+ exit # will not reach
156
+ end
@@ -0,0 +1,22 @@
1
+ class ApplicationController < Rucola::RCController
2
+ ib_outlet :main_window
3
+
4
+ def awakeFromNib
5
+ # All the application delegate methods will be called on this object.
6
+ OSX::NSApp.delegate = self
7
+
8
+ puts "ApplicationController awoke."
9
+ puts "Edit: app/controllers/application_controller.rb"
10
+ puts "\nIt's window is: #{@main_window.inspect}"
11
+ end
12
+
13
+ # NSApplication delegate methods
14
+ def applicationDidFinishLaunching(notification)
15
+ puts "\nApplication finished launching."
16
+ end
17
+
18
+ def applicationWillTerminate(notification)
19
+ puts "\nApplication will terminate."
20
+ end
21
+
22
+ end
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string><%= name %></string>
9
+ <key>CFBundleIconFile</key>
10
+ <string></string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundlePackageType</key>
14
+ <string>APPL</string>
15
+ <key>CFBundleSignature</key>
16
+ <string>????</string>
17
+ <key>CFBundleVersion</key>
18
+ <string>1.0</string>
19
+ <key>NSMainNibFile</key>
20
+ <string>MainMenu</string>
21
+ <key>NSPrincipalClass</key>
22
+ <string>NSApplication</string>
23
+ <key>CFBundleIdentifier</key>
24
+ <string>com.apple.rubycocoa.<%= name %>App</string>
25
+ <key>CFBundleShortVersionString</key>
26
+ <string>1.0</string>
27
+ </dict>
28
+ </plist>
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/environment.rb'
2
+ Rucola::Initializer.run(:set_load_path)
@@ -0,0 +1,11 @@
1
+ Rucola::Initializer.run do |config|
2
+ # Settings specified in environment/release.rb and environment/debug.rb take precident
3
+ # over these settings.
4
+ #
5
+ # Load any custom Objective-C frameworks
6
+ # config.objc_frameworks = %w(webkit quartz iokit)
7
+ #
8
+ # Use active_record bindings
9
+ # config.use_active_record = true
10
+ #
11
+ end
@@ -0,0 +1,3 @@
1
+ # Perform any debug specific task here.
2
+
3
+ puts 'Debugging'
@@ -0,0 +1,3 @@
1
+ # Perform any release specific tasks here.
2
+
3
+ puts 'Releasing'
@@ -0,0 +1,3 @@
1
+ # Perform any test specific task here.
2
+
3
+ puts 'Testing'
@@ -0,0 +1,13 @@
1
+ # Interface Builder Class Definitions
2
+ #
3
+ # Interface Builder doesn't detect your custom classes by default.
4
+ # Identify class heirarchies here and make sure you run `rake ib:update`
5
+ # to notice the changes in Interface Builder.
6
+ #
7
+ # NSObject:
8
+ # - MyController
9
+ # - MyOtherController
10
+ # NSWindowController:
11
+ # - SomeWindowController:
12
+ # - SomeOtherController
13
+ #
@@ -0,0 +1,3 @@
1
+ CFBundleName = "<%= name %>";
2
+ CFBundleGetInfoString = "<%= name %> version 0.1, Copyright <%= Time.now.year %> <%= author%>.";
3
+ NSHumanReadableCopyright = "Copyright <%= Time.now.year %> <%= author%>.";
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IBClasses</key>
6
+ <array>
7
+ <dict>
8
+ <key>CLASS</key>
9
+ <string>FirstResponder</string>
10
+ <key>LANGUAGE</key>
11
+ <string>ObjC</string>
12
+ <key>SUPERCLASS</key>
13
+ <string>NSObject</string>
14
+ </dict>
15
+ <dict>
16
+ <key>CLASS</key>
17
+ <string>ApplicationController</string>
18
+ <key>LANGUAGE</key>
19
+ <string>ObjC</string>
20
+ <key>OUTLETS</key>
21
+ <dict>
22
+ <key>main_window</key>
23
+ <string>id</string>
24
+ </dict>
25
+ <key>SUPERCLASS</key>
26
+ <string>RCController</string>
27
+ </dict>
28
+ <dict>
29
+ <key>CLASS</key>
30
+ <string>RCController</string>
31
+ <key>LANGUAGE</key>
32
+ <string>ObjC</string>
33
+ <key>SUPERCLASS</key>
34
+ <string>NSObject</string>
35
+ </dict>
36
+ </array>
37
+ <key>IBVersion</key>
38
+ <string>1</string>
39
+ </dict>
40
+ </plist>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IBFramework Version</key>
6
+ <string>629</string>
7
+ <key>IBOldestOS</key>
8
+ <integer>5</integer>
9
+ <key>IBOpenObjects</key>
10
+ <array>
11
+ <integer>21</integer>
12
+ </array>
13
+ <key>IBSystem Version</key>
14
+ <string>9A581</string>
15
+ <key>targetFramework</key>
16
+ <string>IBCocoaFramework</string>
17
+ </dict>
18
+ </plist>
@@ -0,0 +1,15 @@
1
+ //
2
+ // main.m
3
+ // <%= name %>
4
+ //
5
+ // Created by <%= author %> on <%= Date.today.to_s(:db) %>.
6
+ // Copyright (c) 2007 <%= author %>. All rights reserved.
7
+ //
8
+
9
+ #import <Cocoa/Cocoa.h>
10
+ #import <RubyCocoa/RBRuntime.h>
11
+
12
+ int main(int argc, const char *argv[])
13
+ {
14
+ return RBApplicationMain("rb_main.rb", argc, argv);
15
+ }
@@ -0,0 +1,13 @@
1
+ #
2
+ # rb_main.rb
3
+ # <%= name %>
4
+ #
5
+ # Created by <%= author %> on <%= Date.today.to_s(:db) %>.
6
+ # Copyright (c) 2007 <%= author %>. All rights reserved.
7
+ #
8
+
9
+ require 'rubygems'
10
+ require 'rucola'
11
+
12
+ # Start the application
13
+ Rucola::Initializer.boot
@@ -0,0 +1,299 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 42;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 4DDCA7070ACC9A6100E082CE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
11
+ 4DDCA7080ACC9A6100E082CE /* rb_main.rb in Resources */ = {isa = PBXBuildFile; fileRef = E8F5E25803AEB7C803A81C6F /* rb_main.rb */; };
12
+ 4DDCA70A0ACC9A6100E082CE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
13
+ 4DDCA70C0ACC9A6100E082CE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
14
+ 4DDCA70D0ACC9A6100E082CE /* RubyCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8F5E24E03AEB6EC03A81C6F /* RubyCocoa.framework */; };
15
+ 514292CE0CC66CDC00F9CEEF /* app in Resources */ = {isa = PBXBuildFile; fileRef = 514292B90CC66CDC00F9CEEF /* app */; };
16
+ 514292CF0CC66CDC00F9CEEF /* config in Resources */ = {isa = PBXBuildFile; fileRef = 514292C10CC66CDC00F9CEEF /* config */; };
17
+ 514292D00CC66CDC00F9CEEF /* misc in Resources */ = {isa = PBXBuildFile; fileRef = 514292C40CC66CDC00F9CEEF /* misc */; };
18
+ 514292D10CC66CDC00F9CEEF /* test in Resources */ = {isa = PBXBuildFile; fileRef = 514292CA0CC66CDC00F9CEEF /* test */; };
19
+ 514292D20CC66CDC00F9CEEF /* vendor in Resources */ = {isa = PBXBuildFile; fileRef = 514292CC0CC66CDC00F9CEEF /* vendor */; };
20
+ 514292EF0CC6823A00F9CEEF /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 514292ED0CC6823A00F9CEEF /* MainMenu.nib */; };
21
+ /* End PBXBuildFile section */
22
+
23
+ /* Begin PBXFileReference section */
24
+ 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = misc/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
25
+ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
26
+ 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = misc/main.m; sourceTree = "<group>"; };
27
+ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
28
+ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
29
+ 4DDCA7110ACC9A6100E082CE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = Info.plist; path = config/Info.plist; sourceTree = "<group>"; };
30
+ 4DDCA7120ACC9A6100E082CE /* <%= name %>.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = <%= name %>.app; sourceTree = BUILT_PRODUCTS_DIR; };
31
+ 514292B90CC66CDC00F9CEEF /* app */ = {isa = PBXFileReference; lastKnownFileType = folder; path = app; sourceTree = "<group>"; };
32
+ 514292C10CC66CDC00F9CEEF /* config */ = {isa = PBXFileReference; lastKnownFileType = folder; path = config; sourceTree = "<group>"; };
33
+ 514292C40CC66CDC00F9CEEF /* misc */ = {isa = PBXFileReference; lastKnownFileType = folder; path = misc; sourceTree = "<group>"; };
34
+ 514292CA0CC66CDC00F9CEEF /* test */ = {isa = PBXFileReference; lastKnownFileType = folder; path = test; sourceTree = "<group>"; };
35
+ 514292CC0CC66CDC00F9CEEF /* vendor */ = {isa = PBXFileReference; lastKnownFileType = folder; path = vendor; sourceTree = "<group>"; };
36
+ 514292EE0CC6823A00F9CEEF /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = misc/English.lproj/MainMenu.nib; sourceTree = "<group>"; };
37
+ E8F5E24E03AEB6EC03A81C6F /* RubyCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RubyCocoa.framework; path = /Library/Frameworks/RubyCocoa.framework; sourceTree = "<absolute>"; };
38
+ E8F5E25803AEB7C803A81C6F /* rb_main.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; name = rb_main.rb; path = misc/rb_main.rb; sourceTree = "<group>"; };
39
+ /* End PBXFileReference section */
40
+
41
+ /* Begin PBXFrameworksBuildPhase section */
42
+ 4DDCA70B0ACC9A6100E082CE /* Frameworks */ = {
43
+ isa = PBXFrameworksBuildPhase;
44
+ buildActionMask = 2147483647;
45
+ files = (
46
+ 4DDCA70C0ACC9A6100E082CE /* Cocoa.framework in Frameworks */,
47
+ 4DDCA70D0ACC9A6100E082CE /* RubyCocoa.framework in Frameworks */,
48
+ );
49
+ runOnlyForDeploymentPostprocessing = 0;
50
+ };
51
+ /* End PBXFrameworksBuildPhase section */
52
+
53
+ /* Begin PBXGroup section */
54
+ 080E96DDFE201D6D7F000001 /* Classes */ = {
55
+ isa = PBXGroup;
56
+ children = (
57
+ );
58
+ name = Classes;
59
+ sourceTree = "<group>";
60
+ };
61
+ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
62
+ isa = PBXGroup;
63
+ children = (
64
+ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
65
+ E8F5E24E03AEB6EC03A81C6F /* RubyCocoa.framework */,
66
+ );
67
+ name = "Linked Frameworks";
68
+ sourceTree = "<group>";
69
+ };
70
+ 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
71
+ isa = PBXGroup;
72
+ children = (
73
+ 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
74
+ 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
75
+ );
76
+ name = "Other Frameworks";
77
+ sourceTree = "<group>";
78
+ };
79
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
80
+ isa = PBXGroup;
81
+ children = (
82
+ 4DDCA7120ACC9A6100E082CE /* <%= name %>.app */,
83
+ );
84
+ name = Products;
85
+ sourceTree = "<group>";
86
+ };
87
+ 29B97314FDCFA39411CA2CEA /* <%= name %> */ = {
88
+ isa = PBXGroup;
89
+ children = (
90
+ 080E96DDFE201D6D7F000001 /* Classes */,
91
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
92
+ 29B97317FDCFA39411CA2CEA /* Resources */,
93
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
94
+ 19C28FACFE9D520D11CA2CBB /* Products */,
95
+ 4DDCA7110ACC9A6100E082CE /* Info.plist */,
96
+ );
97
+ name = <%= name %>;
98
+ sourceTree = "<group>";
99
+ };
100
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
101
+ isa = PBXGroup;
102
+ children = (
103
+ 29B97316FDCFA39411CA2CEA /* main.m */,
104
+ 514292ED0CC6823A00F9CEEF /* MainMenu.nib */,
105
+ E8F5E25803AEB7C803A81C6F /* rb_main.rb */,
106
+ );
107
+ name = "Other Sources";
108
+ sourceTree = "<group>";
109
+ };
110
+ 29B97317FDCFA39411CA2CEA /* Resources */ = {
111
+ isa = PBXGroup;
112
+ children = (
113
+ 514292B90CC66CDC00F9CEEF /* app */,
114
+ 514292C10CC66CDC00F9CEEF /* config */,
115
+ 514292C40CC66CDC00F9CEEF /* misc */,
116
+ 514292CA0CC66CDC00F9CEEF /* test */,
117
+ 514292CC0CC66CDC00F9CEEF /* vendor */,
118
+ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
119
+ );
120
+ name = Resources;
121
+ sourceTree = "<group>";
122
+ };
123
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
124
+ isa = PBXGroup;
125
+ children = (
126
+ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
127
+ 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
128
+ );
129
+ name = Frameworks;
130
+ sourceTree = "<group>";
131
+ };
132
+ /* End PBXGroup section */
133
+
134
+ /* Begin PBXHeadersBuildPhase section */
135
+ 4DDCA7040ACC9A6100E082CE /* Headers */ = {
136
+ isa = PBXHeadersBuildPhase;
137
+ buildActionMask = 2147483647;
138
+ files = (
139
+ );
140
+ runOnlyForDeploymentPostprocessing = 0;
141
+ };
142
+ /* End PBXHeadersBuildPhase section */
143
+
144
+ /* Begin PBXNativeTarget section */
145
+ 4DDCA7030ACC9A6100E082CE /* <%= name %> */ = {
146
+ isa = PBXNativeTarget;
147
+ buildConfigurationList = 4DDCA70E0ACC9A6100E082CE /* Build configuration list for PBXNativeTarget "<%= name %>" */;
148
+ buildPhases = (
149
+ 4DDCA7040ACC9A6100E082CE /* Headers */,
150
+ 4DDCA7050ACC9A6100E082CE /* Resources */,
151
+ 4DDCA7090ACC9A6100E082CE /* Sources */,
152
+ 4DDCA70B0ACC9A6100E082CE /* Frameworks */,
153
+ );
154
+ buildRules = (
155
+ );
156
+ dependencies = (
157
+ );
158
+ name = <%= name %>;
159
+ productInstallPath = "$(HOME)/Applications";
160
+ productName = <%= name %>;
161
+ productReference = 4DDCA7120ACC9A6100E082CE /* <%= name %>.app */;
162
+ productType = "com.apple.product-type.application";
163
+ };
164
+ /* End PBXNativeTarget section */
165
+
166
+ /* Begin PBXProject section */
167
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
168
+ isa = PBXProject;
169
+ buildConfigurationList = 4D7A7B570ABF745500C2D4C0 /* Build configuration list for PBXProject "<%= name %>" */;
170
+ hasScannedForEncodings = 0;
171
+ mainGroup = 29B97314FDCFA39411CA2CEA /* <%= name %> */;
172
+ projectDirPath = "";
173
+ projectRoot = "";
174
+ targets = (
175
+ 4DDCA7030ACC9A6100E082CE /* <%= name %> */,
176
+ );
177
+ };
178
+ /* End PBXProject section */
179
+
180
+ /* Begin PBXResourcesBuildPhase section */
181
+ 4DDCA7050ACC9A6100E082CE /* Resources */ = {
182
+ isa = PBXResourcesBuildPhase;
183
+ buildActionMask = 2147483647;
184
+ files = (
185
+ 4DDCA7070ACC9A6100E082CE /* InfoPlist.strings in Resources */,
186
+ 4DDCA7080ACC9A6100E082CE /* rb_main.rb in Resources */,
187
+ 514292CE0CC66CDC00F9CEEF /* app in Resources */,
188
+ 514292CF0CC66CDC00F9CEEF /* config in Resources */,
189
+ 514292D00CC66CDC00F9CEEF /* misc in Resources */,
190
+ 514292D10CC66CDC00F9CEEF /* test in Resources */,
191
+ 514292D20CC66CDC00F9CEEF /* vendor in Resources */,
192
+ 514292EF0CC6823A00F9CEEF /* MainMenu.nib in Resources */,
193
+ );
194
+ runOnlyForDeploymentPostprocessing = 0;
195
+ };
196
+ /* End PBXResourcesBuildPhase section */
197
+
198
+ /* Begin PBXSourcesBuildPhase section */
199
+ 4DDCA7090ACC9A6100E082CE /* Sources */ = {
200
+ isa = PBXSourcesBuildPhase;
201
+ buildActionMask = 2147483647;
202
+ files = (
203
+ 4DDCA70A0ACC9A6100E082CE /* main.m in Sources */,
204
+ );
205
+ runOnlyForDeploymentPostprocessing = 0;
206
+ };
207
+ /* End PBXSourcesBuildPhase section */
208
+
209
+ /* Begin PBXVariantGroup section */
210
+ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
211
+ isa = PBXVariantGroup;
212
+ children = (
213
+ 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */,
214
+ );
215
+ name = InfoPlist.strings;
216
+ sourceTree = "<group>";
217
+ };
218
+ 514292ED0CC6823A00F9CEEF /* MainMenu.nib */ = {
219
+ isa = PBXVariantGroup;
220
+ children = (
221
+ 514292EE0CC6823A00F9CEEF /* English */,
222
+ );
223
+ name = MainMenu.nib;
224
+ sourceTree = "<group>";
225
+ };
226
+ /* End PBXVariantGroup section */
227
+
228
+ /* Begin XCBuildConfiguration section */
229
+ 4D7A7B580ABF745500C2D4C0 /* Debug */ = {
230
+ isa = XCBuildConfiguration;
231
+ buildSettings = {
232
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
233
+ GCC_WARN_UNUSED_VARIABLE = YES;
234
+ PREBINDING = NO;
235
+ };
236
+ name = Debug;
237
+ };
238
+ 4D7A7B590ABF745500C2D4C0 /* Release */ = {
239
+ isa = XCBuildConfiguration;
240
+ buildSettings = {
241
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
242
+ GCC_WARN_UNUSED_VARIABLE = YES;
243
+ PREBINDING = NO;
244
+ };
245
+ name = Release;
246
+ };
247
+ 4DDCA70F0ACC9A6100E082CE /* Debug */ = {
248
+ isa = XCBuildConfiguration;
249
+ buildSettings = {
250
+ COPY_PHASE_STRIP = NO;
251
+ GCC_DYNAMIC_NO_PIC = NO;
252
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
253
+ GCC_MODEL_TUNING = G5;
254
+ GCC_OPTIMIZATION_LEVEL = 0;
255
+ INFOPLIST_FILE = Info.plist;
256
+ INSTALL_PATH = "$(HOME)/Applications";
257
+ PRODUCT_NAME = <%= name %>;
258
+ WRAPPER_EXTENSION = app;
259
+ ZERO_LINK = YES;
260
+ };
261
+ name = Debug;
262
+ };
263
+ 4DDCA7100ACC9A6100E082CE /* Release */ = {
264
+ isa = XCBuildConfiguration;
265
+ buildSettings = {
266
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
267
+ GCC_MODEL_TUNING = G5;
268
+ INFOPLIST_FILE = Info.plist;
269
+ INSTALL_PATH = "$(HOME)/Applications";
270
+ PRODUCT_NAME = <%= name %>;
271
+ WRAPPER_EXTENSION = app;
272
+ };
273
+ name = Release;
274
+ };
275
+ /* End XCBuildConfiguration section */
276
+
277
+ /* Begin XCConfigurationList section */
278
+ 4D7A7B570ABF745500C2D4C0 /* Build configuration list for PBXProject "<%= name %>" */ = {
279
+ isa = XCConfigurationList;
280
+ buildConfigurations = (
281
+ 4D7A7B580ABF745500C2D4C0 /* Debug */,
282
+ 4D7A7B590ABF745500C2D4C0 /* Release */,
283
+ );
284
+ defaultConfigurationIsVisible = 0;
285
+ defaultConfigurationName = Release;
286
+ };
287
+ 4DDCA70E0ACC9A6100E082CE /* Build configuration list for PBXNativeTarget "<%= name %>" */ = {
288
+ isa = XCConfigurationList;
289
+ buildConfigurations = (
290
+ 4DDCA70F0ACC9A6100E082CE /* Debug */,
291
+ 4DDCA7100ACC9A6100E082CE /* Release */,
292
+ );
293
+ defaultConfigurationIsVisible = 0;
294
+ defaultConfigurationName = Release;
295
+ };
296
+ /* End XCConfigurationList section */
297
+ };
298
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
299
+ }