Przeglądaj źródła

Added Polycode IDE to the Mac Xcode workspace, added UI module to Xcode workspace, made both work with latest changes

Ivan Safrin 10 lat temu
rodzic
commit
6167d66863
100 zmienionych plików z 2345 dodań i 534 usunięć
  1. 6 0
      build/osx/Polycode.xcworkspace/contents.xcworkspacedata
  2. 621 0
      build/osx/PolycodeStudio/PolycodeStudio.xcodeproj/project.pbxproj
  3. 38 0
      build/osx/PolycodeStudio/PolycodeStudio/AppDelegate.h
  4. 54 0
      build/osx/PolycodeStudio/PolycodeStudio/AppDelegate.m
  5. 692 0
      build/osx/PolycodeStudio/PolycodeStudio/Base.lproj/MainMenu.xib
  6. 59 0
      build/osx/PolycodeStudio/PolycodeStudio/Images.xcassets/AppIcon.appiconset/Contents.json
  7. BIN
      build/osx/PolycodeStudio/PolycodeStudio/Images.xcassets/AppIcon.appiconset/main_icon.png
  8. 34 0
      build/osx/PolycodeStudio/PolycodeStudio/Info.plist
  9. 13 0
      build/osx/PolycodeStudio/PolycodeStudio/main.m
  10. 461 0
      build/osx/PolycodeUI/PolycodeUI.xcodeproj/project.pbxproj
  11. 2 2
      include/polycode/core/PolyCoreFileProvider.h
  12. 2 0
      include/polycode/core/PolySceneMesh.h
  13. 1 3
      include/polycode/ide/EditorGrid.h
  14. 2 4
      include/polycode/ide/EntityEditorPropertyView.h
  15. 2 3
      include/polycode/ide/EntityEditorSettingsView.h
  16. 2 3
      include/polycode/ide/EntityEditorTreeView.h
  17. 2 3
      include/polycode/ide/ExampleBrowserWindow.h
  18. 2 3
      include/polycode/ide/ExportProjectWindow.h
  19. 3 4
      include/polycode/ide/NewFileWindow.h
  20. 2 3
      include/polycode/ide/NewProjectWindow.h
  21. 2 2
      include/polycode/ide/PolycodeConsole.h
  22. 3 4
      include/polycode/ide/PolycodeEditor.h
  23. 2 2
      include/polycode/ide/PolycodeEditorManager.h
  24. 3 3
      include/polycode/ide/PolycodeEntityEditor.h
  25. 2 2
      include/polycode/ide/PolycodeFontEditor.h
  26. 6 6
      include/polycode/ide/PolycodeFrame.h
  27. 19 19
      include/polycode/ide/PolycodeIDEApp.h
  28. 2 2
      include/polycode/ide/PolycodeImageEditor.h
  29. 3 3
      include/polycode/ide/PolycodeMaterialEditor.h
  30. 3 3
      include/polycode/ide/PolycodeMeshEditor.h
  31. 0 1
      include/polycode/ide/PolycodeProject.h
  32. 2 3
      include/polycode/ide/PolycodeProjectBrowser.h
  33. 5 5
      include/polycode/ide/PolycodeProjectEditor.h
  34. 3 3
      include/polycode/ide/PolycodeProjectManager.h
  35. 3 4
      include/polycode/ide/PolycodeProps.h
  36. 2 2
      include/polycode/ide/PolycodeRemoteDebugger.h
  37. 2 27
      include/polycode/ide/PolycodeSoundEditor.h
  38. 2 2
      include/polycode/ide/PolycodeSpriteEditor.h
  39. 2 2
      include/polycode/ide/PolycodeTextEditor.h
  40. 2 2
      include/polycode/ide/PolycodeToolLauncher.h
  41. 2 3
      include/polycode/ide/SettingsWindow.h
  42. 3 4
      include/polycode/ide/TextureBrowser.h
  43. 2 3
      include/polycode/ide/ToolWindows.h
  44. 0 1
      include/polycode/ide/TrackballCamera.h
  45. 1 2
      include/polycode/ide/TransformGizmo.h
  46. 0 69
      include/polycode/ide/utils/TrackballCamera.h
  47. 3 3
      include/polycode/modules/ui/PolyUIBox.h
  48. 8 8
      include/polycode/modules/ui/PolyUIButton.h
  49. 8 8
      include/polycode/modules/ui/PolyUICheckBox.h
  50. 12 12
      include/polycode/modules/ui/PolyUIColorBox.h
  51. 10 10
      include/polycode/modules/ui/PolyUIComboBox.h
  52. 4 4
      include/polycode/modules/ui/PolyUIElement.h
  53. 2 2
      include/polycode/modules/ui/PolyUIEvent.h
  54. 6 7
      include/polycode/modules/ui/PolyUIFileDialog.h
  55. 3 3
      include/polycode/modules/ui/PolyUIHScrollBar.h
  56. 3 3
      include/polycode/modules/ui/PolyUIHSizer.h
  57. 9 9
      include/polycode/modules/ui/PolyUIHSlider.h
  58. 7 7
      include/polycode/modules/ui/PolyUIIconSelector.h
  59. 6 6
      include/polycode/modules/ui/PolyUIImageButton.h
  60. 3 3
      include/polycode/modules/ui/PolyUIMenu.h
  61. 9 9
      include/polycode/modules/ui/PolyUIMenuBar.h
  62. 4 4
      include/polycode/modules/ui/PolyUIScrollContainer.h
  63. 14 14
      include/polycode/modules/ui/PolyUITextInput.h
  64. 9 9
      include/polycode/modules/ui/PolyUITree.h
  65. 6 6
      include/polycode/modules/ui/PolyUITreeContainer.h
  66. 3 3
      include/polycode/modules/ui/PolyUITreeEvent.h
  67. 3 3
      include/polycode/modules/ui/PolyUIVScrollBar.h
  68. 3 3
      include/polycode/modules/ui/PolyUIVSizer.h
  69. 10 10
      include/polycode/modules/ui/PolyUIWindow.h
  70. 23 23
      include/polycode/modules/ui/PolycodeUI.h
  71. 1 1
      src/core/PolyCocoaCore.mm
  72. 1 1
      src/core/PolyPhysFSFileProvider.cpp
  73. 5 1
      src/core/PolySceneMesh.cpp
  74. 2 2
      src/ide/ExampleBrowserWindow.cpp
  75. 1 1
      src/ide/ExportProjectWindow.cpp
  76. 2 2
      src/ide/NewFileWindow.cpp
  77. 3 3
      src/ide/NewProjectWindow.cpp
  78. 1 1
      src/ide/PolycodeClipboard.cpp
  79. 4 4
      src/ide/PolycodeConsole.cpp
  80. 2 2
      src/ide/PolycodeEditor.cpp
  81. 5 3
      src/ide/PolycodeEditorManager.cpp
  82. 4 4
      src/ide/PolycodeEntityEditor.cpp
  83. 1 1
      src/ide/PolycodeFontEditor.cpp
  84. 2 2
      src/ide/PolycodeFrame.cpp
  85. 26 22
      src/ide/PolycodeIDEApp.cpp
  86. 1 1
      src/ide/PolycodeImageEditor.cpp
  87. 3 3
      src/ide/PolycodeMaterialEditor.cpp
  88. 1 1
      src/ide/PolycodeMeshEditor.cpp
  89. 5 3
      src/ide/PolycodeProject.cpp
  90. 2 2
      src/ide/PolycodeProjectBrowser.cpp
  91. 4 5
      src/ide/PolycodeProjectEditor.cpp
  92. 9 6
      src/ide/PolycodeProjectManager.cpp
  93. 4 4
      src/ide/PolycodeProps.cpp
  94. 1 1
      src/ide/PolycodeRemoteDebugger.cpp
  95. 1 70
      src/ide/PolycodeSoundEditor.cpp
  96. 2 2
      src/ide/PolycodeSpriteEditor.cpp
  97. 1 1
      src/ide/PolycodeTextEditor.cpp
  98. 2 2
      src/ide/PolycodeToolLauncher.cpp
  99. 4 4
      src/ide/SettingsWindow.cpp
  100. 3 3
      src/ide/TextureBrowser.cpp

+ 6 - 0
build/osx/Polycode.xcworkspace/contents.xcworkspacedata

@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <Workspace
 <Workspace
    version = "1.0">
    version = "1.0">
+   <FileRef
+      location = "group:PolycodeUI/PolycodeUI.xcodeproj">
+   </FileRef>
+   <FileRef
+      location = "group:PolycodeStudio/PolycodeStudio.xcodeproj">
+   </FileRef>
    <FileRef
    <FileRef
       location = "group:TemplateApp/TemplateApp.xcodeproj">
       location = "group:TemplateApp/TemplateApp.xcodeproj">
    </FileRef>
    </FileRef>

+ 621 - 0
build/osx/PolycodeStudio/PolycodeStudio.xcodeproj/project.pbxproj

@@ -0,0 +1,621 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8A36D2101B8E5751009897D0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D20F1B8E5751009897D0 /* AppDelegate.m */; };
+		8A36D2121B8E5751009897D0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2111B8E5751009897D0 /* main.m */; };
+		8A36D2141B8E5751009897D0 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A36D2131B8E5751009897D0 /* Images.xcassets */; };
+		8A36D2171B8E5751009897D0 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8A36D2151B8E5751009897D0 /* MainMenu.xib */; };
+		8A36D22E1B8E5ACC009897D0 /* PolycodeView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D22D1B8E5ACC009897D0 /* PolycodeView.mm */; };
+		8A36D2531B8E5BA9009897D0 /* EditorGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2311B8E5BA9009897D0 /* EditorGrid.cpp */; };
+		8A36D2541B8E5BA9009897D0 /* EntityEditorPropertyView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2321B8E5BA9009897D0 /* EntityEditorPropertyView.cpp */; };
+		8A36D2551B8E5BA9009897D0 /* EntityEditorSettingsView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2331B8E5BA9009897D0 /* EntityEditorSettingsView.cpp */; };
+		8A36D2561B8E5BA9009897D0 /* EntityEditorTreeView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2341B8E5BA9009897D0 /* EntityEditorTreeView.cpp */; };
+		8A36D2571B8E5BA9009897D0 /* ExampleBrowserWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2351B8E5BA9009897D0 /* ExampleBrowserWindow.cpp */; };
+		8A36D2581B8E5BA9009897D0 /* ExportProjectWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2361B8E5BA9009897D0 /* ExportProjectWindow.cpp */; };
+		8A36D2591B8E5BA9009897D0 /* NewFileWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2371B8E5BA9009897D0 /* NewFileWindow.cpp */; };
+		8A36D25A1B8E5BA9009897D0 /* NewProjectWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2381B8E5BA9009897D0 /* NewProjectWindow.cpp */; };
+		8A36D25B1B8E5BA9009897D0 /* PolycodeClipboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2391B8E5BA9009897D0 /* PolycodeClipboard.cpp */; };
+		8A36D25C1B8E5BA9009897D0 /* PolycodeConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23A1B8E5BA9009897D0 /* PolycodeConsole.cpp */; };
+		8A36D25D1B8E5BA9009897D0 /* PolycodeEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23B1B8E5BA9009897D0 /* PolycodeEditor.cpp */; };
+		8A36D25E1B8E5BA9009897D0 /* PolycodeEditorManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23C1B8E5BA9009897D0 /* PolycodeEditorManager.cpp */; };
+		8A36D25F1B8E5BA9009897D0 /* PolycodeEntityEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23D1B8E5BA9009897D0 /* PolycodeEntityEditor.cpp */; };
+		8A36D2601B8E5BA9009897D0 /* PolycodeFontEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23E1B8E5BA9009897D0 /* PolycodeFontEditor.cpp */; };
+		8A36D2611B8E5BA9009897D0 /* PolycodeFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D23F1B8E5BA9009897D0 /* PolycodeFrame.cpp */; };
+		8A36D2621B8E5BA9009897D0 /* PolycodeIDEApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2401B8E5BA9009897D0 /* PolycodeIDEApp.cpp */; };
+		8A36D2631B8E5BA9009897D0 /* PolycodeImageEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2411B8E5BA9009897D0 /* PolycodeImageEditor.cpp */; };
+		8A36D2641B8E5BA9009897D0 /* PolycodeMaterialEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2421B8E5BA9009897D0 /* PolycodeMaterialEditor.cpp */; };
+		8A36D2651B8E5BA9009897D0 /* PolycodeMeshEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2431B8E5BA9009897D0 /* PolycodeMeshEditor.cpp */; };
+		8A36D2661B8E5BA9009897D0 /* PolycodeProject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2441B8E5BA9009897D0 /* PolycodeProject.cpp */; };
+		8A36D2671B8E5BA9009897D0 /* PolycodeProjectBrowser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2451B8E5BA9009897D0 /* PolycodeProjectBrowser.cpp */; };
+		8A36D2681B8E5BA9009897D0 /* PolycodeProjectEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2461B8E5BA9009897D0 /* PolycodeProjectEditor.cpp */; };
+		8A36D2691B8E5BA9009897D0 /* PolycodeProjectManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2471B8E5BA9009897D0 /* PolycodeProjectManager.cpp */; };
+		8A36D26A1B8E5BA9009897D0 /* PolycodeProps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2481B8E5BA9009897D0 /* PolycodeProps.cpp */; };
+		8A36D26B1B8E5BA9009897D0 /* PolycodeRemoteDebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2491B8E5BA9009897D0 /* PolycodeRemoteDebugger.cpp */; };
+		8A36D26C1B8E5BA9009897D0 /* PolycodeSoundEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24A1B8E5BA9009897D0 /* PolycodeSoundEditor.cpp */; };
+		8A36D26D1B8E5BA9009897D0 /* PolycodeSpriteEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24B1B8E5BA9009897D0 /* PolycodeSpriteEditor.cpp */; };
+		8A36D26E1B8E5BA9009897D0 /* PolycodeTextEditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24C1B8E5BA9009897D0 /* PolycodeTextEditor.cpp */; };
+		8A36D26F1B8E5BA9009897D0 /* PolycodeToolLauncher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24D1B8E5BA9009897D0 /* PolycodeToolLauncher.cpp */; };
+		8A36D2701B8E5BA9009897D0 /* SettingsWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24E1B8E5BA9009897D0 /* SettingsWindow.cpp */; };
+		8A36D2711B8E5BA9009897D0 /* TextureBrowser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D24F1B8E5BA9009897D0 /* TextureBrowser.cpp */; };
+		8A36D2721B8E5BA9009897D0 /* ToolWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2501B8E5BA9009897D0 /* ToolWindows.cpp */; };
+		8A36D2731B8E5BA9009897D0 /* TrackballCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2511B8E5BA9009897D0 /* TrackballCamera.cpp */; };
+		8A36D2741B8E5BA9009897D0 /* TransformGizmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2521B8E5BA9009897D0 /* TransformGizmo.cpp */; };
+		8A36D30D1B8E6FB8009897D0 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3091B8E6FB8009897D0 /* AudioUnit.framework */; };
+		8A36D30E1B8E6FB9009897D0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D30A1B8E6FB8009897D0 /* AudioToolbox.framework */; };
+		8A36D30F1B8E6FB9009897D0 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D30B1B8E6FB8009897D0 /* CoreAudio.framework */; };
+		8A36D3101B8E6FB9009897D0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D30C1B8E6FB8009897D0 /* OpenGL.framework */; };
+		8A36D31B1B8E6FD5009897D0 /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3111B8E6FD5009897D0 /* libfreetype.a */; };
+		8A36D31C1B8E6FD5009897D0 /* liblibogg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3121B8E6FD5009897D0 /* liblibogg.a */; };
+		8A36D31D1B8E6FD5009897D0 /* liblibvorbis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3131B8E6FD5009897D0 /* liblibvorbis.a */; };
+		8A36D31E1B8E6FD5009897D0 /* libportaudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3141B8E6FD5009897D0 /* libportaudio.a */; };
+		8A36D31F1B8E6FD5009897D0 /* liblibvorbisfile.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3151B8E6FD5009897D0 /* liblibvorbisfile.a */; };
+		8A36D3201B8E6FD5009897D0 /* liblua5.1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3161B8E6FD5009897D0 /* liblua5.1.a */; };
+		8A36D3211B8E6FD5009897D0 /* libphysfs.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3171B8E6FD5009897D0 /* libphysfs.a */; };
+		8A36D3221B8E6FD5009897D0 /* libpng15.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3181B8E6FD5009897D0 /* libpng15.a */; };
+		8A36D3231B8E6FD5009897D0 /* libPolycore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3191B8E6FD5009897D0 /* libPolycore.a */; };
+		8A36D3241B8E6FD5009897D0 /* libz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D31A1B8E6FD5009897D0 /* libz.a */; };
+		8A36D3261B8E6FE7009897D0 /* libPolycodeUI.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A36D3251B8E6FE7009897D0 /* libPolycodeUI.a */; };
+		8A36D32A1B8E7096009897D0 /* default.pak in Resources */ = {isa = PBXBuildFile; fileRef = 8A36D3281B8E7096009897D0 /* default.pak */; };
+		8A36D32B1B8E7096009897D0 /* hdr.pak in Resources */ = {isa = PBXBuildFile; fileRef = 8A36D3291B8E7096009897D0 /* hdr.pak */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		8A36D2091B8E5751009897D0 /* PolycodeStudio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PolycodeStudio.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		8A36D20D1B8E5751009897D0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		8A36D20E1B8E5751009897D0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		8A36D20F1B8E5751009897D0 /* AppDelegate.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; path = AppDelegate.m; sourceTree = "<group>"; };
+		8A36D2111B8E5751009897D0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		8A36D2131B8E5751009897D0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+		8A36D2161B8E5751009897D0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
+		8A36D22C1B8E5ACC009897D0 /* PolycodeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeView.h; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../include/polycode/view/osx/PolycodeView.h; sourceTree = "<absolute>"; };
+		8A36D22D1B8E5ACC009897D0 /* PolycodeView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PolycodeView.mm; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../src/view/osx/PolycodeView.mm; sourceTree = "<absolute>"; };
+		8A36D2311B8E5BA9009897D0 /* EditorGrid.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = EditorGrid.cpp; path = ../../../src/ide/EditorGrid.cpp; sourceTree = "<group>"; };
+		8A36D2321B8E5BA9009897D0 /* EntityEditorPropertyView.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = EntityEditorPropertyView.cpp; path = ../../../src/ide/EntityEditorPropertyView.cpp; sourceTree = "<group>"; };
+		8A36D2331B8E5BA9009897D0 /* EntityEditorSettingsView.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = EntityEditorSettingsView.cpp; path = ../../../src/ide/EntityEditorSettingsView.cpp; sourceTree = "<group>"; };
+		8A36D2341B8E5BA9009897D0 /* EntityEditorTreeView.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = EntityEditorTreeView.cpp; path = ../../../src/ide/EntityEditorTreeView.cpp; sourceTree = "<group>"; };
+		8A36D2351B8E5BA9009897D0 /* ExampleBrowserWindow.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = ExampleBrowserWindow.cpp; path = ../../../src/ide/ExampleBrowserWindow.cpp; sourceTree = "<group>"; };
+		8A36D2361B8E5BA9009897D0 /* ExportProjectWindow.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = ExportProjectWindow.cpp; path = ../../../src/ide/ExportProjectWindow.cpp; sourceTree = "<group>"; };
+		8A36D2371B8E5BA9009897D0 /* NewFileWindow.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = NewFileWindow.cpp; path = ../../../src/ide/NewFileWindow.cpp; sourceTree = "<group>"; };
+		8A36D2381B8E5BA9009897D0 /* NewProjectWindow.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = NewProjectWindow.cpp; path = ../../../src/ide/NewProjectWindow.cpp; sourceTree = "<group>"; };
+		8A36D2391B8E5BA9009897D0 /* PolycodeClipboard.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeClipboard.cpp; path = ../../../src/ide/PolycodeClipboard.cpp; sourceTree = "<group>"; };
+		8A36D23A1B8E5BA9009897D0 /* PolycodeConsole.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeConsole.cpp; path = ../../../src/ide/PolycodeConsole.cpp; sourceTree = "<group>"; };
+		8A36D23B1B8E5BA9009897D0 /* PolycodeEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeEditor.cpp; path = ../../../src/ide/PolycodeEditor.cpp; sourceTree = "<group>"; };
+		8A36D23C1B8E5BA9009897D0 /* PolycodeEditorManager.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeEditorManager.cpp; path = ../../../src/ide/PolycodeEditorManager.cpp; sourceTree = "<group>"; };
+		8A36D23D1B8E5BA9009897D0 /* PolycodeEntityEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeEntityEditor.cpp; path = ../../../src/ide/PolycodeEntityEditor.cpp; sourceTree = "<group>"; };
+		8A36D23E1B8E5BA9009897D0 /* PolycodeFontEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeFontEditor.cpp; path = ../../../src/ide/PolycodeFontEditor.cpp; sourceTree = "<group>"; };
+		8A36D23F1B8E5BA9009897D0 /* PolycodeFrame.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeFrame.cpp; path = ../../../src/ide/PolycodeFrame.cpp; sourceTree = "<group>"; };
+		8A36D2401B8E5BA9009897D0 /* PolycodeIDEApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeIDEApp.cpp; path = ../../../src/ide/PolycodeIDEApp.cpp; sourceTree = "<group>"; };
+		8A36D2411B8E5BA9009897D0 /* PolycodeImageEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeImageEditor.cpp; path = ../../../src/ide/PolycodeImageEditor.cpp; sourceTree = "<group>"; };
+		8A36D2421B8E5BA9009897D0 /* PolycodeMaterialEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeMaterialEditor.cpp; path = ../../../src/ide/PolycodeMaterialEditor.cpp; sourceTree = "<group>"; };
+		8A36D2431B8E5BA9009897D0 /* PolycodeMeshEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeMeshEditor.cpp; path = ../../../src/ide/PolycodeMeshEditor.cpp; sourceTree = "<group>"; };
+		8A36D2441B8E5BA9009897D0 /* PolycodeProject.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeProject.cpp; path = ../../../src/ide/PolycodeProject.cpp; sourceTree = "<group>"; };
+		8A36D2451B8E5BA9009897D0 /* PolycodeProjectBrowser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeProjectBrowser.cpp; path = ../../../src/ide/PolycodeProjectBrowser.cpp; sourceTree = "<group>"; };
+		8A36D2461B8E5BA9009897D0 /* PolycodeProjectEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeProjectEditor.cpp; path = ../../../src/ide/PolycodeProjectEditor.cpp; sourceTree = "<group>"; };
+		8A36D2471B8E5BA9009897D0 /* PolycodeProjectManager.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeProjectManager.cpp; path = ../../../src/ide/PolycodeProjectManager.cpp; sourceTree = "<group>"; };
+		8A36D2481B8E5BA9009897D0 /* PolycodeProps.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeProps.cpp; path = ../../../src/ide/PolycodeProps.cpp; sourceTree = "<group>"; };
+		8A36D2491B8E5BA9009897D0 /* PolycodeRemoteDebugger.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeRemoteDebugger.cpp; path = ../../../src/ide/PolycodeRemoteDebugger.cpp; sourceTree = "<group>"; };
+		8A36D24A1B8E5BA9009897D0 /* PolycodeSoundEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeSoundEditor.cpp; path = ../../../src/ide/PolycodeSoundEditor.cpp; sourceTree = "<group>"; };
+		8A36D24B1B8E5BA9009897D0 /* PolycodeSpriteEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeSpriteEditor.cpp; path = ../../../src/ide/PolycodeSpriteEditor.cpp; sourceTree = "<group>"; };
+		8A36D24C1B8E5BA9009897D0 /* PolycodeTextEditor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeTextEditor.cpp; path = ../../../src/ide/PolycodeTextEditor.cpp; sourceTree = "<group>"; };
+		8A36D24D1B8E5BA9009897D0 /* PolycodeToolLauncher.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = PolycodeToolLauncher.cpp; path = ../../../src/ide/PolycodeToolLauncher.cpp; sourceTree = "<group>"; };
+		8A36D24E1B8E5BA9009897D0 /* SettingsWindow.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = SettingsWindow.cpp; path = ../../../src/ide/SettingsWindow.cpp; sourceTree = "<group>"; };
+		8A36D24F1B8E5BA9009897D0 /* TextureBrowser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = TextureBrowser.cpp; path = ../../../src/ide/TextureBrowser.cpp; sourceTree = "<group>"; };
+		8A36D2501B8E5BA9009897D0 /* ToolWindows.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = ToolWindows.cpp; path = ../../../src/ide/ToolWindows.cpp; sourceTree = "<group>"; };
+		8A36D2511B8E5BA9009897D0 /* TrackballCamera.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = TrackballCamera.cpp; path = ../../../src/ide/TrackballCamera.cpp; sourceTree = "<group>"; };
+		8A36D2521B8E5BA9009897D0 /* TransformGizmo.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; name = TransformGizmo.cpp; path = ../../../src/ide/TransformGizmo.cpp; sourceTree = "<group>"; };
+		8A36D2751B8E5BE4009897D0 /* EditorGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditorGrid.h; path = ../../../include/polycode/ide/EditorGrid.h; sourceTree = "<group>"; };
+		8A36D2761B8E5BE4009897D0 /* EntityEditorPropertyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityEditorPropertyView.h; path = ../../../include/polycode/ide/EntityEditorPropertyView.h; sourceTree = "<group>"; };
+		8A36D2771B8E5BE4009897D0 /* EntityEditorSettingsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityEditorSettingsView.h; path = ../../../include/polycode/ide/EntityEditorSettingsView.h; sourceTree = "<group>"; };
+		8A36D2781B8E5BE4009897D0 /* EntityEditorTreeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityEditorTreeView.h; path = ../../../include/polycode/ide/EntityEditorTreeView.h; sourceTree = "<group>"; };
+		8A36D2791B8E5BE4009897D0 /* ExampleBrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExampleBrowserWindow.h; path = ../../../include/polycode/ide/ExampleBrowserWindow.h; sourceTree = "<group>"; };
+		8A36D27A1B8E5BE4009897D0 /* ExportProjectWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExportProjectWindow.h; path = ../../../include/polycode/ide/ExportProjectWindow.h; sourceTree = "<group>"; };
+		8A36D27B1B8E5BE4009897D0 /* NewFileWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NewFileWindow.h; path = ../../../include/polycode/ide/NewFileWindow.h; sourceTree = "<group>"; };
+		8A36D27C1B8E5BE4009897D0 /* NewProjectWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NewProjectWindow.h; path = ../../../include/polycode/ide/NewProjectWindow.h; sourceTree = "<group>"; };
+		8A36D27D1B8E5BE4009897D0 /* PolycodeClipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeClipboard.h; path = ../../../include/polycode/ide/PolycodeClipboard.h; sourceTree = "<group>"; };
+		8A36D27E1B8E5BE4009897D0 /* PolycodeConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeConsole.h; path = ../../../include/polycode/ide/PolycodeConsole.h; sourceTree = "<group>"; };
+		8A36D27F1B8E5BE4009897D0 /* PolycodeEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeEditor.h; path = ../../../include/polycode/ide/PolycodeEditor.h; sourceTree = "<group>"; };
+		8A36D2801B8E5BE4009897D0 /* PolycodeEditorManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeEditorManager.h; path = ../../../include/polycode/ide/PolycodeEditorManager.h; sourceTree = "<group>"; };
+		8A36D2811B8E5BE4009897D0 /* PolycodeEntityEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeEntityEditor.h; path = ../../../include/polycode/ide/PolycodeEntityEditor.h; sourceTree = "<group>"; };
+		8A36D2821B8E5BE4009897D0 /* PolycodeFontEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeFontEditor.h; path = ../../../include/polycode/ide/PolycodeFontEditor.h; sourceTree = "<group>"; };
+		8A36D2831B8E5BE4009897D0 /* PolycodeFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeFrame.h; path = ../../../include/polycode/ide/PolycodeFrame.h; sourceTree = "<group>"; };
+		8A36D2841B8E5BE4009897D0 /* PolycodeGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeGlobals.h; path = ../../../include/polycode/ide/PolycodeGlobals.h; sourceTree = "<group>"; };
+		8A36D2851B8E5BE4009897D0 /* PolycodeIDEApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeIDEApp.h; path = ../../../include/polycode/ide/PolycodeIDEApp.h; sourceTree = "<group>"; };
+		8A36D2861B8E5BE4009897D0 /* PolycodeImageEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeImageEditor.h; path = ../../../include/polycode/ide/PolycodeImageEditor.h; sourceTree = "<group>"; };
+		8A36D2871B8E5BE4009897D0 /* PolycodeMaterialEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeMaterialEditor.h; path = ../../../include/polycode/ide/PolycodeMaterialEditor.h; sourceTree = "<group>"; };
+		8A36D2881B8E5BE4009897D0 /* PolycodeMeshEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeMeshEditor.h; path = ../../../include/polycode/ide/PolycodeMeshEditor.h; sourceTree = "<group>"; };
+		8A36D2891B8E5BE4009897D0 /* PolycodeProject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeProject.h; path = ../../../include/polycode/ide/PolycodeProject.h; sourceTree = "<group>"; };
+		8A36D28A1B8E5BE4009897D0 /* PolycodeProjectBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeProjectBrowser.h; path = ../../../include/polycode/ide/PolycodeProjectBrowser.h; sourceTree = "<group>"; };
+		8A36D28B1B8E5BE4009897D0 /* PolycodeProjectEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeProjectEditor.h; path = ../../../include/polycode/ide/PolycodeProjectEditor.h; sourceTree = "<group>"; };
+		8A36D28C1B8E5BE4009897D0 /* PolycodeProjectManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeProjectManager.h; path = ../../../include/polycode/ide/PolycodeProjectManager.h; sourceTree = "<group>"; };
+		8A36D28D1B8E5BE4009897D0 /* PolycodeProps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeProps.h; path = ../../../include/polycode/ide/PolycodeProps.h; sourceTree = "<group>"; };
+		8A36D28E1B8E5BE4009897D0 /* PolycodeRemoteDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeRemoteDebugger.h; path = ../../../include/polycode/ide/PolycodeRemoteDebugger.h; sourceTree = "<group>"; };
+		8A36D28F1B8E5BE4009897D0 /* PolycodeSoundEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeSoundEditor.h; path = ../../../include/polycode/ide/PolycodeSoundEditor.h; sourceTree = "<group>"; };
+		8A36D2901B8E5BE4009897D0 /* PolycodeSpriteEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeSpriteEditor.h; path = ../../../include/polycode/ide/PolycodeSpriteEditor.h; sourceTree = "<group>"; };
+		8A36D2911B8E5BE4009897D0 /* PolycodeTextEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeTextEditor.h; path = ../../../include/polycode/ide/PolycodeTextEditor.h; sourceTree = "<group>"; };
+		8A36D2921B8E5BE4009897D0 /* PolycodeToolLauncher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeToolLauncher.h; path = ../../../include/polycode/ide/PolycodeToolLauncher.h; sourceTree = "<group>"; };
+		8A36D2931B8E5BE4009897D0 /* SettingsWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SettingsWindow.h; path = ../../../include/polycode/ide/SettingsWindow.h; sourceTree = "<group>"; };
+		8A36D2941B8E5BE4009897D0 /* TextureBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextureBrowser.h; path = ../../../include/polycode/ide/TextureBrowser.h; sourceTree = "<group>"; };
+		8A36D2951B8E5BE4009897D0 /* ToolWindows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ToolWindows.h; path = ../../../include/polycode/ide/ToolWindows.h; sourceTree = "<group>"; };
+		8A36D2961B8E5BE4009897D0 /* TrackballCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TrackballCamera.h; path = ../../../include/polycode/ide/TrackballCamera.h; sourceTree = "<group>"; };
+		8A36D2971B8E5BE4009897D0 /* TransformGizmo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformGizmo.h; path = ../../../include/polycode/ide/TransformGizmo.h; sourceTree = "<group>"; };
+		8A36D3091B8E6FB8009897D0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
+		8A36D30A1B8E6FB8009897D0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
+		8A36D30B1B8E6FB8009897D0 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
+		8A36D30C1B8E6FB8009897D0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
+		8A36D3111B8E6FD5009897D0 /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfreetype.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libfreetype.a; sourceTree = "<absolute>"; };
+		8A36D3121B8E6FD5009897D0 /* liblibogg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblibogg.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/liblibogg.a; sourceTree = "<absolute>"; };
+		8A36D3131B8E6FD5009897D0 /* liblibvorbis.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblibvorbis.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/liblibvorbis.a; sourceTree = "<absolute>"; };
+		8A36D3141B8E6FD5009897D0 /* libportaudio.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libportaudio.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libportaudio.a; sourceTree = "<absolute>"; };
+		8A36D3151B8E6FD5009897D0 /* liblibvorbisfile.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblibvorbisfile.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/liblibvorbisfile.a; sourceTree = "<absolute>"; };
+		8A36D3161B8E6FD5009897D0 /* liblua5.1.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblua5.1.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/liblua5.1.a; sourceTree = "<absolute>"; };
+		8A36D3171B8E6FD5009897D0 /* libphysfs.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libphysfs.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libphysfs.a; sourceTree = "<absolute>"; };
+		8A36D3181B8E6FD5009897D0 /* libpng15.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng15.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libpng15.a; sourceTree = "<absolute>"; };
+		8A36D3191B8E6FD5009897D0 /* libPolycore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libPolycore.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libPolycore.a; sourceTree = "<absolute>"; };
+		8A36D31A1B8E6FD5009897D0 /* libz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libz.a; path = /Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx/libz.a; sourceTree = "<absolute>"; };
+		8A36D3251B8E6FE7009897D0 /* libPolycodeUI.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libPolycodeUI.a; path = ../../../../lib/osx/libPolycodeUI.a; sourceTree = "<group>"; };
+		8A36D3281B8E7096009897D0 /* default.pak */ = {isa = PBXFileReference; lastKnownFileType = file; name = default.pak; path = ../../../../assets/default/default.pak; sourceTree = "<group>"; };
+		8A36D3291B8E7096009897D0 /* hdr.pak */ = {isa = PBXFileReference; lastKnownFileType = file; name = hdr.pak; path = ../../../../assets/default/hdr.pak; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8A36D2061B8E5751009897D0 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8A36D31D1B8E6FD5009897D0 /* liblibvorbis.a in Frameworks */,
+				8A36D30F1B8E6FB9009897D0 /* CoreAudio.framework in Frameworks */,
+				8A36D3231B8E6FD5009897D0 /* libPolycore.a in Frameworks */,
+				8A36D3101B8E6FB9009897D0 /* OpenGL.framework in Frameworks */,
+				8A36D3221B8E6FD5009897D0 /* libpng15.a in Frameworks */,
+				8A36D3201B8E6FD5009897D0 /* liblua5.1.a in Frameworks */,
+				8A36D31F1B8E6FD5009897D0 /* liblibvorbisfile.a in Frameworks */,
+				8A36D31E1B8E6FD5009897D0 /* libportaudio.a in Frameworks */,
+				8A36D3261B8E6FE7009897D0 /* libPolycodeUI.a in Frameworks */,
+				8A36D31B1B8E6FD5009897D0 /* libfreetype.a in Frameworks */,
+				8A36D30D1B8E6FB8009897D0 /* AudioUnit.framework in Frameworks */,
+				8A36D30E1B8E6FB9009897D0 /* AudioToolbox.framework in Frameworks */,
+				8A36D3211B8E6FD5009897D0 /* libphysfs.a in Frameworks */,
+				8A36D3241B8E6FD5009897D0 /* libz.a in Frameworks */,
+				8A36D31C1B8E6FD5009897D0 /* liblibogg.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		8A36D2001B8E5751009897D0 = {
+			isa = PBXGroup;
+			children = (
+				8A36D3091B8E6FB8009897D0 /* AudioUnit.framework */,
+				8A36D30A1B8E6FB8009897D0 /* AudioToolbox.framework */,
+				8A36D30B1B8E6FB8009897D0 /* CoreAudio.framework */,
+				8A36D30C1B8E6FB8009897D0 /* OpenGL.framework */,
+				8A36D2301B8E5B73009897D0 /* include */,
+				8A36D22F1B8E5B6E009897D0 /* src */,
+				8A36D20B1B8E5751009897D0 /* PolycodeStudio */,
+				8A36D20A1B8E5751009897D0 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		8A36D20A1B8E5751009897D0 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2091B8E5751009897D0 /* PolycodeStudio.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		8A36D20B1B8E5751009897D0 /* PolycodeStudio */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D3281B8E7096009897D0 /* default.pak */,
+				8A36D3291B8E7096009897D0 /* hdr.pak */,
+				8A36D22C1B8E5ACC009897D0 /* PolycodeView.h */,
+				8A36D22D1B8E5ACC009897D0 /* PolycodeView.mm */,
+				8A36D20E1B8E5751009897D0 /* AppDelegate.h */,
+				8A36D20F1B8E5751009897D0 /* AppDelegate.m */,
+				8A36D2131B8E5751009897D0 /* Images.xcassets */,
+				8A36D2151B8E5751009897D0 /* MainMenu.xib */,
+				8A36D20C1B8E5751009897D0 /* Supporting Files */,
+			);
+			path = PolycodeStudio;
+			sourceTree = "<group>";
+		};
+		8A36D20C1B8E5751009897D0 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D3111B8E6FD5009897D0 /* libfreetype.a */,
+				8A36D3121B8E6FD5009897D0 /* liblibogg.a */,
+				8A36D3131B8E6FD5009897D0 /* liblibvorbis.a */,
+				8A36D3141B8E6FD5009897D0 /* libportaudio.a */,
+				8A36D3151B8E6FD5009897D0 /* liblibvorbisfile.a */,
+				8A36D3161B8E6FD5009897D0 /* liblua5.1.a */,
+				8A36D3171B8E6FD5009897D0 /* libphysfs.a */,
+				8A36D3251B8E6FE7009897D0 /* libPolycodeUI.a */,
+				8A36D3181B8E6FD5009897D0 /* libpng15.a */,
+				8A36D3191B8E6FD5009897D0 /* libPolycore.a */,
+				8A36D31A1B8E6FD5009897D0 /* libz.a */,
+				8A36D20D1B8E5751009897D0 /* Info.plist */,
+				8A36D2111B8E5751009897D0 /* main.m */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		8A36D22F1B8E5B6E009897D0 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2311B8E5BA9009897D0 /* EditorGrid.cpp */,
+				8A36D2321B8E5BA9009897D0 /* EntityEditorPropertyView.cpp */,
+				8A36D2331B8E5BA9009897D0 /* EntityEditorSettingsView.cpp */,
+				8A36D2341B8E5BA9009897D0 /* EntityEditorTreeView.cpp */,
+				8A36D2351B8E5BA9009897D0 /* ExampleBrowserWindow.cpp */,
+				8A36D2361B8E5BA9009897D0 /* ExportProjectWindow.cpp */,
+				8A36D2371B8E5BA9009897D0 /* NewFileWindow.cpp */,
+				8A36D2381B8E5BA9009897D0 /* NewProjectWindow.cpp */,
+				8A36D2391B8E5BA9009897D0 /* PolycodeClipboard.cpp */,
+				8A36D23A1B8E5BA9009897D0 /* PolycodeConsole.cpp */,
+				8A36D23B1B8E5BA9009897D0 /* PolycodeEditor.cpp */,
+				8A36D23C1B8E5BA9009897D0 /* PolycodeEditorManager.cpp */,
+				8A36D23D1B8E5BA9009897D0 /* PolycodeEntityEditor.cpp */,
+				8A36D23E1B8E5BA9009897D0 /* PolycodeFontEditor.cpp */,
+				8A36D23F1B8E5BA9009897D0 /* PolycodeFrame.cpp */,
+				8A36D2401B8E5BA9009897D0 /* PolycodeIDEApp.cpp */,
+				8A36D2411B8E5BA9009897D0 /* PolycodeImageEditor.cpp */,
+				8A36D2421B8E5BA9009897D0 /* PolycodeMaterialEditor.cpp */,
+				8A36D2431B8E5BA9009897D0 /* PolycodeMeshEditor.cpp */,
+				8A36D2441B8E5BA9009897D0 /* PolycodeProject.cpp */,
+				8A36D2451B8E5BA9009897D0 /* PolycodeProjectBrowser.cpp */,
+				8A36D2461B8E5BA9009897D0 /* PolycodeProjectEditor.cpp */,
+				8A36D2471B8E5BA9009897D0 /* PolycodeProjectManager.cpp */,
+				8A36D2481B8E5BA9009897D0 /* PolycodeProps.cpp */,
+				8A36D2491B8E5BA9009897D0 /* PolycodeRemoteDebugger.cpp */,
+				8A36D24A1B8E5BA9009897D0 /* PolycodeSoundEditor.cpp */,
+				8A36D24B1B8E5BA9009897D0 /* PolycodeSpriteEditor.cpp */,
+				8A36D24C1B8E5BA9009897D0 /* PolycodeTextEditor.cpp */,
+				8A36D24D1B8E5BA9009897D0 /* PolycodeToolLauncher.cpp */,
+				8A36D24E1B8E5BA9009897D0 /* SettingsWindow.cpp */,
+				8A36D24F1B8E5BA9009897D0 /* TextureBrowser.cpp */,
+				8A36D2501B8E5BA9009897D0 /* ToolWindows.cpp */,
+				8A36D2511B8E5BA9009897D0 /* TrackballCamera.cpp */,
+				8A36D2521B8E5BA9009897D0 /* TransformGizmo.cpp */,
+			);
+			name = src;
+			sourceTree = "<group>";
+		};
+		8A36D2301B8E5B73009897D0 /* include */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2751B8E5BE4009897D0 /* EditorGrid.h */,
+				8A36D2761B8E5BE4009897D0 /* EntityEditorPropertyView.h */,
+				8A36D2771B8E5BE4009897D0 /* EntityEditorSettingsView.h */,
+				8A36D2781B8E5BE4009897D0 /* EntityEditorTreeView.h */,
+				8A36D2791B8E5BE4009897D0 /* ExampleBrowserWindow.h */,
+				8A36D27A1B8E5BE4009897D0 /* ExportProjectWindow.h */,
+				8A36D27B1B8E5BE4009897D0 /* NewFileWindow.h */,
+				8A36D27C1B8E5BE4009897D0 /* NewProjectWindow.h */,
+				8A36D27D1B8E5BE4009897D0 /* PolycodeClipboard.h */,
+				8A36D27E1B8E5BE4009897D0 /* PolycodeConsole.h */,
+				8A36D27F1B8E5BE4009897D0 /* PolycodeEditor.h */,
+				8A36D2801B8E5BE4009897D0 /* PolycodeEditorManager.h */,
+				8A36D2811B8E5BE4009897D0 /* PolycodeEntityEditor.h */,
+				8A36D2821B8E5BE4009897D0 /* PolycodeFontEditor.h */,
+				8A36D2831B8E5BE4009897D0 /* PolycodeFrame.h */,
+				8A36D2841B8E5BE4009897D0 /* PolycodeGlobals.h */,
+				8A36D2851B8E5BE4009897D0 /* PolycodeIDEApp.h */,
+				8A36D2861B8E5BE4009897D0 /* PolycodeImageEditor.h */,
+				8A36D2871B8E5BE4009897D0 /* PolycodeMaterialEditor.h */,
+				8A36D2881B8E5BE4009897D0 /* PolycodeMeshEditor.h */,
+				8A36D2891B8E5BE4009897D0 /* PolycodeProject.h */,
+				8A36D28A1B8E5BE4009897D0 /* PolycodeProjectBrowser.h */,
+				8A36D28B1B8E5BE4009897D0 /* PolycodeProjectEditor.h */,
+				8A36D28C1B8E5BE4009897D0 /* PolycodeProjectManager.h */,
+				8A36D28D1B8E5BE4009897D0 /* PolycodeProps.h */,
+				8A36D28E1B8E5BE4009897D0 /* PolycodeRemoteDebugger.h */,
+				8A36D28F1B8E5BE4009897D0 /* PolycodeSoundEditor.h */,
+				8A36D2901B8E5BE4009897D0 /* PolycodeSpriteEditor.h */,
+				8A36D2911B8E5BE4009897D0 /* PolycodeTextEditor.h */,
+				8A36D2921B8E5BE4009897D0 /* PolycodeToolLauncher.h */,
+				8A36D2931B8E5BE4009897D0 /* SettingsWindow.h */,
+				8A36D2941B8E5BE4009897D0 /* TextureBrowser.h */,
+				8A36D2951B8E5BE4009897D0 /* ToolWindows.h */,
+				8A36D2961B8E5BE4009897D0 /* TrackballCamera.h */,
+				8A36D2971B8E5BE4009897D0 /* TransformGizmo.h */,
+			);
+			name = include;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8A36D2081B8E5751009897D0 /* PolycodeStudio */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 8A36D2261B8E5751009897D0 /* Build configuration list for PBXNativeTarget "PolycodeStudio" */;
+			buildPhases = (
+				8A36D2051B8E5751009897D0 /* Sources */,
+				8A36D2061B8E5751009897D0 /* Frameworks */,
+				8A36D2071B8E5751009897D0 /* Resources */,
+				8A36D3271B8E701D009897D0 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = PolycodeStudio;
+			productName = PolycodeStudio;
+			productReference = 8A36D2091B8E5751009897D0 /* PolycodeStudio.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		8A36D2011B8E5751009897D0 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0640;
+				ORGANIZATIONNAME = Polycode;
+				TargetAttributes = {
+					8A36D2081B8E5751009897D0 = {
+						CreatedOnToolsVersion = 6.4;
+					};
+				};
+			};
+			buildConfigurationList = 8A36D2041B8E5751009897D0 /* Build configuration list for PBXProject "PolycodeStudio" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 8A36D2001B8E5751009897D0;
+			productRefGroup = 8A36D20A1B8E5751009897D0 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8A36D2081B8E5751009897D0 /* PolycodeStudio */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8A36D2071B8E5751009897D0 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8A36D2141B8E5751009897D0 /* Images.xcassets in Resources */,
+				8A36D2171B8E5751009897D0 /* MainMenu.xib in Resources */,
+				8A36D32A1B8E7096009897D0 /* default.pak in Resources */,
+				8A36D32B1B8E7096009897D0 /* hdr.pak in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		8A36D3271B8E701D009897D0 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cp -R \"$PROJECT_DIR/../../../assets/ide/\" \"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Resources\"";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8A36D2051B8E5751009897D0 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8A36D2621B8E5BA9009897D0 /* PolycodeIDEApp.cpp in Sources */,
+				8A36D2631B8E5BA9009897D0 /* PolycodeImageEditor.cpp in Sources */,
+				8A36D26E1B8E5BA9009897D0 /* PolycodeTextEditor.cpp in Sources */,
+				8A36D2661B8E5BA9009897D0 /* PolycodeProject.cpp in Sources */,
+				8A36D26B1B8E5BA9009897D0 /* PolycodeRemoteDebugger.cpp in Sources */,
+				8A36D25A1B8E5BA9009897D0 /* NewProjectWindow.cpp in Sources */,
+				8A36D2641B8E5BA9009897D0 /* PolycodeMaterialEditor.cpp in Sources */,
+				8A36D2671B8E5BA9009897D0 /* PolycodeProjectBrowser.cpp in Sources */,
+				8A36D2581B8E5BA9009897D0 /* ExportProjectWindow.cpp in Sources */,
+				8A36D26D1B8E5BA9009897D0 /* PolycodeSpriteEditor.cpp in Sources */,
+				8A36D2531B8E5BA9009897D0 /* EditorGrid.cpp in Sources */,
+				8A36D2571B8E5BA9009897D0 /* ExampleBrowserWindow.cpp in Sources */,
+				8A36D2121B8E5751009897D0 /* main.m in Sources */,
+				8A36D2651B8E5BA9009897D0 /* PolycodeMeshEditor.cpp in Sources */,
+				8A36D25B1B8E5BA9009897D0 /* PolycodeClipboard.cpp in Sources */,
+				8A36D25E1B8E5BA9009897D0 /* PolycodeEditorManager.cpp in Sources */,
+				8A36D2591B8E5BA9009897D0 /* NewFileWindow.cpp in Sources */,
+				8A36D25C1B8E5BA9009897D0 /* PolycodeConsole.cpp in Sources */,
+				8A36D2711B8E5BA9009897D0 /* TextureBrowser.cpp in Sources */,
+				8A36D2741B8E5BA9009897D0 /* TransformGizmo.cpp in Sources */,
+				8A36D2721B8E5BA9009897D0 /* ToolWindows.cpp in Sources */,
+				8A36D2541B8E5BA9009897D0 /* EntityEditorPropertyView.cpp in Sources */,
+				8A36D2101B8E5751009897D0 /* AppDelegate.m in Sources */,
+				8A36D2681B8E5BA9009897D0 /* PolycodeProjectEditor.cpp in Sources */,
+				8A36D22E1B8E5ACC009897D0 /* PolycodeView.mm in Sources */,
+				8A36D2701B8E5BA9009897D0 /* SettingsWindow.cpp in Sources */,
+				8A36D26A1B8E5BA9009897D0 /* PolycodeProps.cpp in Sources */,
+				8A36D2601B8E5BA9009897D0 /* PolycodeFontEditor.cpp in Sources */,
+				8A36D26F1B8E5BA9009897D0 /* PolycodeToolLauncher.cpp in Sources */,
+				8A36D2691B8E5BA9009897D0 /* PolycodeProjectManager.cpp in Sources */,
+				8A36D2731B8E5BA9009897D0 /* TrackballCamera.cpp in Sources */,
+				8A36D25F1B8E5BA9009897D0 /* PolycodeEntityEditor.cpp in Sources */,
+				8A36D2561B8E5BA9009897D0 /* EntityEditorTreeView.cpp in Sources */,
+				8A36D26C1B8E5BA9009897D0 /* PolycodeSoundEditor.cpp in Sources */,
+				8A36D2551B8E5BA9009897D0 /* EntityEditorSettingsView.cpp in Sources */,
+				8A36D2611B8E5BA9009897D0 /* PolycodeFrame.cpp in Sources */,
+				8A36D25D1B8E5BA9009897D0 /* PolycodeEditor.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		8A36D2151B8E5751009897D0 /* MainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				8A36D2161B8E5751009897D0 /* Base */,
+			);
+			name = MainMenu.xib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		8A36D2241B8E5751009897D0 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = NO;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+					"\"$(SRCROOT)/../../../include\"",
+				);
+				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../lib/osx\"";
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		8A36D2251B8E5751009897D0 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = NO;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+					"\"$(SRCROOT)/../../../include\"",
+				);
+				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../lib/osx\"";
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		8A36D2271B8E5751009897D0 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				COMBINE_HIDPI_IMAGES = YES;
+				INFOPLIST_FILE = PolycodeStudio/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					/Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx,
+					/Users/isafrin/Desktop/Workshop/PolycodeNoCmake/lib/osx,
+				);
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		8A36D2281B8E5751009897D0 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				COMBINE_HIDPI_IMAGES = YES;
+				INFOPLIST_FILE = PolycodeStudio/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					/Users/isafrin/Desktop/Workshop/PolycodeNoCmake/build/osx/TemplateApp/TemplateApp/../../../../lib/osx,
+					/Users/isafrin/Desktop/Workshop/PolycodeNoCmake/lib/osx,
+				);
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		8A36D2041B8E5751009897D0 /* Build configuration list for PBXProject "PolycodeStudio" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8A36D2241B8E5751009897D0 /* Debug */,
+				8A36D2251B8E5751009897D0 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		8A36D2261B8E5751009897D0 /* Build configuration list for PBXNativeTarget "PolycodeStudio" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8A36D2271B8E5751009897D0 /* Debug */,
+				8A36D2281B8E5751009897D0 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 8A36D2011B8E5751009897D0 /* Project object */;
+}

+ 38 - 0
build/osx/PolycodeStudio/PolycodeStudio/AppDelegate.h

@@ -0,0 +1,38 @@
+/*
+ Copyright (C) 2015 by Ivan Safrin
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDEhD "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ */
+
+#import <Cocoa/Cocoa.h>
+#import "polycode/view/osx/PolycodeView.h"
+#include "polycode/ide/PolycodeIDEApp.h"
+
+@interface AppDelegate : NSObject <NSApplicationDelegate> {
+@private
+    NSWindow *window;
+    PolycodeView *mainView;
+    PolycodeIDEApp *app;
+    NSTimer *timer;
+}
+
+@property (assign) IBOutlet NSWindow *window;
+@property (assign) IBOutlet PolycodeView *mainView;
+
+@end

+ 54 - 0
build/osx/PolycodeStudio/PolycodeStudio/AppDelegate.m

@@ -0,0 +1,54 @@
+/*
+ Copyright (C) 2015 by Ivan Safrin
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ */
+
+#import "AppDelegate.h"
+
+@implementation AppDelegate
+
+@synthesize window;
+@synthesize mainView;
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+    app = new PolycodeIDEApp(mainView);
+    timer = [NSTimer timerWithTimeInterval:(1.0f/60.0f)
+                                    target:self
+                                  selector:@selector(animationTimer:)
+                                  userInfo:nil
+                                   repeats:YES];
+    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
+    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSEventTrackingRunLoopMode];
+}
+
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
+{
+    return YES;
+}
+
+- (void)animationTimer:(NSTimer *)timer
+{
+    if(!app->Update()) {
+        [[NSApplication sharedApplication] stop:self];
+    }
+}
+
+@end

+ 692 - 0
build/osx/PolycodeStudio/PolycodeStudio/Base.lproj/MainMenu.xib

@@ -0,0 +1,692 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
+            <connections>
+                <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customObject id="Voe-Tx-rLC" customClass="AppDelegate">
+            <connections>
+                <outlet property="mainView" destination="crZ-Fp-0jh" id="6ih-dX-ZvM"/>
+                <outlet property="window" destination="QvC-M9-y7g" id="Tbb-4w-5CY"/>
+            </connections>
+        </customObject>
+        <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
+        <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
+            <items>
+                <menuItem title="PolycodeStudio" id="1Xt-HY-uBw">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="PolycodeStudio" systemMenu="apple" id="uQy-DD-JDr">
+                        <items>
+                            <menuItem title="About PolycodeStudio" id="5kV-Vb-QxS">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
+                            <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
+                            <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
+                            <menuItem title="Services" id="NMo-om-nkz">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
+                            <menuItem title="Hide PolycodeStudio" keyEquivalent="h" id="Olw-nP-bQN">
+                                <connections>
+                                    <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                <connections>
+                                    <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Show All" id="Kd2-mp-pUS">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
+                            <menuItem title="Quit PolycodeStudio" keyEquivalent="q" id="4sb-4s-VLi">
+                                <connections>
+                                    <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="File" id="dMs-cI-mzQ">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="File" id="bib-Uj-vzu">
+                        <items>
+                            <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
+                                <connections>
+                                    <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
+                                <connections>
+                                    <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Open Recent" id="tXI-mr-wws">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
+                                    <items>
+                                        <menuItem title="Clear Menu" id="vNY-rz-j42">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
+                            <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
+                                <connections>
+                                    <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
+                                <connections>
+                                    <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
+                                <connections>
+                                    <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Revert to Saved" id="KaW-ft-85H">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
+                            <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
+                                <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+                                <connections>
+                                    <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
+                                <connections>
+                                    <action selector="print:" target="-1" id="qaZ-4w-aoO"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Edit" id="5QF-Oa-p0T">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Edit" id="W48-6f-4Dl">
+                        <items>
+                            <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
+                                <connections>
+                                    <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
+                                <connections>
+                                    <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
+                            <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
+                                <connections>
+                                    <action selector="cut:" target="-1" id="YJe-68-I9s"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
+                                <connections>
+                                    <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
+                                <connections>
+                                    <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                <connections>
+                                    <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Delete" id="pa3-QI-u2k">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
+                                <connections>
+                                    <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
+                            <menuItem title="Find" id="4EN-yA-p0u">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Find" id="1b7-l0-nxx">
+                                    <items>
+                                        <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
+                                            <connections>
+                                                <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
+                                            <connections>
+                                                <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
+                                    <items>
+                                        <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
+                                            <connections>
+                                                <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
+                                            <connections>
+                                                <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
+                                        <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Substitutions" id="9ic-FL-obx">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
+                                    <items>
+                                        <menuItem title="Show Substitutions" id="z6F-FW-3nz">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
+                                        <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Quotes" id="hQb-2v-fYv">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Dashes" id="rgM-f4-ycn">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smart Links" id="cwL-P1-jid">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Data Detectors" id="tRr-pd-1PS">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Text Replacement" id="HFQ-gK-NFA">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Transformations" id="2oI-Rn-ZJC">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
+                                    <items>
+                                        <menuItem title="Make Upper Case" id="vmV-6d-7jI">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Make Lower Case" id="d9M-CD-aMd">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Capitalize" id="UEZ-Bs-lqG">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Speech" id="xrE-MZ-jX0">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
+                                    <items>
+                                        <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Format" id="jxT-CU-nIS">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Format" id="GEO-Iw-cKr">
+                        <items>
+                            <menuItem title="Font" id="Gi5-1S-RQB">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
+                                    <items>
+                                        <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
+                                            <connections>
+                                                <action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
+                                            <connections>
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
+                                            <connections>
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
+                                            <connections>
+                                                <action selector="underline:" target="-1" id="FYS-2b-JAY"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
+                                        <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
+                                            <connections>
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
+                                            <connections>
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
+                                        <menuItem title="Kern" id="jBQ-r6-VK2">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
+                                                <items>
+                                                    <menuItem title="Use Default" id="GUa-eO-cwY">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Use None" id="cDB-IK-hbR">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Tighten" id="46P-cB-AYj">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Loosen" id="ogc-rX-tC1">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                </items>
+                                            </menu>
+                                        </menuItem>
+                                        <menuItem title="Ligatures" id="o6e-r0-MWq">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
+                                                <items>
+                                                    <menuItem title="Use Default" id="agt-UL-0e3">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Use None" id="J7y-lM-qPV">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Use All" id="xQD-1f-W4t">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                </items>
+                                            </menu>
+                                        </menuItem>
+                                        <menuItem title="Baseline" id="OaQ-X3-Vso">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <menu key="submenu" title="Baseline" id="ijk-EB-dga">
+                                                <items>
+                                                    <menuItem title="Use Default" id="3Om-Ey-2VK">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Superscript" id="Rqc-34-cIF">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Subscript" id="I0S-gh-46l">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Raise" id="2h7-ER-AoG">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem title="Lower" id="1tx-W0-xDw">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                </items>
+                                            </menu>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
+                                        <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
+                                            <connections>
+                                                <action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
+                                        <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                            <menuItem title="Text" id="Fal-I4-PZk">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <menu key="submenu" title="Text" id="d9c-me-L2H">
+                                    <items>
+                                        <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
+                                            <connections>
+                                                <action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
+                                            <connections>
+                                                <action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Justify" id="J5U-5w-g23">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
+                                            <connections>
+                                                <action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
+                                        <menuItem title="Writing Direction" id="H1b-Si-o9J">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
+                                                <items>
+                                                    <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                    </menuItem>
+                                                    <menuItem id="YGs-j5-SAR">
+                                                        <string key="title">	Default</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem id="Lbh-J2-qVU">
+                                                        <string key="title">	Left to Right</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem id="jFq-tB-4Kx">
+                                                        <string key="title">	Right to Left</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
+                                                    <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                    </menuItem>
+                                                    <menuItem id="Nop-cj-93Q">
+                                                        <string key="title">	Default</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem id="BgM-ve-c93">
+                                                        <string key="title">	Left to Right</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                    <menuItem id="RB4-Sm-HuC">
+                                                        <string key="title">	Right to Left</string>
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
+                                                        <connections>
+                                                            <action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
+                                                        </connections>
+                                                    </menuItem>
+                                                </items>
+                                            </menu>
+                                        </menuItem>
+                                        <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
+                                        <menuItem title="Show Ruler" id="vLm-3I-IUL">
+                                            <modifierMask key="keyEquivalentModifierMask"/>
+                                            <connections>
+                                                <action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
+                                            </connections>
+                                        </menuItem>
+                                        <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
+                                            <connections>
+                                                <action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
+                                            </connections>
+                                        </menuItem>
+                                    </items>
+                                </menu>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="View" id="H8h-7b-M4v">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="View" id="HyV-fh-RgO">
+                        <items>
+                            <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+                                <connections>
+                                    <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Window" id="aUF-d1-5bR">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
+                        <items>
+                            <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
+                                <connections>
+                                    <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem title="Zoom" id="R4o-n2-Eq4">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
+                                </connections>
+                            </menuItem>
+                            <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
+                            <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
+                                <modifierMask key="keyEquivalentModifierMask"/>
+                                <connections>
+                                    <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+                <menuItem title="Help" id="wpr-3q-Mcd">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
+                        <items>
+                            <menuItem title="PolycodeStudio Help" keyEquivalent="?" id="FKE-Sm-Kum">
+                                <connections>
+                                    <action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
+                                </connections>
+                            </menuItem>
+                        </items>
+                    </menu>
+                </menuItem>
+            </items>
+        </menu>
+        <window title="PolycodeStudio" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="335" y="390" width="480" height="360"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
+            <view key="contentView" id="EiT-Mj-1SZ">
+                <rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <openGLView useAuxiliaryDepthBufferStencil="NO" allowOffline="YES" translatesAutoresizingMaskIntoConstraints="NO" id="crZ-Fp-0jh" customClass="PolycodeView">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
+                    </openGLView>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="bottom" secondItem="crZ-Fp-0jh" secondAttribute="bottom" id="2Q0-S8-6Fr"/>
+                    <constraint firstItem="crZ-Fp-0jh" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="KtA-MV-W5i"/>
+                    <constraint firstAttribute="trailing" secondItem="crZ-Fp-0jh" secondAttribute="trailing" id="lDi-NC-ZSX"/>
+                    <constraint firstItem="crZ-Fp-0jh" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" id="ocf-p0-ZEM"/>
+                </constraints>
+            </view>
+        </window>
+    </objects>
+</document>

+ 59 - 0
build/osx/PolycodeStudio/PolycodeStudio/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,59 @@
+{
+  "images" : [
+    {
+      "idiom" : "mac",
+      "size" : "16x16",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "16x16",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "32x32",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "32x32",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "128x128",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "128x128",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "256x256",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "256x256",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "main_icon.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "mac",
+      "size" : "512x512",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
build/osx/PolycodeStudio/PolycodeStudio/Images.xcassets/AppIcon.appiconset/main_icon.png


+ 34 - 0
build/osx/PolycodeStudio/PolycodeStudio/Info.plist

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>org.polycode.$(PRODUCT_NAME:rfc1034identifier)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Copyright © 2015 Polycode. All rights reserved.</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

+ 13 - 0
build/osx/PolycodeStudio/PolycodeStudio/main.m

@@ -0,0 +1,13 @@
+//
+//  main.m
+//  PolycodeStudio
+//
+//  Created by Ivan Safrin on 8/26/15.
+//  Copyright (c) 2015 Polycode. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, const char * argv[]) {
+    return NSApplicationMain(argc, argv);
+}

+ 461 - 0
build/osx/PolycodeUI/PolycodeUI.xcodeproj/project.pbxproj

@@ -0,0 +1,461 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8A36D2C11B8E6493009897D0 /* PolyUIBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AA1B8E6493009897D0 /* PolyUIBox.cpp */; };
+		8A36D2C21B8E6493009897D0 /* PolyUIButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AB1B8E6493009897D0 /* PolyUIButton.cpp */; };
+		8A36D2C31B8E6493009897D0 /* PolyUICheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AC1B8E6493009897D0 /* PolyUICheckBox.cpp */; };
+		8A36D2C41B8E6493009897D0 /* PolyUIColorBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AD1B8E6493009897D0 /* PolyUIColorBox.cpp */; };
+		8A36D2C51B8E6493009897D0 /* PolyUIComboBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AE1B8E6493009897D0 /* PolyUIComboBox.cpp */; };
+		8A36D2C61B8E6493009897D0 /* PolyUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2AF1B8E6493009897D0 /* PolyUIElement.cpp */; };
+		8A36D2C71B8E6493009897D0 /* PolyUIEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B01B8E6493009897D0 /* PolyUIEvent.cpp */; };
+		8A36D2C81B8E6493009897D0 /* PolyUIFileDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B11B8E6493009897D0 /* PolyUIFileDialog.cpp */; };
+		8A36D2C91B8E6493009897D0 /* PolyUIHScrollBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B21B8E6493009897D0 /* PolyUIHScrollBar.cpp */; };
+		8A36D2CA1B8E6493009897D0 /* PolyUIHSizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B31B8E6493009897D0 /* PolyUIHSizer.cpp */; };
+		8A36D2CB1B8E6493009897D0 /* PolyUIHSlider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B41B8E6493009897D0 /* PolyUIHSlider.cpp */; };
+		8A36D2CC1B8E6493009897D0 /* PolyUIIconSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B51B8E6493009897D0 /* PolyUIIconSelector.cpp */; };
+		8A36D2CD1B8E6493009897D0 /* PolyUIImageButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B61B8E6493009897D0 /* PolyUIImageButton.cpp */; };
+		8A36D2CE1B8E6493009897D0 /* PolyUIMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B71B8E6493009897D0 /* PolyUIMenu.cpp */; };
+		8A36D2CF1B8E6493009897D0 /* PolyUIMenuBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B81B8E6493009897D0 /* PolyUIMenuBar.cpp */; };
+		8A36D2D01B8E6493009897D0 /* PolyUIScrollContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2B91B8E6493009897D0 /* PolyUIScrollContainer.cpp */; };
+		8A36D2D11B8E6493009897D0 /* PolyUITextInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BA1B8E6493009897D0 /* PolyUITextInput.cpp */; };
+		8A36D2D21B8E6493009897D0 /* PolyUITree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BB1B8E6493009897D0 /* PolyUITree.cpp */; };
+		8A36D2D31B8E6493009897D0 /* PolyUITreeContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BC1B8E6493009897D0 /* PolyUITreeContainer.cpp */; };
+		8A36D2D41B8E6493009897D0 /* PolyUITreeEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BD1B8E6493009897D0 /* PolyUITreeEvent.cpp */; };
+		8A36D2D51B8E6493009897D0 /* PolyUIVScrollBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BE1B8E6493009897D0 /* PolyUIVScrollBar.cpp */; };
+		8A36D2D61B8E6493009897D0 /* PolyUIVSizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2BF1B8E6493009897D0 /* PolyUIVSizer.cpp */; };
+		8A36D2D71B8E6493009897D0 /* PolyUIWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A36D2C01B8E6493009897D0 /* PolyUIWindow.cpp */; };
+		8A36D2F01B8E64A4009897D0 /* PolycodeUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2D81B8E64A4009897D0 /* PolycodeUI.h */; };
+		8A36D2F11B8E64A4009897D0 /* PolyUIBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2D91B8E64A4009897D0 /* PolyUIBox.h */; };
+		8A36D2F21B8E64A4009897D0 /* PolyUIButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DA1B8E64A4009897D0 /* PolyUIButton.h */; };
+		8A36D2F31B8E64A4009897D0 /* PolyUICheckBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DB1B8E64A4009897D0 /* PolyUICheckBox.h */; };
+		8A36D2F41B8E64A4009897D0 /* PolyUIColorBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DC1B8E64A4009897D0 /* PolyUIColorBox.h */; };
+		8A36D2F51B8E64A4009897D0 /* PolyUIComboBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DD1B8E64A4009897D0 /* PolyUIComboBox.h */; };
+		8A36D2F61B8E64A4009897D0 /* PolyUIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DE1B8E64A4009897D0 /* PolyUIElement.h */; };
+		8A36D2F71B8E64A4009897D0 /* PolyUIEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2DF1B8E64A4009897D0 /* PolyUIEvent.h */; };
+		8A36D2F81B8E64A4009897D0 /* PolyUIFileDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E01B8E64A4009897D0 /* PolyUIFileDialog.h */; };
+		8A36D2F91B8E64A4009897D0 /* PolyUIHScrollBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E11B8E64A4009897D0 /* PolyUIHScrollBar.h */; };
+		8A36D2FA1B8E64A4009897D0 /* PolyUIHSizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E21B8E64A4009897D0 /* PolyUIHSizer.h */; };
+		8A36D2FB1B8E64A4009897D0 /* PolyUIHSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E31B8E64A4009897D0 /* PolyUIHSlider.h */; };
+		8A36D2FC1B8E64A4009897D0 /* PolyUIIconSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E41B8E64A4009897D0 /* PolyUIIconSelector.h */; };
+		8A36D2FD1B8E64A4009897D0 /* PolyUIImageButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E51B8E64A4009897D0 /* PolyUIImageButton.h */; };
+		8A36D2FE1B8E64A4009897D0 /* PolyUIMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E61B8E64A4009897D0 /* PolyUIMenu.h */; };
+		8A36D2FF1B8E64A4009897D0 /* PolyUIMenuBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E71B8E64A4009897D0 /* PolyUIMenuBar.h */; };
+		8A36D3001B8E64A4009897D0 /* PolyUIScrollContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E81B8E64A4009897D0 /* PolyUIScrollContainer.h */; };
+		8A36D3011B8E64A4009897D0 /* PolyUITextInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2E91B8E64A4009897D0 /* PolyUITextInput.h */; };
+		8A36D3021B8E64A4009897D0 /* PolyUITree.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2EA1B8E64A4009897D0 /* PolyUITree.h */; };
+		8A36D3031B8E64A4009897D0 /* PolyUITreeContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2EB1B8E64A4009897D0 /* PolyUITreeContainer.h */; };
+		8A36D3041B8E64A4009897D0 /* PolyUITreeEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2EC1B8E64A4009897D0 /* PolyUITreeEvent.h */; };
+		8A36D3051B8E64A4009897D0 /* PolyUIVScrollBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2ED1B8E64A4009897D0 /* PolyUIVScrollBar.h */; };
+		8A36D3061B8E64A4009897D0 /* PolyUIVSizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2EE1B8E64A4009897D0 /* PolyUIVSizer.h */; };
+		8A36D3071B8E64A4009897D0 /* PolyUIWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A36D2EF1B8E64A4009897D0 /* PolyUIWindow.h */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		8A36D2A11B8E6173009897D0 /* libPolycodeUI.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPolycodeUI.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		8A36D2AA1B8E6493009897D0 /* PolyUIBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIBox.cpp; path = ../../../src/modules/ui/PolyUIBox.cpp; sourceTree = "<group>"; };
+		8A36D2AB1B8E6493009897D0 /* PolyUIButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIButton.cpp; path = ../../../src/modules/ui/PolyUIButton.cpp; sourceTree = "<group>"; };
+		8A36D2AC1B8E6493009897D0 /* PolyUICheckBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUICheckBox.cpp; path = ../../../src/modules/ui/PolyUICheckBox.cpp; sourceTree = "<group>"; };
+		8A36D2AD1B8E6493009897D0 /* PolyUIColorBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIColorBox.cpp; path = ../../../src/modules/ui/PolyUIColorBox.cpp; sourceTree = "<group>"; };
+		8A36D2AE1B8E6493009897D0 /* PolyUIComboBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIComboBox.cpp; path = ../../../src/modules/ui/PolyUIComboBox.cpp; sourceTree = "<group>"; };
+		8A36D2AF1B8E6493009897D0 /* PolyUIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIElement.cpp; path = ../../../src/modules/ui/PolyUIElement.cpp; sourceTree = "<group>"; };
+		8A36D2B01B8E6493009897D0 /* PolyUIEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIEvent.cpp; path = ../../../src/modules/ui/PolyUIEvent.cpp; sourceTree = "<group>"; };
+		8A36D2B11B8E6493009897D0 /* PolyUIFileDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIFileDialog.cpp; path = ../../../src/modules/ui/PolyUIFileDialog.cpp; sourceTree = "<group>"; };
+		8A36D2B21B8E6493009897D0 /* PolyUIHScrollBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIHScrollBar.cpp; path = ../../../src/modules/ui/PolyUIHScrollBar.cpp; sourceTree = "<group>"; };
+		8A36D2B31B8E6493009897D0 /* PolyUIHSizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIHSizer.cpp; path = ../../../src/modules/ui/PolyUIHSizer.cpp; sourceTree = "<group>"; };
+		8A36D2B41B8E6493009897D0 /* PolyUIHSlider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIHSlider.cpp; path = ../../../src/modules/ui/PolyUIHSlider.cpp; sourceTree = "<group>"; };
+		8A36D2B51B8E6493009897D0 /* PolyUIIconSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIIconSelector.cpp; path = ../../../src/modules/ui/PolyUIIconSelector.cpp; sourceTree = "<group>"; };
+		8A36D2B61B8E6493009897D0 /* PolyUIImageButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIImageButton.cpp; path = ../../../src/modules/ui/PolyUIImageButton.cpp; sourceTree = "<group>"; };
+		8A36D2B71B8E6493009897D0 /* PolyUIMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIMenu.cpp; path = ../../../src/modules/ui/PolyUIMenu.cpp; sourceTree = "<group>"; };
+		8A36D2B81B8E6493009897D0 /* PolyUIMenuBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIMenuBar.cpp; path = ../../../src/modules/ui/PolyUIMenuBar.cpp; sourceTree = "<group>"; };
+		8A36D2B91B8E6493009897D0 /* PolyUIScrollContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIScrollContainer.cpp; path = ../../../src/modules/ui/PolyUIScrollContainer.cpp; sourceTree = "<group>"; };
+		8A36D2BA1B8E6493009897D0 /* PolyUITextInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUITextInput.cpp; path = ../../../src/modules/ui/PolyUITextInput.cpp; sourceTree = "<group>"; };
+		8A36D2BB1B8E6493009897D0 /* PolyUITree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUITree.cpp; path = ../../../src/modules/ui/PolyUITree.cpp; sourceTree = "<group>"; };
+		8A36D2BC1B8E6493009897D0 /* PolyUITreeContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUITreeContainer.cpp; path = ../../../src/modules/ui/PolyUITreeContainer.cpp; sourceTree = "<group>"; };
+		8A36D2BD1B8E6493009897D0 /* PolyUITreeEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUITreeEvent.cpp; path = ../../../src/modules/ui/PolyUITreeEvent.cpp; sourceTree = "<group>"; };
+		8A36D2BE1B8E6493009897D0 /* PolyUIVScrollBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIVScrollBar.cpp; path = ../../../src/modules/ui/PolyUIVScrollBar.cpp; sourceTree = "<group>"; };
+		8A36D2BF1B8E6493009897D0 /* PolyUIVSizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIVSizer.cpp; path = ../../../src/modules/ui/PolyUIVSizer.cpp; sourceTree = "<group>"; };
+		8A36D2C01B8E6493009897D0 /* PolyUIWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PolyUIWindow.cpp; path = ../../../src/modules/ui/PolyUIWindow.cpp; sourceTree = "<group>"; };
+		8A36D2D81B8E64A4009897D0 /* PolycodeUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolycodeUI.h; path = ../../../include/polycode/modules/ui/PolycodeUI.h; sourceTree = "<group>"; };
+		8A36D2D91B8E64A4009897D0 /* PolyUIBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIBox.h; path = ../../../include/polycode/modules/ui/PolyUIBox.h; sourceTree = "<group>"; };
+		8A36D2DA1B8E64A4009897D0 /* PolyUIButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIButton.h; path = ../../../include/polycode/modules/ui/PolyUIButton.h; sourceTree = "<group>"; };
+		8A36D2DB1B8E64A4009897D0 /* PolyUICheckBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUICheckBox.h; path = ../../../include/polycode/modules/ui/PolyUICheckBox.h; sourceTree = "<group>"; };
+		8A36D2DC1B8E64A4009897D0 /* PolyUIColorBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIColorBox.h; path = ../../../include/polycode/modules/ui/PolyUIColorBox.h; sourceTree = "<group>"; };
+		8A36D2DD1B8E64A4009897D0 /* PolyUIComboBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIComboBox.h; path = ../../../include/polycode/modules/ui/PolyUIComboBox.h; sourceTree = "<group>"; };
+		8A36D2DE1B8E64A4009897D0 /* PolyUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIElement.h; path = ../../../include/polycode/modules/ui/PolyUIElement.h; sourceTree = "<group>"; };
+		8A36D2DF1B8E64A4009897D0 /* PolyUIEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIEvent.h; path = ../../../include/polycode/modules/ui/PolyUIEvent.h; sourceTree = "<group>"; };
+		8A36D2E01B8E64A4009897D0 /* PolyUIFileDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIFileDialog.h; path = ../../../include/polycode/modules/ui/PolyUIFileDialog.h; sourceTree = "<group>"; };
+		8A36D2E11B8E64A4009897D0 /* PolyUIHScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIHScrollBar.h; path = ../../../include/polycode/modules/ui/PolyUIHScrollBar.h; sourceTree = "<group>"; };
+		8A36D2E21B8E64A4009897D0 /* PolyUIHSizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIHSizer.h; path = ../../../include/polycode/modules/ui/PolyUIHSizer.h; sourceTree = "<group>"; };
+		8A36D2E31B8E64A4009897D0 /* PolyUIHSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIHSlider.h; path = ../../../include/polycode/modules/ui/PolyUIHSlider.h; sourceTree = "<group>"; };
+		8A36D2E41B8E64A4009897D0 /* PolyUIIconSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIIconSelector.h; path = ../../../include/polycode/modules/ui/PolyUIIconSelector.h; sourceTree = "<group>"; };
+		8A36D2E51B8E64A4009897D0 /* PolyUIImageButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIImageButton.h; path = ../../../include/polycode/modules/ui/PolyUIImageButton.h; sourceTree = "<group>"; };
+		8A36D2E61B8E64A4009897D0 /* PolyUIMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIMenu.h; path = ../../../include/polycode/modules/ui/PolyUIMenu.h; sourceTree = "<group>"; };
+		8A36D2E71B8E64A4009897D0 /* PolyUIMenuBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIMenuBar.h; path = ../../../include/polycode/modules/ui/PolyUIMenuBar.h; sourceTree = "<group>"; };
+		8A36D2E81B8E64A4009897D0 /* PolyUIScrollContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIScrollContainer.h; path = ../../../include/polycode/modules/ui/PolyUIScrollContainer.h; sourceTree = "<group>"; };
+		8A36D2E91B8E64A4009897D0 /* PolyUITextInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUITextInput.h; path = ../../../include/polycode/modules/ui/PolyUITextInput.h; sourceTree = "<group>"; };
+		8A36D2EA1B8E64A4009897D0 /* PolyUITree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUITree.h; path = ../../../include/polycode/modules/ui/PolyUITree.h; sourceTree = "<group>"; };
+		8A36D2EB1B8E64A4009897D0 /* PolyUITreeContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUITreeContainer.h; path = ../../../include/polycode/modules/ui/PolyUITreeContainer.h; sourceTree = "<group>"; };
+		8A36D2EC1B8E64A4009897D0 /* PolyUITreeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUITreeEvent.h; path = ../../../include/polycode/modules/ui/PolyUITreeEvent.h; sourceTree = "<group>"; };
+		8A36D2ED1B8E64A4009897D0 /* PolyUIVScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIVScrollBar.h; path = ../../../include/polycode/modules/ui/PolyUIVScrollBar.h; sourceTree = "<group>"; };
+		8A36D2EE1B8E64A4009897D0 /* PolyUIVSizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIVSizer.h; path = ../../../include/polycode/modules/ui/PolyUIVSizer.h; sourceTree = "<group>"; };
+		8A36D2EF1B8E64A4009897D0 /* PolyUIWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolyUIWindow.h; path = ../../../include/polycode/modules/ui/PolyUIWindow.h; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8A36D29E1B8E6173009897D0 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		8A36D2981B8E6173009897D0 = {
+			isa = PBXGroup;
+			children = (
+				8A36D2A91B8E647A009897D0 /* src */,
+				8A36D2A81B8E6476009897D0 /* include */,
+				8A36D2A21B8E6173009897D0 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		8A36D2A21B8E6173009897D0 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2A11B8E6173009897D0 /* libPolycodeUI.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		8A36D2A81B8E6476009897D0 /* include */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2D81B8E64A4009897D0 /* PolycodeUI.h */,
+				8A36D2D91B8E64A4009897D0 /* PolyUIBox.h */,
+				8A36D2DA1B8E64A4009897D0 /* PolyUIButton.h */,
+				8A36D2DB1B8E64A4009897D0 /* PolyUICheckBox.h */,
+				8A36D2DC1B8E64A4009897D0 /* PolyUIColorBox.h */,
+				8A36D2DD1B8E64A4009897D0 /* PolyUIComboBox.h */,
+				8A36D2DE1B8E64A4009897D0 /* PolyUIElement.h */,
+				8A36D2DF1B8E64A4009897D0 /* PolyUIEvent.h */,
+				8A36D2E01B8E64A4009897D0 /* PolyUIFileDialog.h */,
+				8A36D2E11B8E64A4009897D0 /* PolyUIHScrollBar.h */,
+				8A36D2E21B8E64A4009897D0 /* PolyUIHSizer.h */,
+				8A36D2E31B8E64A4009897D0 /* PolyUIHSlider.h */,
+				8A36D2E41B8E64A4009897D0 /* PolyUIIconSelector.h */,
+				8A36D2E51B8E64A4009897D0 /* PolyUIImageButton.h */,
+				8A36D2E61B8E64A4009897D0 /* PolyUIMenu.h */,
+				8A36D2E71B8E64A4009897D0 /* PolyUIMenuBar.h */,
+				8A36D2E81B8E64A4009897D0 /* PolyUIScrollContainer.h */,
+				8A36D2E91B8E64A4009897D0 /* PolyUITextInput.h */,
+				8A36D2EA1B8E64A4009897D0 /* PolyUITree.h */,
+				8A36D2EB1B8E64A4009897D0 /* PolyUITreeContainer.h */,
+				8A36D2EC1B8E64A4009897D0 /* PolyUITreeEvent.h */,
+				8A36D2ED1B8E64A4009897D0 /* PolyUIVScrollBar.h */,
+				8A36D2EE1B8E64A4009897D0 /* PolyUIVSizer.h */,
+				8A36D2EF1B8E64A4009897D0 /* PolyUIWindow.h */,
+			);
+			name = include;
+			sourceTree = "<group>";
+		};
+		8A36D2A91B8E647A009897D0 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				8A36D2AA1B8E6493009897D0 /* PolyUIBox.cpp */,
+				8A36D2AB1B8E6493009897D0 /* PolyUIButton.cpp */,
+				8A36D2AC1B8E6493009897D0 /* PolyUICheckBox.cpp */,
+				8A36D2AD1B8E6493009897D0 /* PolyUIColorBox.cpp */,
+				8A36D2AE1B8E6493009897D0 /* PolyUIComboBox.cpp */,
+				8A36D2AF1B8E6493009897D0 /* PolyUIElement.cpp */,
+				8A36D2B01B8E6493009897D0 /* PolyUIEvent.cpp */,
+				8A36D2B11B8E6493009897D0 /* PolyUIFileDialog.cpp */,
+				8A36D2B21B8E6493009897D0 /* PolyUIHScrollBar.cpp */,
+				8A36D2B31B8E6493009897D0 /* PolyUIHSizer.cpp */,
+				8A36D2B41B8E6493009897D0 /* PolyUIHSlider.cpp */,
+				8A36D2B51B8E6493009897D0 /* PolyUIIconSelector.cpp */,
+				8A36D2B61B8E6493009897D0 /* PolyUIImageButton.cpp */,
+				8A36D2B71B8E6493009897D0 /* PolyUIMenu.cpp */,
+				8A36D2B81B8E6493009897D0 /* PolyUIMenuBar.cpp */,
+				8A36D2B91B8E6493009897D0 /* PolyUIScrollContainer.cpp */,
+				8A36D2BA1B8E6493009897D0 /* PolyUITextInput.cpp */,
+				8A36D2BB1B8E6493009897D0 /* PolyUITree.cpp */,
+				8A36D2BC1B8E6493009897D0 /* PolyUITreeContainer.cpp */,
+				8A36D2BD1B8E6493009897D0 /* PolyUITreeEvent.cpp */,
+				8A36D2BE1B8E6493009897D0 /* PolyUIVScrollBar.cpp */,
+				8A36D2BF1B8E6493009897D0 /* PolyUIVSizer.cpp */,
+				8A36D2C01B8E6493009897D0 /* PolyUIWindow.cpp */,
+			);
+			name = src;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		8A36D29F1B8E6173009897D0 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8A36D3031B8E64A4009897D0 /* PolyUITreeContainer.h in Headers */,
+				8A36D2F21B8E64A4009897D0 /* PolyUIButton.h in Headers */,
+				8A36D2FF1B8E64A4009897D0 /* PolyUIMenuBar.h in Headers */,
+				8A36D3001B8E64A4009897D0 /* PolyUIScrollContainer.h in Headers */,
+				8A36D2F11B8E64A4009897D0 /* PolyUIBox.h in Headers */,
+				8A36D2FB1B8E64A4009897D0 /* PolyUIHSlider.h in Headers */,
+				8A36D2F81B8E64A4009897D0 /* PolyUIFileDialog.h in Headers */,
+				8A36D2F01B8E64A4009897D0 /* PolycodeUI.h in Headers */,
+				8A36D2F41B8E64A4009897D0 /* PolyUIColorBox.h in Headers */,
+				8A36D3061B8E64A4009897D0 /* PolyUIVSizer.h in Headers */,
+				8A36D2F31B8E64A4009897D0 /* PolyUICheckBox.h in Headers */,
+				8A36D2FC1B8E64A4009897D0 /* PolyUIIconSelector.h in Headers */,
+				8A36D2F61B8E64A4009897D0 /* PolyUIElement.h in Headers */,
+				8A36D2F51B8E64A4009897D0 /* PolyUIComboBox.h in Headers */,
+				8A36D2F91B8E64A4009897D0 /* PolyUIHScrollBar.h in Headers */,
+				8A36D3041B8E64A4009897D0 /* PolyUITreeEvent.h in Headers */,
+				8A36D2FA1B8E64A4009897D0 /* PolyUIHSizer.h in Headers */,
+				8A36D3051B8E64A4009897D0 /* PolyUIVScrollBar.h in Headers */,
+				8A36D2FD1B8E64A4009897D0 /* PolyUIImageButton.h in Headers */,
+				8A36D3021B8E64A4009897D0 /* PolyUITree.h in Headers */,
+				8A36D2F71B8E64A4009897D0 /* PolyUIEvent.h in Headers */,
+				8A36D3011B8E64A4009897D0 /* PolyUITextInput.h in Headers */,
+				8A36D3071B8E64A4009897D0 /* PolyUIWindow.h in Headers */,
+				8A36D2FE1B8E64A4009897D0 /* PolyUIMenu.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		8A36D2A01B8E6173009897D0 /* PolycodeUI */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 8A36D2A51B8E6173009897D0 /* Build configuration list for PBXNativeTarget "PolycodeUI" */;
+			buildPhases = (
+				8A36D29D1B8E6173009897D0 /* Sources */,
+				8A36D29E1B8E6173009897D0 /* Frameworks */,
+				8A36D29F1B8E6173009897D0 /* Headers */,
+				8A36D3081B8E695F009897D0 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = PolycodeUI;
+			productName = PolycodeUI;
+			productReference = 8A36D2A11B8E6173009897D0 /* libPolycodeUI.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		8A36D2991B8E6173009897D0 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0640;
+				ORGANIZATIONNAME = Polycode;
+				TargetAttributes = {
+					8A36D2A01B8E6173009897D0 = {
+						CreatedOnToolsVersion = 6.4;
+					};
+				};
+			};
+			buildConfigurationList = 8A36D29C1B8E6173009897D0 /* Build configuration list for PBXProject "PolycodeUI" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 8A36D2981B8E6173009897D0;
+			productRefGroup = 8A36D2A21B8E6173009897D0 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8A36D2A01B8E6173009897D0 /* PolycodeUI */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		8A36D3081B8E695F009897D0 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cp $TARGET_BUILD_DIR//$EXECUTABLE_NAME ../../../lib/osx";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8A36D29D1B8E6173009897D0 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8A36D2C11B8E6493009897D0 /* PolyUIBox.cpp in Sources */,
+				8A36D2D21B8E6493009897D0 /* PolyUITree.cpp in Sources */,
+				8A36D2C41B8E6493009897D0 /* PolyUIColorBox.cpp in Sources */,
+				8A36D2D51B8E6493009897D0 /* PolyUIVScrollBar.cpp in Sources */,
+				8A36D2CD1B8E6493009897D0 /* PolyUIImageButton.cpp in Sources */,
+				8A36D2D41B8E6493009897D0 /* PolyUITreeEvent.cpp in Sources */,
+				8A36D2CF1B8E6493009897D0 /* PolyUIMenuBar.cpp in Sources */,
+				8A36D2CB1B8E6493009897D0 /* PolyUIHSlider.cpp in Sources */,
+				8A36D2CE1B8E6493009897D0 /* PolyUIMenu.cpp in Sources */,
+				8A36D2C21B8E6493009897D0 /* PolyUIButton.cpp in Sources */,
+				8A36D2C31B8E6493009897D0 /* PolyUICheckBox.cpp in Sources */,
+				8A36D2D71B8E6493009897D0 /* PolyUIWindow.cpp in Sources */,
+				8A36D2D31B8E6493009897D0 /* PolyUITreeContainer.cpp in Sources */,
+				8A36D2C71B8E6493009897D0 /* PolyUIEvent.cpp in Sources */,
+				8A36D2C91B8E6493009897D0 /* PolyUIHScrollBar.cpp in Sources */,
+				8A36D2C61B8E6493009897D0 /* PolyUIElement.cpp in Sources */,
+				8A36D2C51B8E6493009897D0 /* PolyUIComboBox.cpp in Sources */,
+				8A36D2D61B8E6493009897D0 /* PolyUIVSizer.cpp in Sources */,
+				8A36D2D11B8E6493009897D0 /* PolyUITextInput.cpp in Sources */,
+				8A36D2CA1B8E6493009897D0 /* PolyUIHSizer.cpp in Sources */,
+				8A36D2C81B8E6493009897D0 /* PolyUIFileDialog.cpp in Sources */,
+				8A36D2D01B8E6493009897D0 /* PolyUIScrollContainer.cpp in Sources */,
+				8A36D2CC1B8E6493009897D0 /* PolyUIIconSelector.cpp in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		8A36D2A31B8E6173009897D0 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		8A36D2A41B8E6173009897D0 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		8A36D2A61B8E6173009897D0 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				EXECUTABLE_PREFIX = lib;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+					"\"$(SRCROOT)/../../../include\"",
+				);
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		8A36D2A71B8E6173009897D0 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				EXECUTABLE_PREFIX = lib;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
+					"\"$(SRCROOT)/../../../include\"",
+				);
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		8A36D29C1B8E6173009897D0 /* Build configuration list for PBXProject "PolycodeUI" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8A36D2A31B8E6173009897D0 /* Debug */,
+				8A36D2A41B8E6173009897D0 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		8A36D2A51B8E6173009897D0 /* Build configuration list for PBXNativeTarget "PolycodeUI" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8A36D2A61B8E6173009897D0 /* Debug */,
+				8A36D2A71B8E6173009897D0 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 8A36D2991B8E6173009897D0 /* Project object */;
+}

+ 2 - 2
include/polycode/core/PolyCoreFileProvider.h

@@ -22,8 +22,8 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolyGlobals.h"
-#include "PolyString.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyString.h"
 
 
 namespace Polycode {
 namespace Polycode {
     
     

+ 2 - 0
include/polycode/core/PolySceneMesh.h

@@ -106,6 +106,8 @@ namespace Polycode {
 			*/												
 			*/												
 			void setMaterial(Material *material);
 			void setMaterial(Material *material);
 			
 			
+            void rebuildAttributes();
+        
 			/**
 			/**
 			* Set material by name. You can create materials in material files and name them there, then use this to set a material by name to a scene mesh.
 			* Set material by name. You can create materials in material files and name them there, then use this to set a material by name to a scene mesh.
 			* @param materialName Name of material to apply.
 			* @param materialName Name of material to apply.

+ 1 - 3
include/polycode/ide/EditorGrid.h

@@ -23,9 +23,7 @@
 #pragma once
 #pragma once
 
 
 #include <Polycode.h>
 #include <Polycode.h>
-#include "PolycodeUI.h"
-
-#include "OSBasics.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 4
include/polycode/ide/EntityEditorPropertyView.h

@@ -23,10 +23,8 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeUI.h"
-#include "PolycodeProps.h"
-
-#include "OSBasics.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeProps.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/EntityEditorSettingsView.h

@@ -23,9 +23,8 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeUI.h"
-#include "PolycodeProps.h"
-#include "OSBasics.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeProps.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/EntityEditorTreeView.h

@@ -23,9 +23,8 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeUI.h"
-#include "PolycodeProps.h"
-#include "OSBasics.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeProps.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/ExampleBrowserWindow.h

@@ -22,10 +22,9 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/ExportProjectWindow.h

@@ -22,10 +22,9 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 3 - 4
include/polycode/ide/NewFileWindow.h

@@ -22,11 +22,10 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
-#include "PolycodeProjectBrowser.h"
+#include "polycode/ide/PolycodeProjectBrowser.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/NewProjectWindow.h

@@ -22,10 +22,9 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 2
include/polycode/ide/PolycodeConsole.h

@@ -22,9 +22,9 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeUI.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeProject.h"
+#include "polycode/ide/PolycodeProject.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 3 - 4
include/polycode/ide/PolycodeEditor.h

@@ -23,10 +23,9 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
-#include "PolyUIElement.h"
-#include "PolycodeProject.h"
-#include "PolycodeClipboard.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/ide/PolycodeProject.h"
+#include "polycode/ide/PolycodeClipboard.h"
 
 
 #define MAX_EDITOR_UNDO_ACTIONS	40
 #define MAX_EDITOR_UNDO_ACTIONS	40
 
 

+ 2 - 2
include/polycode/ide/PolycodeEditorManager.h

@@ -23,8 +23,8 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeEditor.h"
-#include "PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/ide/PolycodeProjectManager.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 3 - 3
include/polycode/ide/PolycodeEntityEditor.h

@@ -22,10 +22,10 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include "PolyUIElement.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 #include <Polycode.h>
 #include <Polycode.h>
-#include "PolycodeUI.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "EntityEditorPropertyView.h"
 #include "EntityEditorPropertyView.h"
 #include "EntityEditorTreeView.h"
 #include "EntityEditorTreeView.h"
 #include "EntityEditorSettingsView.h"
 #include "EntityEditorSettingsView.h"

+ 2 - 2
include/polycode/ide/PolycodeFontEditor.h

@@ -22,8 +22,8 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 6 - 6
include/polycode/ide/PolycodeFrame.h

@@ -20,19 +20,19 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolycodeUI.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeProjectBrowser.h"
-#include "PolycodeEditor.h"
-#include "PolycodeConsole.h"
+#include "polycode/ide/PolycodeProjectBrowser.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/ide/PolycodeConsole.h"
 #include "NewProjectWindow.h"
 #include "NewProjectWindow.h"
 #include "TextureBrowser.h"
 #include "TextureBrowser.h"
 #include "ExportProjectWindow.h"
 #include "ExportProjectWindow.h"
 #include "ExampleBrowserWindow.h"
 #include "ExampleBrowserWindow.h"
 #include "NewFileWindow.h"
 #include "NewFileWindow.h"
 #include "ToolWindows.h"
 #include "ToolWindows.h"
-#include "PolycodeProjectManager.h"
-#include "PolycodeEditorManager.h"
+#include "polycode/ide/PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeEditorManager.h"
 #include "SettingsWindow.h"
 #include "SettingsWindow.h"
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 19 - 19
include/polycode/ide/PolycodeIDEApp.h

@@ -23,32 +23,32 @@
 #if defined(__APPLE__) && defined(__MACH__)
 #if defined(__APPLE__) && defined(__MACH__)
 #import "PolycodeView.h"
 #import "PolycodeView.h"
 #elif defined(_WINDOWS)
 #elif defined(_WINDOWS)
-#include "PolycodeWinIDEView.h"
+#include "polycode/ide/PolycodeWinIDEView.h"
 #else
 #else
-#include "PolycodeView.h"
+#include "polycode/ide/PolycodeView.h"
 #endif
 #endif
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeProjectManager.h"
-#include "PolycodeEditorManager.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/ide/PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeEditorManager.h"
 #include "Polycode.h"
 #include "Polycode.h"
-//#include "PolyCocoaCore.h"
-#include "PolycodeUI.h"
-#include "PolycodeFrame.h"
+//#include "polycode/core/PolyCocoaCore.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
-#include "PolycodeImageEditor.h"
-#include "PolycodeMaterialEditor.h"
-#include "PolycodeFontEditor.h"
-#include "PolycodeTextEditor.h"
-#include "PolycodeProjectEditor.h"
-#include "PolycodeSpriteEditor.h"
-#include "PolycodeMeshEditor.h"
-#include "PolycodeEntityEditor.h"
+#include "polycode/ide/PolycodeImageEditor.h"
+#include "polycode/ide/PolycodeMaterialEditor.h"
+#include "polycode/ide/PolycodeFontEditor.h"
+#include "polycode/ide/PolycodeTextEditor.h"
+#include "polycode/ide/PolycodeProjectEditor.h"
+#include "polycode/ide/PolycodeSpriteEditor.h"
+#include "polycode/ide/PolycodeMeshEditor.h"
+#include "polycode/ide/PolycodeEntityEditor.h"
 
 
-#include "PolycodeToolLauncher.h"
+#include "polycode/ide/PolycodeToolLauncher.h"
 
 
-#include "PolycodeRemoteDebugger.h"
-#include "PolycodeClipboard.h"
+#include "polycode/ide/PolycodeRemoteDebugger.h"
+#include "polycode/ide/PolycodeClipboard.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 2
include/polycode/ide/PolycodeImageEditor.h

@@ -22,8 +22,8 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include "PolyUIElement.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 3 - 3
include/polycode/ide/PolycodeMaterialEditor.h

@@ -22,10 +22,10 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
+#include "polycode/ide/PolycodeEditor.h"
 #include <Polycode.h>
 #include <Polycode.h>
-#include "PolycodeUI.h"
-#include "PolycodeProps.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeProps.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 3 - 3
include/polycode/ide/PolycodeMeshEditor.h

@@ -22,10 +22,10 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include "PolyUIElement.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 #include "TrackballCamera.h"
 #include "TrackballCamera.h"
-#include "PolycodeUI.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 0 - 1
include/polycode/ide/PolycodeProject.h

@@ -23,7 +23,6 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/PolycodeProjectBrowser.h

@@ -23,9 +23,8 @@
 #pragma once 
 #pragma once 
 
 
 #include <Polycode.h>
 #include <Polycode.h>
-#include <PolycodeUI.h>
-#include "PolycodeProject.h"
-#include "OSBasics.h"
+#include <polycode/modules/ui/PolycodeUI.h>
+#include "polycode/ide/PolycodeProject.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 5 - 5
include/polycode/ide/PolycodeProjectEditor.h

@@ -22,11 +22,11 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
-#include "PolycodeEditor.h"
-#include "PolycodeProject.h"
-#include "PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/ide/PolycodeProject.h"
+#include "polycode/ide/PolycodeProjectManager.h"
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 3 - 3
include/polycode/ide/PolycodeProjectManager.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeGlobals.h"
-#include "PolycodeProject.h"
-#include "PolycodeProjectBrowser.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/ide/PolycodeProject.h"
+#include "polycode/ide/PolycodeProjectBrowser.h"
 
 
 #pragma once 
 #pragma once 
 
 

+ 3 - 4
include/polycode/ide/PolycodeProps.h

@@ -22,11 +22,10 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
-#include "PolycodeEditor.h"
+#include "polycode/ide/PolycodeEditor.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 2
include/polycode/ide/PolycodeRemoteDebugger.h

@@ -23,8 +23,8 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeConsole.h"
-#include "PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeConsole.h"
+#include "polycode/ide/PolycodeProjectManager.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 27
include/polycode/ide/PolycodeSoundEditor.h

@@ -22,34 +22,9 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include "PolyUIElement.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 
-class PolycodeImageEditor : public PolycodeEditor {
-	public:
-	PolycodeImageEditor();
-	virtual ~PolycodeImageEditor();
-	
-	bool openFile(OSFileEntry filePath);
-	void Resize(int x, int y);
-	
-	protected:
-	
-		UIRect *editorImage;
-		
-		UIRect *leftShape;		
-		UIRect *rightShape;		
-		UIRect *topShape;		
-		UIRect *bottomShape;								
-		
-		Number aspectRatio;
-};
-
-class PolycodeImageEditorFactory : public PolycodeEditorFactory {
-	public:
-		PolycodeImageEditorFactory() : PolycodeEditorFactory() { extensions.push_back("png"); }
-		PolycodeEditor *createEditor() { return new PolycodeImageEditor(); }
-};

+ 2 - 2
include/polycode/ide/PolycodeSpriteEditor.h

@@ -22,9 +22,9 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
+#include "polycode/ide/PolycodeEditor.h"
 #include <Polycode.h>
 #include <Polycode.h>
-#include "PolycodeProps.h"
+#include "polycode/ide/PolycodeProps.h"
 #include "TransformGizmo.h"
 #include "TransformGizmo.h"
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 2 - 2
include/polycode/ide/PolycodeTextEditor.h

@@ -22,8 +22,8 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeEditor.h"
-#include <PolycodeUI.h>
+#include "polycode/ide/PolycodeEditor.h"
+#include <polycode/modules/ui/PolycodeUI.h>
 #include <Polycode.h>
 #include <Polycode.h>
 
 
 using namespace Polycode;
 using namespace Polycode;

+ 2 - 2
include/polycode/ide/PolycodeToolLauncher.h

@@ -22,8 +22,8 @@
  
  
 #pragma once
 #pragma once
 
 
-#include "PolycodeProject.h"
-#include "PolycodeConsole.h"
+#include "polycode/ide/PolycodeProject.h"
+#include "polycode/ide/PolycodeConsole.h"
 
 
 class PolycodeRunner : public Threaded {
 class PolycodeRunner : public Threaded {
 	public:
 	public:

+ 2 - 3
include/polycode/ide/SettingsWindow.h

@@ -22,10 +22,9 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 #define SETTINGS_WINDOW_WIDTH 400
 #define SETTINGS_WINDOW_WIDTH 400
 #define SETTINGS_WINDOW_HEIGHT 375
 #define SETTINGS_WINDOW_HEIGHT 375

+ 3 - 4
include/polycode/ide/TextureBrowser.h

@@ -22,11 +22,10 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "PolycodeProject.h"
-#include "OSBasics.h"
+#include "polycode/ide/PolycodeProject.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 2 - 3
include/polycode/ide/ToolWindows.h

@@ -22,10 +22,9 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolycodeGlobals.h"
-#include "PolycodeUI.h"
+#include "polycode/ide/PolycodeGlobals.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 0 - 1
include/polycode/ide/TrackballCamera.h

@@ -23,7 +23,6 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 1 - 2
include/polycode/ide/TransformGizmo.h

@@ -23,8 +23,7 @@
 #pragma once
 #pragma once
 
 
 #include "Polycode.h"
 #include "Polycode.h"
-#include "OSBasics.h"
-#include "PolycodeUI.h"
+#include "polycode/modules/ui/PolycodeUI.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 0 - 69
include/polycode/ide/utils/TrackballCamera.h

@@ -1,69 +0,0 @@
-/*
- Copyright (C) 2013 by Ivan Safrin
- 
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- 
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- 
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- */
-
-#pragma once
-
-#include "Polycode.h"
-#include "OSBasics.h"
-
-using namespace Polycode;
-
-class TrackballCamera : public EventHandler {
-	public:
-		TrackballCamera(Camera *targetCamera, Entity *trackballShape);
-		~TrackballCamera();
-		
-		void handleEvent(Event *event);		
-		void setOrbitingCenter(const Vector3 &newCenter);
-		void setCameraDistance(Number cameraDistance);
-		Camera *getTargetCamera();
-		
-		static const int MOUSE_MODE_IDLE = 0;
-		static const int MOUSE_MODE_ORBITING = 1;
-		static const int MOUSE_MODE_PANNING = 2;
-		static const int MOUSE_MODE_ZOOMING = 3;				
-		
-		Number trackballPanSpeed;
-		Number trackballZoomSpeed;	
-		Number trackballRotateSpeed;
-		
-	private:
-	
-		int mouseMode;
-	
-		Vector3 getMouseProjectionOnBall(const Vector2 &mousePosition);
-		void updateCamera();	
-		void processMouseMovement(const Vector2 &newPosition);
-		
-		Camera *targetCamera;
-		Entity *trackballShape;
-		
-		Vector2 trackBallMouseStart;
-		Vector2 trackBallMouseEnd;			
-		Vector3 orbitingCenter;
-		Vector3 trackballRotateStart;
-		Vector3 trackballRotateEnd;	
-		Vector3 trackballEye;		
-		Number cameraDistance;
-		CoreInput *coreInput;		
-		
-};

+ 3 - 3
include/polycode/modules/ui/PolyUIBox.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneImage.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 8 - 8
include/polycode/modules/ui/PolyUIButton.h

@@ -21,14 +21,14 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIElement.h"
-#include "PolyCoreInput.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyCoreInput.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 8 - 8
include/polycode/modules/ui/PolyUICheckBox.h

@@ -21,14 +21,14 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneImage.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyFont.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/core/PolyFont.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 12 - 12
include/polycode/modules/ui/PolyUIColorBox.h

@@ -21,18 +21,18 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneImage.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUITextInput.h"
-#include "PolyUIWindow.h"
-#include "PolyUIHSlider.h"
-#include "PolyUIBox.h"
-#include "PolyUIElement.h"
-#include "PolyFont.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUITextInput.h"
+#include "polycode/modules/ui/PolyUIWindow.h"
+#include "polycode/modules/ui/PolyUIHSlider.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyFont.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 10 - 10
include/polycode/modules/ui/PolyUIComboBox.h

@@ -21,16 +21,16 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneImage.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIMenu.h"
-#include "PolyUIElement.h"
-#include "PolyFont.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIMenu.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyFont.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 4 - 4
include/polycode/modules/ui/PolyUIElement.h

@@ -21,10 +21,10 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyEntity.h"
-#include "PolySceneImage.h"
-#include "PolySceneLabel.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolySceneLabel.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	/*
 	/*

+ 2 - 2
include/polycode/modules/ui/PolyUIEvent.h

@@ -21,8 +21,8 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyEvent.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyEvent.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 6 - 7
include/polycode/modules/ui/PolyUIFileDialog.h

@@ -22,13 +22,12 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolyGlobals.h"
-#include "PolyUIWindow.h"
-#include "PolyUIButton.h"
-#include "PolyUIScrollContainer.h"
-#include "PolyUITextInput.h"
-#include "OSBasics.h"
-#include "PolyInputEvent.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUIWindow.h"
+#include "polycode/modules/ui/PolyUIButton.h"
+#include "polycode/modules/ui/PolyUIScrollContainer.h"
+#include "polycode/modules/ui/PolyUITextInput.h"
+#include "polycode/core/PolyInputEvent.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 3 - 3
include/polycode/modules/ui/PolyUIHScrollBar.h

@@ -21,9 +21,9 @@
  */
  */
  
  
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyUIBox.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 3 - 3
include/polycode/modules/ui/PolyUIHSizer.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyScenePrimitive.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 9 - 9
include/polycode/modules/ui/PolyUIHSlider.h

@@ -21,15 +21,15 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIElement.h"
-#include "PolyInputEvent.h"
-#include "PolyFont.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyInputEvent.h"
+#include "polycode/core/PolyFont.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 7 - 7
include/polycode/modules/ui/PolyUIIconSelector.h

@@ -22,13 +22,13 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolyGlobals.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIImageButton.h"
-#include "PolyUIElement.h"
-#include "PolyInputEvent.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIImageButton.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyInputEvent.h"
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 

+ 6 - 6
include/polycode/modules/ui/PolyUIImageButton.h

@@ -21,12 +21,12 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneImage.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 3 - 3
include/polycode/modules/ui/PolyUIMenu.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyUIElement.h"
-#include "PolySceneLabel.h"
-#include "PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/modules/ui/PolyUIBox.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	class SceneLine;
 	class SceneLine;

+ 9 - 9
include/polycode/modules/ui/PolyUIMenuBar.h

@@ -21,15 +21,15 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIMenu.h"
-#include "PolyUIElement.h"
-#include "PolyInputEvent.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIMenu.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyInputEvent.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 4 - 4
include/polycode/modules/ui/PolyUIScrollContainer.h

@@ -21,10 +21,10 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyUIVScrollBar.h"
-#include "PolyUIHScrollBar.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUIVScrollBar.h"
+#include "polycode/modules/ui/PolyUIHScrollBar.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 14 - 14
include/polycode/modules/ui/PolyUITextInput.h

@@ -21,21 +21,21 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolySceneLabel.h"
-#include "PolyScenePrimitive.h"
-#include "PolyFontManager.h"
-#include "PolyFont.h"
-#include "PolyEntity.h"
-#include "PolyUIEvent.h"
-#include "PolyUIBox.h"
-#include "PolyUIMenu.h"
-#include "PolyUIElement.h"
-#include "PolyTimer.h"
-#include "PolyCoreInput.h"
-#include "PolyCore.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyFontManager.h"
+#include "polycode/core/PolyFont.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIMenu.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolyTimer.h"
+#include "polycode/core/PolyCoreInput.h"
+#include "polycode/core/PolyCore.h"
 #include <vector>
 #include <vector>
-#include "PolyUIScrollContainer.h"
+#include "polycode/modules/ui/PolyUIScrollContainer.h"
 
 
 using namespace std;
 using namespace std;
 
 

+ 9 - 9
include/polycode/modules/ui/PolyUITree.h

@@ -21,15 +21,15 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyUIElement.h"
-#include "PolySceneLabel.h"
-#include "PolySceneImage.h"
-#include "PolyScenePrimitive.h"
-#include "PolyEntity.h"
-#include "PolyUITreeEvent.h"
-#include "PolyUIBox.h"
-#include "PolyTween.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/core/PolySceneImage.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolyEntity.h"
+#include "polycode/modules/ui/PolyUITreeEvent.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/core/PolyTween.h"
 #include <vector>
 #include <vector>
 
 
 using std::vector;
 using std::vector;

+ 6 - 6
include/polycode/modules/ui/PolyUITreeContainer.h

@@ -21,12 +21,12 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyUITree.h"
-#include "PolyUIBox.h"
-#include "PolyInputKeys.h"
-#include "PolyUIElement.h"
-#include "PolyUIScrollContainer.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUITree.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/core/PolyInputKeys.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/modules/ui/PolyUIScrollContainer.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 3 - 3
include/polycode/modules/ui/PolyUITreeEvent.h

@@ -22,9 +22,9 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolyGlobals.h"
-#include "PolyEvent.h"
-#include "PolyUITree.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyEvent.h"
+#include "polycode/modules/ui/PolyUITree.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	class UITree;
 	class UITree;

+ 3 - 3
include/polycode/modules/ui/PolyUIVScrollBar.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyUIElement.h"
-#include "PolyUIBox.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/modules/ui/PolyUIBox.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 3 - 3
include/polycode/modules/ui/PolyUIVSizer.h

@@ -21,9 +21,9 @@
  */
  */
 
 
 #pragma once
 #pragma once
-#include "PolyGlobals.h"
-#include "PolyScenePrimitive.h"
-#include "PolyUIElement.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/modules/ui/PolyUIElement.h"
 
 
 namespace Polycode {
 namespace Polycode {
 	
 	

+ 10 - 10
include/polycode/modules/ui/PolyUIWindow.h

@@ -22,16 +22,16 @@
 
 
 #pragma once
 #pragma once
 
 
-#include "PolyGlobals.h"
-#include "PolyScenePrimitive.h"
-#include "PolySceneLabel.h"
-#include "PolyUIElement.h"
-#include "PolyUIEvent.h"
-#include "PolyUIImageButton.h"
-#include "PolyFont.h"
-#include "PolyInputKeys.h"
-#include "PolyUIBox.h"
-#include "PolyTween.h"
+#include "polycode/core/PolyGlobals.h"
+#include "polycode/core/PolyScenePrimitive.h"
+#include "polycode/core/PolySceneLabel.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIImageButton.h"
+#include "polycode/core/PolyFont.h"
+#include "polycode/core/PolyInputKeys.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/core/PolyTween.h"
 
 
 namespace Polycode {
 namespace Polycode {
 
 

+ 23 - 23
include/polycode/modules/ui/PolycodeUI.h

@@ -20,26 +20,26 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolyUIBox.h"
-#include "PolyUIElement.h"
-#include "PolyUIHSizer.h"
-#include "PolyUIVSizer.h"
-#include "PolyUIButton.h"
-#include "PolyUICheckBox.h"
-#include "PolyUIComboBox.h"
-#include "PolyUIColorBox.h"
-#include "PolyUIEvent.h"
-#include "PolyUIHScrollBar.h"
-#include "PolyUIHSlider.h"
-#include "PolyUIImageButton.h"
-#include "PolyUIScrollContainer.h"
-#include "PolyUITextInput.h"
-#include "PolyUITree.h"
-#include "PolyUITreeContainer.h"
-#include "PolyUITreeEvent.h"
-#include "PolyUIVScrollBar.h"
-#include "PolyUIWindow.h"
-#include "PolyUIMenu.h"
-#include "PolyUIFileDialog.h"
-#include "PolyUIMenuBar.h"
-#include "PolyUIIconSelector.h"
+#include "polycode/modules/ui/PolyUIBox.h"
+#include "polycode/modules/ui/PolyUIElement.h"
+#include "polycode/modules/ui/PolyUIHSizer.h"
+#include "polycode/modules/ui/PolyUIVSizer.h"
+#include "polycode/modules/ui/PolyUIButton.h"
+#include "polycode/modules/ui/PolyUICheckBox.h"
+#include "polycode/modules/ui/PolyUIComboBox.h"
+#include "polycode/modules/ui/PolyUIColorBox.h"
+#include "polycode/modules/ui/PolyUIEvent.h"
+#include "polycode/modules/ui/PolyUIHScrollBar.h"
+#include "polycode/modules/ui/PolyUIHSlider.h"
+#include "polycode/modules/ui/PolyUIImageButton.h"
+#include "polycode/modules/ui/PolyUIScrollContainer.h"
+#include "polycode/modules/ui/PolyUITextInput.h"
+#include "polycode/modules/ui/PolyUITree.h"
+#include "polycode/modules/ui/PolyUITreeContainer.h"
+#include "polycode/modules/ui/PolyUITreeEvent.h"
+#include "polycode/modules/ui/PolyUIVScrollBar.h"
+#include "polycode/modules/ui/PolyUIWindow.h"
+#include "polycode/modules/ui/PolyUIMenu.h"
+#include "polycode/modules/ui/PolyUIFileDialog.h"
+#include "polycode/modules/ui/PolyUIMenuBar.h"
+#include "polycode/modules/ui/PolyUIIconSelector.h"

+ 1 - 1
src/core/PolyCocoaCore.mm

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolyCocoaCore.h"
+#include "polycode/core/PolyCocoaCore.h"
 #import "polycode/view/osx/PolycodeView.h"
 #import "polycode/view/osx/PolycodeView.h"
 #include <iostream>
 #include <iostream>
 #include <limits.h>
 #include <limits.h>

+ 1 - 1
src/core/PolyPhysFSFileProvider.cpp

@@ -69,7 +69,7 @@ Polycode::CoreFile *PhysFSFileProvider::openFile(const String &fileName, const S
 
 
 void PhysFSFileProvider::addSource(const String &source) {
 void PhysFSFileProvider::addSource(const String &source) {
     if(PHYSFS_addToSearchPath(source.c_str(), 1) == 0) {
     if(PHYSFS_addToSearchPath(source.c_str(), 1) == 0) {
-        Logger::log("Error adding archive to resource manager... %s\n", PHYSFS_getLastError());
+        Logger::log("Error adding physfs archive: %s [%s]\n", PHYSFS_getLastError(), source.c_str());
     } else {
     } else {
         Logger::log("Added physfs archive: %s\n", source.c_str());
         Logger::log("Added physfs archive: %s\n", source.c_str());
     }
     }

+ 5 - 1
src/core/PolySceneMesh.cpp

@@ -102,7 +102,11 @@ void SceneMesh::setMesh(Mesh *mesh) {
 	this->mesh = mesh;
 	this->mesh = mesh;
 	setLocalBoundingBox(mesh->calculateBBox());
 	setLocalBoundingBox(mesh->calculateBBox());
 	useVertexBuffer = false;
 	useVertexBuffer = false;
-    
+
+    rebuildAttributes();
+}
+
+void SceneMesh::rebuildAttributes() {
     if(localShaderOptions) {
     if(localShaderOptions) {
         localShaderOptions->getAttributeBindingByName("texCoord")->vertexData = &mesh->vertexTexCoordArray;
         localShaderOptions->getAttributeBindingByName("texCoord")->vertexData = &mesh->vertexTexCoordArray;
         localShaderOptions->getAttributeBindingByName("position")->vertexData = &mesh->vertexPositionArray;
         localShaderOptions->getAttributeBindingByName("position")->vertexData = &mesh->vertexPositionArray;

+ 2 - 2
src/ide/ExampleBrowserWindow.cpp

@@ -47,7 +47,7 @@ ExampleBrowserWindow::ExampleBrowserWindow() : UIWindow(L"Example Browser", 320,
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT);
 	
 	
-	vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"Standalone/Examples/Lua", false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(RESOURCE_PATH"Standalone/Examples/Lua", false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];
 		OSFileEntry entry = templates[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
@@ -127,7 +127,7 @@ void ExampleBrowserWindow::handleEvent(Event *event) {
 }
 }
 
 
 void ExampleBrowserWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
 void ExampleBrowserWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
-	vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(folder.fullPath, false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];
 		OSFileEntry entry = templates[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {

+ 1 - 1
src/ide/ExportProjectWindow.cpp

@@ -21,7 +21,7 @@
  */
  */
  
  
 #include "ExportProjectWindow.h"
 #include "ExportProjectWindow.h"
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;
 
 

+ 2 - 2
src/ide/NewFileWindow.cpp

@@ -44,7 +44,7 @@ NewFileWindow::NewFileWindow() : UIWindow(L"Create New File", 580, 280) {
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT);
 	
 	
 	
 	
-	vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"FileTemplates", false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(RESOURCE_PATH"FileTemplates", false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];
 		OSFileEntry entry = templates[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
@@ -139,7 +139,7 @@ void NewFileWindow::handleEvent(Event *event) {
 
 
 
 
 void NewFileWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
 void NewFileWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
-	vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(folder.fullPath, false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];	
 		OSFileEntry entry = templates[i];	
 		if(entry.type != OSFileEntry::TYPE_FOLDER) {
 		if(entry.type != OSFileEntry::TYPE_FOLDER) {

+ 3 - 3
src/ide/NewProjectWindow.cpp

@@ -21,7 +21,7 @@
 */
 */
 
 
 #include "NewProjectWindow.h"
 #include "NewProjectWindow.h"
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;
 
 
@@ -49,7 +49,7 @@ NewProjectWindow::NewProjectWindow() : UIWindow(L"Create New Project", 480, 280)
 	
 	
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
 	templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
 	
 	
-	vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"ProjectTemplates", false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(RESOURCE_PATH"ProjectTemplates", false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];
 		OSFileEntry entry = templates[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
@@ -172,7 +172,7 @@ void NewProjectWindow::handleEvent(Event *event) {
 }
 }
 
 
 void NewProjectWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
 void NewProjectWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) {
-	vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(folder.fullPath, false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];
 		OSFileEntry entry = templates[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {

+ 1 - 1
src/ide/PolycodeClipboard.cpp

@@ -21,7 +21,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolycodeClipboard.h"
+#include "polycode/ide/PolycodeClipboard.h"
 
 
 PolycodeClipboard::PolycodeClipboard() {
 PolycodeClipboard::PolycodeClipboard() {
 	data = NULL;
 	data = NULL;

+ 4 - 4
src/ide/PolycodeConsole.cpp

@@ -20,10 +20,10 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeConsole.h"
-#include "PolycodeRemoteDebugger.h"
-#include "PolycodeTextEditor.h"
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeConsole.h"
+#include "polycode/ide/PolycodeRemoteDebugger.h"
+#include "polycode/ide/PolycodeTextEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 PolycodeConsole* PolycodeConsole::instance = NULL;
 PolycodeConsole* PolycodeConsole::instance = NULL;
 extern SyntaxHighlightTheme *globalSyntaxTheme;
 extern SyntaxHighlightTheme *globalSyntaxTheme;

+ 2 - 2
src/ide/PolycodeEditor.cpp

@@ -20,8 +20,8 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolycodeEditor.h"
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 extern PolycodeClipboard *globalClipboard;
 extern PolycodeClipboard *globalClipboard;
 
 

+ 5 - 3
src/ide/PolycodeEditorManager.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeEditorManager.h"
+#include "polycode/ide/PolycodeEditorManager.h"
 
 
 
 
 PolycodeEditorManager::PolycodeEditorManager()  : EventDispatcher() {
 PolycodeEditorManager::PolycodeEditorManager()  : EventDispatcher() {
@@ -71,10 +71,12 @@ void PolycodeEditorManager::destroyEditor(PolycodeEditor* editor) {
 
 
 PolycodeEditor *PolycodeEditorManager::openFile(OSFileEntry file) {
 PolycodeEditor *PolycodeEditorManager::openFile(OSFileEntry file) {
 
 
-	if(!OSBasics::fileExists(file.fullPath)) {
+    // NOCMAKE_TODO:
+    /*
+	if(!Services()->getCore()->fileExists(file.fullPath)) {
 		return NULL;
 		return NULL;
 	}
 	}
-
+*/
 	PolycodeEditor *editor = getEditorForPath(file.fullPath);	
 	PolycodeEditor *editor = getEditorForPath(file.fullPath);	
 	if(editor) {
 	if(editor) {
 		return editor;
 		return editor;

+ 4 - 4
src/ide/PolycodeEntityEditor.cpp

@@ -20,10 +20,10 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeEntityEditor.h"
-#include "PolycodeFrame.h"
-#include "PolyCubemap.h"
-#include "PolycodeMaterialEditor.h"
+#include "polycode/ide/PolycodeEntityEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
+#include "polycode/core/PolyCubemap.h"
+#include "polycode/ide/PolycodeMaterialEditor.h"
 
 
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;

+ 1 - 1
src/ide/PolycodeFontEditor.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolycodeFontEditor.h"
+#include "polycode/ide/PolycodeFontEditor.h"
 
 
 PolycodeFontEditor::PolycodeFontEditor() : PolycodeEditor(true){
 PolycodeFontEditor::PolycodeFontEditor() : PolycodeEditor(true){
 	
 	

+ 2 - 2
src/ide/PolycodeFrame.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 
 
 UIColorPicker *globalColorPicker;
 UIColorPicker *globalColorPicker;
@@ -1441,7 +1441,7 @@ PolycodeFrame::PolycodeFrame(PolycodeEditorManager *editorManager) : UIElement()
     aboutWindow->addChild(info2);
     aboutWindow->addChild(info2);
     info2->setPosition(450, 40);
     info2->setPosition(450, 40);
 
 
-	UILabel *versionLabel = new UILabel("version "POLYCODE_VERSION_STRING, 12, "mono");
+	UILabel *versionLabel = new UILabel("version " POLYCODE_VERSION_STRING, 12, "mono");
 	aboutWindow->addChild(versionLabel);
 	aboutWindow->addChild(versionLabel);
 	versionLabel->setPosition(40, 430);
 	versionLabel->setPosition(40, 430);
 	versionLabel->color.a = 1.0;
 	versionLabel->color.a = 1.0;

+ 26 - 22
src/ide/PolycodeIDEApp.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeIDEApp.h"
+#include "polycode/ide/PolycodeIDEApp.h"
 
 
 
 
 using namespace Polycode;
 using namespace Polycode;
@@ -61,22 +61,21 @@ core = new POLYCODE_CORE((PolycodeView*)view, 1100, 700,false,false, 0, 0,60, -1
 	globalClipboard = new PolycodeClipboard();
 	globalClipboard = new PolycodeClipboard();
 	
 	
 	CoreServices::getInstance()->getMaterialManager()->setTextureFilteringMode(Texture::FILTERING_NEAREST);
 	CoreServices::getInstance()->getMaterialManager()->setTextureFilteringMode(Texture::FILTERING_NEAREST);
-				
-	CoreServices::getInstance()->getResourceManager()->addArchive("default.pak");
-	CoreServices::getInstance()->getResourceManager()->addDirResource("default");
+
+    ResourcePool *globalPool = Services()->getResourceManager()->getGlobalPool();
     
     
+    core->addFileSource("archive", "default.pak");
+    globalPool->loadResourcesFromFolder("default", true);
+  
+    core->addFileSource("archive", "hdr.pak");
+    globalPool->loadResourcesFromFolder("hdr", true);
+
+    core->addFileSource("archive", "api.pak");
+    core->addFileSource("archive", "Physics2D.pak");
+    core->addFileSource("archive", "Physics3D.pak");
+    core->addFileSource("archive", "UI.pak");
     
     
-
-	CoreServices::getInstance()->getResourceManager()->addArchive("hdr.pak");
-	CoreServices::getInstance()->getResourceManager()->addDirResource("hdr");
-
-
-	CoreServices::getInstance()->getResourceManager()->addArchive("api.pak");
-	CoreServices::getInstance()->getResourceManager()->addArchive("Physics2D.pak");
-	CoreServices::getInstance()->getResourceManager()->addArchive("Physics3D.pak");
-	CoreServices::getInstance()->getResourceManager()->addArchive("UI.pak");
-
-	CoreServices::getInstance()->getResourceManager()->addDirResource("Materials");	
+    globalPool->loadResourcesFromFolder("Materials", true);
 			
 			
 	CoreServices::getInstance()->getFontManager()->registerFont("section", "Fonts/RobotoCondensed-Bold.ttf");
 	CoreServices::getInstance()->getFontManager()->registerFont("section", "Fonts/RobotoCondensed-Bold.ttf");
 
 
@@ -88,18 +87,23 @@ core = new POLYCODE_CORE((PolycodeView*)view, 1100, 700,false,false, 0, 0,60, -1
 	String themeName = CoreServices::getInstance()->getConfig()->getStringValue("Polycode", "uiTheme");
 	String themeName = CoreServices::getInstance()->getConfig()->getStringValue("Polycode", "uiTheme");
 	
 	
     if(core->getBackingXRes() == core->getXRes()) {
     if(core->getBackingXRes() == core->getXRes()) {
-        CoreServices::getInstance()->getResourceManager()->addArchive("Images");
+        core->addFileSource("folder", "Images");
     } else {
     } else {
-        CoreServices::getInstance()->getResourceManager()->addArchive("ImagesRetina");
+        core->addFileSource("folder", "ImagesRetina");
+        
+        // NOCMAKE_TODO
+        /*
         if(OSBasics::fileExists("UIThemes/"+themeName+"_retina")) {
         if(OSBasics::fileExists("UIThemes/"+themeName+"_retina")) {
             themeName = themeName + "_retina";
             themeName = themeName + "_retina";
         }
         }
+         */
     }
     }
     
     
     printf("LOADING THEME: %s\n", themeName.c_str());
     printf("LOADING THEME: %s\n", themeName.c_str());
     
     
 	CoreServices::getInstance()->getConfig()->loadConfig("Polycode", "UIThemes/"+themeName+"/theme.xml");
 	CoreServices::getInstance()->getConfig()->loadConfig("Polycode", "UIThemes/"+themeName+"/theme.xml");
-	CoreServices::getInstance()->getResourceManager()->addArchive("UIThemes/"+themeName+"/");
+    
+    core->addFileSource("folder", "UIThemes/"+themeName+"/");
     
     
 	
 	
 	willRunProject = false;
 	willRunProject = false;
@@ -669,16 +673,16 @@ void PolycodeIDEApp::openDocs() {
 
 
 void PolycodeIDEApp::openFileInProject(PolycodeProject *project, String filePath) {
 void PolycodeIDEApp::openFileInProject(PolycodeProject *project, String filePath) {
 	OSFileEntry fileEntry = OSFileEntry(project->getRootFolder()+"/"+filePath, OSFileEntry::TYPE_FILE);	
 	OSFileEntry fileEntry = OSFileEntry(project->getRootFolder()+"/"+filePath, OSFileEntry::TYPE_FILE);	
-	OSFILE *file = OSBasics::open(project->getRootFolder()+"/"+filePath,"r");
+    Polycode::CoreFile *file = Services()->getCore()->openFile(project->getRootFolder()+"/"+filePath,"r");
 	
 	
 	if(file) {
 	if(file) {
-		OSBasics::close(file);
+        Services()->getCore()->closeFile(file);
 		openFile(fileEntry);		
 		openFile(fileEntry);		
 	} else {
 	} else {
 		fileEntry = OSFileEntry(filePath, OSFileEntry::TYPE_FILE);	
 		fileEntry = OSFileEntry(filePath, OSFileEntry::TYPE_FILE);	
-		file = OSBasics::open(filePath,"r");	
+		file = Services()->getCore()->openFile(filePath,"r");
 		if(file) {
 		if(file) {
-			OSBasics::close(file);
+			 Services()->getCore()->closeFile(file);
 			openFile(fileEntry);							
 			openFile(fileEntry);							
 		} else {
 		} else {
 			PolycodeConsole::print("File not available.\n");
 			PolycodeConsole::print("File not available.\n");

+ 1 - 1
src/ide/PolycodeImageEditor.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeImageEditor.h"
+#include "polycode/ide/PolycodeImageEditor.h"
 
 
 PolycodeImageEditor::PolycodeImageEditor() : PolycodeEditor(true){
 PolycodeImageEditor::PolycodeImageEditor() : PolycodeEditor(true){
 	
 	

+ 3 - 3
src/ide/PolycodeMaterialEditor.cpp

@@ -20,9 +20,9 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeMaterialEditor.h"
-#include "PolycodeFrame.h"
-#include "PolyCubemap.h"
+#include "polycode/ide/PolycodeMaterialEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
+#include "polycode/core/PolyCubemap.h"
 
 
 extern UIColorPicker *globalColorPicker;
 extern UIColorPicker *globalColorPicker;
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;

+ 1 - 1
src/ide/PolycodeMeshEditor.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeMeshEditor.h"
+#include "polycode/ide/PolycodeMeshEditor.h"
 
 
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;
 
 

+ 5 - 3
src/ide/PolycodeProject.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeProject.h"
+#include "polycode/ide/PolycodeProject.h"
 
 
 PolycodeProject::PolycodeProject(String name, String path, String file) {
 PolycodeProject::PolycodeProject(String name, String path, String file) {
 	
 	
@@ -91,7 +91,9 @@ bool PolycodeProject::loadProjectFromFile() {
 			if(module->type != ObjectEntry::STRING_ENTRY) continue;
 			if(module->type != ObjectEntry::STRING_ENTRY) continue;
 			
 			
 			data.modules.push_back(module->stringVal);
 			data.modules.push_back(module->stringVal);
-			CoreServices::getInstance()->getResourceManager()->addArchive("Standalone/Modules/"+module->stringVal+"/API");
+            
+            // NOCMAKE_TODO:
+			//CoreServices::getInstance()->getResourceManager()->addArchive("Standalone/Modules/"+module->stringVal+"/API");
 			
 			
 		}
 		}
 	}
 	}
@@ -189,7 +191,7 @@ bool PolycodeProject::saveFile() {
 		configFile.root["packedItems"]->Clear();
 		configFile.root["packedItems"]->Clear();
 	}
 	}
 	
 	
-	vector<OSFileEntry> files = OSBasics::parseFolder(projectFolder, false);
+	vector<OSFileEntry> files = Services()->getCore()->parseFolder(projectFolder, false);
 
 
 	for(int i=0; i < files.size(); i++) {
 	for(int i=0; i < files.size(); i++) {
 		OSFileEntry entry = files[i];
 		OSFileEntry entry = files[i];

+ 2 - 2
src/ide/PolycodeProjectBrowser.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeProjectBrowser.h"
+#include "polycode/ide/PolycodeProjectBrowser.h"
 
 
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;
 
 
@@ -234,7 +234,7 @@ String PolycodeProjectBrowser::getIconForExtension(String extension) {
 }
 }
 
 
 void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, String spath) {
 void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, String spath) {
-	vector<OSFileEntry> files = OSBasics::parseFolder(spath, false);
+	vector<OSFileEntry> files = Services()->getCore()->parseFolder(spath, false);
 	
 	
 	// check if files got deleted
 	// check if files got deleted
 	for(int i=0; i < node->getNumTreeChildren(); i++) {
 	for(int i=0; i < node->getNumTreeChildren(); i++) {

+ 4 - 5
src/ide/PolycodeProjectEditor.cpp

@@ -20,10 +20,9 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeProjectEditor.h"
-#include "OSBasics.h"
-#include "PolycodeFrame.h"
-#include "PolycodeConsole.h"
+#include "polycode/ide/PolycodeProjectEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
+#include "polycode/ide/PolycodeConsole.h"
 
 
 extern UIColorPicker *globalColorPicker;
 extern UIColorPicker *globalColorPicker;
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;
@@ -123,7 +122,7 @@ PolycodeProjectEditor::PolycodeProjectEditor(PolycodeProjectManager *projectMana
 	
 	
 	String polycodeBasePath = CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory();
 	String polycodeBasePath = CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory();
 		
 		
-	std::vector<OSFileEntry> moduleFolders = OSBasics::parseFolder(polycodeBasePath+"/Standalone/Modules", false);
+	std::vector<OSFileEntry> moduleFolders = Services()->getCore()->parseFolder(polycodeBasePath+"/Standalone/Modules", false);
 	for(int i=0; i < moduleFolders.size(); i++) {
 	for(int i=0; i < moduleFolders.size(); i++) {
 		OSFileEntry entry = moduleFolders[i];
 		OSFileEntry entry = moduleFolders[i];
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {

+ 9 - 6
src/ide/PolycodeProjectManager.cpp

@@ -20,8 +20,8 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeProjectManager.h"
-#include "PolycodeToolLauncher.h"
+#include "polycode/ide/PolycodeProjectManager.h"
+#include "polycode/ide/PolycodeToolLauncher.h"
 
 
 PolycodeProjectManager::PolycodeProjectManager() : EventDispatcher() {
 PolycodeProjectManager::PolycodeProjectManager() : EventDispatcher() {
 	activeProject = NULL;
 	activeProject = NULL;
@@ -108,12 +108,12 @@ void PolycodeProjectManager::setActiveProject(PolycodeProject* project) {
 	if(project != activeProject) {
 	if(project != activeProject) {
 		
 		
 		if(activeProject != NULL) {
 		if(activeProject != NULL) {
-			CoreServices::getInstance()->getResourceManager()->removeArchive(activeProject->getRootFolder());		
+            Services()->getCore()->removeFileSource("archive", activeProject->getRootFolder());
 		}
 		}
 
 
 		activeProject = project;
 		activeProject = project;
-		if(project){			
-			CoreServices::getInstance()->getResourceManager()->addArchive(project->getRootFolder());
+		if(project){
+            Services()->getCore()->addFileSource("archive", activeProject->getRootFolder());
 		}
 		}
 		
 		
 		dispatchEvent(new Event(), Event::CHANGE_EVENT);
 		dispatchEvent(new Event(), Event::CHANGE_EVENT);
@@ -134,6 +134,8 @@ void PolycodeProjectManager::createNewProject(String templateFolder, String proj
 
 
 	CoreServices::getInstance()->getCore()->createFolder(projectLocation);		
 	CoreServices::getInstance()->getCore()->createFolder(projectLocation);		
 	
 	
+    // NOCMAKE_TODO:
+    /*
 	if(OSBasics::isFolder(projectLocation+"/"+projectName)) {
 	if(OSBasics::isFolder(projectLocation+"/"+projectName)) {
 		int projectSuffix = 0;
 		int projectSuffix = 0;
 		do {
 		do {
@@ -141,7 +143,8 @@ void PolycodeProjectManager::createNewProject(String templateFolder, String proj
 			
 			
 		} while (OSBasics::isFolder(projectLocation+"/"+projectName));
 		} while (OSBasics::isFolder(projectLocation+"/"+projectName));
 	}	
 	}	
-	
+	*/
+    
 	CoreServices::getInstance()->getCore()->copyDiskItem(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory()+"/"+templateFolder, projectLocation+"/"+projectName);
 	CoreServices::getInstance()->getCore()->copyDiskItem(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory()+"/"+templateFolder, projectLocation+"/"+projectName);
 	CoreServices::getInstance()->getCore()->moveDiskItem(projectLocation+"/"+projectName+"/template.polyproject",  projectLocation+"/"+projectName+"/"+projectName+".polyproject");
 	CoreServices::getInstance()->getCore()->moveDiskItem(projectLocation+"/"+projectName+"/template.polyproject",  projectLocation+"/"+projectName+"/"+projectName+".polyproject");
 	openProject(projectLocation+"/"+projectName+"/"+projectName+".polyproject");	
 	openProject(projectLocation+"/"+projectName+"/"+projectName+".polyproject");	

+ 4 - 4
src/ide/PolycodeProps.cpp

@@ -20,9 +20,9 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeProps.h"
-#include "PolycodeFrame.h"
-#include "PolyCubemap.h"
+#include "polycode/ide/PolycodeProps.h"
+#include "polycode/ide/PolycodeFrame.h"
+#include "polycode/core/PolyCubemap.h"
 
 
 extern UIColorPicker *globalColorPicker;
 extern UIColorPicker *globalColorPicker;
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;
@@ -4055,7 +4055,7 @@ void SoundSheet::handleEvent(Event *event) {
 	}
 	}
 
 
 	if(event->getDispatcher() == soundProp  && event->getEventCode() == Event::CHANGE_EVENT) {
 	if(event->getDispatcher() == soundProp  && event->getEventCode() == Event::CHANGE_EVENT) {
-		sound->getSound()->loadFile(soundProp->get(), false);
+		sound->getSound()->loadFile(soundProp->get());
 	}
 	}
     
     
     if(event->getDispatcher() == loopOnLoad && event->getEventCode() == Event::CHANGE_EVENT) {
     if(event->getDispatcher() == loopOnLoad && event->getEventCode() == Event::CHANGE_EVENT) {

+ 1 - 1
src/ide/PolycodeRemoteDebugger.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
 */
 */
 
 
-#include "PolycodeRemoteDebugger.h"
+#include "polycode/ide/PolycodeRemoteDebugger.h"
 
 
 
 
 PolycodeRemoteDebugger::PolycodeRemoteDebugger(PolycodeProjectManager *projectManager) {
 PolycodeRemoteDebugger::PolycodeRemoteDebugger(PolycodeProjectManager *projectManager) {

+ 1 - 70
src/ide/PolycodeSoundEditor.cpp

@@ -20,74 +20,5 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeImageEditor.h"
-
-PolycodeImageEditor::PolycodeImageEditor() : PolycodeEditor(true){
-	
-}
-
-PolycodeImageEditor::~PolycodeImageEditor() {
-	delete editorImage;
-	delete leftShape;
-	delete rightShape;
-	delete topShape;
-	delete bottomShape;
-}
-
-bool PolycodeImageEditor::openFile(OSFileEntry filePath) {
-	
-	
-	leftShape = new UIRect(10,10);
-	leftShape->setColor(0.0, 0.0, 0.0, 0.3);
-	leftShape->setAnchorPoint(-1.0, -1.0, 0.0);
-	addChild(leftShape);
-
-	rightShape = new UIRect(10,10);
-	rightShape->setColor(0.0, 0.0, 0.0, 0.3);
-	rightShape->setAnchorPoint(-1.0, -1.0, 0.0);
-	addChild(rightShape);
-
-	topShape = new UIRect(10,10);
-	topShape->setColor(0.0, 0.0, 0.0, 0.3);
-	topShape->setAnchorPoint(-1.0, -1.0, 0.0);
-	addChild(topShape);
-
-	bottomShape = new UIRect(10,10);
-	bottomShape->setColor(0.0, 0.0, 0.0, 0.3);
-	bottomShape->setAnchorPoint(-1.0, -1.0, 0.0);
-	addChild(bottomShape);
-			
-	editorImage = new UIRect(filePath.fullPath);
-	aspectRatio = ((Number)editorImage->getWidth()) / ((Number)editorImage->getHeight());
-	editorImage->setAnchorPoint(0.0, 0.0, 0.0);
-	addChild(editorImage);
-	
-	PolycodeEditor::openFile(filePath);
-	
-	return true;
-}
-
-void PolycodeImageEditor::Resize(int x, int y) {
-
-	editorImage->setPosition(x/2, y/2);
-
-	if((y * 0.8) * aspectRatio > x * 0.8) {
-		editorImage->Resize((x * 0.8), (x * 0.8) / aspectRatio);	
-	} else {
-		editorImage->Resize((y * 0.8) * aspectRatio, (y * 0.8));
-	}
-	
-	leftShape->Resize((x - editorImage->getWidth())/2.0, y);	
-	rightShape->Resize((x - editorImage->getWidth())/2.0, y);	
-	rightShape->setPosition(leftShape->getWidth() + editorImage->getWidth(), 0);
-		
-	topShape->Resize(editorImage->getWidth(), (y - editorImage->getHeight())/2.0);
-	topShape->setPosition(leftShape->getWidth(),0);
-
-	bottomShape->Resize(editorImage->getWidth(), (y - editorImage->getHeight())/2.0);
-	bottomShape->setPosition(leftShape->getWidth(),y-bottomShape->getHeight());
-
-		
-	PolycodeEditor::Resize(x,y);
-}
+#include "polycode/ide/PolycodeSoundEditor.h"
 
 

+ 2 - 2
src/ide/PolycodeSpriteEditor.cpp

@@ -20,8 +20,8 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeSpriteEditor.h"
-#include "PolycodeFrame.h"
+#include "polycode/ide/PolycodeSpriteEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
 
 
 extern UIColorPicker *globalColorPicker;
 extern UIColorPicker *globalColorPicker;
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;

+ 1 - 1
src/ide/PolycodeTextEditor.cpp

@@ -20,7 +20,7 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
 
 
-#include "PolycodeTextEditor.h"
+#include "polycode/ide/PolycodeTextEditor.h"
 
 
 extern SyntaxHighlightTheme *globalSyntaxTheme;
 extern SyntaxHighlightTheme *globalSyntaxTheme;
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;

+ 2 - 2
src/ide/PolycodeToolLauncher.cpp

@@ -20,10 +20,10 @@
  THE SOFTWARE.
  THE SOFTWARE.
  */
  */
  
  
-#include "PolycodeToolLauncher.h"
+#include "polycode/ide/PolycodeToolLauncher.h"
 
 
 #if defined(__APPLE__) && defined(__MACH__)
 #if defined(__APPLE__) && defined(__MACH__)
-	#include "PolyCocoaCore.h"
+	#include "polycode/core/PolyCocoaCore.h"
 #endif
 #endif
 
 
 GenericRunner::GenericRunner(String app, String file, String inFolder) : Threaded() {
 GenericRunner::GenericRunner(String app, String file, String inFolder) : Threaded() {

+ 4 - 4
src/ide/SettingsWindow.cpp

@@ -17,8 +17,8 @@
  */
  */
 
 
 #include "SettingsWindow.h"
 #include "SettingsWindow.h"
-#include "PolycodeFrame.h"
-#include "PolycodeTextEditor.h"
+#include "polycode/ide/PolycodeFrame.h"
+#include "polycode/ide/PolycodeTextEditor.h"
 
 
 extern PolycodeFrame *globalFrame;
 extern PolycodeFrame *globalFrame;
 extern UIGlobalMenu *globalMenu;
 extern UIGlobalMenu *globalMenu;
@@ -57,7 +57,7 @@ SettingsWindow::SettingsWindow() : UIWindow(L"Settings", SETTINGS_WINDOW_WIDTH,
 	syntaxThemeBox->setPosition(padding, EDITOR_BROWSE_POS + 55);
 	syntaxThemeBox->setPosition(padding, EDITOR_BROWSE_POS + 55);
 	syntaxThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT);
 	syntaxThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT);
 	
 	
-	std::vector<OSFileEntry> themes = OSBasics::parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/SyntaxThemes", false);
+	std::vector<OSFileEntry> themes = Services()->getCore()->parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/SyntaxThemes", false);
 	
 	
 	for(int i=0; i < themes.size(); i++) {
 	for(int i=0; i < themes.size(); i++) {
 		if(themes[i].extension == "xml") {
 		if(themes[i].extension == "xml") {
@@ -86,7 +86,7 @@ SettingsWindow::SettingsWindow() : UIWindow(L"Settings", SETTINGS_WINDOW_WIDTH,
 	uiThemeBox->setPosition(padding, 255);
 	uiThemeBox->setPosition(padding, 255);
 	uiThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT);
 	uiThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT);
 	
 	
-	std::vector<OSFileEntry> uiThemes = OSBasics::parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/UIThemes", false);
+	std::vector<OSFileEntry> uiThemes = Services()->getCore()->parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/UIThemes", false);
 	
 	
 	for(int i=0; i < uiThemes.size(); i++) {
 	for(int i=0; i < uiThemes.size(); i++) {
 		if(uiThemes[i].type == OSFileEntry::TYPE_FOLDER) {
 		if(uiThemes[i].type == OSFileEntry::TYPE_FOLDER) {

+ 3 - 3
src/ide/TextureBrowser.cpp

@@ -204,7 +204,7 @@ void AssetList::showFolder(String folderPath) {
 
 
     clearList();
     clearList();
 	
 	
-	vector<OSFileEntry> assets = OSBasics::parseFolder(folderPath, false);	
+	vector<OSFileEntry> assets = Services()->getCore()->parseFolder(folderPath, false);	
 	
 	
 	Number xPos = 20;
 	Number xPos = 20;
 	Number yPos = 30;
 	Number yPos = 30;
@@ -345,7 +345,7 @@ void AssetBrowser::setProject(PolycodeProject *project) {
 	
 	
 	templateContainer->getRootNode()->clearTree();
 	templateContainer->getRootNode()->clearTree();
 
 
-	vector<OSFileEntry> templates = OSBasics::parseFolder(project->getRootFolder(), false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(project->getRootFolder(), false);
 	templateContainer->getRootNode()->setLabelText(project->getProjectName());
 	templateContainer->getRootNode()->setLabelText(project->getProjectName());
 	
 	
     FolderUserData *userData = (FolderUserData*) templateContainer->getRootNode()->getUserData();
     FolderUserData *userData = (FolderUserData*) templateContainer->getRootNode()->getUserData();
@@ -446,7 +446,7 @@ void AssetBrowser::handleEvent(Event *event) {
 
 
 
 
 void AssetBrowser::parseFolderIntoTree(UITree *tree, OSFileEntry folder) {
 void AssetBrowser::parseFolderIntoTree(UITree *tree, OSFileEntry folder) {
-	vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false);
+	vector<OSFileEntry> templates = Services()->getCore()->parseFolder(folder.fullPath, false);
 	for(int i=0; i < templates.size(); i++) {
 	for(int i=0; i < templates.size(); i++) {
 		OSFileEntry entry = templates[i];	
 		OSFileEntry entry = templates[i];	
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {
 		if(entry.type == OSFileEntry::TYPE_FOLDER) {

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików