From 68ce2f96de41f60d7ec64754c92df573efd5f205 Mon Sep 17 00:00:00 2001
From: Tim Mickel
Date: Thu, 11 Feb 2016 14:32:51 -0500
Subject: [PATCH 1/4] Add iOS wrapper and compiled playgrounds
---
wrapper/ScratchBlockly/.gitignore | 23 ++
.../ScratchBlockly.xcodeproj/project.pbxproj | 337 ++++++++++++++++++
.../contents.xcworkspacedata | 7 +
.../ScratchBlockly/AppDelegate.swift | 38 ++
.../AppIcon.appiconset/Contents.json | 73 ++++
.../Base.lproj/LaunchScreen.storyboard | 27 ++
.../ScratchBlockly/Base.lproj/Main.storyboard | 26 ++
.../ScratchBlockly/ScratchBlockly/Info.plist | 56 +++
.../ScratchBlockly/Settings.bundle/Root.plist | 29 ++
.../Settings.bundle/en.lproj/Root.strings | Bin 0 -> 410 bytes
.../ScratchBlockly/ViewController.swift | 33 ++
.../playgrounds/horizontal_playground.html | 143 ++++++++
wrapper/playgrounds/vertical_playground.html | 143 ++++++++
13 files changed, 935 insertions(+)
create mode 100644 wrapper/ScratchBlockly/.gitignore
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.pbxproj
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.xcworkspace/contents.xcworkspacedata
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/AppDelegate.swift
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Assets.xcassets/AppIcon.appiconset/Contents.json
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/LaunchScreen.storyboard
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/Main.storyboard
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Info.plist
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/Root.plist
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/en.lproj/Root.strings
create mode 100644 wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
create mode 100644 wrapper/playgrounds/horizontal_playground.html
create mode 100644 wrapper/playgrounds/vertical_playground.html
diff --git a/wrapper/ScratchBlockly/.gitignore b/wrapper/ScratchBlockly/.gitignore
new file mode 100644
index 0000000000..37de8bb479
--- /dev/null
+++ b/wrapper/ScratchBlockly/.gitignore
@@ -0,0 +1,23 @@
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## Build generated
+build/
+DerivedData/
+
+## Various settings
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata/
+
+## Other
+*.moved-aside
+*.xccheckout
+*.xcscmblueprint
diff --git a/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.pbxproj b/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..7d18409c75
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.pbxproj
@@ -0,0 +1,337 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D917FD141C6D115D00FC8841 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D917FD131C6D115D00FC8841 /* AppDelegate.swift */; };
+ D917FD161C6D115D00FC8841 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D917FD151C6D115D00FC8841 /* ViewController.swift */; };
+ D917FD191C6D115D00FC8841 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D917FD171C6D115D00FC8841 /* Main.storyboard */; };
+ D917FD1B1C6D115D00FC8841 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D917FD1A1C6D115D00FC8841 /* Assets.xcassets */; };
+ D917FD1E1C6D115D00FC8841 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D917FD1C1C6D115D00FC8841 /* LaunchScreen.storyboard */; };
+ D917FD671C6D175700FC8841 /* blockly_compressed_horizontal.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD5A1C6D175700FC8841 /* blockly_compressed_horizontal.js */; };
+ D917FD681C6D175700FC8841 /* blockly_compressed_vertical.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD5B1C6D175700FC8841 /* blockly_compressed_vertical.js */; };
+ D917FD691C6D175700FC8841 /* blockly_uncompressed_horizontal.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD5C1C6D175700FC8841 /* blockly_uncompressed_horizontal.js */; };
+ D917FD6A1C6D175700FC8841 /* blockly_uncompressed_vertical.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD5D1C6D175700FC8841 /* blockly_uncompressed_vertical.js */; };
+ D917FD6C1C6D175700FC8841 /* blocks_compressed.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD5F1C6D175700FC8841 /* blocks_compressed.js */; };
+ D917FD6D1C6D175700FC8841 /* blocks_horizontal in Resources */ = {isa = PBXBuildFile; fileRef = D917FD601C6D175700FC8841 /* blocks_horizontal */; };
+ D917FD701C6D175700FC8841 /* javascript_compressed.js in Resources */ = {isa = PBXBuildFile; fileRef = D917FD631C6D175700FC8841 /* javascript_compressed.js */; };
+ D917FD711C6D175700FC8841 /* media in Resources */ = {isa = PBXBuildFile; fileRef = D917FD641C6D175700FC8841 /* media */; };
+ D917FD721C6D175700FC8841 /* msg in Resources */ = {isa = PBXBuildFile; fileRef = D917FD651C6D175700FC8841 /* msg */; };
+ D917FD751C6D185000FC8841 /* playgrounds in Resources */ = {isa = PBXBuildFile; fileRef = D917FD741C6D185000FC8841 /* playgrounds */; };
+ D917FD771C6D18E400FC8841 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D917FD761C6D18E400FC8841 /* Settings.bundle */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D917FD101C6D115D00FC8841 /* ScratchBlockly.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ScratchBlockly.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ D917FD131C6D115D00FC8841 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ D917FD151C6D115D00FC8841 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ D917FD181C6D115D00FC8841 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ D917FD1A1C6D115D00FC8841 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ D917FD1D1C6D115D00FC8841 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ D917FD1F1C6D115D00FC8841 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D917FD5A1C6D175700FC8841 /* blockly_compressed_horizontal.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = blockly_compressed_horizontal.js; path = ../../blockly_compressed_horizontal.js; sourceTree = ""; };
+ D917FD5B1C6D175700FC8841 /* blockly_compressed_vertical.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = blockly_compressed_vertical.js; path = ../../blockly_compressed_vertical.js; sourceTree = ""; };
+ D917FD5C1C6D175700FC8841 /* blockly_uncompressed_horizontal.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = blockly_uncompressed_horizontal.js; path = ../../blockly_uncompressed_horizontal.js; sourceTree = ""; };
+ D917FD5D1C6D175700FC8841 /* blockly_uncompressed_vertical.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = blockly_uncompressed_vertical.js; path = ../../blockly_uncompressed_vertical.js; sourceTree = ""; };
+ D917FD5F1C6D175700FC8841 /* blocks_compressed.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = blocks_compressed.js; path = ../../blocks_compressed.js; sourceTree = ""; };
+ D917FD601C6D175700FC8841 /* blocks_horizontal */ = {isa = PBXFileReference; lastKnownFileType = folder; name = blocks_horizontal; path = ../../blocks_horizontal; sourceTree = ""; };
+ D917FD631C6D175700FC8841 /* javascript_compressed.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = javascript_compressed.js; path = ../../javascript_compressed.js; sourceTree = ""; };
+ D917FD641C6D175700FC8841 /* media */ = {isa = PBXFileReference; lastKnownFileType = folder; name = media; path = ../../media; sourceTree = ""; };
+ D917FD651C6D175700FC8841 /* msg */ = {isa = PBXFileReference; lastKnownFileType = folder; name = msg; path = ../../msg; sourceTree = ""; };
+ D917FD741C6D185000FC8841 /* playgrounds */ = {isa = PBXFileReference; lastKnownFileType = folder; name = playgrounds; path = ../playgrounds; sourceTree = ""; };
+ D917FD761C6D18E400FC8841 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D917FD0D1C6D115D00FC8841 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D917FD071C6D115D00FC8841 = {
+ isa = PBXGroup;
+ children = (
+ D917FD741C6D185000FC8841 /* playgrounds */,
+ D917FD5A1C6D175700FC8841 /* blockly_compressed_horizontal.js */,
+ D917FD5B1C6D175700FC8841 /* blockly_compressed_vertical.js */,
+ D917FD5C1C6D175700FC8841 /* blockly_uncompressed_horizontal.js */,
+ D917FD5D1C6D175700FC8841 /* blockly_uncompressed_vertical.js */,
+ D917FD5F1C6D175700FC8841 /* blocks_compressed.js */,
+ D917FD601C6D175700FC8841 /* blocks_horizontal */,
+ D917FD631C6D175700FC8841 /* javascript_compressed.js */,
+ D917FD641C6D175700FC8841 /* media */,
+ D917FD651C6D175700FC8841 /* msg */,
+ D917FD121C6D115D00FC8841 /* ScratchBlockly */,
+ D917FD111C6D115D00FC8841 /* Products */,
+ );
+ sourceTree = "";
+ };
+ D917FD111C6D115D00FC8841 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D917FD101C6D115D00FC8841 /* ScratchBlockly.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D917FD121C6D115D00FC8841 /* ScratchBlockly */ = {
+ isa = PBXGroup;
+ children = (
+ D917FD761C6D18E400FC8841 /* Settings.bundle */,
+ D917FD131C6D115D00FC8841 /* AppDelegate.swift */,
+ D917FD151C6D115D00FC8841 /* ViewController.swift */,
+ D917FD171C6D115D00FC8841 /* Main.storyboard */,
+ D917FD1A1C6D115D00FC8841 /* Assets.xcassets */,
+ D917FD1C1C6D115D00FC8841 /* LaunchScreen.storyboard */,
+ D917FD1F1C6D115D00FC8841 /* Info.plist */,
+ );
+ path = ScratchBlockly;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ D917FD0F1C6D115D00FC8841 /* ScratchBlockly */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D917FD221C6D115D00FC8841 /* Build configuration list for PBXNativeTarget "ScratchBlockly" */;
+ buildPhases = (
+ D917FD0C1C6D115D00FC8841 /* Sources */,
+ D917FD0D1C6D115D00FC8841 /* Frameworks */,
+ D917FD0E1C6D115D00FC8841 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ScratchBlockly;
+ productName = ScratchBlockly;
+ productReference = D917FD101C6D115D00FC8841 /* ScratchBlockly.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D917FD081C6D115D00FC8841 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0720;
+ ORGANIZATIONNAME = "MIT Media Lab";
+ TargetAttributes = {
+ D917FD0F1C6D115D00FC8841 = {
+ CreatedOnToolsVersion = 7.2.1;
+ };
+ };
+ };
+ buildConfigurationList = D917FD0B1C6D115D00FC8841 /* Build configuration list for PBXProject "ScratchBlockly" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = D917FD071C6D115D00FC8841;
+ productRefGroup = D917FD111C6D115D00FC8841 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D917FD0F1C6D115D00FC8841 /* ScratchBlockly */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D917FD0E1C6D115D00FC8841 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D917FD751C6D185000FC8841 /* playgrounds in Resources */,
+ D917FD671C6D175700FC8841 /* blockly_compressed_horizontal.js in Resources */,
+ D917FD681C6D175700FC8841 /* blockly_compressed_vertical.js in Resources */,
+ D917FD691C6D175700FC8841 /* blockly_uncompressed_horizontal.js in Resources */,
+ D917FD6A1C6D175700FC8841 /* blockly_uncompressed_vertical.js in Resources */,
+ D917FD6C1C6D175700FC8841 /* blocks_compressed.js in Resources */,
+ D917FD771C6D18E400FC8841 /* Settings.bundle in Resources */,
+ D917FD6D1C6D175700FC8841 /* blocks_horizontal in Resources */,
+ D917FD701C6D175700FC8841 /* javascript_compressed.js in Resources */,
+ D917FD711C6D175700FC8841 /* media in Resources */,
+ D917FD721C6D175700FC8841 /* msg in Resources */,
+ D917FD1E1C6D115D00FC8841 /* LaunchScreen.storyboard in Resources */,
+ D917FD1B1C6D115D00FC8841 /* Assets.xcassets in Resources */,
+ D917FD191C6D115D00FC8841 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D917FD0C1C6D115D00FC8841 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D917FD161C6D115D00FC8841 /* ViewController.swift in Sources */,
+ D917FD141C6D115D00FC8841 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ D917FD171C6D115D00FC8841 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D917FD181C6D115D00FC8841 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ D917FD1C1C6D115D00FC8841 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D917FD1D1C6D115D00FC8841 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ D917FD201C6D115D00FC8841 /* 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;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = 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_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;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ D917FD211C6D115D00FC8841 /* 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;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ 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;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ D917FD231C6D115D00FC8841 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = ScratchBlockly/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = edu.mit.scratch.ScratchBlockly;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ D917FD241C6D115D00FC8841 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = ScratchBlockly/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = edu.mit.scratch.ScratchBlockly;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D917FD0B1C6D115D00FC8841 /* Build configuration list for PBXProject "ScratchBlockly" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D917FD201C6D115D00FC8841 /* Debug */,
+ D917FD211C6D115D00FC8841 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ D917FD221C6D115D00FC8841 /* Build configuration list for PBXNativeTarget "ScratchBlockly" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D917FD231C6D115D00FC8841 /* Debug */,
+ D917FD241C6D115D00FC8841 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D917FD081C6D115D00FC8841 /* Project object */;
+}
diff --git a/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000..5cb147ecc7
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/AppDelegate.swift b/wrapper/ScratchBlockly/ScratchBlockly/AppDelegate.swift
new file mode 100644
index 0000000000..f70ff9aa21
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/AppDelegate.swift
@@ -0,0 +1,38 @@
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Assets.xcassets/AppIcon.appiconset/Contents.json b/wrapper/ScratchBlockly/ScratchBlockly/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..eeea76c2db
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,73 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/LaunchScreen.storyboard b/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000000..2e721e1833
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/Main.storyboard b/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/Main.storyboard
new file mode 100644
index 0000000000..147a764abd
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Info.plist b/wrapper/ScratchBlockly/ScratchBlockly/Info.plist
new file mode 100644
index 0000000000..2dd8f6f54c
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/Info.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UIRequiresFullScreen
+
+ UIStatusBarHidden
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/Root.plist b/wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/Root.plist
new file mode 100644
index 0000000000..1df8053d6e
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/Root.plist
@@ -0,0 +1,29 @@
+
+
+
+
+ StringsTable
+ Root
+ PreferenceSpecifiers
+
+
+ Type
+ PSTextFieldSpecifier
+ Title
+ Source
+ Key
+ source_preference
+ DefaultValue
+
+ IsSecure
+
+ KeyboardType
+ URL
+ AutocapitalizationType
+ None
+ AutocorrectionType
+ No
+
+
+
+
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/en.lproj/Root.strings b/wrapper/ScratchBlockly/ScratchBlockly/Settings.bundle/en.lproj/Root.strings
new file mode 100644
index 0000000000000000000000000000000000000000..b0e3e6f635477404d2a8c0382fd96760699fa56b
GIT binary patch
literal 410
zcmaiwOA5k35JYS3DTXXX^Z??*Gw20EGSNWHh>40GUVRm!3lU_PPghr0SI_gY&{RQd
zcBfjcc4`!dsMl#kI^v4AGc(>-?Umr0*Ms+CO$}z9Bbfr+HBlv)m4j|noly-iPGl;!
z?-q6(YYVia4$3u$w;dvD{&wSj)=Ik2qomS~tPt>&(9OAP-9hZ50Bd2mXFqTgX9>fu
u8`!rG`qnvyGSxy8R;CSA{sqsRky)|7(WPGf9ZCoQ
literal 0
HcmV?d00001
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift b/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
new file mode 100644
index 0000000000..88e9a18cb4
--- /dev/null
+++ b/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
@@ -0,0 +1,33 @@
+import UIKit
+import WebKit
+
+class ViewController: UIViewController {
+ var webview : WKWebView?
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ self.webview = WKWebView()
+ self.view = self.webview
+
+ // If a URL is provided in the app settings, put the WebView there
+ // Otherwise, put it at the app bundle's www index
+ let defaults = NSUserDefaults.standardUserDefaults()
+ let wwwSource = defaults.stringForKey("source_preference")
+ let bundleSource = NSBundle.mainBundle().pathForResource("horizontal_playground", ofType: "html", inDirectory: "playgrounds")
+
+ let url = (wwwSource != nil && wwwSource!.characters.count > 0) ? NSURL(string:wwwSource!) : NSURL.fileURLWithPath(bundleSource!)
+ let req = NSURLRequest(URL:url!)
+ webview!.loadRequest(req)
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+ override func prefersStatusBarHidden() -> Bool {
+ return true
+ }
+}
+
diff --git a/wrapper/playgrounds/horizontal_playground.html b/wrapper/playgrounds/horizontal_playground.html
new file mode 100644
index 0000000000..22132d9147
--- /dev/null
+++ b/wrapper/playgrounds/horizontal_playground.html
@@ -0,0 +1,143 @@
+
+
+
+
+Horizontal Blockly Playground Compressed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+
+
+
+ Horizontal blocks compressed!
+
+ Show
+ - Hide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vertical playground
+
+
diff --git a/wrapper/playgrounds/vertical_playground.html b/wrapper/playgrounds/vertical_playground.html
new file mode 100644
index 0000000000..63f448b330
--- /dev/null
+++ b/wrapper/playgrounds/vertical_playground.html
@@ -0,0 +1,143 @@
+
+
+
+
+Vertical Blockly Playground Compressed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+
+
+
+ Vertical blocks compressed!
+
+ Show
+ - Hide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Horizontal playground
+
+
From 28a073057b2dde36d457a82a0f793562934659c6 Mon Sep 17 00:00:00 2001
From: Tim Mickel
Date: Fri, 12 Feb 2016 13:10:24 -0500
Subject: [PATCH 2/4] Updating compressed playground filenames
---
wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift | 2 +-
...al_playground.html => horizontal_playground_compressed.html} | 2 +-
...ical_playground.html => vertical_playground_compressed.html} | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
rename wrapper/playgrounds/{horizontal_playground.html => horizontal_playground_compressed.html} (97%)
rename wrapper/playgrounds/{vertical_playground.html => vertical_playground_compressed.html} (97%)
diff --git a/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift b/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
index 88e9a18cb4..4cd34499f3 100644
--- a/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
+++ b/wrapper/ScratchBlockly/ScratchBlockly/ViewController.swift
@@ -14,7 +14,7 @@ class ViewController: UIViewController {
// Otherwise, put it at the app bundle's www index
let defaults = NSUserDefaults.standardUserDefaults()
let wwwSource = defaults.stringForKey("source_preference")
- let bundleSource = NSBundle.mainBundle().pathForResource("horizontal_playground", ofType: "html", inDirectory: "playgrounds")
+ let bundleSource = NSBundle.mainBundle().pathForResource("horizontal_playground_compressed", ofType: "html", inDirectory: "playgrounds")
let url = (wwwSource != nil && wwwSource!.characters.count > 0) ? NSURL(string:wwwSource!) : NSURL.fileURLWithPath(bundleSource!)
let req = NSURLRequest(URL:url!)
diff --git a/wrapper/playgrounds/horizontal_playground.html b/wrapper/playgrounds/horizontal_playground_compressed.html
similarity index 97%
rename from wrapper/playgrounds/horizontal_playground.html
rename to wrapper/playgrounds/horizontal_playground_compressed.html
index 22132d9147..d03fb4b868 100644
--- a/wrapper/playgrounds/horizontal_playground.html
+++ b/wrapper/playgrounds/horizontal_playground_compressed.html
@@ -138,6 +138,6 @@ Horizontal blocks compressed!
- Vertical playground
+ Vertical playground