Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

first import

  • Loading branch information...
commit 0efa1845596c45a441f4615b9157bad4f41945c0 0 parents
Mario Vejlupek authored
Showing with 11,543 additions and 0 deletions.
  1. BIN  English.lproj/InfoPlist.strings
  2. +6,096 −0 English.lproj/MainMenu.xib
  3. BIN  Images/Skreenics.icns
  4. BIN  Images/ToolbarRemoveTemplate.png
  5. +32 −0 Info.plist
  6. +33 −0 README.txt
  7. +1,390 −0 Skreenics.xcodeproj/mariovejlupek.mode1v3
  8. +98 −0 Skreenics.xcodeproj/mariovejlupek.pbxuser
  9. +592 −0 Skreenics.xcodeproj/project.pbxproj
  10. +1 −0  Tests/run_suite.rb
  11. +17 −0 Tests/stub_test.rb
  12. +57 −0 UserDefaults.plist
  13. +32 −0 build/Debug/Skreenics.app/Contents/Info.plist
  14. BIN  build/Debug/Skreenics.app/Contents/MacOS/Skreenics
  15. +1 −0  build/Debug/Skreenics.app/Contents/PkgInfo
  16. BIN  build/Debug/Skreenics.app/Contents/Resources/English.lproj/InfoPlist.strings
  17. BIN  build/Debug/Skreenics.app/Contents/Resources/English.lproj/MainMenu.nib
  18. +56 −0 build/Debug/Skreenics.app/Contents/Resources/ExpandedPathToIconTransformer.rb
  19. +45 −0 build/Debug/Skreenics.app/Contents/Resources/ExpandedPathToPathTransformer.rb
  20. +65 −0 build/Debug/Skreenics.app/Contents/Resources/NSStringAdditions.rb
  21. +38 −0 build/Debug/Skreenics.app/Contents/Resources/SKConstants.rb
  22. +63 −0 build/Debug/Skreenics.app/Contents/Resources/SKDragView.rb
  23. +247 −0 build/Debug/Skreenics.app/Contents/Resources/SKGenerateThumbnailOperation.rb
  24. +93 −0 build/Debug/Skreenics.app/Contents/Resources/SKPreferencesController.rb
  25. +152 −0 build/Debug/Skreenics.app/Contents/Resources/SKProgressCell.rb
  26. +141 −0 build/Debug/Skreenics.app/Contents/Resources/SKProgressIndicator.rb
  27. +43 −0 build/Debug/Skreenics.app/Contents/Resources/SKRgbToNSColorTransformer.rb
  28. +134 −0 build/Debug/Skreenics.app/Contents/Resources/SKVideoItem.rb
  29. BIN  build/Debug/Skreenics.app/Contents/Resources/Skreenics.icns
  30. +222 −0 build/Debug/Skreenics.app/Contents/Resources/SkreenicsAppDelegate.rb
  31. BIN  build/Debug/Skreenics.app/Contents/Resources/ToolbarRemoveTemplate.png
  32. +57 −0 build/Debug/Skreenics.app/Contents/Resources/UserDefaults.plist
  33. +24 −0 build/Debug/Skreenics.app/Contents/Resources/rb_main.rb
  34. +1 −0  build/Skreenics.build/Debug/Skreenics.build/Objects-normal/x86_64/Skreenics.LinkFileList
  35. BIN  build/Skreenics.build/Debug/Skreenics.build/Objects-normal/x86_64/main.o
  36. +23 −0 build/Skreenics.build/Debug/Skreenics.build/Skreenics.dep
  37. BIN  build/Skreenics.build/Debug/Skreenics.build/Skreenics.hmap
  38. +453 −0 build/Skreenics.build/Debug/Skreenics.build/build-state.dat
  39. BIN  build/Skreenics.build/Skreenics.pbxindex/categories.pbxbtree
  40. BIN  build/Skreenics.build/Skreenics.pbxindex/cdecls.pbxbtree
  41. BIN  build/Skreenics.build/Skreenics.pbxindex/decls.pbxbtree
  42. BIN  build/Skreenics.build/Skreenics.pbxindex/files.pbxbtree
  43. BIN  build/Skreenics.build/Skreenics.pbxindex/imports.pbxbtree
  44. BIN  build/Skreenics.build/Skreenics.pbxindex/pbxindex.header
  45. BIN  build/Skreenics.build/Skreenics.pbxindex/protocols.pbxbtree
  46. BIN  build/Skreenics.build/Skreenics.pbxindex/refs.pbxbtree
  47. BIN  build/Skreenics.build/Skreenics.pbxindex/strings.pbxstrings/control
  48. BIN  build/Skreenics.build/Skreenics.pbxindex/strings.pbxstrings/strings
  49. BIN  build/Skreenics.build/Skreenics.pbxindex/subclasses.pbxbtree
  50. BIN  build/Skreenics.build/Skreenics.pbxindex/symbols0.pbxsymbols
  51. +14 −0 main.m
  52. +24 −0 rb_main.rb
  53. +65 −0 src/Additions/NSStringAdditions.rb
  54. +93 −0 src/Controllers/SKPreferencesController.rb
  55. +63 −0 src/GUI/SKDragView.rb
  56. +152 −0 src/GUI/SKProgressCell.rb
  57. +141 −0 src/GUI/SKProgressIndicator.rb
  58. +247 −0 src/Operations/SKGenerateThumbnailOperation.rb
  59. +38 −0 src/SKConstants.rb
  60. +134 −0 src/SKVideoItem.rb
  61. +222 −0 src/SkreenicsAppDelegate.rb
  62. +56 −0 src/Value Transformers/ExpandedPathToIconTransformer.rb
  63. +45 −0 src/Value Transformers/ExpandedPathToPathTransformer.rb
  64. +43 −0 src/Value Transformers/SKRgbToNSColorTransformer.rb
BIN  English.lproj/InfoPlist.strings
Binary file not shown
6,096 English.lproj/MainMenu.xib
6,096 additions, 0 deletions not shown
BIN  Images/Skreenics.icns
Binary file not shown
BIN  Images/ToolbarRemoveTemplate.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 Info.plist
@@ -0,0 +1,32 @@
+<?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>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string>Skreenics.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>net.neelyx.${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.1</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0.1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.6</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
33 README.txt
@@ -0,0 +1,33 @@
+== Skreenics ==
+
+This is a MacRuby port of the original Objective-C Skreenics application,
+available at http://code.google.com/p/skreenics/
+
+Both the original application and MacRuby port were written by the same
+author: Thibault Martin-Lagardette.
+
+Special thanks to "Hadley Rouse"
+(Redditor licenseplate <redditorlicenseplate [at] gmail [dot] com>)
+for the great icon!
+
+== Licensing ==
+
+Copyright (c) 2009-2010 Thibault Martin-Lagardette
+
+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.
1,390 Skreenics.xcodeproj/mariovejlupek.mode1v3
@@ -0,0 +1,1390 @@
+<?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>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1v3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>D844C75E11CDE3A800BE7BCD</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1v3</string>
+ <key>MajorVersion</key>
+ <integer>33</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>080E96DDFE201D6D7F000001</string>
+ <string>29B97317FDCFA39411CA2CEA</string>
+ <string>29B97323FDCFA39411CA2CEA</string>
+ <string>19C28FACFE9D520D11CA2CBB</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 589}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 607}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>536 530 986 648 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>203pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {778, 197}}</string>
+ <key>RubberWindowFrame</key>
+ <string>536 530 986 648 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>197pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 202}, {778, 405}}</string>
+ <key>RubberWindowFrame</key>
+ <string>536 530 986 648 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>405pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>778pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>D844C77411CDE3B300BE7BCD</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>D844C77511CDE3B300BE7BCD</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.shortV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>D844C77E11CDE3B300BE7BCD</string>
+ <string>D844C77F11CDE3B300BE7BCD</string>
+ <string>D844C78011CDE3B300BE7BCD</string>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>D844C75F11CDE3A800BE7BCD</string>
+ <string>/Users/mariovejlupek/Projectos/CineMagicLab/Skreenics/Skreenics.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>536 530 986 648 0 0 1920 1178 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 218}}</string>
+ <key>RubberWindowFrame</key>
+ <string>612 500 500 500 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 223}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>612 500 500 500 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>459pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>D844C75F11CDE3A800BE7BCD</string>
+ <string>D844C77611CDE3B300BE7BCD</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowContentMinSize</key>
+ <string>486 300</string>
+ <key>WindowString</key>
+ <string>612 500 500 500 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>D844C75F11CDE3A800BE7BCD</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {316, 194}}</string>
+ <string>{{316, 0}, {378, 194}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 194}}</string>
+ <string>{{0, 194}, {694, 187}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 381}}</string>
+ <key>PBXDebugSessionStackFrameViewKey</key>
+ <dict>
+ <key>DebugVariablesTableConfiguration</key>
+ <array>
+ <string>Name</string>
+ <real>120</real>
+ <string>Value</string>
+ <real>85</real>
+ <string>Summary</string>
+ <real>148</real>
+ </array>
+ <key>Frame</key>
+ <string>{{316, 0}, {378, 194}}</string>
+ <key>RubberWindowFrame</key>
+ <string>360 629 694 422 0 0 1920 1178 </string>
+ </dict>
+ <key>RubberWindowFrame</key>
+ <string>360 629 694 422 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>381pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>381pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>D844C77711CDE3B300BE7BCD</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>D844C77811CDE3B300BE7BCD</string>
+ <string>D844C77911CDE3B300BE7BCD</string>
+ <string>D844C77A11CDE3B300BE7BCD</string>
+ <string>D844C77B11CDE3B300BE7BCD</string>
+ <string>D844C77C11CDE3B300BE7BCD</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>360 629 694 422 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {650, 209}}</string>
+ <key>RubberWindowFrame</key>
+ <string>360 801 650 250 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>D844C77D11CDE3B300BE7BCD</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>360 801 650 250 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>1C78EAAD065D492600B07095</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.0950012207031</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {374, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {630, 331}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {374, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>97</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <string>1C0AD2B0069F1E9B00FABCE6</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
98 Skreenics.xcodeproj/mariovejlupek.pbxuser
@@ -0,0 +1,98 @@
+// !$*UTF8*$!
+{
+ 172754BD107597F200D0347B /* Unit Tests */ = {
+ activeExec = 0;
+ };
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
+ activeBuildConfigurationName = Debug;
+ activeExecutable = D844C76D11CDE3A800BE7BCD /* Skreenics */;
+ activeTarget = 8D1107260486CEB800E47090 /* Skreenics */;
+ codeSenseManager = D844C78211CDE3B300BE7BCD /* Code sense */;
+ executables = (
+ D844C76D11CDE3A800BE7BCD /* Skreenics */,
+ );
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 539,
+ 20,
+ 48.16259765625,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 298705832;
+ PBXWorkspaceStateSaveDate = 298705832;
+ };
+ sourceControlManager = D844C78111CDE3B300BE7BCD /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 4D1A51A110A4FF5D0046A98A /* Compile */ = {
+ activeExec = 0;
+ };
+ 4D1A51A510A4FF640046A98A /* Embed */ = {
+ activeExec = 0;
+ };
+ 8D1107260486CEB800E47090 /* Skreenics */ = {
+ activeExec = 0;
+ executables = (
+ D844C76D11CDE3A800BE7BCD /* Skreenics */,
+ );
+ };
+ D844C76D11CDE3A800BE7BCD /* Skreenics */ = {
+ isa = PBXExecutable;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ autoAttachOnCrash = 1;
+ breakpointsEnabled = 0;
+ configStateDict = {
+ };
+ customDataFormattersEnabled = 1;
+ dataTipCustomDataFormattersEnabled = 1;
+ dataTipShowTypeColumn = 1;
+ dataTipSortType = 0;
+ debuggerPlugin = GDBDebugging;
+ disassemblyDisplayState = 0;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ executableSystemSymbolLevel = 0;
+ executableUserSymbolLevel = 0;
+ libgmallocEnabled = 0;
+ name = Skreenics;
+ showTypeColumn = 0;
+ sourceDirectories = (
+ );
+ };
+ D844C78111CDE3B300BE7BCD /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ repositoryNamesForRoots = {
+ "" = "";
+ };
+ };
+ };
+ D844C78211CDE3B300BE7BCD /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+}
592 Skreenics.xcodeproj/project.pbxproj
@@ -0,0 +1,592 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 44;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 172754BD107597F200D0347B /* Unit Tests */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 172754C7107597F400D0347B /* Build configuration list for PBXAggregateTarget "Unit Tests" */;
+ buildPhases = (
+ 172754BC107597F200D0347B /* ShellScript */,
+ );
+ dependencies = (
+ );
+ name = "Unit Tests";
+ productName = "Unit Tests";
+ };
+ 4D1A51A110A4FF5D0046A98A /* Compile */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 4D1A51AB10A4FF6A0046A98A /* Build configuration list for PBXAggregateTarget "Compile" */;
+ buildPhases = (
+ 4D1A51A010A4FF5D0046A98A /* ShellScript */,
+ );
+ dependencies = (
+ );
+ name = Compile;
+ productName = Compile;
+ };
+ 4D1A51A510A4FF640046A98A /* Embed */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 4D1A51AC10A4FF6A0046A98A /* Build configuration list for PBXAggregateTarget "Embed" */;
+ buildPhases = (
+ 4D1A51A410A4FF640046A98A /* ShellScript */,
+ );
+ dependencies = (
+ );
+ name = Embed;
+ productName = Embed;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 2BFA9DA710CDF852007972A1 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2BFA9DA510CDF852007972A1 /* MainMenu.xib */; };
+ 4DE339F70D74FCDD00ADB6EE /* rb_main.rb in Resources */ = {isa = PBXBuildFile; fileRef = 4DE339F60D74FCDD00ADB6EE /* rb_main.rb */; };
+ 4DE3BE140D8651D900ECA448 /* MacRuby.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DE3BE130D8651D900ECA448 /* MacRuby.framework */; };
+ 766A5A751187FA920097145F /* SkreenicsAppDelegate.rb in Resources */ = {isa = PBXBuildFile; fileRef = 766A5A741187FA920097145F /* SkreenicsAppDelegate.rb */; };
+ 766A5AF41188B7B90097145F /* SKVideoItem.rb in Resources */ = {isa = PBXBuildFile; fileRef = 766A5AF31188B7B90097145F /* SKVideoItem.rb */; };
+ 768F163D1188BE0F00F5B792 /* SKPreferencesController.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F163C1188BE0F00F5B792 /* SKPreferencesController.rb */; };
+ 768F16441188C4B500F5B792 /* SKGenerateThumbnailOperation.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F16431188C4B500F5B792 /* SKGenerateThumbnailOperation.rb */; };
+ 768F1654118A168700F5B792 /* SKDragView.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F1651118A168700F5B792 /* SKDragView.rb */; };
+ 768F1655118A168700F5B792 /* SKProgressCell.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F1652118A168700F5B792 /* SKProgressCell.rb */; };
+ 768F1656118A168700F5B792 /* SKProgressIndicator.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F1653118A168700F5B792 /* SKProgressIndicator.rb */; };
+ 768F1664118A16BF00F5B792 /* NSStringAdditions.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F1663118A16BF00F5B792 /* NSStringAdditions.rb */; };
+ 768F166A118A18E700F5B792 /* SKRgbToNSColorTransformer.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F1669118A18E700F5B792 /* SKRgbToNSColorTransformer.rb */; };
+ 768F166C118A1DBE00F5B792 /* ExpandedPathToPathTransformer.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F166B118A1DBE00F5B792 /* ExpandedPathToPathTransformer.rb */; };
+ 768F166E118A1E4A00F5B792 /* ExpandedPathToIconTransformer.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F166D118A1E4A00F5B792 /* ExpandedPathToIconTransformer.rb */; };
+ 768F1670118A1F3500F5B792 /* SKConstants.rb in Resources */ = {isa = PBXBuildFile; fileRef = 768F166F118A1F3500F5B792 /* SKConstants.rb */; };
+ 768F1696118A215E00F5B792 /* UserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = 768F1695118A215E00F5B792 /* UserDefaults.plist */; };
+ 768F16AF118A21C200F5B792 /* Skreenics.icns in Resources */ = {isa = PBXBuildFile; fileRef = 768F16AD118A21C200F5B792 /* Skreenics.icns */; };
+ 768F16B0118A21C200F5B792 /* ToolbarRemoveTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 768F16AE118A21C200F5B792 /* ToolbarRemoveTemplate.png */; };
+ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
+ 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
+ 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 172754B4107597CF00D0347B /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+ 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
+ 172754D5107598EA00D0347B /* stub_test.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = stub_test.rb; sourceTree = "<group>"; };
+ 17D55CD81076A1A2008207BD /* run_suite.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = run_suite.rb; sourceTree = "<group>"; };
+ 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
+ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 2BFA9DA610CDF852007972A1 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
+ 4DE339F60D74FCDD00ADB6EE /* rb_main.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = rb_main.rb; sourceTree = "<group>"; };
+ 4DE3BE130D8651D900ECA448 /* MacRuby.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MacRuby.framework; path = /Library/Frameworks/MacRuby.framework; sourceTree = "<absolute>"; };
+ 766A5A741187FA920097145F /* SkreenicsAppDelegate.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SkreenicsAppDelegate.rb; sourceTree = "<group>"; };
+ 766A5AF31188B7B90097145F /* SKVideoItem.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKVideoItem.rb; sourceTree = "<group>"; };
+ 768F163C1188BE0F00F5B792 /* SKPreferencesController.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKPreferencesController.rb; sourceTree = "<group>"; };
+ 768F16431188C4B500F5B792 /* SKGenerateThumbnailOperation.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKGenerateThumbnailOperation.rb; sourceTree = "<group>"; };
+ 768F1651118A168700F5B792 /* SKDragView.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKDragView.rb; sourceTree = "<group>"; };
+ 768F1652118A168700F5B792 /* SKProgressCell.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKProgressCell.rb; sourceTree = "<group>"; };
+ 768F1653118A168700F5B792 /* SKProgressIndicator.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKProgressIndicator.rb; sourceTree = "<group>"; };
+ 768F1663118A16BF00F5B792 /* NSStringAdditions.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = NSStringAdditions.rb; sourceTree = "<group>"; };
+ 768F1669118A18E700F5B792 /* SKRgbToNSColorTransformer.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKRgbToNSColorTransformer.rb; sourceTree = "<group>"; };
+ 768F166B118A1DBE00F5B792 /* ExpandedPathToPathTransformer.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = ExpandedPathToPathTransformer.rb; sourceTree = "<group>"; };
+ 768F166D118A1E4A00F5B792 /* ExpandedPathToIconTransformer.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = ExpandedPathToIconTransformer.rb; sourceTree = "<group>"; };
+ 768F166F118A1F3500F5B792 /* SKConstants.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = SKConstants.rb; sourceTree = "<group>"; };
+ 768F1695118A215E00F5B792 /* UserDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = UserDefaults.plist; sourceTree = "<group>"; };
+ 768F16AD118A21C200F5B792 /* Skreenics.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Skreenics.icns; sourceTree = "<group>"; };
+ 768F16AE118A21C200F5B792 /* ToolbarRemoveTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ToolbarRemoveTemplate.png; sourceTree = "<group>"; };
+ 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 8D1107320486CEB800E47090 /* Skreenics.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Skreenics.app; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8D11072E0486CEB800E47090 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
+ 4DE3BE140D8651D900ECA448 /* MacRuby.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 080E96DDFE201D6D7F000001 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 766A5A741187FA920097145F /* SkreenicsAppDelegate.rb */,
+ 766A5AF31188B7B90097145F /* SKVideoItem.rb */,
+ 768F166F118A1F3500F5B792 /* SKConstants.rb */,
+ 768F163B1188BDEB00F5B792 /* Controllers */,
+ 768F16421188C4A100F5B792 /* Operations */,
+ 768F16451188DDE500F5B792 /* GUI */,
+ 768F1657118A169C00F5B792 /* Additions */,
+ 768F1665118A18BA00F5B792 /* Value Transformers */,
+ );
+ name = Source;
+ path = src;
+ sourceTree = "<group>";
+ };
+ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 4DE3BE130D8651D900ECA448 /* MacRuby.framework */,
+ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
+ );
+ name = "Linked Frameworks";
+ sourceTree = "<group>";
+ };
+ 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
+ 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
+ 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
+ );
+ name = "Other Frameworks";
+ sourceTree = "<group>";
+ };
+ 172754AE1075979200D0347B /* Tests */ = {
+ isa = PBXGroup;
+ children = (
+ 172754D5107598EA00D0347B /* stub_test.rb */,
+ 17D55CD81076A1A2008207BD /* run_suite.rb */,
+ );
+ path = Tests;
+ sourceTree = "<group>";
+ };
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D1107320486CEB800E47090 /* Skreenics.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 29B97314FDCFA39411CA2CEA /* Skreenics */ = {
+ isa = PBXGroup;
+ children = (
+ 172754AE1075979200D0347B /* Tests */,
+ 080E96DDFE201D6D7F000001 /* Source */,
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
+ 29B97317FDCFA39411CA2CEA /* Resources */,
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
+ 19C28FACFE9D520D11CA2CBB /* Products */,
+ );
+ name = Skreenics;
+ sourceTree = "<group>";
+ };
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 4DE339F60D74FCDD00ADB6EE /* rb_main.rb */,
+ 29B97316FDCFA39411CA2CEA /* main.m */,
+ );
+ name = "Other Sources";
+ sourceTree = "<group>";
+ };
+ 29B97317FDCFA39411CA2CEA /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 768F16A2118A21A100F5B792 /* Images */,
+ 768F1695118A215E00F5B792 /* UserDefaults.plist */,
+ 2BFA9DA510CDF852007972A1 /* MainMenu.xib */,
+ 8D1107310486CEB800E47090 /* Info.plist */,
+ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
+ 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ 768F163B1188BDEB00F5B792 /* Controllers */ = {
+ isa = PBXGroup;
+ children = (
+ 768F163C1188BE0F00F5B792 /* SKPreferencesController.rb */,
+ );
+ path = Controllers;
+ sourceTree = "<group>";
+ };
+ 768F16421188C4A100F5B792 /* Operations */ = {
+ isa = PBXGroup;
+ children = (
+ 768F16431188C4B500F5B792 /* SKGenerateThumbnailOperation.rb */,
+ );
+ path = Operations;
+ sourceTree = "<group>";
+ };
+ 768F16451188DDE500F5B792 /* GUI */ = {
+ isa = PBXGroup;
+ children = (
+ 768F1652118A168700F5B792 /* SKProgressCell.rb */,
+ 768F1653118A168700F5B792 /* SKProgressIndicator.rb */,
+ 768F1651118A168700F5B792 /* SKDragView.rb */,
+ );
+ path = GUI;
+ sourceTree = "<group>";
+ };
+ 768F1657118A169C00F5B792 /* Additions */ = {
+ isa = PBXGroup;
+ children = (
+ 768F1663118A16BF00F5B792 /* NSStringAdditions.rb */,
+ );
+ path = Additions;
+ sourceTree = "<group>";
+ };
+ 768F1665118A18BA00F5B792 /* Value Transformers */ = {
+ isa = PBXGroup;
+ children = (
+ 768F1669118A18E700F5B792 /* SKRgbToNSColorTransformer.rb */,
+ 768F166B118A1DBE00F5B792 /* ExpandedPathToPathTransformer.rb */,
+ 768F166D118A1E4A00F5B792 /* ExpandedPathToIconTransformer.rb */,
+ );
+ path = "Value Transformers";
+ sourceTree = "<group>";
+ };
+ 768F16A2118A21A100F5B792 /* Images */ = {
+ isa = PBXGroup;
+ children = (
+ 768F16AD118A21C200F5B792 /* Skreenics.icns */,
+ 768F16AE118A21C200F5B792 /* ToolbarRemoveTemplate.png */,
+ );
+ path = Images;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 8D1107260486CEB800E47090 /* Skreenics */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Skreenics" */;
+ buildPhases = (
+ 8D1107290486CEB800E47090 /* Resources */,
+ 8D11072C0486CEB800E47090 /* Sources */,
+ 8D11072E0486CEB800E47090 /* Frameworks */,
+ 172754B4107597CF00D0347B /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Skreenics;
+ productInstallPath = "$(HOME)/Applications";
+ productName = Skreenics;
+ productReference = 8D1107320486CEB800E47090 /* Skreenics.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Skreenics" */;
+ compatibilityVersion = "Xcode 3.0";
+ hasScannedForEncodings = 1;
+ mainGroup = 29B97314FDCFA39411CA2CEA /* Skreenics */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D1107260486CEB800E47090 /* Skreenics */,
+ 172754BD107597F200D0347B /* Unit Tests */,
+ 4D1A51A110A4FF5D0046A98A /* Compile */,
+ 4D1A51A510A4FF640046A98A /* Embed */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D1107290486CEB800E47090 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
+ 4DE339F70D74FCDD00ADB6EE /* rb_main.rb in Resources */,
+ 2BFA9DA710CDF852007972A1 /* MainMenu.xib in Resources */,
+ 766A5A751187FA920097145F /* SkreenicsAppDelegate.rb in Resources */,
+ 766A5AF41188B7B90097145F /* SKVideoItem.rb in Resources */,
+ 768F163D1188BE0F00F5B792 /* SKPreferencesController.rb in Resources */,
+ 768F16441188C4B500F5B792 /* SKGenerateThumbnailOperation.rb in Resources */,
+ 768F1654118A168700F5B792 /* SKDragView.rb in Resources */,
+ 768F1655118A168700F5B792 /* SKProgressCell.rb in Resources */,
+ 768F1656118A168700F5B792 /* SKProgressIndicator.rb in Resources */,
+ 768F1664118A16BF00F5B792 /* NSStringAdditions.rb in Resources */,
+ 768F166A118A18E700F5B792 /* SKRgbToNSColorTransformer.rb in Resources */,
+ 768F166C118A1DBE00F5B792 /* ExpandedPathToPathTransformer.rb in Resources */,
+ 768F166E118A1E4A00F5B792 /* ExpandedPathToIconTransformer.rb in Resources */,
+ 768F1670118A1F3500F5B792 /* SKConstants.rb in Resources */,
+ 768F1696118A215E00F5B792 /* UserDefaults.plist in Resources */,
+ 768F16AF118A21C200F5B792 /* Skreenics.icns in Resources */,
+ 768F16B0118A21C200F5B792 /* ToolbarRemoveTemplate.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 172754BC107597F200D0347B /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/usr/local/bin/macruby Tests/run_suite.rb";
+ };
+ 4D1A51A010A4FF5D0046A98A /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "# The macruby_deploy command-line tool with the --compile argument will compile every Ruby source file of your .app into machine code. Default options will be used. Pass the -h option to get more information.\nPATH=\"$PATH:/usr/local/bin\" macruby_deploy --compile \"$TARGET_BUILD_DIR/$PROJECT_NAME.app\"";
+ };
+ 4D1A51A410A4FF640046A98A /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "# The macruby_deploy command-line tool with the --embed argument will make sure the MacRuby framework will be embedded in your .app. Default options will be used. Pass the -h option to get more information.\nPATH=\"$PATH:/usr/local/bin\" macruby_deploy --embed \"$TARGET_BUILD_DIR/$PROJECT_NAME.app\"";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D11072C0486CEB800E47090 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D11072D0486CEB800E47090 /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 089C165DFE840E0CC02AAC07 /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+ 2BFA9DA510CDF852007972A1 /* MainMenu.xib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 2BFA9DA610CDF852007972A1 /* English */,
+ );
+ name = MainMenu.xib;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 172754BE107597F200D0347B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ PRODUCT_NAME = "Unit Tests";
+ };
+ name = Debug;
+ };
+ 172754BF107597F200D0347B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ PRODUCT_NAME = "Unit Tests";
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ 4D1A51A210A4FF5D0046A98A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ PRODUCT_NAME = Compile;
+ };
+ name = Debug;
+ };
+ 4D1A51A310A4FF5D0046A98A /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ PRODUCT_NAME = Compile;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ 4D1A51A610A4FF640046A98A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ PRODUCT_NAME = Embed;
+ };
+ name = Debug;
+ };
+ 4D1A51A710A4FF640046A98A /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ PRODUCT_NAME = Embed;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ C01FCF4B08A954540054247B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/build/Debug\"",
+ );
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ PRODUCT_NAME = Skreenics;
+ WRAPPER_EXTENSION = app;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ C01FCF4C08A954540054247B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/build/Debug\"",
+ );
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Applications";
+ PRODUCT_NAME = Skreenics;
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+ C01FCF4F08A954540054247B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+ GCC_ENABLE_OBJC_GC = required;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+ };
+ name = Debug;
+ };
+ C01FCF5008A954540054247B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+ GCC_ENABLE_OBJC_GC = required;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 172754C7107597F400D0347B /* Build configuration list for PBXAggregateTarget "Unit Tests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 172754BE107597F200D0347B /* Debug */,
+ 172754BF107597F200D0347B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 4D1A51AB10A4FF6A0046A98A /* Build configuration list for PBXAggregateTarget "Compile" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 4D1A51A210A4FF5D0046A98A /* Debug */,
+ 4D1A51A310A4FF5D0046A98A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 4D1A51AC10A4FF6A0046A98A /* Build configuration list for PBXAggregateTarget "Embed" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 4D1A51A610A4FF640046A98A /* Debug */,
+ 4D1A51A710A4FF640046A98A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Skreenics" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C01FCF4B08A954540054247B /* Debug */,
+ C01FCF4C08A954540054247B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Skreenics" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C01FCF4F08A954540054247B /* Debug */,
+ C01FCF5008A954540054247B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
1  Tests/run_suite.rb
@@ -0,0 +1 @@
+Dir.glob(File.expand_path('../**/*_test.rb', __FILE__)).each { |test| require test }
17 Tests/stub_test.rb
@@ -0,0 +1,17 @@
+require 'test/unit'
+
+#require 'ruby_file_to_test'
+
+class SimpleTest < Test::Unit::TestCase
+ def setup
+ puts 'setup called'
+ end
+
+ def teardown
+ puts 'teardown called'
+ end
+
+ def test_fail
+ assert false, 'Assertion was false.'
+ end
+end
57 UserDefaults.plist
@@ -0,0 +1,57 @@
+<?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>SKOuputFolder</key>
+ <string>~/Desktop</string>
+ <key>SKPreferMovieFileFolder</key>
+ <false/>
+ <key>SKAddSubfoldersOnDrop</key>
+ <false/>
+ <key>SKImageFormatPrefKey</key>
+ <string>PNG</string>
+ <key>SKMaximumConcurrentOperations</key>
+ <integer>4</integer>
+ <key>SKImageFileWidth</key>
+ <integer>1024</integer>
+ <key>SKSpacingBetweenThumbnails</key>
+ <integer>10</integer>
+ <key>SKNumberOfRows</key>
+ <integer>5</integer>
+ <key>SKNumberOfColumns</key>
+ <integer>3</integer>
+ <key>SKImageBackgroundColor</key>
+ <dict>
+ <key>Red</key>
+ <integer>1</integer>
+ <key>Green</key>
+ <integer>1</integer>
+ <key>Blue</key>
+ <integer>1</integer>
+ <key>Alpha</key>
+ <integer>1</integer>
+ </dict>
+ <key>SKImageShadowColor</key>
+ <dict>
+ <key>Red</key>
+ <real>0.495</real>
+ <key>Green</key>
+ <real>0.495</real>
+ <key>Blue</key>
+ <real>0.495</real>
+ <key>Alpha</key>
+ <real>0.95</real>
+ </dict>
+ <key>SKImageMovieInfoColor</key>
+ <dict>
+ <key>Red</key>
+ <integer>0</integer>
+ <key>Green</key>
+ <integer>0</integer>
+ <key>Blue</key>
+ <integer>0</integer>
+ <key>Alpha</key>
+ <integer>1</integer>
+ </dict>
+</dict>
+</plist>
32 build/Debug/Skreenics.app/Contents/Info.plist
@@ -0,0 +1,32 @@
+<?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>English</string>
+ <key>CFBundleExecutable</key>
+ <string>Skreenics</string>
+ <key>CFBundleIconFile</key>
+ <string>Skreenics.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>net.neelyx.Skreenics</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>Skreenics</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0.1</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0.1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.6</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
BIN  build/Debug/Skreenics.app/Contents/MacOS/Skreenics
Binary file not shown
1  build/Debug/Skreenics.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL????
BIN  build/Debug/Skreenics.app/Contents/Resources/English.lproj/InfoPlist.strings
Binary file not shown
BIN  build/Debug/Skreenics.app/Contents/Resources/English.lproj/MainMenu.nib
Binary file not shown
56 build/Debug/Skreenics.app/Contents/Resources/ExpandedPathToIconTransformer.rb
@@ -0,0 +1,56 @@
+=begin
+/******************************************************************************
+ * $Id: ExpandedPathToIconTransformer.m 6974 2008-10-28 00:08:49Z livings124 $
+ *
+ * Copyright (c) 2007-2008 Transmission authors and contributors
+ *
+ * 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.
+ *****************************************************************************/
+=end
+
+# ExpandedPathToIconTransformer.rb
+# Skreenics
+#
+# Created by naixn on 29/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+class ExpandedPathToIconTransformer < NSValueTransformer
+ def self.transformedValueClass
+ return NSImage
+ end
+
+ def self.allowsReverseTransformation
+ return false
+ end
+
+ def transformedValue(value)
+ return nil if value.nil?
+
+ path = value.stringByExpandingTildeInPath
+ # show a folder icon if the folder doesn't exist
+ if not NSFileManager.defaultManager.fileExistsAtPath(path) and path.pathExtension.isEqualToString("")
+ icon = NSWorkspace.sharedWorkspace.iconForFileType(NSFileTypeForHFSTypeCode('fldr'))
+ else
+ icon = NSWorkspace.sharedWorkspace.iconForFile(value.stringByExpandingTildeInPath)
+ end
+ icon.setScalesWhenResized(true)
+ icon.setSize(NSMakeSize(16.0, 16.0))
+ return icon
+ end
+end
45 build/Debug/Skreenics.app/Contents/Resources/ExpandedPathToPathTransformer.rb
@@ -0,0 +1,45 @@
+=begin
+/******************************************************************************
+ * $Id: ExpandedPathToPathTransformer.m 5731 2008-04-30 18:35:07Z livings124 $
+ *
+ * Copyright (c) 2007-2008 Transmission authors and contributors
+ *
+ * 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.
+ *****************************************************************************/
+=end
+
+# ExpandedPathToPathTransformer.rb
+# Skreenics
+#
+# Created by naixn on 29/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+class ExpandedPathToPathTransformer < NSValueTransformer
+ def self.transformedValueClass
+ return NSString
+ end
+
+ def self.allowsReverseTransformation
+ return false
+ end
+
+ def transformedValue(value)
+ return value.nil? ? nil : NSFileManager.defaultManager.displayNameAtPath(value)
+ end
+end
65 build/Debug/Skreenics.app/Contents/Resources/NSStringAdditions.rb
@@ -0,0 +1,65 @@
+=begin
+/******************************************************************************
+ * $Id: NSStringAdditions.m 9140 2009-09-18 03:49:55Z livings124 $
+ *
+ * Copyright (c) 2005-2009 Transmission authors and contributors
+ *
+ * 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.
+ *****************************************************************************/
+=end
+
+# NSStringAdditions.rb
+# Skreenics
+#
+# Created by naixn on 29/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+class NSString
+ def self.stringForFileSize(size)
+ if size < 1024
+ if size != 1
+ return "%lld bytes" % size
+ else
+ return "1 byte"
+ end
+ end
+
+ if size < (1024 ** 2)
+ convertedSize = size / 1024.0
+ unit = "KB"
+ elsif size < (1024 ** 3)
+ convertedSize = size / (1024.0 ** 2.0)
+ unit = "MB"
+ elsif size < (1024 ** 4)
+ convertedSize = size / (1024.0 ** 3.0)
+ unit = "GB"
+ else
+ convertedSize = size / (1024.0 ** 4.0)
+ unit = "TB"
+ end
+
+ # attempt to have minimum of 3 digits with at least 1 decimal
+ if convertedSize <= 9.995
+ return ("%.2f %s" % [convertedSize, unit])
+ else
+ return ("%.1f %s" % [convertedSize, unit])
+ end
+ end
+end
+
38 build/Debug/Skreenics.app/Contents/Resources/SKConstants.rb
@@ -0,0 +1,38 @@
+# SKConstants.rb
+# Skreenics
+#
+# Created by naixn on 29/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+# Video collection keys
+KSKFilePathKey = "filepath"
+KSKFileNameKey = "filename"
+KSKIconKey = "icon"
+KSKProgressIndicatorKey = "progressIndicator"
+KSKProgressValueKey = "progressValue"
+KSKProgressStringKey = "progressString"
+KSKNumberOfStepsKey = "numberOfSteps"
+
+# Video collection observer keys
+KSKObserverKeyPathKey = "keyPath"
+KSKObserverObjectKey = "object"
+KSKObserverChangeKey = "change"
+KSKObserverContextKey = "context"
+
+# Paths
+KSKVideoItemProgressValuePath = "videoItem.progressValue"
+
+# Preferences keys
+KSKOuputFolderPrefKey = "SKOuputFolder"
+KSKPreferMovieFileFolderPrefKey = "SKPreferMovieFileFolder"
+KSKAddSubfoldersOnDropPrefKey = "SKAddSubfoldersOnDrop"
+KSKMaxConcurrentOperationsPrefKey = "SKMaximumConcurrentOperations"
+KSKImageFormatPrefKey = "SKImageFormatPrefKey"
+KSKImageFileWidthPrefKey = "SKImageFileWidth"
+KSKSpacingBetweenThumbnailsPrefKey = "SKSpacingBetweenThumbnails"
+KSKNumberOfRowsPrefKey = "SKNumberOfRows"
+KSKNumberOfColumnsPrefKey = "SKNumberOfColumns"
+KSKImageBackgroundColorPrefKey = "SKImageBackgroundColor"
+KSKImageShadowColorPrefKey = "SKImageShadowColor"
+KSKImageMovieInfoColorPrefKey = "SKImageMovieInfoColor"
+
63 build/Debug/Skreenics.app/Contents/Resources/SKDragView.rb
@@ -0,0 +1,63 @@
+# SKDragView.rb
+# Skreenics
+#
+# Created by naixn on 29/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+class SKDragView < NSView
+ attr_writer :dragDelegate
+
+ def initWithCoder(coder)
+ if super
+ registerForDraggedTypes([NSFilenamesPboardType])
+ @acceptableMovieTypes = QTMovie.movieTypesWithOptions(QTIncludeCommonTypes)
+ @dragDelegate = nil
+ self
+ end
+ end
+
+ #pragma mark Drag and Drop Operations
+
+ def draggingEntered(sender)
+ # Init some variables
+ workspace = NSWorkspace.sharedWorkspace
+ filemanager = NSFileManager.defaultManager
+ pboard = sender.draggingPasteboard
+ sourceDragMask = sender.draggingSourceOperationMask
+ canQTKitInitDraggedFiles = false
+ pathIsDirectory = false
+
+ # We accept data from pasteboard only if it contains filenames
+ if pboard.types.containsObject(NSFilenamesPboardType)
+ # Look if we have at least one type of file we can deal with (movie / folder)
+ pboard.propertyListForType(NSFilenamesPboardType).each do |filePath|
+ ptr = Pointer.new_with_type('B')
+ filemanager.fileExistsAtPath(filePath, isDirectory: ptr)
+ pathIsDirectory = ptr[0]
+ break if pathIsDirectory
+ if @acceptableMovieTypes.containsObject(workspace.typeOfFile(filePath, error: nil))
+ canQTKitInitDraggedFiles = true
+ break
+ end
+ end
+ # If a folder is dragged, of the filename list contains a movie, return "NSDragOperationCopy" to get the (+) icon
+ if (pathIsDirectory or canQTKitInitDraggedFiles) and (sourceDragMask & NSDragOperationCopy)
+ return NSDragOperationCopy
+ end
+ end
+ # If all of the above failed, then we can't handle anything that was dragged
+ return NSDragOperationNone
+ end
+
+ def performDragOperation(sender)
+ pboard = sender.draggingPasteboard
+ if pboard.types.containsObject(NSFilenamesPboardType)
+ pboard.propertyListForType(NSFilenamesPboardType).each do |filePath|
+ @dragDelegate.addDragPathElement(filePath)
+ end
+ return true
+ end
+ return false
+ end
+end
+
247 build/Debug/Skreenics.app/Contents/Resources/SKGenerateThumbnailOperation.rb
@@ -0,0 +1,247 @@
+# SKGenerateThumbnailOperation.rb
+# Skreenics
+#
+# Created by naixn on 28/04/10.
+# Copyright 2010 Thibault Martin-Lagardette. All rights reserved.
+
+class SKGenerateThumbnailOperation < NSOperation
+ def initWithVideoItem(videoItem)
+ if init
+ @userDefaults = NSUserDefaults.standardUserDefaults
+ @videoItem = videoItem
+ @rows = @userDefaults[KSKNumberOfRowsPrefKey].integerValue
+ @cols = @userDefaults[KSKNumberOfColumnsPrefKey].integerValue
+ self
+ end
+ end
+
+ #pragma mark Attributed Strings Generation
+
+ def videoResolutionStringFromMovie(movie, withAttributes:stringAttributes)
+ videoSize = movie.attributeForKey(QTMovieNaturalSizeAttribute).sizeValue
+ videoSizeFormat = "\n\tResolution: %.0fx%.0f" % [videoSize.width, videoSize.height]
+ return NSAttributedString.alloc.initWithString(videoSizeFormat, attributes: stringAttributes)
+ end
+
+ def videoFileSizeStringFromMovie(movie, withAttributes:stringAttributes)
+ videoFileSize = NSFileManager.defaultManager.attributesOfItemAtPath(movie.attributeForKey(QTMovieFileNameAttribute), error: nil).objectForKey(NSFileSize)
+ videoFileSizeFormat = "\n\tFilesize: %s" % NSString.stringForFileSize(videoFileSize.unsignedLongLongValue)
+ return NSAttributedString.alloc.initWithString(videoFileSizeFormat, attributes: stringAttributes)
+ end
+
+ def preferenceColorForKey(key)
+ NSValueTransformer.valueTransformerForName("SKRgbToNSColorTransformer").transformedValue(@userDefaults[key])
+ end
+
+ def detailsFromMovie(movie)
+ movieFilename = movie.attributeForKey(QTMovieFileNameAttribute).lastPathComponent
+
+ # Setup shadow
+ descriptionShadow = NSShadow.alloc.init
+ descriptionShadow.setShadowOffset(NSMakeSize(1.75, -1.75))
+ descriptionShadow.setShadowColor(preferenceColorForKey(KSKImageShadowColorPrefKey))
+ descriptionShadow.setShadowBlurRadius(3.0)
+
+ # Create default attributes
+ stringAttributes = {
+ NSFontAttributeName => NSFont.fontWithName("Arial Bold", size:20.0),
+ NSForegroundColorAttributeName => preferenceColorForKey(KSKImageMovieInfoColorPrefKey),
+ NSShadowAttributeName => descriptionShadow
+ }
+
+ # Init the result with the filename
+ resultString = NSMutableAttributedString.alloc.initWithString(movieFilename, attributes: stringAttributes)
+
+ # Change attributes for "sub"-info
+ stringAttributes.removeObjectForKey(NSShadowAttributeName)
+ stringAttributes[NSFontAttributeName] = NSFont.fontWithName("Arial Bold", size:15.0)
+
+ # Add video resolution
+ resultString.appendAttributedString(videoResolutionStringFromMovie(movie, withAttributes: stringAttributes))
+ # Add file size
+ resultString.appendAttributedString(videoFileSizeStringFromMovie(movie, withAttributes: stringAttributes))
+
+ # Return the final string
+ return resultString
+ end
+
+ def attributedStringForQTTime(time)
+ # Convert the time into a string, and ommit some non-interesting data
+ timeString = QTStringFromTime(time)[2...10]
+
+ # Setup string attributes
+ stringAttributes = {
+ NSFontAttributeName => NSFont.fontWithName("Arial Bold", size:18.0),
+ NSForegroundColorAttributeName => NSColor.colorWithCalibratedWhite(1.0, alpha:0.75),
+ NSStrokeColorAttributeName => NSColor.colorWithCalibratedWhite(0.0, alpha:0.75),
+ NSStrokeWidthAttributeName => NSNumber.numberWithFloat(-5.0)
+ }
+
+ return NSAttributedString.alloc.initWithString(timeString, attributes: stringAttributes)
+ end
+
+ def prefWidth; @userDefaults.floatForKey(KSKImageFileWidthPrefKey); end
+ def prefSpacing; @userDefaults.floatForKey(KSKSpacingBetweenThumbnailsPrefKey); end
+ def prefMovieInfo; true; end
+
+ def main
+ QTMovie.enterQTKitOnThread
+
+ @videoItem.setNumberOfSteps(5 + @cols * @rows)
+
+ # ----------- Step 0: Init movie
+ return if isCancelled
+ @videoItem.setProgressString("Opening movie...", incrementProgressValue: false)
+ movieFilePath = @videoItem.filepath
+ openAttributes = {
+ QTMovieFileNameAttribute => movieFilePath,
+ QTMovieOpenAsyncOKAttribute => NSNumber.numberWithBool(false)
+ }
+ movie = QTMovie.alloc.initWithAttributes(openAttributes, error: nil)
+
+ # ----------- Step 1: Check if the movie actually has a movie track
+ if isCancelled
+ movie.release
+ QTMovie.exitQTKitOnThread
+ return
+ end
+ @videoItem.setProgressString("Checking if file has a movie track...", incrementProgressValue: true)
+ if (movie.tracksOfMediaType(QTMediaTypeVideo).count == 0 and
+ movie.tracksOfMediaType(QTMediaTypeMPEG).count == 0 and
+ movie.tracksOfMediaType(QTMediaTypeMovie).count == 0)
+ @videoItem.setError("File does not contain a video track")
+ movie.release
+ QTMovie.exitQTKitOnThread
+ return
+ end
+
+ # ----------- Step 2: Init some other values
+ @videoItem.setProgressString("Preparing...", incrementProgressValue: true)
+
+ # Init some other values
+ movieSize = movie.attributeForKey(QTMovieNaturalSizeAttribute).sizeValue
+ frameAreaSize = NSMakeSize(0, 0)
+ frameAreaSize.width = (prefWidth - ((@cols + 1) * prefSpacing)) / @cols
+ frameAreaSize.height = (movieSize.height * frameAreaSize.width) / movieSize.width
+ imageSize = NSMakeSize(prefWidth, frameAreaSize.height * @rows + (@rows + 1) * prefSpacing)
+
+ # Get the time we will pad around the movie, and set the initial value
+ incrementTime = movie.duration
+ incrementTime.timeValue /= (@cols * @rows)
+ currentTime = incrementTime
+ currentTime.timeValue /= 2.0
+
+ # If we need to display some movie details, we need to generate the
+ # attributed string and add its size to the result image size
+ if prefMovieInfo
+ movieDetails = detailsFromMovie(movie)
+ movieDetailsRectOrigin = movieDetails.boundingRectWithSize(NSZeroSize, options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingDisableScreenFontSubstitution))
+ imageSize.height += movieDetailsRectOrigin.size.height + prefSpacing
+ end
+
+ # ----------- Step 3: create original image
+ if isCancelled
+ movie.release
+ QTMovie.exitQTKitOnThread
+ return
+ end
+ @videoItem.setProgressString("Creating initial image...", incrementProgressValue: true)
+
+ # Allocate the image in which we will draw, erase everything, and set ready to draw
+ resultImage = NSImage.alloc.initWithSize(imageSize)
+ resultImage.recache
+ resultImage.lockFocus
+
+ # Draw background
+ preferenceColorForKey(KSKImageBackgroundColorPrefKey).set
+ imageRect = NSMakeRect(0, 0, 0, 0)
+ imageRect.origin = NSZeroPoint
+ imageRect.size = imageSize
+ NSBezierPath.fillRect(imageRect)
+ NSBezierPath.setDefaultLineWidth(1.5)
+
+ # Draw movie info
+ if prefMovieInfo and movieDetails
+ movieDetails.drawAtPoint(NSMakePoint(prefSpacing, imageSize.height - prefSpacing - movieDetailsRectOrigin.size.height))
+ end
+
+ # Setup the shadow
+ thumbnailShadow = NSShadow.alloc.init
+ thumbnailShadow.setShadowOffset(NSMakeSize(2.0, -2.0))
+ thumbnailShadow.setShadowColor(preferenceColorForKey(KSKImageShadowColorPrefKey))
+ thumbnailShadow.setShadowBlurRadius(3.0)
+
+ @rows.times do |row|
+ @cols.times do |col|
+ # ----------- Step 4: create thumbnail
+ if isCancelled
+ resultImage.unlockFocus
+ resultImage.release
+ thumbnailShadow.release
+ movie.release
+ QTMovie.exitQTKitOnThread
+ return
+ end
+ @videoItem.setProgressString("Processing frame %d of %d..." % [(row *