Skip to content
This repository
Browse code

Merge branch 'develop'

  • Loading branch information...
commit d96f1bd4e00ddc024da2f82c1e74b69a351b448b 2 parents 83e95e8 + 6eb341d
Viktor Lidholt authored

Showing 116 changed files with 5,383 additions and 6,474 deletions. Show diff stats Hide diff stats

  1. +3 0  .gitmodules
  2. +1 0  Add to Your Project/cocos2d-iphone/SSZipArchive/LICENSE
  3. +1 0  Add to Your Project/cocos2d-iphone/SSZipArchive/SSZipArchive.h
  4. +1 0  Add to Your Project/cocos2d-iphone/SSZipArchive/SSZipArchive.m
  5. +1 0  Add to Your Project/cocos2d-iphone/SSZipArchive/minizip
  6. +3 0  CHANGELOG
  7. +0 2  CocosBuilder/CCLabelTTF/CCBPProperties.plist
  8. +112 14 CocosBuilder/CocosBuilder.xcodeproj/project.pbxproj
  9. +0 2  CocosBuilder/ccBuilder/CCBDocument.h
  10. +1 6 CocosBuilder/ccBuilder/CCBDocument.m
  11. +45 0 CocosBuilder/ccBuilder/CCBPublisher.h
  12. +287 0 CocosBuilder/ccBuilder/CCBPublisher.m
  13. +49 0 CocosBuilder/ccBuilder/CCBWarnings.h
  14. +83 0 CocosBuilder/ccBuilder/CCBWarnings.m
  15. +31 2 CocosBuilder/ccBuilder/CocosBuilderAppDelegate.h
  16. +235 119 CocosBuilder/ccBuilder/CocosBuilderAppDelegate.m
  17. +0 1  CocosBuilder/ccBuilder/InspectorBlockCCControl.xib
  18. +9 7 CocosBuilder/ccBuilder/InspectorByte.xib
  19. +7 6 CocosBuilder/ccBuilder/InspectorDegrees.xib
  20. +7 6 CocosBuilder/ccBuilder/InspectorFloat.xib
  21. +7 6 CocosBuilder/ccBuilder/InspectorFloatScale.xib
  22. +9 7 CocosBuilder/ccBuilder/InspectorFloatVar.xib
  23. +7 6 CocosBuilder/ccBuilder/InspectorInteger.xib
  24. +9 7 CocosBuilder/ccBuilder/InspectorPoint.xib
  25. +9 7 CocosBuilder/ccBuilder/InspectorPointLock.xib
  26. +9 8 CocosBuilder/ccBuilder/InspectorPosition.xib
  27. +9 7 CocosBuilder/ccBuilder/InspectorScaleLock.xib
  28. +9 7 CocosBuilder/ccBuilder/InspectorSize.xib
  29. +2 0  CocosBuilder/ccBuilder/PlugInExport.h
  30. +4 2 CocosBuilder/ccBuilder/PlugInExport.m
  31. +1 1  CocosBuilder/ccBuilder/PositionPropertySetter.m
  32. +53 0 CocosBuilder/ccBuilder/ProjectSettings.h
  33. +152 0 CocosBuilder/ccBuilder/ProjectSettings.m
  34. +38 0 CocosBuilder/ccBuilder/ProjectSettingsWindow.h
  35. +99 0 CocosBuilder/ccBuilder/ProjectSettingsWindow.m
  36. +1,213 0 CocosBuilder/ccBuilder/ProjectSettingsWindow.xib
  37. +3 0  CocosBuilder/ccBuilder/ResourceManager.h
  38. +39 3 CocosBuilder/ccBuilder/ResourceManager.m
  39. +46 0 CocosBuilder/ccBuilder/ResourceManagerOutlineHandler.h
  40. +351 0 CocosBuilder/ccBuilder/ResourceManagerOutlineHandler.m
  41. +5 3 CocosBuilder/ccBuilder/ResourceManagerPanel.h
  42. +11 261 CocosBuilder/ccBuilder/ResourceManagerPanel.m
  43. +36 0 CocosBuilder/ccBuilder/SavePanelLimiter.h
  44. +72 0 CocosBuilder/ccBuilder/SavePanelLimiter.m
  45. +3 0  CocosBuilder/ccBuilder/StickyNote.m
  46. +20 0 CocosBuilder/ccBuilder/TaskStatusWindow.h
  47. +32 0 CocosBuilder/ccBuilder/TaskStatusWindow.m
  48. +332 0 CocosBuilder/ccBuilder/TaskStatusWindow.xib
  49. +36 0 CocosBuilder/ccBuilder/WarningsWindow.h
  50. +57 0 CocosBuilder/ccBuilder/WarningsWindow.m
  51. +481 0 CocosBuilder/ccBuilder/WarningsWindow.xib
  52. +926 368 CocosBuilder/ccBuilder/en.lproj/MainMenu.xib
  53. +52 0 CocosBuilder/libs/HashValue/HashValue.h
  54. +157 0 CocosBuilder/libs/HashValue/HashValue.m
  55. +1 1  CocosBuilder/libs/cocos2d-iphone
  56. +1 0  CocosBuilder/libs/ssziparchive
  57. +29 0 CocosBuilderExample/CocosBuilder Files (start here)/Project/CocosBuilderExample.ccbproj
  58. 0  ...xample/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project}/HelloCocosBuilder.ccb
  59. 0  ...xample/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestButtons.ccb
  60. 0  ...Example/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestHeader.ccb
  61. 0  ...Example/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestLabels.ccb
  62. 0  ...rExample/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestMenus.ccb
  63. 0  ...CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestParticleSystems.ccb
  64. 0  ...le/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestScrollViews.ccb
  65. 0  ...sBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestScrollViewsContentA.ccb
  66. 0  ...xample/{CocosBuilderExample/Resources → CocosBuilder Files (start here)/Project/Tests}/TestSprites.ccb
  67. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-a-0.png
  68. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-a-1.png
  69. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-a-2.png
  70. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-b-0.png
  71. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-b-1.png
  72. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-b-2.png
  73. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-back-0.png
  74. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-back-1.png
  75. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-test-0.png
  76. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-test-1.png
  77. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/btn-test-2.png
  78. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/burst-hd.png
  79. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/burst-ipad.png
  80. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/burst.png
  81. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/comic andy.ttf
  82. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/flower.jpg
  83. 0  ...uilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/grossini-generic.plist
  84. 0  ...sBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/grossini-generic.png
  85. 0  ...sBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/jungle-left-ipad.png
  86. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/jungle-left.png
  87. 0  ...BuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/jungle-right-ipad.png
  88. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/jungle-right.png
  89. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/jungle.png
  90. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/logo-icon.png
  91. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/logo.png
  92. 0  ...uilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/markerfelt24shadow.fnt
  93. 0  ...uilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/markerfelt24shadow.png
  94. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/particle-fire.png
  95. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/particle-smoke.png
  96. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/particle-snow.png
  97. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/particle-stars.png
  98. 0  CocosBuilderExample/{CocosBuilderExample → CocosBuilder Files (start here)}/Resources/scale-9-demo.png
  99. +71 160 CocosBuilderExample/CocosBuilderExample.xcodeproj/project.pbxproj
  100. +7 1 CocosBuilderExample/CocosBuilderExample/AppDelegate.m
  101. +11 0 CocosBuilderExample/CocosBuilderExample/CCBReader.h
  102. +80 0 CocosBuilderExample/CocosBuilderExample/CCBReader.m
  103. BIN  CocosBuilderExample/CocosBuilderExample/Resources/HelloCocosBuilder.ccbi
  104. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestButtons.ccbi
  105. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestHeader.ccbi
  106. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestLabels.ccbi
  107. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestMenus.ccbi
  108. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestParticleSystems.ccbi
  109. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestScrollViews.ccbi
  110. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestScrollViewsContentA.ccbi
  111. BIN  CocosBuilderExample/CocosBuilderExample/Resources/TestSprites.ccbi
  112. BIN  CocosBuilderExample/CocosBuilderExample/Resources/ccb.zip
  113. +0 5,448 CocosBuilderExample/CocosBuilderExample/Resources/missing-font.fnt
  114. BIN  CocosBuilderExample/CocosBuilderExample/Resources/missing-font.png
  115. +1 0  CocosBuilderExample/CocosBuilderExample/libs/ssziparchive
  116. +17 6 Documentation/1. User Guide.md
3  .gitmodules
@@ -4,3 +4,6 @@
4 4 [submodule "CocosBuilder/libs/CCControlExtension"]
5 5 path = CocosBuilder/libs/CCControlExtension
6 6 url = https://github.com/vlidholt/CCControlExtension.git
  7 +[submodule "CocosBuilder/libs/ssziparchive"]
  8 + path = CocosBuilder/libs/ssziparchive
  9 + url = https://github.com/vlidholt/ssziparchive
1  Add to Your Project/cocos2d-iphone/SSZipArchive/LICENSE
1  Add to Your Project/cocos2d-iphone/SSZipArchive/SSZipArchive.h
1  Add to Your Project/cocos2d-iphone/SSZipArchive/SSZipArchive.m
1  Add to Your Project/cocos2d-iphone/SSZipArchive/minizip
3  CHANGELOG
@@ -5,6 +5,9 @@ version 1.1-beta2 XX-May-2012
5 5 . [NEW] Improved support for CCControlButton
6 6 . [NEW] Command line tool for publishing files
7 7 . [NEW] Added examples/test cases
  8 +. [NEW] CocosBuilder is now project based, with the capability to publish a complete project with a single click
  9 +. [NEW] Support for multiple resource directories
  10 +. [NEW] Support for publishing to zip-files
8 11 . [FIX] Various bug fixes, prevent crash when opening ccb files in directories with many sub directories
9 12 . [FIX] Snapping to pixels now work in Lion when dragging objects
10 13
2  CocosBuilder/CCLabelTTF/CCBPProperties.plist
@@ -50,8 +50,6 @@
50 50 <array>
51 51 <string>contentSize</string>
52 52 </array>
53   - <key>default</key>
54   - <integer>12</integer>
55 53 <key>displayName</key>
56 54 <string>Font size</string>
57 55 <key>type</key>
126 CocosBuilder/CocosBuilder.xcodeproj/project.pbxproj
@@ -119,6 +119,7 @@
119 119 E325F66114F65C8F00D29BCF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E325F65F14F65C8F00D29BCF /* InfoPlist.strings */; };
120 120 E325F66714F65D4100D29BCF /* CCBPProperties.plist in Resources */ = {isa = PBXBuildFile; fileRef = E325F66614F65D4100D29BCF /* CCBPProperties.plist */; };
121 121 E325F66A14F6611F00D29BCF /* CCMenuItemImage.ccbPlugNode in Copy PlugIns */ = {isa = PBXBuildFile; fileRef = E325F65A14F65C8E00D29BCF /* CCMenuItemImage.ccbPlugNode */; };
  122 + E32BBCB11561361200C58395 /* HashValue.m in Sources */ = {isa = PBXBuildFile; fileRef = E32BBCB01561361200C58395 /* HashValue.m */; };
122 123 E32D8CC514EC257000F4BD5E /* InspectorCodeConnections.xib in Resources */ = {isa = PBXBuildFile; fileRef = E32D8CC414EC257000F4BD5E /* InspectorCodeConnections.xib */; };
123 124 E32D8CC814EC25D800F4BD5E /* InspectorCodeConnections.m in Sources */ = {isa = PBXBuildFile; fileRef = E32D8CC714EC25D800F4BD5E /* InspectorCodeConnections.m */; };
124 125 E334069715517225000FBD0B /* InspectorFloatScale.xib in Resources */ = {isa = PBXBuildFile; fileRef = E334069615517225000FBD0B /* InspectorFloatScale.xib */; };
@@ -126,6 +127,10 @@
126 127 E33BC1971510B8D0009AE29A /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E33BC1961510B8D0009AE29A /* Sparkle.framework */; };
127 128 E33BC1981510B9DE009AE29A /* Sparkle.framework in Copy Files (Sparkle framework) */ = {isa = PBXBuildFile; fileRef = E33BC1961510B8D0009AE29A /* Sparkle.framework */; };
128 129 E33BC1B81510E4B6009AE29A /* NodeGraphPropertySetter.m in Sources */ = {isa = PBXBuildFile; fileRef = E33BC1B71510E4B6009AE29A /* NodeGraphPropertySetter.m */; };
  130 + E3462867155BF6C50043EAB1 /* ResourceManagerOutlineHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = E3462866155BF6C50043EAB1 /* ResourceManagerOutlineHandler.m */; };
  131 + E346286B155C18D80043EAB1 /* SavePanelLimiter.m in Sources */ = {isa = PBXBuildFile; fileRef = E346286A155C18D80043EAB1 /* SavePanelLimiter.m */; };
  132 + E3462870155D22290043EAB1 /* CCBPublisher.m in Sources */ = {isa = PBXBuildFile; fileRef = E346286F155D22290043EAB1 /* CCBPublisher.m */; };
  133 + E3462873155D22FC0043EAB1 /* CCBWarnings.m in Sources */ = {isa = PBXBuildFile; fileRef = E3462872155D22FC0043EAB1 /* CCBWarnings.m */; };
129 134 E34E5D6615357CF2000201FB /* RulersLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = E34E5D6515357CF2000201FB /* RulersLayer.m */; };
130 135 E34E5D6A153585EC000201FB /* ruler-bg-horizontal.png in Resources */ = {isa = PBXBuildFile; fileRef = E34E5D68153585EC000201FB /* ruler-bg-horizontal.png */; };
131 136 E34E5D6B153585EC000201FB /* ruler-bg-vertical.png in Resources */ = {isa = PBXBuildFile; fileRef = E34E5D69153585EC000201FB /* ruler-bg-vertical.png */; };
@@ -282,6 +287,9 @@
282 287 E36F3C3D152C756D00AAD805 /* NSString+RelativePath.m in Sources */ = {isa = PBXBuildFile; fileRef = E36F3C3C152C756D00AAD805 /* NSString+RelativePath.m */; };
283 288 E370BA0C1549B2460048ED73 /* scale-0.png in Resources */ = {isa = PBXBuildFile; fileRef = E370BA0A1549B2460048ED73 /* scale-0.png */; };
284 289 E370BA0D1549B2460048ED73 /* scale-1.png in Resources */ = {isa = PBXBuildFile; fileRef = E370BA0B1549B2460048ED73 /* scale-1.png */; };
  290 + E3799EA6155970F400196B4A /* ProjectSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = E3799EA5155970F400196B4A /* ProjectSettingsWindow.xib */; };
  291 + E3799EAA1559771E00196B4A /* ProjectSettingsWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E3799EA91559771D00196B4A /* ProjectSettingsWindow.m */; };
  292 + E3799EAD155979BF00196B4A /* ProjectSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = E3799EAC155979BF00196B4A /* ProjectSettings.m */; };
285 293 E383BF6B152478940032F371 /* CCScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = E383BF6A152478940032F371 /* CCScrollView.m */; };
286 294 E3850809150AA9AE007E162A /* ImageAndTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E3850808150AA9AE007E162A /* ImageAndTextCell.m */; };
287 295 E385080B150AB232007E162A /* segmctrl-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = E385080A150AB232007E162A /* segmctrl-bg.png */; };
@@ -364,6 +372,10 @@
364 372 E3D59139150F8C5A004180CA /* CCBPCCBFile.m in Sources */ = {isa = PBXBuildFile; fileRef = E3D59138150F8C5A004180CA /* CCBPCCBFile.m */; };
365 373 E3DC1B8C154F18660087724C /* size-3.png in Resources */ = {isa = PBXBuildFile; fileRef = E3DC1B8A154F18660087724C /* size-3.png */; };
366 374 E3DC1B8D154F18660087724C /* size-4.png in Resources */ = {isa = PBXBuildFile; fileRef = E3DC1B8B154F18660087724C /* size-4.png */; };
  375 + E3DCFD9415627FAB00BD7D7F /* WarningsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = E3DCFD9315627FAB00BD7D7F /* WarningsWindow.xib */; };
  376 + E3DCFD9715627FCF00BD7D7F /* WarningsWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E3DCFD9615627FCF00BD7D7F /* WarningsWindow.m */; };
  377 + E3DCFD9C15629FC700BD7D7F /* TaskStatusWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = E3DCFD9B15629FC700BD7D7F /* TaskStatusWindow.xib */; };
  378 + E3DCFD9F1562A3AD00BD7D7F /* TaskStatusWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E3DCFD9E1562A3AD00BD7D7F /* TaskStatusWindow.m */; };
367 379 E3EDBC101546D23000EEF1F3 /* ResolutionSetting.m in Sources */ = {isa = PBXBuildFile; fileRef = E3EDBC0F1546D23000EEF1F3 /* ResolutionSetting.m */; };
368 380 E3EDBC1415483E3200EEF1F3 /* ResolutionSettingsWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E3EDBC1315483E3200EEF1F3 /* ResolutionSettingsWindow.m */; };
369 381 E3EDBC1615483EE000EEF1F3 /* ResolutionSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = E3EDBC1515483EE000EEF1F3 /* ResolutionSettingsWindow.xib */; };
@@ -722,6 +734,8 @@
722 734 E325F66014F65C8F00D29BCF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
723 735 E325F66214F65C8F00D29BCF /* CCMenuItemImage-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CCMenuItemImage-Prefix.pch"; sourceTree = "<group>"; };
724 736 E325F66614F65D4100D29BCF /* CCBPProperties.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = CCBPProperties.plist; sourceTree = "<group>"; };
  737 + E32BBCAF1561361200C58395 /* HashValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HashValue.h; path = HashValue/HashValue.h; sourceTree = "<group>"; };
  738 + E32BBCB01561361200C58395 /* HashValue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HashValue.m; path = HashValue/HashValue.m; sourceTree = "<group>"; };
725 739 E32D8CC414EC257000F4BD5E /* InspectorCodeConnections.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InspectorCodeConnections.xib; sourceTree = "<group>"; };
726 740 E32D8CC614EC25D800F4BD5E /* InspectorCodeConnections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCodeConnections.h; sourceTree = "<group>"; };
727 741 E32D8CC714EC25D800F4BD5E /* InspectorCodeConnections.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InspectorCodeConnections.m; sourceTree = "<group>"; };
@@ -731,6 +745,14 @@
731 745 E33BC1961510B8D0009AE29A /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = libs/Sparkle.framework; sourceTree = "<group>"; };
732 746 E33BC1B61510E4B6009AE29A /* NodeGraphPropertySetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeGraphPropertySetter.h; sourceTree = "<group>"; };
733 747 E33BC1B71510E4B6009AE29A /* NodeGraphPropertySetter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NodeGraphPropertySetter.m; sourceTree = "<group>"; };
  748 + E3462865155BF6C50043EAB1 /* ResourceManagerOutlineHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceManagerOutlineHandler.h; sourceTree = "<group>"; };
  749 + E3462866155BF6C50043EAB1 /* ResourceManagerOutlineHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResourceManagerOutlineHandler.m; sourceTree = "<group>"; };
  750 + E3462869155C18D80043EAB1 /* SavePanelLimiter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SavePanelLimiter.h; sourceTree = "<group>"; };
  751 + E346286A155C18D80043EAB1 /* SavePanelLimiter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SavePanelLimiter.m; sourceTree = "<group>"; };
  752 + E346286E155D22290043EAB1 /* CCBPublisher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBPublisher.h; sourceTree = "<group>"; };
  753 + E346286F155D22290043EAB1 /* CCBPublisher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBPublisher.m; sourceTree = "<group>"; };
  754 + E3462871155D22FC0043EAB1 /* CCBWarnings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBWarnings.h; sourceTree = "<group>"; };
  755 + E3462872155D22FC0043EAB1 /* CCBWarnings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBWarnings.m; sourceTree = "<group>"; };
734 756 E34E5D6415357CF2000201FB /* RulersLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RulersLayer.h; sourceTree = "<group>"; };
735 757 E34E5D6515357CF2000201FB /* RulersLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RulersLayer.m; sourceTree = "<group>"; };
736 758 E34E5D68153585EC000201FB /* ruler-bg-horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ruler-bg-horizontal.png"; sourceTree = "<group>"; };
@@ -1022,6 +1044,11 @@
1022 1044 E36F3C3C152C756D00AAD805 /* NSString+RelativePath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+RelativePath.m"; sourceTree = "<group>"; };
1023 1045 E370BA0A1549B2460048ED73 /* scale-0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "scale-0.png"; sourceTree = "<group>"; };
1024 1046 E370BA0B1549B2460048ED73 /* scale-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "scale-1.png"; sourceTree = "<group>"; };
  1047 + E3799EA5155970F400196B4A /* ProjectSettingsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ProjectSettingsWindow.xib; sourceTree = "<group>"; };
  1048 + E3799EA81559771D00196B4A /* ProjectSettingsWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectSettingsWindow.h; sourceTree = "<group>"; };
  1049 + E3799EA91559771D00196B4A /* ProjectSettingsWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProjectSettingsWindow.m; sourceTree = "<group>"; };
  1050 + E3799EAB155979BF00196B4A /* ProjectSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectSettings.h; sourceTree = "<group>"; };
  1051 + E3799EAC155979BF00196B4A /* ProjectSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProjectSettings.m; sourceTree = "<group>"; };
1025 1052 E383BF69152478940032F371 /* CCScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCScrollView.h; sourceTree = "<group>"; };
1026 1053 E383BF6A152478940032F371 /* CCScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCScrollView.m; sourceTree = "<group>"; };
1027 1054 E3850807150AA9AE007E162A /* ImageAndTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageAndTextCell.h; sourceTree = "<group>"; };
@@ -1158,6 +1185,12 @@
1158 1185 E3D59138150F8C5A004180CA /* CCBPCCBFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBPCCBFile.m; sourceTree = "<group>"; };
1159 1186 E3DC1B8A154F18660087724C /* size-3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "size-3.png"; sourceTree = "<group>"; };
1160 1187 E3DC1B8B154F18660087724C /* size-4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "size-4.png"; sourceTree = "<group>"; };
  1188 + E3DCFD9315627FAB00BD7D7F /* WarningsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WarningsWindow.xib; sourceTree = "<group>"; };
  1189 + E3DCFD9515627FCE00BD7D7F /* WarningsWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WarningsWindow.h; sourceTree = "<group>"; };
  1190 + E3DCFD9615627FCF00BD7D7F /* WarningsWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WarningsWindow.m; sourceTree = "<group>"; };
  1191 + E3DCFD9B15629FC700BD7D7F /* TaskStatusWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TaskStatusWindow.xib; sourceTree = "<group>"; };
  1192 + E3DCFD9D1562A3AD00BD7D7F /* TaskStatusWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TaskStatusWindow.h; sourceTree = "<group>"; };
  1193 + E3DCFD9E1562A3AD00BD7D7F /* TaskStatusWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TaskStatusWindow.m; sourceTree = "<group>"; };
1161 1194 E3EDBC0E1546D23000EEF1F3 /* ResolutionSetting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResolutionSetting.h; sourceTree = "<group>"; };
1162 1195 E3EDBC0F1546D23000EEF1F3 /* ResolutionSetting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResolutionSetting.m; sourceTree = "<group>"; };
1163 1196 E3EDBC1215483E3200EEF1F3 /* ResolutionSettingsWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResolutionSettingsWindow.h; sourceTree = "<group>"; };
@@ -1381,6 +1414,11 @@
1381 1414 772BE571133E48340009B5B9 /* CCBGlobals.m */,
1382 1415 E3EDBC0E1546D23000EEF1F3 /* ResolutionSetting.h */,
1383 1416 E3EDBC0F1546D23000EEF1F3 /* ResolutionSetting.m */,
  1417 + E3799EAB155979BF00196B4A /* ProjectSettings.h */,
  1418 + E3799EAC155979BF00196B4A /* ProjectSettings.m */,
  1419 + E3799EA5155970F400196B4A /* ProjectSettingsWindow.xib */,
  1420 + E3799EA81559771D00196B4A /* ProjectSettingsWindow.h */,
  1421 + E3799EA91559771D00196B4A /* ProjectSettingsWindow.m */,
1384 1422 );
1385 1423 name = "Application Settings & Globals";
1386 1424 sourceTree = "<group>";
@@ -1406,6 +1444,8 @@
1406 1444 E35A2D9B1540207000F78B72 /* PositionPropertySetter.m */,
1407 1445 E3EDBC231549971000EEF1F3 /* CCBFileUtil.h */,
1408 1446 E3EDBC241549971000EEF1F3 /* CCBFileUtil.m */,
  1447 + E3462869155C18D80043EAB1 /* SavePanelLimiter.h */,
  1448 + E346286A155C18D80043EAB1 /* SavePanelLimiter.m */,
1409 1449 );
1410 1450 name = Util;
1411 1451 sourceTree = "<group>";
@@ -1417,17 +1457,8 @@
1417 1457 7789ACE9133AB47A00CEFCC7 /* CocosScene.m */,
1418 1458 7789ABD4133AA82000CEFCC7 /* CocosBuilderAppDelegate.h */,
1419 1459 7789ABD5133AA82000CEFCC7 /* CocosBuilderAppDelegate.m */,
1420   - E34E5D6415357CF2000201FB /* RulersLayer.h */,
1421   - E34E5D6515357CF2000201FB /* RulersLayer.m */,
1422   - E3A16AF11536D096004B528A /* GuidesLayer.h */,
1423   - E3A16AF21536D096004B528A /* GuidesLayer.m */,
1424 1460 776A37B41398D6B900960E94 /* CCBGLView.h */,
1425 1461 776A37B51398D6BD00960E94 /* CCBGLView.m */,
1426   - E3F3F83D153C72A3005443EE /* NotesLayer.h */,
1427   - E3F3F83E153C72A3005443EE /* NotesLayer.m */,
1428   - E3F3F846153D9126005443EE /* StickyNoteEditView.xib */,
1429   - E3F3F841153C7700005443EE /* StickyNote.h */,
1430   - E3F3F842153C7700005443EE /* StickyNote.m */,
1431 1462 );
1432 1463 name = "AppDelegate & Cocos2D Scene";
1433 1464 sourceTree = "<group>";
@@ -1668,12 +1699,15 @@
1668 1699 isa = PBXGroup;
1669 1700 children = (
1670 1701 776041E31498F5E80078095D /* AppDelegate & Cocos2D Scene */,
1671   - 776041E21498F5A70078095D /* Util */,
  1702 + E346286C155C23100043EAB1 /* Rulers, Guides & Notes */,
  1703 + E3C5C1A11504D144000CF6F3 /* Resource Manager */,
1672 1704 776041E11498F56D0078095D /* Application Settings & Globals */,
1673 1705 776041E01498F4A00078095D /* Document Readers & Writers */,
1674   - 7789ACF8133BFA9700CEFCC7 /* Interface */,
1675   - E3C5C1A11504D144000CF6F3 /* Resource Manager */,
  1706 + E346286D155D21F10043EAB1 /* Publishing */,
  1707 + E3DCFD851562611700BD7D7F /* Error handling & warnings */,
1676 1708 E3B7AEDA14E3242600DFD402 /* PlugIn Manager */,
  1709 + 7789ACF8133BFA9700CEFCC7 /* Interface */,
  1710 + 776041E21498F5A70078095D /* Util */,
1677 1711 7789ABC9133AA82000CEFCC7 /* Supporting Files */,
1678 1712 );
1679 1713 name = CocosBuilder;
@@ -1695,6 +1729,7 @@
1695 1729 7789ABEF133AB17100CEFCC7 /* libs */ = {
1696 1730 isa = PBXGroup;
1697 1731 children = (
  1732 + E32BBCAA156135C300C58395 /* HashValue */,
1698 1733 E36A270F152263B4004986A8 /* cocos2d */,
1699 1734 E383BF68152478940032F371 /* CCScrollView */,
1700 1735 E35392491518AF2100471721 /* CCControlExtension */,
@@ -1878,6 +1913,43 @@
1878 1913 name = "Supporting Files";
1879 1914 sourceTree = "<group>";
1880 1915 };
  1916 + E32BBCAA156135C300C58395 /* HashValue */ = {
  1917 + isa = PBXGroup;
  1918 + children = (
  1919 + E32BBCAF1561361200C58395 /* HashValue.h */,
  1920 + E32BBCB01561361200C58395 /* HashValue.m */,
  1921 + );
  1922 + name = HashValue;
  1923 + sourceTree = "<group>";
  1924 + };
  1925 + E346286C155C23100043EAB1 /* Rulers, Guides & Notes */ = {
  1926 + isa = PBXGroup;
  1927 + children = (
  1928 + E34E5D6415357CF2000201FB /* RulersLayer.h */,
  1929 + E34E5D6515357CF2000201FB /* RulersLayer.m */,
  1930 + E3A16AF11536D096004B528A /* GuidesLayer.h */,
  1931 + E3A16AF21536D096004B528A /* GuidesLayer.m */,
  1932 + E3F3F83D153C72A3005443EE /* NotesLayer.h */,
  1933 + E3F3F83E153C72A3005443EE /* NotesLayer.m */,
  1934 + E3F3F846153D9126005443EE /* StickyNoteEditView.xib */,
  1935 + E3F3F841153C7700005443EE /* StickyNote.h */,
  1936 + E3F3F842153C7700005443EE /* StickyNote.m */,
  1937 + );
  1938 + name = "Rulers, Guides & Notes";
  1939 + sourceTree = "<group>";
  1940 + };
  1941 + E346286D155D21F10043EAB1 /* Publishing */ = {
  1942 + isa = PBXGroup;
  1943 + children = (
  1944 + E346286E155D22290043EAB1 /* CCBPublisher.h */,
  1945 + E346286F155D22290043EAB1 /* CCBPublisher.m */,
  1946 + E3DCFD9B15629FC700BD7D7F /* TaskStatusWindow.xib */,
  1947 + E3DCFD9D1562A3AD00BD7D7F /* TaskStatusWindow.h */,
  1948 + E3DCFD9E1562A3AD00BD7D7F /* TaskStatusWindow.m */,
  1949 + );
  1950 + name = Publishing;
  1951 + sourceTree = "<group>";
  1952 + };
1881 1953 E35392461518AD0A00471721 /* Core */ = {
1882 1954 isa = PBXGroup;
1883 1955 children = (
@@ -2584,11 +2656,13 @@
2584 2656 children = (
2585 2657 E3C5C1A21504D17E000CF6F3 /* ResourceManager.h */,
2586 2658 E3C5C1A31504D17E000CF6F3 /* ResourceManager.m */,
  2659 + E3C5C1B315075CDD000CF6F3 /* ResourceManagerUtil.h */,
  2660 + E3C5C1B415075CDD000CF6F3 /* ResourceManagerUtil.m */,
2587 2661 E3C5C1AE150610D8000CF6F3 /* ResourceManagerPanel.xib */,
2588 2662 E3C5C1B015061882000CF6F3 /* ResourceManagerPanel.h */,
2589 2663 E3C5C1B115061882000CF6F3 /* ResourceManagerPanel.m */,
2590   - E3C5C1B315075CDD000CF6F3 /* ResourceManagerUtil.h */,
2591   - E3C5C1B415075CDD000CF6F3 /* ResourceManagerUtil.m */,
  2664 + E3462865155BF6C50043EAB1 /* ResourceManagerOutlineHandler.h */,
  2665 + E3462866155BF6C50043EAB1 /* ResourceManagerOutlineHandler.m */,
2592 2666 );
2593 2667 name = "Resource Manager";
2594 2668 sourceTree = "<group>";
@@ -2646,6 +2720,18 @@
2646 2720 name = "Supporting Files";
2647 2721 sourceTree = "<group>";
2648 2722 };
  2723 + E3DCFD851562611700BD7D7F /* Error handling & warnings */ = {
  2724 + isa = PBXGroup;
  2725 + children = (
  2726 + E3462871155D22FC0043EAB1 /* CCBWarnings.h */,
  2727 + E3462872155D22FC0043EAB1 /* CCBWarnings.m */,
  2728 + E3DCFD9315627FAB00BD7D7F /* WarningsWindow.xib */,
  2729 + E3DCFD9515627FCE00BD7D7F /* WarningsWindow.h */,
  2730 + E3DCFD9615627FCF00BD7D7F /* WarningsWindow.m */,
  2731 + );
  2732 + name = "Error handling & warnings";
  2733 + sourceTree = "<group>";
  2734 + };
2649 2735 E3FCE8681524856D0028E8E7 /* CCScrollView */ = {
2650 2736 isa = PBXGroup;
2651 2737 children = (
@@ -3168,6 +3254,9 @@
3168 3254 E3DC1B8C154F18660087724C /* size-3.png in Resources */,
3169 3255 E3DC1B8D154F18660087724C /* size-4.png in Resources */,
3170 3256 E334069715517225000FBD0B /* InspectorFloatScale.xib in Resources */,
  3257 + E3799EA6155970F400196B4A /* ProjectSettingsWindow.xib in Resources */,
  3258 + E3DCFD9415627FAB00BD7D7F /* WarningsWindow.xib in Resources */,
  3259 + E3DCFD9C15629FC700BD7D7F /* TaskStatusWindow.xib in Resources */,
3171 3260 );
3172 3261 runOnlyForDeploymentPostprocessing = 0;
3173 3262 };
@@ -3532,6 +3621,15 @@
3532 3621 E3EDBC1415483E3200EEF1F3 /* ResolutionSettingsWindow.m in Sources */,
3533 3622 E3EDBC251549971000EEF1F3 /* CCBFileUtil.m in Sources */,
3534 3623 E334069B1551725F000FBD0B /* InspectorFloatScale.m in Sources */,
  3624 + E3799EAA1559771E00196B4A /* ProjectSettingsWindow.m in Sources */,
  3625 + E3799EAD155979BF00196B4A /* ProjectSettings.m in Sources */,
  3626 + E3462867155BF6C50043EAB1 /* ResourceManagerOutlineHandler.m in Sources */,
  3627 + E346286B155C18D80043EAB1 /* SavePanelLimiter.m in Sources */,
  3628 + E3462870155D22290043EAB1 /* CCBPublisher.m in Sources */,
  3629 + E3462873155D22FC0043EAB1 /* CCBWarnings.m in Sources */,
  3630 + E32BBCB11561361200C58395 /* HashValue.m in Sources */,
  3631 + E3DCFD9715627FCF00BD7D7F /* WarningsWindow.m in Sources */,
  3632 + E3DCFD9F1562A3AD00BD7D7F /* TaskStatusWindow.m in Sources */,
3535 3633 );
3536 3634 runOnlyForDeploymentPostprocessing = 0;
3537 3635 };
2  CocosBuilder/ccBuilder/CCBDocument.h
@@ -37,7 +37,6 @@
37 37 BOOL isDirty;
38 38 CGPoint stageScrollOffset;
39 39 float stageZoom;
40   - NSDictionary* project;
41 40
42 41 NSMutableArray* resolutions;
43 42 int currentResolution;
@@ -55,7 +54,6 @@
55 54 @property (nonatomic,assign) float stageZoom;
56 55 @property (nonatomic,readonly) NSString* rootPath;
57 56 - (NSString*) formattedName;
58   -@property (nonatomic,readonly) NSDictionary* project;
59 57 @property (nonatomic,retain) NSMutableArray* resolutions;
60 58 @property (nonatomic,assign) int currentResolution;
61 59 @end
7 CocosBuilder/ccBuilder/CCBDocument.m
@@ -28,7 +28,7 @@
28 28
29 29 @implementation CCBDocument
30 30
31   -@synthesize fileName,docData,undoManager, lastEditedProperty, isDirty, stageScrollOffset, stageZoom, exportPath, exportPlugIn,exportFlattenPaths, project, resolutions, currentResolution;
  31 +@synthesize fileName,docData,undoManager, lastEditedProperty, isDirty, stageScrollOffset, stageZoom, exportPath, exportPlugIn,exportFlattenPaths, resolutions, currentResolution;
32 32
33 33 - (id)init
34 34 {
@@ -46,7 +46,6 @@ - (id)init
46 46
47 47 - (void)dealloc
48 48 {
49   - [project release];
50 49 self.exportPath = NULL;
51 50 self.exportPlugIn = NULL;
52 51 self.lastEditedProperty = NULL;
@@ -74,10 +73,6 @@ - (void) setFileName:(NSString *)fn
74 73 [fileName release];
75 74 fileName = [fn retain];
76 75 }
77   - // Check for project file
78   - NSString* projPath = [[fileName stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Project.ccbproj"];
79   - project = [NSDictionary dictionaryWithContentsOfFile:projPath];
80   - [project retain];
81 76 }
82 77
83 78 @end
45 CocosBuilder/ccBuilder/CCBPublisher.h
... ... @@ -0,0 +1,45 @@
  1 +/*
  2 + * CocosBuilder: http://www.cocosbuilder.com
  3 + *
  4 + * Copyright (c) 2012 Zynga Inc.
  5 + *
  6 + * Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + * of this software and associated documentation files (the "Software"), to deal
  8 + * in the Software without restriction, including without limitation the rights
  9 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + * copies of the Software, and to permit persons to whom the Software is
  11 + * furnished to do so, subject to the following conditions:
  12 + *
  13 + * The above copyright notice and this permission notice shall be included in
  14 + * all copies or substantial portions of the Software.
  15 + *
  16 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + * THE SOFTWARE.
  23 + */
  24 +
  25 +#import <Foundation/Foundation.h>
  26 +
  27 +@class ProjectSettings;
  28 +@class CCBWarnings;
  29 +
  30 +@interface CCBPublisher : NSObject
  31 +{
  32 + ProjectSettings* projectSettings;
  33 + CCBWarnings* warnings;
  34 + NSString* outputDir;
  35 + NSArray* copyExtensions;
  36 + NSString* publishFormat;
  37 +}
  38 +
  39 +@property (nonatomic,copy) NSString* publishFormat;
  40 +
  41 +- (id) initWithProjectSettings:(ProjectSettings*)settings warnings:(CCBWarnings*)w;
  42 +- (void) publish;
  43 ++ (void) cleanAllCacheDirectories;
  44 +
  45 +@end
287 CocosBuilder/ccBuilder/CCBPublisher.m
... ... @@ -0,0 +1,287 @@
  1 +/*
  2 + * CocosBuilder: http://www.cocosbuilder.com
  3 + *
  4 + * Copyright (c) 2012 Zynga Inc.
  5 + *
  6 + * Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + * of this software and associated documentation files (the "Software"), to deal
  8 + * in the Software without restriction, including without limitation the rights
  9 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + * copies of the Software, and to permit persons to whom the Software is
  11 + * furnished to do so, subject to the following conditions:
  12 + *
  13 + * The above copyright notice and this permission notice shall be included in
  14 + * all copies or substantial portions of the Software.
  15 + *
  16 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + * THE SOFTWARE.
  23 + */
  24 +
  25 +#import "CCBPublisher.h"
  26 +#import "ProjectSettings.h"
  27 +#import "CCBWarnings.h"
  28 +#import "NSString+RelativePath.h"
  29 +#import "PlugInExport.h"
  30 +#import "PlugInManager.h"
  31 +#import "CCBGlobals.h"
  32 +#import "CocosBuilderAppDelegate.h"
  33 +
  34 +@implementation CCBPublisher
  35 +
  36 +@synthesize publishFormat;
  37 +
  38 +- (id) initWithProjectSettings:(ProjectSettings*)settings warnings:(CCBWarnings*)w
  39 +{
  40 + self = [super init];
  41 + if (!self) return NULL;
  42 +
  43 + // Save settings and warning log
  44 + projectSettings = [settings retain];
  45 + warnings = [w retain];
  46 +
  47 + // Setup base output directory
  48 + if (projectSettings.publishToZipFile)
  49 + {
  50 + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
  51 + outputDir = [[[[paths objectAtIndex:0] stringByAppendingPathComponent:@"com.cocosbuilder.CocosBuilder"] stringByAppendingPathComponent:@"publish"]stringByAppendingPathComponent:projectSettings.projectPathHashed];
  52 +
  53 + outputDir = [outputDir retain];
  54 + }
  55 + else
  56 + {
  57 + outputDir = [[projectSettings.publishDirectory absolutePathFromBaseDirPath:[projectSettings.projectPath stringByDeletingLastPathComponent]] retain];
  58 + }
  59 +
  60 + // Setup extensions to copy
  61 + copyExtensions = [[NSArray alloc] initWithObjects:@"jpg",@"png", @"pvr", @"ccz", @"plist", @"fnt", @"ttf", nil];
  62 +
  63 + // Set format to use for exports
  64 + self.publishFormat = projectSettings.exporter;
  65 +
  66 + return self;
  67 +}
  68 +
  69 +- (BOOL) srcFile:(NSString*)srcFile isNewerThanDstFile:(NSString*)dstFile
  70 +{
  71 + NSDictionary* srcAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:srcFile error:NULL];
  72 + NSDate* srcDate = [srcAttributes objectForKey:NSFileModificationDate];
  73 +
  74 + NSDictionary* dstAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:dstFile error:NULL];
  75 + NSDate* dstDate = [dstAttributes objectForKey:NSFileModificationDate];
  76 +
  77 + if (!srcDate || !dstDate) return YES;
  78 + if ([srcDate compare:dstDate] == NSOrderedDescending) return YES;
  79 +
  80 + return NO;
  81 +}
  82 +
  83 +- (BOOL) publishCCBFile:(NSString*)srcFile to:(NSString*)dstFile
  84 +{
  85 + PlugInExport* plugIn = [[PlugInManager sharedManager] plugInExportForExtension:publishFormat];
  86 + if (!plugIn)
  87 + {
  88 + [warnings addWarningWithDescription:[NSString stringWithFormat: @"Plug-in is missing for publishing files to %@-format. You can select plug-in in Project Settings.",publishFormat] isFatal:YES];
  89 + return NO;
  90 + }
  91 +
  92 + // Load src file
  93 + NSMutableDictionary* doc = [NSMutableDictionary dictionaryWithContentsOfFile:srcFile];
  94 + if (!doc)
  95 + {
  96 + [warnings addWarningWithDescription:[NSString stringWithFormat:@"Failed to publish ccb-file. File is in invalid format: %@",srcFile] isFatal:NO];
  97 + return YES;
  98 + }
  99 +
  100 + // Export file
  101 + plugIn.flattenPaths = projectSettings.flattenPaths;
  102 + NSData* data = [plugIn exportDocument:doc];
  103 + if (!data)
  104 + {
  105 + [warnings addWarningWithDescription:[NSString stringWithFormat:@"Failed to publish ccb-file: %@",srcFile] isFatal:NO];
  106 + return YES;
  107 + }
  108 +
  109 + // Save file
  110 + BOOL success = [data writeToFile:dstFile atomically:YES];
  111 + if (!success)
  112 + {
  113 + [warnings addWarningWithDescription:[NSString stringWithFormat:@"Failed to publish ccb-file. Failed to write file: %@",dstFile] isFatal:NO];
  114 + return YES;
  115 + }
  116 +
  117 + return YES;
  118 +}
  119 +
  120 +- (BOOL) publishDirectory:(NSString*) dir subPath:(NSString*) subPath
  121 +{
  122 + CocosBuilderAppDelegate* ad = [[CCBGlobals globals] appDelegate];
  123 +
  124 + NSFileManager* fm = [NSFileManager defaultManager];
  125 +
  126 + // Path to output directory for the currently exported path
  127 + NSString* outDir = NULL;
  128 + if (projectSettings.flattenPaths && projectSettings.publishToZipFile)
  129 + {
  130 + outDir = outputDir;
  131 + }
  132 + else
  133 + {
  134 + outDir = [outputDir stringByAppendingPathComponent:subPath];
  135 + }
  136 +
  137 + // Create the directory if it doesn't exist
  138 + BOOL createdDirs = [fm createDirectoryAtPath:outDir withIntermediateDirectories:YES attributes:NULL error:NULL];
  139 + if (!createdDirs)
  140 + {
  141 + [warnings addWarningWithDescription:@"Failed to create output directory %@" isFatal:YES];
  142 + return NO;
  143 + }
  144 +
  145 + NSArray* files = [fm contentsOfDirectoryAtPath:dir error:NULL];
  146 +
  147 + for (NSString* fileName in files)
  148 + {
  149 + if ([fileName hasPrefix:@"."]) continue;
  150 +
  151 + NSString* filePath = [dir stringByAppendingPathComponent:fileName];
  152 +
  153 + BOOL isDirectory;
  154 + BOOL fileExists = [fm fileExistsAtPath:filePath isDirectory:&isDirectory];
  155 + if (fileExists && isDirectory)
  156 + {
  157 + NSString* childPath = NULL;
  158 + if (subPath) childPath = [NSString stringWithFormat:@"%@/%@", subPath, fileName];
  159 + else childPath = fileName;
  160 +
  161 + [self publishDirectory:filePath subPath:childPath];
  162 + }
  163 + else if (fileExists)
  164 + {
  165 + // Publish file
  166 +
  167 + // Copy files
  168 + for (NSString* ext in copyExtensions)
  169 + {
  170 + if ([[fileName lowercaseString] hasSuffix:ext])
  171 + {
  172 + // This file should be copied
  173 + //NSString* dstFile = NULL;
  174 + //if (subPath) dstFile = [NSString stringWithFormat:@"%@/%@/%@",outputDir,subPath,fileName];
  175 + //else dstFile = [NSString stringWithFormat:@"%@/%@",outputDir,fileName];
  176 +
  177 + NSString* dstFile = [outDir stringByAppendingPathComponent:fileName];
  178 +
  179 + if ([dstFile isEqualToString:filePath])
  180 + {
  181 + [warnings addWarningWithDescription:@"Publish will overwrite file in resource directory." isFatal:YES];
  182 + return NO;
  183 + }
  184 +
  185 + if (![fm fileExistsAtPath:dstFile] || [self srcFile:filePath isNewerThanDstFile:dstFile])
  186 + {
  187 + [ad modalStatusWindowUpdateStatusText:[NSString stringWithFormat:@"Copying %@...", fileName]];
  188 +
  189 + // Remove old file
  190 + [fm removeItemAtPath:dstFile error:NULL];
  191 +
  192 + // Copy the file
  193 + BOOL sucess = [fm copyItemAtPath:filePath toPath:dstFile error:NULL];
  194 + if (!sucess) [warnings addWarningWithDescription:[NSString stringWithFormat:@"Failed to publish file: %@", fileName]];
  195 + }
  196 + }
  197 + }
  198 +
  199 + // Publish ccb files
  200 + if ([[fileName lowercaseString] hasSuffix:@"ccb"])
  201 + {
  202 + NSString* strippedFileName = [fileName stringByDeletingPathExtension];
  203 +
  204 + //NSString* dstFile = NULL;
  205 + //if (subPath) dstFile = [NSString stringWithFormat:@"%@/%@/%@.%@",outputDir,subPath,strippedFileName, publishFormat];
  206 + //else dstFile = [NSString stringWithFormat:@"%@/%@.%@",outputDir,strippedFileName, publishFormat];
  207 + NSString* dstFile = [[outDir stringByAppendingPathComponent:strippedFileName] stringByAppendingPathExtension:publishFormat];
  208 +
  209 + if ([dstFile isEqualToString:filePath])
  210 + {
  211 + [warnings addWarningWithDescription:@"Publish will overwrite files in resource directory." isFatal:YES];
  212 + return NO;
  213 + }
  214 +
  215 + if (![fm fileExistsAtPath:dstFile] || [self srcFile:filePath isNewerThanDstFile:dstFile])
  216 + {
  217 + [ad modalStatusWindowUpdateStatusText:[NSString stringWithFormat:@"Publishing %@...", fileName]];
  218 +
  219 + // Remove old file
  220 + [fm removeItemAtPath:dstFile error:NULL];
  221 +
  222 + // Copy the file
  223 + BOOL sucess = [self publishCCBFile:filePath to:dstFile];
  224 + if (!sucess) return NO;
  225 + }
  226 + }
  227 + }
  228 + }
  229 +
  230 + return YES;
  231 +}
  232 +
  233 +- (BOOL) publish_
  234 +{
  235 + CocosBuilderAppDelegate* ad = [[CCBGlobals globals] appDelegate];
  236 +
  237 + for (NSString* dir in projectSettings.absoluteResourcePaths)
  238 + {
  239 + if (![self publishDirectory:dir subPath:NULL]) return NO;
  240 + }
  241 +
  242 + if (projectSettings.publishToZipFile)
  243 + {
  244 + [ad modalStatusWindowUpdateStatusText:@"Zipping up project..."];
  245 +
  246 + // Zip it up!
  247 + NSTask* zipTask = [[NSTask alloc] init];
  248 + [zipTask setCurrentDirectoryPath:outputDir];
  249 + [zipTask setLaunchPath:@"/usr/bin/zip"];
  250 + NSArray* args = [NSArray arrayWithObjects:@"-r", @"-q", [[projectSettings.publishDirectory absolutePathFromBaseDirPath:[projectSettings.projectPath stringByDeletingLastPathComponent]] stringByAppendingPathComponent:@"ccb.zip"], @".", @"-i", @"*", nil];
  251 + [zipTask setArguments:args];
  252 + [zipTask launch];
  253 + [zipTask waitUntilExit];
  254 + }
  255 +
  256 + return YES;
  257 +}
  258 +
  259 +- (void) publish
  260 +{
  261 + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  262 + dispatch_async(queue, ^{
  263 + [self publish_];
  264 + dispatch_sync(dispatch_get_main_queue(), ^{
  265 + CocosBuilderAppDelegate* ad = [[CCBGlobals globals] appDelegate];
  266 + [ad publisher:self finishedWithWarnings:warnings];
  267 + });
  268 + });
  269 +
  270 +}
  271 +
  272 ++ (void) cleanAllCacheDirectories
  273 +{
  274 + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
  275 + NSString* ccbChacheDir = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"com.cocosbuilder.CocosBuilder"];
  276 + [[NSFileManager defaultManager] removeItemAtPath:ccbChacheDir error:NULL];
  277 +}
  278 +
  279 +- (void) dealloc
  280 +{
  281 + [warnings release];
  282 + [projectSettings release];
  283 + [outputDir release];
  284 + [super dealloc];
  285 +}
  286 +
  287 +@end
49 CocosBuilder/ccBuilder/CCBWarnings.h
... ... @@ -0,0 +1,49 @@
  1 +/*
  2 + * CocosBuilder: http://www.cocosbuilder.com
  3 + *
  4 + * Copyright (c) 2012 Zynga Inc.
  5 + *
  6 + * Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + * of this software and associated documentation files (the "Software"), to deal
  8 + * in the Software without restriction, including without limitation the rights
  9 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + * copies of the Software, and to permit persons to whom the Software is
  11 + * furnished to do so, subject to the following conditions:
  12 + *
  13 + * The above copyright notice and this permission notice shall be included in
  14 + * all copies or substantial portions of the Software.
  15 + *
  16 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + * THE SOFTWARE.
  23 + */
  24 +
  25 +#import <Foundation/Foundation.h>
  26 +
  27 +@interface CCBWarning : NSObject
  28 +{
  29 + NSString* description;
  30 + BOOL fatal;
  31 +}
  32 +@property (nonatomic,copy) NSString* description;
  33 +@property (nonatomic,assign) BOOL fatal;
  34 +
  35 +@end
  36 +
  37 +@interface CCBWarnings : NSObject
  38 +{
  39 + NSString* warningsDescription;
  40 + NSMutableArray* warnings;
  41 +}
  42 +@property (nonatomic,readonly) NSMutableArray* warnings;
  43 +@property (nonatomic,copy) NSString* warningsDescription;
  44 +
  45 +- (void) addWarningWithDescription:(NSString*)description isFatal:(BOOL)fatal;
  46 +- (void) addWarningWithDescription:(NSString*)description;
  47 +- (void) addWarning:(CCBWarning*)warning;
  48 +
  49 +@end
83 CocosBuilder/ccBuilder/CCBWarnings.m
... ... @@ -0,0 +1,83 @@
  1 +/*
  2 + * CocosBuilder: http://www.cocosbuilder.com
  3 + *
  4 + * Copyright (c) 2012 Zynga Inc.
  5 + *
  6 + * Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + * of this software and associated documentation files (the "Software"), to deal
  8 + * in the Software without restriction, including without limitation the rights
  9 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + * copies of the Software, and to permit persons to whom the Software is
  11 + * furnished to do so, subject to the following conditions:
  12 + *
  13 + * The above copyright notice and this permission notice shall be included in
  14 + * all copies or substantial portions of the Software.
  15 + *
  16 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + * THE SOFTWARE.
  23 + */
  24 +
  25 +#import "CCBWarnings.h"
  26 +
  27 +@implementation CCBWarning
  28 +@synthesize description;
  29 +@synthesize fatal;
  30 +
  31 +- (void) dealloc
  32 +{
  33 + self.description = NULL;
  34 + [super dealloc];
  35 +}
  36 +
  37 +@end
  38 +
  39 +
  40 +@implementation CCBWarnings
  41 +
  42 +@synthesize warningsDescription;
  43 +@synthesize warnings;
  44 +
  45 +- (id) init
  46 +{
  47 + self = [super init];
  48 + if (!self) return NULL;
  49 +
  50 + warnings = [[NSMutableArray array] retain];
  51 + self.warningsDescription = @"Warnings";
  52 +
  53 + return self;
  54 +}
  55 +
  56 +- (void) addWarningWithDescription:(NSString*)description isFatal:(BOOL)fatal
  57 +{
  58 + CCBWarning* warning = [[[CCBWarning alloc] init] autorelease];
  59 + warning.description = description;
  60 + warning.fatal = fatal;
  61 + [self addWarning:warning];
  62 +}
  63 +
  64 +- (void) addWarningWithDescription:(NSString*)description
  65 +{
  66 + CCBWarning* warning = [[[CCBWarning alloc] init] autorelease];
  67 + warning.description = description;
  68 + [self addWarning:warning];
  69 +}
  70 +
  71 +- (void) addWarning:(CCBWarning*)warning
  72 +{
  73 + [warnings addObject:warning];
  74 + NSLog(@"CCB WARNING: %@", warning.description);
  75 +}
  76 +
  77 +- (void) dealloc
  78 +{
  79 + [warnings release];
  80 + [super dealloc];
  81 +}
  82 +
  83 +@end
33 CocosBuilder/ccBuilder/CocosBuilderAppDelegate.h
@@ -44,13 +44,19 @@ enum {
44 44
45 45
46 46 @class CCBDocument;
  47 +@class ProjectSettings;
47 48 @class AssetsWindowController;
48 49 @class PlugInManager;
49 50 @class ResourceManager;
50 51 @class ResourceManagerPanel;
  52 +@class ResourceManagerOutlineHandler;
51 53 @class CCBGLView;
52 54 @class CCBTransparentWindow;
53 55 @class CCBTransparentView;
  56 +@class WarningsWindow;
  57 +@class TaskStatusWindow;
  58 +@class CCBPublisher;
  59 +@class CCBWarnings;
54 60
55 61 @interface CocosBuilderAppDelegate : NSObject <NSApplicationDelegate, NSOutlineViewDataSource, NSOutlineViewDelegate, NSWindowDelegate>
56 62 {
@@ -93,7 +99,12 @@ enum {
93 99 ResourceManager* resManager;
94 100 ResourceManagerPanel* resManagerPanel;
95 101
96   - //NSMutableArray* assetsFontListTTF;
  102 + // Project
  103 + ProjectSettings* projectSettings;
  104 +
  105 + // Project display
  106 + IBOutlet NSOutlineView* outlineProject;
  107 + ResourceManagerOutlineHandler* projectOutlineHandler;
97 108
98 109 // Documents
99 110 CCBDocument* currentDocument;
@@ -115,6 +126,12 @@ enum {
115 126 CCBTransparentWindow* guiWindow;
116 127 CCBTransparentView* guiView;
117 128
  129 + // Warnings
  130 + WarningsWindow* publishWarningsWindow;
  131 +
  132 + // Modal status window
  133 + TaskStatusWindow* modalTaskStatusWindow;
  134 +
118 135 @private
119 136 NSWindow *window;
120 137
@@ -142,6 +159,8 @@ enum {
142 159 @property (nonatomic,readonly) CCBTransparentView* guiView;
143 160 @property (nonatomic,readonly) CCBTransparentWindow* guiWindow;
144 161
  162 +@property (nonatomic,retain) ProjectSettings* projectSettings;
  163 +
145 164 // Transparent window
146 165 - (void) resizeGUIWindow:(NSSize)size;
147 166
@@ -153,9 +172,9 @@ enum {
153 172 - (void) updateInspectorFromSelection;
154 173 - (void) switchToDocument:(CCBDocument*) document;
155 174 - (void) closeLastDocument;
  175 +- (void) openFile:(NSString*) fileName;
156 176
157 177 // Menu options
158   -
159 178 - (void) dropAddSpriteNamed:(NSString*)spriteFile inSpriteSheet:(NSString*)spriteSheetFile at:(CGPoint)pt parent:(CCNode*)parent;
160 179 - (void) dropAddSpriteNamed:(NSString*)spriteFile inSpriteSheet:(NSString*)spriteSheetFile at:(CGPoint)pt;
161 180
@@ -167,6 +186,7 @@ enum {
167 186 - (IBAction) menuDeselect:(id)sender;
168 187
169 188 - (IBAction) menuCloseDocument:(id)sender;
  189 +- (void) closeProject;
170 190
171 191 - (BOOL) addCCObject:(CCNode *)obj toParent:(CCNode*)parent atIndex:(int)index;
172 192 - (BOOL) addCCObject:(CCNode *)obj toParent:(CCNode*)parent;
@@ -192,6 +212,7 @@ enum {
192 212 - (void) reloadResources;
193 213 - (IBAction) menuAlignChildren:(id)sender;
194 214 - (IBAction)menuAddStickyNote:(id)sender;
  215 +- (IBAction) menuCleanCacheDirectories:(id)sender;
195 216
196 217 // Undo / Redo
197 218 - (void) updateDirtyMark;
@@ -203,7 +224,15 @@ enum {
203 224
204 225 - (IBAction) debug:(id)sender;
205 226
  227 +// Publishing
  228 +- (void) publisher:(CCBPublisher*)publisher finishedWithWarnings:(CCBWarnings*)warnings;
  229 +
206 230 // For warning messages
207 231 - (void) modalDialogTitle: (NSString*)title message:(NSString*)msg;
208 232
  233 +// Modal status messages (progress)
  234 +- (void) modalStatusWindowStartWithTitle:(NSString*)title;
  235 +- (void) modalStatusWindowFinish;
  236 +- (void) modalStatusWindowUpdateStatusText:(NSString*) text;
  237 +
209 238 @end
354 CocosBuilder/ccBuilder/CocosBuilderAppDelegate.m
@@ -55,12 +55,34 @@
55 55 #import "CCBTransparentView.h"
56 56 #import "NotesLayer.h"
57 57 #import "ResolutionSetting.h"
  58 +#import "ProjectSettingsWindow.h"
  59 +#import "ProjectSettings.h"
  60 +#import "ResourceManagerOutlineHandler.h"
  61 +#import "SavePanelLimiter.h"
  62 +#import "CCBPublisher.h"
  63 +#import "CCBWarnings.h"
  64 +#import "WarningsWindow.h"
  65 +#import "TaskStatusWindow.h"
58 66
59 67 #import <ExceptionHandling/NSExceptionHandler.h>
60 68
61 69 @implementation CocosBuilderAppDelegate
62 70
63   -@synthesize window, currentDocument, cocosView, canEditContentSize, canEditCustomClass, hasOpenedDocument, defaultCanvasSize, plugInManager, resManager, showGuides, snapToGuides, guiView, guiWindow, showStickyNotes;
  71 +@synthesize window;
  72 +@synthesize projectSettings;
  73 +@synthesize currentDocument;
  74 +@synthesize cocosView;
  75 +@synthesize canEditContentSize;
  76 +@synthesize canEditCustomClass;
  77 +@synthesize hasOpenedDocument;
  78 +@synthesize defaultCanvasSize;
  79 +@synthesize plugInManager;
  80 +@synthesize resManager;
  81 +@synthesize showGuides;
  82 +@synthesize snapToGuides;
  83 +@synthesize guiView;
  84 +@synthesize guiWindow;
  85 +@synthesize showStickyNotes;
64 86
65 87 #pragma mark Setup functions
66 88
@@ -128,10 +150,11 @@ - (void) setupTabBar
128 150 [window setShowsToolbarButton:NO];
129 151 }
130 152
  153 +/*
131 154 - (void) setupDefaultDocument
132 155 {
133   - currentDocument = [[CCBDocument alloc] init];
134   -}
  156 + //currentDocument = [[CCBDocument alloc] init];
  157 +}*/
135 158
136 159 - (void) setupResourceManager
137 160 {
@@ -139,6 +162,9 @@ - (void) setupResourceManager
139 162 resManager = [ResourceManager sharedManager];
140 163 resManagerPanel = [[ResourceManagerPanel alloc] initWithWindowNibName:@"ResourceManagerPanel"];
141 164 [resManagerPanel.window setIsVisible:NO];
  165 +
  166 + // Setup project display
  167 + projectOutlineHandler = [[ResourceManagerOutlineHandler alloc] initWithOutlineView:outlineProject resType:kCCBResTypeNone];
142 168 }
143 169
144 170 - (void) setupGUIWindow
@@ -171,7 +197,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
171 197 [window setDelegate:self];
172 198
173 199 [self setupTabBar];
174   - [self setupDefaultDocument];
  200 + //[self setupDefaultDocument];
175 201 [self setupInspectorPane];
176 202 [self setupCocos2d];
177 203 [self setupOutlineView];
@@ -226,6 +252,36 @@ - (void) modalDialogTitle: (NSString*)title message:(NSString*)msg
226 252 [alert runModal];
227 253 }
228 254
  255 +- (void) modalStatusWindowStartWithTitle:(NSString*)title
  256 +{
  257 + if (!modalTaskStatusWindow)
  258 + {
  259 + modalTaskStatusWindow = [[TaskStatusWindow alloc] initWithWindowNibName:@"TaskStatusWindow"];
  260 + }
  261 +
  262 + modalTaskStatusWindow.window.title = title;
  263 + [modalTaskStatusWindow.window center];
  264 + [modalTaskStatusWindow.window makeKeyAndOrderFront:self];
  265 +
  266 + [[NSApplication sharedApplication] runModalForWindow:modalTaskStatusWindow.window];
  267 +
  268 + //NSModalSession modalSession = [[NSApplication sharedApplication] beginModalSessionForWindow:modalTaskStatusWindow.window];
  269 + //[[NSApplication sharedApplication] runModalSession:modalSession];
  270 +}
  271 +
  272 +- (void) modalStatusWindowFinish
  273 +{
  274 + [[NSApplication sharedApplication] stopModal];
  275 + [modalTaskStatusWindow.window orderOut:self];
  276 +
  277 + //[modalTaskStatusWindow.window setIsVisible:NO];
  278 +}
  279 +
  280 +- (void) modalStatusWindowUpdateStatusText:(NSString*) text
  281 +{
  282 + modalTaskStatusWindow.status = text;
  283 +}
  284 +
229 285 #pragma mark Handling the gui layer
230 286
231 287 - (void) resizeGUIWindow:(NSSize)size
@@ -263,19 +319,6 @@ - (void)tabView:(NSTabView*)tv didSelectTabViewItem:(NSTabViewItem *)tabViewItem
263 319
264 320 - (void)tabView:(NSTabView *)aTabView didCloseTabViewItem:(NSTabViewItem