choctop 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,10 @@
1
- == 0.0.1 2009-01-19
1
+ == 0.9.1 2009-01-29
2
+
3
+ * default DMG theme is a sky background and plain volume icon
4
+ * sparkle xml feed includes a DSA signature
5
+ * explicit release_notes property
6
+
7
+ == 0.9.0 2009-01-28
2
8
 
3
9
  * 1 major enhancement:
4
10
  * Initial release
@@ -5,12 +5,13 @@ Rakefile
5
5
  app_generators/install_choctop/install_choctop_generator.rb
6
6
  app_generators/install_choctop/templates/Rakefile.erb
7
7
  assets/DefaultVolumeIcon.icns
8
- assets/default_background.jpg
8
+ assets/sky.jpg
9
+ assets/sky_background.jpg
10
+ assets/vanillia_dmg_icon.png
11
+ assets/wood.jpg
9
12
  bin/install_choctop
10
13
  features/development.feature
11
14
  features/dmg.feature
12
- features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.mode1v3
13
- features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.pbxuser
14
15
  features/fixtures/SampleApp/English.lproj/InfoPlist.strings
15
16
  features/fixtures/SampleApp/English.lproj/MainMenu.xib
16
17
  features/fixtures/SampleApp/Info.plist
@@ -160,11 +161,13 @@ features/fixtures/design/background.jpg
160
161
  features/fixtures/design/ds_store
161
162
  features/initial_generator.feature
162
163
  features/rake_tasks.feature
164
+ features/sparkle_feed.feature
163
165
  features/steps/common.rb
164
166
  features/steps/dmg_steps.rb
165
167
  features/steps/env.rb
166
168
  features/steps/generator.rb
167
169
  features/steps/remote.rb
170
+ features/steps/xcode_steps.rb
168
171
  lib/choctop.rb
169
172
  lib/choctop/appcast.rb
170
173
  lib/choctop/dmg.rb
@@ -54,12 +54,12 @@ to the end:
54
54
 
55
55
  # Optional, showing defaults
56
56
  s.base_url = "http://#{s.host}"
57
- s.release_notes_link = s.base_url
57
+ s.release_notes = "release_notes.html"
58
58
 
59
59
  # Custom DMG
60
60
  s.background_file = "background.jpg"
61
- s.app_icon_position = [50, 90]
62
- s.applications_icon_position = [150, 90]
61
+ s.app_icon_position = [100, 90]
62
+ s.applications_icon_position = [400, 90]
63
63
 
64
64
  # Custom DMG options
65
65
  s.volume_icon = "dmg.icns"
@@ -98,6 +98,7 @@ its set to Debug for development) and then Build. The "rake appcast" task should
98
98
  * Chris Bailey at http://codeintensity.blogspot.com/2008/03/creating-sparkle-appcast-via-rake-tasks.html
99
99
  * Eloy Duran's Rucola at http://github.com/alloy/rucola
100
100
  * Emanuele Vicentini's rake_dmg at http://github.com/baldowl/rake_dmg
101
+ * AppleScript ideas from http://svn.tribler.org/abc/branches/old-mainbranch-till-4.1.7plus/mac/Makefile-from-vlc-ready
101
102
 
102
103
 
103
104
  == SPONSORED BY:
@@ -11,7 +11,7 @@ ChocTop.new do |s|
11
11
 
12
12
  # Custom DMG
13
13
  # s.background_file = "background.jpg"
14
- # s.app_icon_position = [50, 90]
15
- # s.applications_icon_position = [150, 90]
14
+ # s.app_icon_position = [100, 90]
15
+ # s.applications_icon_position = [400, 90]
16
16
  # s.volume_icon = "dmg.icns"
17
17
  end
Binary file
Binary file
Binary file
@@ -24,5 +24,7 @@
24
24
  <string>MainMenu</string>
25
25
  <key>NSPrincipalClass</key>
26
26
  <string>NSApplication</string>
27
+ <key>SUFeedURLKey</key>
28
+ <string>http://mocra.com/sample_app/my_feed.xml</string>
27
29
  </dict>
28
30
  </plist>
@@ -9,24 +9,10 @@ Feature: Rake tasks are available to build and deploy Cocoa apps with Sparkle
9
9
  Then folder 'build/Release/SampleApp.app' is created
10
10
 
11
11
  Scenario: rake task to create dmg file of build
12
- Given an unbuilt Cocoa app with choctop installed
13
- And task 'rake build' is invoked
12
+ Given a Cocoa app with choctop installed
14
13
  When task 'rake dmg' is invoked
15
14
  Then file 'appcast/build/SampleApp-0.1.0.dmg' is created
16
15
 
17
- Scenario: rake task to create/update the appcast file
18
- Given a Cocoa app with choctop installed
19
- When task 'rake feed' is invoked
20
- Then file 'appcast/build/linker_appcast.xml' is created
21
- And contents of file 'appcast/build/linker_appcast.xml' does match /<channel>/
22
- And contents of file 'appcast/build/linker_appcast.xml' does match /</channel>/
23
- And contents of file 'appcast/build/linker_appcast.xml' does match /<pubDate>/
24
- And contents of file 'appcast/build/linker_appcast.xml' does match /<item>/
25
- And contents of file 'appcast/build/linker_appcast.xml' does match /<title>SampleApp 0.1.0</title>/
26
- And file 'appcast/build/index.php' is created
27
- And contents of file 'appcast/build/index.php' does match /Location/
28
- And contents of file 'appcast/build/index.php' does match /SampleApp-0.1.0.dmg/
29
-
30
16
  Scenario: rake task to upload the appcast file to the server
31
17
  Given a Cocoa app with choctop installed
32
18
  And task 'rake feed' is invoked
@@ -0,0 +1,24 @@
1
+ Feature: Generate an XML file for Sparkle to use for updates
2
+ In order to reduce cost of distributing apps to users
3
+ As a developer/release manager
4
+ I want to generate an XML file for the Sparkle framework
5
+
6
+ Scenario: rake task to create/update the appcast file
7
+ Given a Cocoa app with choctop installed
8
+ And ChocTop config is configured for remote Sparkle
9
+ When task 'rake feed' is invoked
10
+ Then file 'appcast/build/my_feed.xml' is created
11
+ And contents of file 'appcast/build/my_feed.xml' does match /<channel>/
12
+ And contents of file 'appcast/build/my_feed.xml' does match /</channel>/
13
+ And contents of file 'appcast/build/my_feed.xml' does match /<pubDate>/
14
+ And contents of file 'appcast/build/my_feed.xml' does match /<item>/
15
+ And contents of file 'appcast/build/my_feed.xml' does match /<title>SampleApp 0.1.0</title>/
16
+ And contents of file 'appcast/build/my_feed.xml' does match /href="http://mocra.com/sample_app/my_feed.xml"/
17
+ And contents of file 'appcast/build/my_feed.xml' does match /<sparkle:releaseNotesLink>http://mocra.com/sample_app/release_notes.html</sparkle:releaseNotesLink>/
18
+ And file 'appcast/build/index.php' is created
19
+ And contents of file 'appcast/build/index.php' does match /Location/
20
+ And contents of file 'appcast/build/index.php' does match /SampleApp-0.1.0.dmg/
21
+
22
+
23
+
24
+
@@ -18,3 +18,13 @@ Given /^ChocTop config is configured for local rsync$/ do
18
18
  RUBY
19
19
  end
20
20
  end
21
+
22
+ Given /^ChocTop config is configured for remote Sparkle$/ do
23
+ in_project_folder do
24
+ append_to_file "Rakefile", <<-RUBY.gsub(/^ /, '')
25
+ $sparkle.host = "mocra.com"
26
+ $sparkle.base_url = "http://mocra.com/sample_app"
27
+ $sparkle.remote_dir = "/opt/apps/mocra/downloads/sample_app"
28
+ RUBY
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ Then /^current xcode project version is '(.*)'$/ do |version|
2
+ in_project_folder do
3
+ ChocTop.new.version.to_s.should == version
4
+ end
5
+ end
@@ -9,7 +9,7 @@ require "active_support"
9
9
  require "osx/cocoa"
10
10
 
11
11
  class ChocTop
12
- VERSION = '0.9.0'
12
+ VERSION = '0.9.1'
13
13
 
14
14
  # The name of the Cocoa application
15
15
  # Default: info_plist['CFBundleExecutable']
@@ -34,11 +34,8 @@ class ChocTop
34
34
  end
35
35
 
36
36
  # The url to display the release notes for the latest release
37
- # Default: base_url
38
- attr_writer :release_notes_link
39
- def release_notes_link
40
- @release_notes_link ||= base_url
41
- end
37
+ # Default: release_notes.html
38
+ attr_accessor :release_notes
42
39
 
43
40
  # The name of the local xml file containing the Sparkle item details
44
41
  # Default: info_plist['SUFeedURL'] or linker_appcast.xml
@@ -59,12 +56,12 @@ class ChocTop
59
56
 
60
57
  # Path to generated package DMG
61
58
  def pkg
62
- "appcast/build/#{pkg_name}"
59
+ "#{build_path}/#{pkg_name}"
63
60
  end
64
61
 
65
- # Path to designed DMG and frozen assets for reuse in generated DMGs
66
- def design_path
67
- "appcast/design"
62
+ # Path to built DMG, sparkle's xml file and other assets to be uploaded to remote server
63
+ def build_path
64
+ "appcast/build"
68
65
  end
69
66
 
70
67
  def mountpoint
@@ -124,12 +121,13 @@ class ChocTop
124
121
  @name = info_plist['CFBundleExecutable']
125
122
  @version = info_plist['CFBundleVersion']
126
123
  @target = "#{name}.app"
127
- @appcast_filename = info_plist['SUFeedURL'] ? File.basename(info_plist['SUFeedURL']) : 'linker_appcast.xml'
124
+ @appcast_filename = info_plist['SUFeedURLKey'] ? File.basename(info_plist['SUFeedURLKey']) : 'linker_appcast.xml'
125
+ @release_notes = 'release_notes.html'
128
126
  @rsync_args = '-aCv'
129
127
 
130
- @background_file = File.dirname(__FILE__) + "/../assets/default_background.jpg"
131
- @app_icon_position = [50, 90]
132
- @applications_icon_position = [150, 90]
128
+ @background_file = File.dirname(__FILE__) + "/../assets/sky_background.jpg"
129
+ @app_icon_position = [175, 65]
130
+ @applications_icon_position = [347, 270]
133
131
  @volume_icon = File.dirname(__FILE__) + "/../assets/DefaultVolumeIcon.icns"
134
132
  @icon_size = 104
135
133
 
@@ -6,8 +6,8 @@ module ChocTop::Appcast
6
6
  def make_appcast
7
7
  app_name = File.basename(File.expand_path('.'))
8
8
 
9
- FileUtils.mkdir_p "appcast/build"
10
- appcast = File.open("appcast/build/#{appcast_filename}", 'w')
9
+ FileUtils.mkdir_p "#{build_path}"
10
+ appcast = File.open("#{build_path}/#{appcast_filename}", 'w')
11
11
 
12
12
  xml = Builder::XmlMarkup.new(:target => appcast, :indent => 2)
13
13
 
@@ -27,20 +27,21 @@ module ChocTop::Appcast
27
27
 
28
28
  xml.item do
29
29
  xml.title("#{name} #{version}")
30
- xml.tag! "sparkle:releaseNotesLink", release_notes_link
30
+ xml.tag! "sparkle:releaseNotesLink", "#{base_url}/#{release_notes}"
31
31
  xml.pubDate Time.now.to_s(:rfc822) #(File.mtime(pkg))
32
32
  xml.guid("#{name}-#{version}", :isPermaLink => "false")
33
33
  xml.enclosure(:url => "#{base_url}/#{pkg_name}",
34
34
  :length => "#{File.size(pkg)}",
35
35
  :type => "application/dmg",
36
- :"sparkle:version" => version)
36
+ :"sparkle:version" => version,
37
+ :"sparkle:dsaSignature" => dsa_signature)
37
38
  end
38
39
  end
39
40
  end
40
41
  end
41
42
 
42
43
  def make_index_redirect
43
- File.open("appcast/build/index.php", 'w') do |f|
44
+ File.open("#{build_path}/index.php", 'w') do |f|
44
45
  f << %Q{<?php header("Location: #{pkg_relative_url}"); ?>}
45
46
  end
46
47
  end
@@ -50,5 +51,22 @@ module ChocTop::Appcast
50
51
  sh %{rsync -aCv appcast/build/ #{_host}#{remote_dir}}
51
52
  end
52
53
 
54
+ # Returns a file path to the dsa_priv.pem file
55
+ # If private key + public key haven't been generated yet then
56
+ # generate them
57
+ def private_key
58
+ unless File.exists?('dsa_priv.pem')
59
+ puts "Creating new private and public keys for signing the DMG..."
60
+ `openssl dsaparam 2048 < /dev/urandom > dsaparam.pem`
61
+ `openssl gendsa dsaparam.pem -out dsa_priv.pem`
62
+ `openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem`
63
+ `rm dsaparam.pem`
64
+ end
65
+ File.expand_path('dsa_priv.pem')
66
+ end
67
+
68
+ def dsa_signature
69
+ @dsa_signature ||= `openssl dgst -sha1 -binary < "#{pkg}" | openssl dgst -dss1 -sign "#{private_key}" | openssl enc -base64`
70
+ end
53
71
  end
54
72
  ChocTop.send(:include, ChocTop::Appcast)
@@ -1,8 +1,8 @@
1
1
  module ChocTop::Dmg
2
2
  def make_dmg
3
- FileUtils.rm_rf pkg
4
- FileUtils.mkdir_p(File.dirname(pkg))
5
- FileUtils.mkdir_p(mountpoint)
3
+ FileUtils.rm_rf build_path
4
+ FileUtils.mkdir_p build_path
5
+ FileUtils.mkdir_p mountpoint # TODO can we remove random mountpoints?
6
6
  sh "hdiutil create -format UDRW -quiet -volname '#{name}' -srcfolder 'build/Release/#{target}' '#{pkg}'"
7
7
  sh "hdiutil attach '#{pkg}' -mountpoint '#{volume_path}' -noautoopen -quiet"
8
8
  sh "bless --folder #{volume_path} --openfolder #{volume_path}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: choctop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-01-28 00:00:00 +10:00
13
+ date: 2009-01-29 00:00:00 +10:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -74,12 +74,13 @@ files:
74
74
  - app_generators/install_choctop/install_choctop_generator.rb
75
75
  - app_generators/install_choctop/templates/Rakefile.erb
76
76
  - assets/DefaultVolumeIcon.icns
77
- - assets/default_background.jpg
77
+ - assets/sky.jpg
78
+ - assets/sky_background.jpg
79
+ - assets/vanillia_dmg_icon.png
80
+ - assets/wood.jpg
78
81
  - bin/install_choctop
79
82
  - features/development.feature
80
83
  - features/dmg.feature
81
- - features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.mode1v3
82
- - features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.pbxuser
83
84
  - features/fixtures/SampleApp/English.lproj/InfoPlist.strings
84
85
  - features/fixtures/SampleApp/English.lproj/MainMenu.xib
85
86
  - features/fixtures/SampleApp/Info.plist
@@ -229,11 +230,13 @@ files:
229
230
  - features/fixtures/design/ds_store
230
231
  - features/initial_generator.feature
231
232
  - features/rake_tasks.feature
233
+ - features/sparkle_feed.feature
232
234
  - features/steps/common.rb
233
235
  - features/steps/dmg_steps.rb
234
236
  - features/steps/env.rb
235
237
  - features/steps/generator.rb
236
238
  - features/steps/remote.rb
239
+ - features/steps/xcode_steps.rb
237
240
  - lib/choctop.rb
238
241
  - lib/choctop/appcast.rb
239
242
  - lib/choctop/dmg.rb
@@ -1,1370 +0,0 @@
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>ActivePerspectiveName</key>
6
- <string>Project</string>
7
- <key>AllowedModules</key>
8
- <array>
9
- <dict>
10
- <key>BundleLoadPath</key>
11
- <string></string>
12
- <key>MaxInstances</key>
13
- <string>n</string>
14
- <key>Module</key>
15
- <string>PBXSmartGroupTreeModule</string>
16
- <key>Name</key>
17
- <string>Groups and Files Outline View</string>
18
- </dict>
19
- <dict>
20
- <key>BundleLoadPath</key>
21
- <string></string>
22
- <key>MaxInstances</key>
23
- <string>n</string>
24
- <key>Module</key>
25
- <string>PBXNavigatorGroup</string>
26
- <key>Name</key>
27
- <string>Editor</string>
28
- </dict>
29
- <dict>
30
- <key>BundleLoadPath</key>
31
- <string></string>
32
- <key>MaxInstances</key>
33
- <string>n</string>
34
- <key>Module</key>
35
- <string>XCTaskListModule</string>
36
- <key>Name</key>
37
- <string>Task List</string>
38
- </dict>
39
- <dict>
40
- <key>BundleLoadPath</key>
41
- <string></string>
42
- <key>MaxInstances</key>
43
- <string>n</string>
44
- <key>Module</key>
45
- <string>XCDetailModule</string>
46
- <key>Name</key>
47
- <string>File and Smart Group Detail Viewer</string>
48
- </dict>
49
- <dict>
50
- <key>BundleLoadPath</key>
51
- <string></string>
52
- <key>MaxInstances</key>
53
- <string>1</string>
54
- <key>Module</key>
55
- <string>PBXBuildResultsModule</string>
56
- <key>Name</key>
57
- <string>Detailed Build Results Viewer</string>
58
- </dict>
59
- <dict>
60
- <key>BundleLoadPath</key>
61
- <string></string>
62
- <key>MaxInstances</key>
63
- <string>1</string>
64
- <key>Module</key>
65
- <string>PBXProjectFindModule</string>
66
- <key>Name</key>
67
- <string>Project Batch Find Tool</string>
68
- </dict>
69
- <dict>
70
- <key>BundleLoadPath</key>
71
- <string></string>
72
- <key>MaxInstances</key>
73
- <string>n</string>
74
- <key>Module</key>
75
- <string>XCProjectFormatConflictsModule</string>
76
- <key>Name</key>
77
- <string>Project Format Conflicts List</string>
78
- </dict>
79
- <dict>
80
- <key>BundleLoadPath</key>
81
- <string></string>
82
- <key>MaxInstances</key>
83
- <string>n</string>
84
- <key>Module</key>
85
- <string>PBXBookmarksModule</string>
86
- <key>Name</key>
87
- <string>Bookmarks Tool</string>
88
- </dict>
89
- <dict>
90
- <key>BundleLoadPath</key>
91
- <string></string>
92
- <key>MaxInstances</key>
93
- <string>n</string>
94
- <key>Module</key>
95
- <string>PBXClassBrowserModule</string>
96
- <key>Name</key>
97
- <string>Class Browser</string>
98
- </dict>
99
- <dict>
100
- <key>BundleLoadPath</key>
101
- <string></string>
102
- <key>MaxInstances</key>
103
- <string>n</string>
104
- <key>Module</key>
105
- <string>PBXCVSModule</string>
106
- <key>Name</key>
107
- <string>Source Code Control Tool</string>
108
- </dict>
109
- <dict>
110
- <key>BundleLoadPath</key>
111
- <string></string>
112
- <key>MaxInstances</key>
113
- <string>n</string>
114
- <key>Module</key>
115
- <string>PBXDebugBreakpointsModule</string>
116
- <key>Name</key>
117
- <string>Debug Breakpoints Tool</string>
118
- </dict>
119
- <dict>
120
- <key>BundleLoadPath</key>
121
- <string></string>
122
- <key>MaxInstances</key>
123
- <string>n</string>
124
- <key>Module</key>
125
- <string>XCDockableInspector</string>
126
- <key>Name</key>
127
- <string>Inspector</string>
128
- </dict>
129
- <dict>
130
- <key>BundleLoadPath</key>
131
- <string></string>
132
- <key>MaxInstances</key>
133
- <string>n</string>
134
- <key>Module</key>
135
- <string>PBXOpenQuicklyModule</string>
136
- <key>Name</key>
137
- <string>Open Quickly Tool</string>
138
- </dict>
139
- <dict>
140
- <key>BundleLoadPath</key>
141
- <string></string>
142
- <key>MaxInstances</key>
143
- <string>1</string>
144
- <key>Module</key>
145
- <string>PBXDebugSessionModule</string>
146
- <key>Name</key>
147
- <string>Debugger</string>
148
- </dict>
149
- <dict>
150
- <key>BundleLoadPath</key>
151
- <string></string>
152
- <key>MaxInstances</key>
153
- <string>1</string>
154
- <key>Module</key>
155
- <string>PBXDebugCLIModule</string>
156
- <key>Name</key>
157
- <string>Debug Console</string>
158
- </dict>
159
- <dict>
160
- <key>BundleLoadPath</key>
161
- <string></string>
162
- <key>MaxInstances</key>
163
- <string>n</string>
164
- <key>Module</key>
165
- <string>XCSnapshotModule</string>
166
- <key>Name</key>
167
- <string>Snapshots Tool</string>
168
- </dict>
169
- </array>
170
- <key>BundlePath</key>
171
- <string>/Previous Systems.localized/2008-11-14_0120/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
172
- <key>Description</key>
173
- <string>DefaultDescriptionKey</string>
174
- <key>DockingSystemVisible</key>
175
- <false/>
176
- <key>Extension</key>
177
- <string>mode1v3</string>
178
- <key>FavBarConfig</key>
179
- <dict>
180
- <key>PBXProjectModuleGUID</key>
181
- <string>311106330F244BB50026C456</string>
182
- <key>XCBarModuleItemNames</key>
183
- <dict/>
184
- <key>XCBarModuleItems</key>
185
- <array/>
186
- </dict>
187
- <key>FirstTimeWindowDisplayed</key>
188
- <false/>
189
- <key>Identifier</key>
190
- <string>com.apple.perspectives.project.mode1v3</string>
191
- <key>MajorVersion</key>
192
- <integer>33</integer>
193
- <key>MinorVersion</key>
194
- <integer>0</integer>
195
- <key>Name</key>
196
- <string>Default</string>
197
- <key>Notifications</key>
198
- <array/>
199
- <key>OpenEditors</key>
200
- <array/>
201
- <key>PerspectiveWidths</key>
202
- <array>
203
- <integer>-1</integer>
204
- <integer>-1</integer>
205
- </array>
206
- <key>Perspectives</key>
207
- <array>
208
- <dict>
209
- <key>ChosenToolbarItems</key>
210
- <array>
211
- <string>active-combo-popup</string>
212
- <string>active-target-popup</string>
213
- <string>active-platform-popup</string>
214
- <string>action</string>
215
- <string>NSToolbarFlexibleSpaceItem</string>
216
- <string>buildOrClean</string>
217
- <string>build-and-goOrGo</string>
218
- <string>com.apple.ide.PBXToolbarStopButton</string>
219
- <string>get-info</string>
220
- <string>toggle-editor</string>
221
- <string>NSToolbarFlexibleSpaceItem</string>
222
- <string>com.apple.pbx.toolbar.searchfield</string>
223
- </array>
224
- <key>ControllerClassBaseName</key>
225
- <string></string>
226
- <key>IconName</key>
227
- <string>WindowOfProjectWithEditor</string>
228
- <key>Identifier</key>
229
- <string>perspective.project</string>
230
- <key>IsVertical</key>
231
- <false/>
232
- <key>Layout</key>
233
- <array>
234
- <dict>
235
- <key>BecomeActive</key>
236
- <true/>
237
- <key>ContentConfiguration</key>
238
- <dict>
239
- <key>PBXBottomSmartGroupGIDs</key>
240
- <array>
241
- <string>1C37FBAC04509CD000000102</string>
242
- <string>1C37FAAC04509CD000000102</string>
243
- <string>1C08E77C0454961000C914BD</string>
244
- <string>1C37FABC05509CD000000102</string>
245
- <string>1C37FABC05539CD112110102</string>
246
- <string>E2644B35053B69B200211256</string>
247
- <string>1C37FABC04509CD000100104</string>
248
- <string>1CC0EA4004350EF90044410B</string>
249
- <string>1CC0EA4004350EF90041110B</string>
250
- </array>
251
- <key>PBXProjectModuleGUID</key>
252
- <string>1CE0B1FE06471DED0097A5F4</string>
253
- <key>PBXProjectModuleLabel</key>
254
- <string>Files</string>
255
- <key>PBXProjectStructureProvided</key>
256
- <string>yes</string>
257
- <key>PBXSmartGroupTreeModuleColumnData</key>
258
- <dict>
259
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
260
- <array>
261
- <real>186</real>
262
- </array>
263
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
264
- <array>
265
- <string>MainColumn</string>
266
- </array>
267
- </dict>
268
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
269
- <dict>
270
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
271
- <array>
272
- <string>29B97314FDCFA39411CA2CEA</string>
273
- <string>29B97317FDCFA39411CA2CEA</string>
274
- <string>29B97323FDCFA39411CA2CEA</string>
275
- <string>1058C7A0FEA54F0111CA2CBB</string>
276
- <string>1058C7A2FEA54F0111CA2CBB</string>
277
- <string>1C37FBAC04509CD000000102</string>
278
- <string>31D490360F24AD94008D19D9</string>
279
- <string>1C37FABC05509CD000000102</string>
280
- </array>
281
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
282
- <array>
283
- <array>
284
- <integer>8</integer>
285
- <integer>7</integer>
286
- <integer>0</integer>
287
- </array>
288
- </array>
289
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
290
- <string>{{0, 0}, {186, 445}}</string>
291
- </dict>
292
- <key>PBXTopSmartGroupGIDs</key>
293
- <array/>
294
- <key>XCIncludePerspectivesSwitch</key>
295
- <true/>
296
- <key>XCSharingToken</key>
297
- <string>com.apple.Xcode.GFSharingToken</string>
298
- </dict>
299
- <key>GeometryConfiguration</key>
300
- <dict>
301
- <key>Frame</key>
302
- <string>{{0, 0}, {203, 463}}</string>
303
- <key>GroupTreeTableConfiguration</key>
304
- <array>
305
- <string>MainColumn</string>
306
- <real>186</real>
307
- </array>
308
- <key>RubberWindowFrame</key>
309
- <string>42 243 788 504 0 0 1680 1028 </string>
310
- </dict>
311
- <key>Module</key>
312
- <string>PBXSmartGroupTreeModule</string>
313
- <key>Proportion</key>
314
- <string>203pt</string>
315
- </dict>
316
- <dict>
317
- <key>Dock</key>
318
- <array>
319
- <dict>
320
- <key>ContentConfiguration</key>
321
- <dict>
322
- <key>PBXProjectModuleGUID</key>
323
- <string>1CE0B20306471E060097A5F4</string>
324
- <key>PBXProjectModuleLabel</key>
325
- <string>Info.plist</string>
326
- <key>PBXSplitModuleInNavigatorKey</key>
327
- <dict>
328
- <key>Split0</key>
329
- <dict>
330
- <key>PBXProjectModuleGUID</key>
331
- <string>1CE0B20406471E060097A5F4</string>
332
- <key>PBXProjectModuleLabel</key>
333
- <string>Info.plist</string>
334
- <key>_historyCapacity</key>
335
- <integer>0</integer>
336
- <key>bookmark</key>
337
- <string>31D490420F24ADB3008D19D9</string>
338
- <key>history</key>
339
- <array>
340
- <string>3111067C0F24859E0026C456</string>
341
- </array>
342
- </dict>
343
- <key>SplitCount</key>
344
- <string>1</string>
345
- </dict>
346
- <key>StatusBarVisibility</key>
347
- <true/>
348
- </dict>
349
- <key>GeometryConfiguration</key>
350
- <dict>
351
- <key>Frame</key>
352
- <string>{{0, 0}, {580, 285}}</string>
353
- <key>RubberWindowFrame</key>
354
- <string>42 243 788 504 0 0 1680 1028 </string>
355
- </dict>
356
- <key>Module</key>
357
- <string>PBXNavigatorGroup</string>
358
- <key>Proportion</key>
359
- <string>285pt</string>
360
- </dict>
361
- <dict>
362
- <key>ContentConfiguration</key>
363
- <dict>
364
- <key>PBXProjectModuleGUID</key>
365
- <string>1CE0B20506471E060097A5F4</string>
366
- <key>PBXProjectModuleLabel</key>
367
- <string>Detail</string>
368
- </dict>
369
- <key>GeometryConfiguration</key>
370
- <dict>
371
- <key>Frame</key>
372
- <string>{{0, 290}, {580, 173}}</string>
373
- <key>RubberWindowFrame</key>
374
- <string>42 243 788 504 0 0 1680 1028 </string>
375
- </dict>
376
- <key>Module</key>
377
- <string>XCDetailModule</string>
378
- <key>Proportion</key>
379
- <string>173pt</string>
380
- </dict>
381
- </array>
382
- <key>Proportion</key>
383
- <string>580pt</string>
384
- </dict>
385
- </array>
386
- <key>Name</key>
387
- <string>Project</string>
388
- <key>ServiceClasses</key>
389
- <array>
390
- <string>XCModuleDock</string>
391
- <string>PBXSmartGroupTreeModule</string>
392
- <string>XCModuleDock</string>
393
- <string>PBXNavigatorGroup</string>
394
- <string>XCDetailModule</string>
395
- </array>
396
- <key>TableOfContents</key>
397
- <array>
398
- <string>31D490430F24ADB3008D19D9</string>
399
- <string>1CE0B1FE06471DED0097A5F4</string>
400
- <string>31D490440F24ADB3008D19D9</string>
401
- <string>1CE0B20306471E060097A5F4</string>
402
- <string>1CE0B20506471E060097A5F4</string>
403
- </array>
404
- <key>ToolbarConfiguration</key>
405
- <string>xcode.toolbar.config.defaultV3</string>
406
- </dict>
407
- <dict>
408
- <key>ControllerClassBaseName</key>
409
- <string></string>
410
- <key>IconName</key>
411
- <string>WindowOfProject</string>
412
- <key>Identifier</key>
413
- <string>perspective.morph</string>
414
- <key>IsVertical</key>
415
- <integer>0</integer>
416
- <key>Layout</key>
417
- <array>
418
- <dict>
419
- <key>BecomeActive</key>
420
- <integer>1</integer>
421
- <key>ContentConfiguration</key>
422
- <dict>
423
- <key>PBXBottomSmartGroupGIDs</key>
424
- <array>
425
- <string>1C37FBAC04509CD000000102</string>
426
- <string>1C37FAAC04509CD000000102</string>
427
- <string>1C08E77C0454961000C914BD</string>
428
- <string>1C37FABC05509CD000000102</string>
429
- <string>1C37FABC05539CD112110102</string>
430
- <string>E2644B35053B69B200211256</string>
431
- <string>1C37FABC04509CD000100104</string>
432
- <string>1CC0EA4004350EF90044410B</string>
433
- <string>1CC0EA4004350EF90041110B</string>
434
- </array>
435
- <key>PBXProjectModuleGUID</key>
436
- <string>11E0B1FE06471DED0097A5F4</string>
437
- <key>PBXProjectModuleLabel</key>
438
- <string>Files</string>
439
- <key>PBXProjectStructureProvided</key>
440
- <string>yes</string>
441
- <key>PBXSmartGroupTreeModuleColumnData</key>
442
- <dict>
443
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
444
- <array>
445
- <real>186</real>
446
- </array>
447
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
448
- <array>
449
- <string>MainColumn</string>
450
- </array>
451
- </dict>
452
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
453
- <dict>
454
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
455
- <array>
456
- <string>29B97314FDCFA39411CA2CEA</string>
457
- <string>1C37FABC05509CD000000102</string>
458
- </array>
459
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
460
- <array>
461
- <array>
462
- <integer>0</integer>
463
- </array>
464
- </array>
465
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
466
- <string>{{0, 0}, {186, 337}}</string>
467
- </dict>
468
- <key>PBXTopSmartGroupGIDs</key>
469
- <array/>
470
- <key>XCIncludePerspectivesSwitch</key>
471
- <integer>1</integer>
472
- <key>XCSharingToken</key>
473
- <string>com.apple.Xcode.GFSharingToken</string>
474
- </dict>
475
- <key>GeometryConfiguration</key>
476
- <dict>
477
- <key>Frame</key>
478
- <string>{{0, 0}, {203, 355}}</string>
479
- <key>GroupTreeTableConfiguration</key>
480
- <array>
481
- <string>MainColumn</string>
482
- <real>186</real>
483
- </array>
484
- <key>RubberWindowFrame</key>
485
- <string>373 269 690 397 0 0 1440 878 </string>
486
- </dict>
487
- <key>Module</key>
488
- <string>PBXSmartGroupTreeModule</string>
489
- <key>Proportion</key>
490
- <string>100%</string>
491
- </dict>
492
- </array>
493
- <key>Name</key>
494
- <string>Morph</string>
495
- <key>PreferredWidth</key>
496
- <integer>300</integer>
497
- <key>ServiceClasses</key>
498
- <array>
499
- <string>XCModuleDock</string>
500
- <string>PBXSmartGroupTreeModule</string>
501
- </array>
502
- <key>TableOfContents</key>
503
- <array>
504
- <string>11E0B1FE06471DED0097A5F4</string>
505
- </array>
506
- <key>ToolbarConfiguration</key>
507
- <string>xcode.toolbar.config.default.shortV3</string>
508
- </dict>
509
- </array>
510
- <key>PerspectivesBarVisible</key>
511
- <false/>
512
- <key>ShelfIsVisible</key>
513
- <false/>
514
- <key>SourceDescription</key>
515
- <string>file at '/Previous Systems.localized/2008-11-14_0120/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
516
- <key>StatusbarIsVisible</key>
517
- <true/>
518
- <key>TimeStamp</key>
519
- <real>0.0</real>
520
- <key>ToolbarDisplayMode</key>
521
- <integer>1</integer>
522
- <key>ToolbarIsVisible</key>
523
- <true/>
524
- <key>ToolbarSizeMode</key>
525
- <integer>1</integer>
526
- <key>Type</key>
527
- <string>Perspectives</string>
528
- <key>UpdateMessage</key>
529
- <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
530
- <key>WindowJustification</key>
531
- <integer>5</integer>
532
- <key>WindowOrderList</key>
533
- <array>
534
- <string>/Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/SampleApp.xcodeproj</string>
535
- </array>
536
- <key>WindowString</key>
537
- <string>42 243 788 504 0 0 1680 1028 </string>
538
- <key>WindowToolsV3</key>
539
- <array>
540
- <dict>
541
- <key>FirstTimeWindowDisplayed</key>
542
- <false/>
543
- <key>Identifier</key>
544
- <string>windowTool.build</string>
545
- <key>IsVertical</key>
546
- <true/>
547
- <key>Layout</key>
548
- <array>
549
- <dict>
550
- <key>Dock</key>
551
- <array>
552
- <dict>
553
- <key>ContentConfiguration</key>
554
- <dict>
555
- <key>PBXProjectModuleGUID</key>
556
- <string>1CD0528F0623707200166675</string>
557
- <key>PBXProjectModuleLabel</key>
558
- <string></string>
559
- <key>StatusBarVisibility</key>
560
- <true/>
561
- </dict>
562
- <key>GeometryConfiguration</key>
563
- <dict>
564
- <key>Frame</key>
565
- <string>{{0, 0}, {500, 218}}</string>
566
- <key>RubberWindowFrame</key>
567
- <string>62 482 500 500 0 0 1024 746 </string>
568
- </dict>
569
- <key>Module</key>
570
- <string>PBXNavigatorGroup</string>
571
- <key>Proportion</key>
572
- <string>218pt</string>
573
- </dict>
574
- <dict>
575
- <key>ContentConfiguration</key>
576
- <dict>
577
- <key>PBXProjectModuleGUID</key>
578
- <string>XCMainBuildResultsModuleGUID</string>
579
- <key>PBXProjectModuleLabel</key>
580
- <string>Build</string>
581
- <key>XCBuildResultsTrigger_Collapse</key>
582
- <integer>1021</integer>
583
- <key>XCBuildResultsTrigger_Open</key>
584
- <integer>1011</integer>
585
- </dict>
586
- <key>GeometryConfiguration</key>
587
- <dict>
588
- <key>Frame</key>
589
- <string>{{0, 223}, {500, 236}}</string>
590
- <key>RubberWindowFrame</key>
591
- <string>62 482 500 500 0 0 1024 746 </string>
592
- </dict>
593
- <key>Module</key>
594
- <string>PBXBuildResultsModule</string>
595
- <key>Proportion</key>
596
- <string>236pt</string>
597
- </dict>
598
- </array>
599
- <key>Proportion</key>
600
- <string>459pt</string>
601
- </dict>
602
- </array>
603
- <key>Name</key>
604
- <string>Build Results</string>
605
- <key>ServiceClasses</key>
606
- <array>
607
- <string>PBXBuildResultsModule</string>
608
- </array>
609
- <key>StatusbarIsVisible</key>
610
- <true/>
611
- <key>TableOfContents</key>
612
- <array>
613
- <string>311106340F244BB50026C456</string>
614
- <string>311106350F244BB50026C456</string>
615
- <string>1CD0528F0623707200166675</string>
616
- <string>XCMainBuildResultsModuleGUID</string>
617
- </array>
618
- <key>ToolbarConfiguration</key>
619
- <string>xcode.toolbar.config.buildV3</string>
620
- <key>WindowString</key>
621
- <string>62 482 500 500 0 0 1024 746 </string>
622
- <key>WindowToolGUID</key>
623
- <string>311106340F244BB50026C456</string>
624
- <key>WindowToolIsVisible</key>
625
- <false/>
626
- </dict>
627
- <dict>
628
- <key>Identifier</key>
629
- <string>windowTool.debugger</string>
630
- <key>Layout</key>
631
- <array>
632
- <dict>
633
- <key>Dock</key>
634
- <array>
635
- <dict>
636
- <key>ContentConfiguration</key>
637
- <dict>
638
- <key>Debugger</key>
639
- <dict>
640
- <key>HorizontalSplitView</key>
641
- <dict>
642
- <key>_collapsingFrameDimension</key>
643
- <real>0.0</real>
644
- <key>_indexOfCollapsedView</key>
645
- <integer>0</integer>
646
- <key>_percentageOfCollapsedView</key>
647
- <real>0.0</real>
648
- <key>isCollapsed</key>
649
- <string>yes</string>
650
- <key>sizes</key>
651
- <array>
652
- <string>{{0, 0}, {317, 164}}</string>
653
- <string>{{317, 0}, {377, 164}}</string>
654
- </array>
655
- </dict>
656
- <key>VerticalSplitView</key>
657
- <dict>
658
- <key>_collapsingFrameDimension</key>
659
- <real>0.0</real>
660
- <key>_indexOfCollapsedView</key>
661
- <integer>0</integer>
662
- <key>_percentageOfCollapsedView</key>
663
- <real>0.0</real>
664
- <key>isCollapsed</key>
665
- <string>yes</string>
666
- <key>sizes</key>
667
- <array>
668
- <string>{{0, 0}, {694, 164}}</string>
669
- <string>{{0, 164}, {694, 216}}</string>
670
- </array>
671
- </dict>
672
- </dict>
673
- <key>LauncherConfigVersion</key>
674
- <string>8</string>
675
- <key>PBXProjectModuleGUID</key>
676
- <string>1C162984064C10D400B95A72</string>
677
- <key>PBXProjectModuleLabel</key>
678
- <string>Debug - GLUTExamples (Underwater)</string>
679
- </dict>
680
- <key>GeometryConfiguration</key>
681
- <dict>
682
- <key>DebugConsoleDrawerSize</key>
683
- <string>{100, 120}</string>
684
- <key>DebugConsoleVisible</key>
685
- <string>None</string>
686
- <key>DebugConsoleWindowFrame</key>
687
- <string>{{200, 200}, {500, 300}}</string>
688
- <key>DebugSTDIOWindowFrame</key>
689
- <string>{{200, 200}, {500, 300}}</string>
690
- <key>Frame</key>
691
- <string>{{0, 0}, {694, 380}}</string>
692
- <key>RubberWindowFrame</key>
693
- <string>321 238 694 422 0 0 1440 878 </string>
694
- </dict>
695
- <key>Module</key>
696
- <string>PBXDebugSessionModule</string>
697
- <key>Proportion</key>
698
- <string>100%</string>
699
- </dict>
700
- </array>
701
- <key>Proportion</key>
702
- <string>100%</string>
703
- </dict>
704
- </array>
705
- <key>Name</key>
706
- <string>Debugger</string>
707
- <key>ServiceClasses</key>
708
- <array>
709
- <string>PBXDebugSessionModule</string>
710
- </array>
711
- <key>StatusbarIsVisible</key>
712
- <integer>1</integer>
713
- <key>TableOfContents</key>
714
- <array>
715
- <string>1CD10A99069EF8BA00B06720</string>
716
- <string>1C0AD2AB069F1E9B00FABCE6</string>
717
- <string>1C162984064C10D400B95A72</string>
718
- <string>1C0AD2AC069F1E9B00FABCE6</string>
719
- </array>
720
- <key>ToolbarConfiguration</key>
721
- <string>xcode.toolbar.config.debugV3</string>
722
- <key>WindowString</key>
723
- <string>321 238 694 422 0 0 1440 878 </string>
724
- <key>WindowToolGUID</key>
725
- <string>1CD10A99069EF8BA00B06720</string>
726
- <key>WindowToolIsVisible</key>
727
- <integer>0</integer>
728
- </dict>
729
- <dict>
730
- <key>Identifier</key>
731
- <string>windowTool.find</string>
732
- <key>Layout</key>
733
- <array>
734
- <dict>
735
- <key>Dock</key>
736
- <array>
737
- <dict>
738
- <key>Dock</key>
739
- <array>
740
- <dict>
741
- <key>ContentConfiguration</key>
742
- <dict>
743
- <key>PBXProjectModuleGUID</key>
744
- <string>1CDD528C0622207200134675</string>
745
- <key>PBXProjectModuleLabel</key>
746
- <string>&lt;No Editor&gt;</string>
747
- <key>PBXSplitModuleInNavigatorKey</key>
748
- <dict>
749
- <key>Split0</key>
750
- <dict>
751
- <key>PBXProjectModuleGUID</key>
752
- <string>1CD0528D0623707200166675</string>
753
- </dict>
754
- <key>SplitCount</key>
755
- <string>1</string>
756
- </dict>
757
- <key>StatusBarVisibility</key>
758
- <integer>1</integer>
759
- </dict>
760
- <key>GeometryConfiguration</key>
761
- <dict>
762
- <key>Frame</key>
763
- <string>{{0, 0}, {781, 167}}</string>
764
- <key>RubberWindowFrame</key>
765
- <string>62 385 781 470 0 0 1440 878 </string>
766
- </dict>
767
- <key>Module</key>
768
- <string>PBXNavigatorGroup</string>
769
- <key>Proportion</key>
770
- <string>781pt</string>
771
- </dict>
772
- </array>
773
- <key>Proportion</key>
774
- <string>50%</string>
775
- </dict>
776
- <dict>
777
- <key>BecomeActive</key>
778
- <integer>1</integer>
779
- <key>ContentConfiguration</key>
780
- <dict>
781
- <key>PBXProjectModuleGUID</key>
782
- <string>1CD0528E0623707200166675</string>
783
- <key>PBXProjectModuleLabel</key>
784
- <string>Project Find</string>
785
- </dict>
786
- <key>GeometryConfiguration</key>
787
- <dict>
788
- <key>Frame</key>
789
- <string>{{8, 0}, {773, 254}}</string>
790
- <key>RubberWindowFrame</key>
791
- <string>62 385 781 470 0 0 1440 878 </string>
792
- </dict>
793
- <key>Module</key>
794
- <string>PBXProjectFindModule</string>
795
- <key>Proportion</key>
796
- <string>50%</string>
797
- </dict>
798
- </array>
799
- <key>Proportion</key>
800
- <string>428pt</string>
801
- </dict>
802
- </array>
803
- <key>Name</key>
804
- <string>Project Find</string>
805
- <key>ServiceClasses</key>
806
- <array>
807
- <string>PBXProjectFindModule</string>
808
- </array>
809
- <key>StatusbarIsVisible</key>
810
- <integer>1</integer>
811
- <key>TableOfContents</key>
812
- <array>
813
- <string>1C530D57069F1CE1000CFCEE</string>
814
- <string>1C530D58069F1CE1000CFCEE</string>
815
- <string>1C530D59069F1CE1000CFCEE</string>
816
- <string>1CDD528C0622207200134675</string>
817
- <string>1C530D5A069F1CE1000CFCEE</string>
818
- <string>1CE0B1FE06471DED0097A5F4</string>
819
- <string>1CD0528E0623707200166675</string>
820
- </array>
821
- <key>WindowString</key>
822
- <string>62 385 781 470 0 0 1440 878 </string>
823
- <key>WindowToolGUID</key>
824
- <string>1C530D57069F1CE1000CFCEE</string>
825
- <key>WindowToolIsVisible</key>
826
- <integer>0</integer>
827
- </dict>
828
- <dict>
829
- <key>Identifier</key>
830
- <string>MENUSEPARATOR</string>
831
- </dict>
832
- <dict>
833
- <key>Identifier</key>
834
- <string>windowTool.debuggerConsole</string>
835
- <key>Layout</key>
836
- <array>
837
- <dict>
838
- <key>Dock</key>
839
- <array>
840
- <dict>
841
- <key>BecomeActive</key>
842
- <integer>1</integer>
843
- <key>ContentConfiguration</key>
844
- <dict>
845
- <key>PBXProjectModuleGUID</key>
846
- <string>1C78EAAC065D492600B07095</string>
847
- <key>PBXProjectModuleLabel</key>
848
- <string>Debugger Console</string>
849
- </dict>
850
- <key>GeometryConfiguration</key>
851
- <dict>
852
- <key>Frame</key>
853
- <string>{{0, 0}, {650, 250}}</string>
854
- <key>RubberWindowFrame</key>
855
- <string>516 632 650 250 0 0 1680 1027 </string>
856
- </dict>
857
- <key>Module</key>
858
- <string>PBXDebugCLIModule</string>
859
- <key>Proportion</key>
860
- <string>209pt</string>
861
- </dict>
862
- </array>
863
- <key>Proportion</key>
864
- <string>209pt</string>
865
- </dict>
866
- </array>
867
- <key>Name</key>
868
- <string>Debugger Console</string>
869
- <key>ServiceClasses</key>
870
- <array>
871
- <string>PBXDebugCLIModule</string>
872
- </array>
873
- <key>StatusbarIsVisible</key>
874
- <integer>1</integer>
875
- <key>TableOfContents</key>
876
- <array>
877
- <string>1C78EAAD065D492600B07095</string>
878
- <string>1C78EAAE065D492600B07095</string>
879
- <string>1C78EAAC065D492600B07095</string>
880
- </array>
881
- <key>ToolbarConfiguration</key>
882
- <string>xcode.toolbar.config.consoleV3</string>
883
- <key>WindowString</key>
884
- <string>650 41 650 250 0 0 1280 1002 </string>
885
- <key>WindowToolGUID</key>
886
- <string>1C78EAAD065D492600B07095</string>
887
- <key>WindowToolIsVisible</key>
888
- <integer>0</integer>
889
- </dict>
890
- <dict>
891
- <key>Identifier</key>
892
- <string>windowTool.snapshots</string>
893
- <key>Layout</key>
894
- <array>
895
- <dict>
896
- <key>Dock</key>
897
- <array>
898
- <dict>
899
- <key>Module</key>
900
- <string>XCSnapshotModule</string>
901
- <key>Proportion</key>
902
- <string>100%</string>
903
- </dict>
904
- </array>
905
- <key>Proportion</key>
906
- <string>100%</string>
907
- </dict>
908
- </array>
909
- <key>Name</key>
910
- <string>Snapshots</string>
911
- <key>ServiceClasses</key>
912
- <array>
913
- <string>XCSnapshotModule</string>
914
- </array>
915
- <key>StatusbarIsVisible</key>
916
- <string>Yes</string>
917
- <key>ToolbarConfiguration</key>
918
- <string>xcode.toolbar.config.snapshots</string>
919
- <key>WindowString</key>
920
- <string>315 824 300 550 0 0 1440 878 </string>
921
- <key>WindowToolIsVisible</key>
922
- <string>Yes</string>
923
- </dict>
924
- <dict>
925
- <key>Identifier</key>
926
- <string>windowTool.scm</string>
927
- <key>Layout</key>
928
- <array>
929
- <dict>
930
- <key>Dock</key>
931
- <array>
932
- <dict>
933
- <key>ContentConfiguration</key>
934
- <dict>
935
- <key>PBXProjectModuleGUID</key>
936
- <string>1C78EAB2065D492600B07095</string>
937
- <key>PBXProjectModuleLabel</key>
938
- <string>&lt;No Editor&gt;</string>
939
- <key>PBXSplitModuleInNavigatorKey</key>
940
- <dict>
941
- <key>Split0</key>
942
- <dict>
943
- <key>PBXProjectModuleGUID</key>
944
- <string>1C78EAB3065D492600B07095</string>
945
- </dict>
946
- <key>SplitCount</key>
947
- <string>1</string>
948
- </dict>
949
- <key>StatusBarVisibility</key>
950
- <integer>1</integer>
951
- </dict>
952
- <key>GeometryConfiguration</key>
953
- <dict>
954
- <key>Frame</key>
955
- <string>{{0, 0}, {452, 0}}</string>
956
- <key>RubberWindowFrame</key>
957
- <string>743 379 452 308 0 0 1280 1002 </string>
958
- </dict>
959
- <key>Module</key>
960
- <string>PBXNavigatorGroup</string>
961
- <key>Proportion</key>
962
- <string>0pt</string>
963
- </dict>
964
- <dict>
965
- <key>BecomeActive</key>
966
- <integer>1</integer>
967
- <key>ContentConfiguration</key>
968
- <dict>
969
- <key>PBXProjectModuleGUID</key>
970
- <string>1CD052920623707200166675</string>
971
- <key>PBXProjectModuleLabel</key>
972
- <string>SCM</string>
973
- </dict>
974
- <key>GeometryConfiguration</key>
975
- <dict>
976
- <key>ConsoleFrame</key>
977
- <string>{{0, 259}, {452, 0}}</string>
978
- <key>Frame</key>
979
- <string>{{0, 7}, {452, 259}}</string>
980
- <key>RubberWindowFrame</key>
981
- <string>743 379 452 308 0 0 1280 1002 </string>
982
- <key>TableConfiguration</key>
983
- <array>
984
- <string>Status</string>
985
- <real>30</real>
986
- <string>FileName</string>
987
- <real>199</real>
988
- <string>Path</string>
989
- <real>197.0950012207031</real>
990
- </array>
991
- <key>TableFrame</key>
992
- <string>{{0, 0}, {452, 250}}</string>
993
- </dict>
994
- <key>Module</key>
995
- <string>PBXCVSModule</string>
996
- <key>Proportion</key>
997
- <string>262pt</string>
998
- </dict>
999
- </array>
1000
- <key>Proportion</key>
1001
- <string>266pt</string>
1002
- </dict>
1003
- </array>
1004
- <key>Name</key>
1005
- <string>SCM</string>
1006
- <key>ServiceClasses</key>
1007
- <array>
1008
- <string>PBXCVSModule</string>
1009
- </array>
1010
- <key>StatusbarIsVisible</key>
1011
- <integer>1</integer>
1012
- <key>TableOfContents</key>
1013
- <array>
1014
- <string>1C78EAB4065D492600B07095</string>
1015
- <string>1C78EAB5065D492600B07095</string>
1016
- <string>1C78EAB2065D492600B07095</string>
1017
- <string>1CD052920623707200166675</string>
1018
- </array>
1019
- <key>ToolbarConfiguration</key>
1020
- <string>xcode.toolbar.config.scm</string>
1021
- <key>WindowString</key>
1022
- <string>743 379 452 308 0 0 1280 1002 </string>
1023
- </dict>
1024
- <dict>
1025
- <key>Identifier</key>
1026
- <string>windowTool.breakpoints</string>
1027
- <key>IsVertical</key>
1028
- <integer>0</integer>
1029
- <key>Layout</key>
1030
- <array>
1031
- <dict>
1032
- <key>Dock</key>
1033
- <array>
1034
- <dict>
1035
- <key>BecomeActive</key>
1036
- <integer>1</integer>
1037
- <key>ContentConfiguration</key>
1038
- <dict>
1039
- <key>PBXBottomSmartGroupGIDs</key>
1040
- <array>
1041
- <string>1C77FABC04509CD000000102</string>
1042
- </array>
1043
- <key>PBXProjectModuleGUID</key>
1044
- <string>1CE0B1FE06471DED0097A5F4</string>
1045
- <key>PBXProjectModuleLabel</key>
1046
- <string>Files</string>
1047
- <key>PBXProjectStructureProvided</key>
1048
- <string>no</string>
1049
- <key>PBXSmartGroupTreeModuleColumnData</key>
1050
- <dict>
1051
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
1052
- <array>
1053
- <real>168</real>
1054
- </array>
1055
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
1056
- <array>
1057
- <string>MainColumn</string>
1058
- </array>
1059
- </dict>
1060
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
1061
- <dict>
1062
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
1063
- <array>
1064
- <string>1C77FABC04509CD000000102</string>
1065
- </array>
1066
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
1067
- <array>
1068
- <array>
1069
- <integer>0</integer>
1070
- </array>
1071
- </array>
1072
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
1073
- <string>{{0, 0}, {168, 350}}</string>
1074
- </dict>
1075
- <key>PBXTopSmartGroupGIDs</key>
1076
- <array/>
1077
- <key>XCIncludePerspectivesSwitch</key>
1078
- <integer>0</integer>
1079
- </dict>
1080
- <key>GeometryConfiguration</key>
1081
- <dict>
1082
- <key>Frame</key>
1083
- <string>{{0, 0}, {185, 368}}</string>
1084
- <key>GroupTreeTableConfiguration</key>
1085
- <array>
1086
- <string>MainColumn</string>
1087
- <real>168</real>
1088
- </array>
1089
- <key>RubberWindowFrame</key>
1090
- <string>315 424 744 409 0 0 1440 878 </string>
1091
- </dict>
1092
- <key>Module</key>
1093
- <string>PBXSmartGroupTreeModule</string>
1094
- <key>Proportion</key>
1095
- <string>185pt</string>
1096
- </dict>
1097
- <dict>
1098
- <key>ContentConfiguration</key>
1099
- <dict>
1100
- <key>PBXProjectModuleGUID</key>
1101
- <string>1CA1AED706398EBD00589147</string>
1102
- <key>PBXProjectModuleLabel</key>
1103
- <string>Detail</string>
1104
- </dict>
1105
- <key>GeometryConfiguration</key>
1106
- <dict>
1107
- <key>Frame</key>
1108
- <string>{{190, 0}, {554, 368}}</string>
1109
- <key>RubberWindowFrame</key>
1110
- <string>315 424 744 409 0 0 1440 878 </string>
1111
- </dict>
1112
- <key>Module</key>
1113
- <string>XCDetailModule</string>
1114
- <key>Proportion</key>
1115
- <string>554pt</string>
1116
- </dict>
1117
- </array>
1118
- <key>Proportion</key>
1119
- <string>368pt</string>
1120
- </dict>
1121
- </array>
1122
- <key>MajorVersion</key>
1123
- <integer>3</integer>
1124
- <key>MinorVersion</key>
1125
- <integer>0</integer>
1126
- <key>Name</key>
1127
- <string>Breakpoints</string>
1128
- <key>ServiceClasses</key>
1129
- <array>
1130
- <string>PBXSmartGroupTreeModule</string>
1131
- <string>XCDetailModule</string>
1132
- </array>
1133
- <key>StatusbarIsVisible</key>
1134
- <integer>1</integer>
1135
- <key>TableOfContents</key>
1136
- <array>
1137
- <string>1CDDB66807F98D9800BB5817</string>
1138
- <string>1CDDB66907F98D9800BB5817</string>
1139
- <string>1CE0B1FE06471DED0097A5F4</string>
1140
- <string>1CA1AED706398EBD00589147</string>
1141
- </array>
1142
- <key>ToolbarConfiguration</key>
1143
- <string>xcode.toolbar.config.breakpointsV3</string>
1144
- <key>WindowString</key>
1145
- <string>315 424 744 409 0 0 1440 878 </string>
1146
- <key>WindowToolGUID</key>
1147
- <string>1CDDB66807F98D9800BB5817</string>
1148
- <key>WindowToolIsVisible</key>
1149
- <integer>1</integer>
1150
- </dict>
1151
- <dict>
1152
- <key>Identifier</key>
1153
- <string>windowTool.debugAnimator</string>
1154
- <key>Layout</key>
1155
- <array>
1156
- <dict>
1157
- <key>Dock</key>
1158
- <array>
1159
- <dict>
1160
- <key>Module</key>
1161
- <string>PBXNavigatorGroup</string>
1162
- <key>Proportion</key>
1163
- <string>100%</string>
1164
- </dict>
1165
- </array>
1166
- <key>Proportion</key>
1167
- <string>100%</string>
1168
- </dict>
1169
- </array>
1170
- <key>Name</key>
1171
- <string>Debug Visualizer</string>
1172
- <key>ServiceClasses</key>
1173
- <array>
1174
- <string>PBXNavigatorGroup</string>
1175
- </array>
1176
- <key>StatusbarIsVisible</key>
1177
- <integer>1</integer>
1178
- <key>ToolbarConfiguration</key>
1179
- <string>xcode.toolbar.config.debugAnimatorV3</string>
1180
- <key>WindowString</key>
1181
- <string>100 100 700 500 0 0 1280 1002 </string>
1182
- </dict>
1183
- <dict>
1184
- <key>Identifier</key>
1185
- <string>windowTool.bookmarks</string>
1186
- <key>Layout</key>
1187
- <array>
1188
- <dict>
1189
- <key>Dock</key>
1190
- <array>
1191
- <dict>
1192
- <key>Module</key>
1193
- <string>PBXBookmarksModule</string>
1194
- <key>Proportion</key>
1195
- <string>100%</string>
1196
- </dict>
1197
- </array>
1198
- <key>Proportion</key>
1199
- <string>100%</string>
1200
- </dict>
1201
- </array>
1202
- <key>Name</key>
1203
- <string>Bookmarks</string>
1204
- <key>ServiceClasses</key>
1205
- <array>
1206
- <string>PBXBookmarksModule</string>
1207
- </array>
1208
- <key>StatusbarIsVisible</key>
1209
- <integer>0</integer>
1210
- <key>WindowString</key>
1211
- <string>538 42 401 187 0 0 1280 1002 </string>
1212
- </dict>
1213
- <dict>
1214
- <key>Identifier</key>
1215
- <string>windowTool.projectFormatConflicts</string>
1216
- <key>Layout</key>
1217
- <array>
1218
- <dict>
1219
- <key>Dock</key>
1220
- <array>
1221
- <dict>
1222
- <key>Module</key>
1223
- <string>XCProjectFormatConflictsModule</string>
1224
- <key>Proportion</key>
1225
- <string>100%</string>
1226
- </dict>
1227
- </array>
1228
- <key>Proportion</key>
1229
- <string>100%</string>
1230
- </dict>
1231
- </array>
1232
- <key>Name</key>
1233
- <string>Project Format Conflicts</string>
1234
- <key>ServiceClasses</key>
1235
- <array>
1236
- <string>XCProjectFormatConflictsModule</string>
1237
- </array>
1238
- <key>StatusbarIsVisible</key>
1239
- <integer>0</integer>
1240
- <key>WindowContentMinSize</key>
1241
- <string>450 300</string>
1242
- <key>WindowString</key>
1243
- <string>50 850 472 307 0 0 1440 877</string>
1244
- </dict>
1245
- <dict>
1246
- <key>Identifier</key>
1247
- <string>windowTool.classBrowser</string>
1248
- <key>Layout</key>
1249
- <array>
1250
- <dict>
1251
- <key>Dock</key>
1252
- <array>
1253
- <dict>
1254
- <key>BecomeActive</key>
1255
- <integer>1</integer>
1256
- <key>ContentConfiguration</key>
1257
- <dict>
1258
- <key>OptionsSetName</key>
1259
- <string>Hierarchy, all classes</string>
1260
- <key>PBXProjectModuleGUID</key>
1261
- <string>1CA6456E063B45B4001379D8</string>
1262
- <key>PBXProjectModuleLabel</key>
1263
- <string>Class Browser - NSObject</string>
1264
- </dict>
1265
- <key>GeometryConfiguration</key>
1266
- <dict>
1267
- <key>ClassesFrame</key>
1268
- <string>{{0, 0}, {374, 96}}</string>
1269
- <key>ClassesTreeTableConfiguration</key>
1270
- <array>
1271
- <string>PBXClassNameColumnIdentifier</string>
1272
- <real>208</real>
1273
- <string>PBXClassBookColumnIdentifier</string>
1274
- <real>22</real>
1275
- </array>
1276
- <key>Frame</key>
1277
- <string>{{0, 0}, {630, 331}}</string>
1278
- <key>MembersFrame</key>
1279
- <string>{{0, 105}, {374, 395}}</string>
1280
- <key>MembersTreeTableConfiguration</key>
1281
- <array>
1282
- <string>PBXMemberTypeIconColumnIdentifier</string>
1283
- <real>22</real>
1284
- <string>PBXMemberNameColumnIdentifier</string>
1285
- <real>216</real>
1286
- <string>PBXMemberTypeColumnIdentifier</string>
1287
- <real>97</real>
1288
- <string>PBXMemberBookColumnIdentifier</string>
1289
- <real>22</real>
1290
- </array>
1291
- <key>PBXModuleWindowStatusBarHidden2</key>
1292
- <integer>1</integer>
1293
- <key>RubberWindowFrame</key>
1294
- <string>385 179 630 352 0 0 1440 878 </string>
1295
- </dict>
1296
- <key>Module</key>
1297
- <string>PBXClassBrowserModule</string>
1298
- <key>Proportion</key>
1299
- <string>332pt</string>
1300
- </dict>
1301
- </array>
1302
- <key>Proportion</key>
1303
- <string>332pt</string>
1304
- </dict>
1305
- </array>
1306
- <key>Name</key>
1307
- <string>Class Browser</string>
1308
- <key>ServiceClasses</key>
1309
- <array>
1310
- <string>PBXClassBrowserModule</string>
1311
- </array>
1312
- <key>StatusbarIsVisible</key>
1313
- <integer>0</integer>
1314
- <key>TableOfContents</key>
1315
- <array>
1316
- <string>1C0AD2AF069F1E9B00FABCE6</string>
1317
- <string>1C0AD2B0069F1E9B00FABCE6</string>
1318
- <string>1CA6456E063B45B4001379D8</string>
1319
- </array>
1320
- <key>ToolbarConfiguration</key>
1321
- <string>xcode.toolbar.config.classbrowser</string>
1322
- <key>WindowString</key>
1323
- <string>385 179 630 352 0 0 1440 878 </string>
1324
- <key>WindowToolGUID</key>
1325
- <string>1C0AD2AF069F1E9B00FABCE6</string>
1326
- <key>WindowToolIsVisible</key>
1327
- <integer>0</integer>
1328
- </dict>
1329
- <dict>
1330
- <key>Identifier</key>
1331
- <string>windowTool.refactoring</string>
1332
- <key>IncludeInToolsMenu</key>
1333
- <integer>0</integer>
1334
- <key>Layout</key>
1335
- <array>
1336
- <dict>
1337
- <key>Dock</key>
1338
- <array>
1339
- <dict>
1340
- <key>BecomeActive</key>
1341
- <integer>1</integer>
1342
- <key>GeometryConfiguration</key>
1343
- <dict>
1344
- <key>Frame</key>
1345
- <string>{0, 0}, {500, 335}</string>
1346
- <key>RubberWindowFrame</key>
1347
- <string>{0, 0}, {500, 335}</string>
1348
- </dict>
1349
- <key>Module</key>
1350
- <string>XCRefactoringModule</string>
1351
- <key>Proportion</key>
1352
- <string>100%</string>
1353
- </dict>
1354
- </array>
1355
- <key>Proportion</key>
1356
- <string>100%</string>
1357
- </dict>
1358
- </array>
1359
- <key>Name</key>
1360
- <string>Refactoring</string>
1361
- <key>ServiceClasses</key>
1362
- <array>
1363
- <string>XCRefactoringModule</string>
1364
- </array>
1365
- <key>WindowString</key>
1366
- <string>200 200 500 356 0 0 1920 1200 </string>
1367
- </dict>
1368
- </array>
1369
- </dict>
1370
- </plist>