From 47e1bf04521dd63ce2755ad74ea410ee9ffc83d9 Mon Sep 17 00:00:00 2001 From: acevest Date: Thu, 30 Apr 2015 22:48:20 +0800 Subject: [PATCH] ... --- learn/swift/.DS_Store | Bin 0 -> 6148 bytes .../contents.xcworkspacedata | 7 + .../xcshareddata/MyPlayground.xccheckout | 41 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7305 bytes .../MyPlayground.playground/section-1.swift | 2 + tools/.DS_Store | Bin 0 -> 6148 bytes tools/AceBox/.DS_Store | Bin 0 -> 6148 bytes tools/AceBox/AceBox.xcodeproj/project.pbxproj | 432 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/AceBox.xccheckout | 41 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 18767 bytes .../Ace.xcuserdatad/xcschemes/AceBox.xcscheme | 112 +++++ .../xcschemes/xcschememanagement.plist | 27 ++ tools/AceBox/AceBox/AppDelegate.swift | 46 ++ .../AceBox/AceBox/Base.lproj/LaunchScreen.xib | 41 ++ .../AceBox/AceBox/Base.lproj/Main.storyboard | 134 ++++++ tools/AceBox/AceBox/FirstViewController.swift | 25 + .../AppIcon.appiconset/AceBoxIcon-76@1x.png | Bin 0 -> 4116 bytes .../AppIcon.appiconset/AceBoxIcon-76@2x.png | Bin 0 -> 19256 bytes .../AppIcon.appiconset/AceBoxIcon@2x.png | Bin 0 -> 7213 bytes .../AppIcon.appiconset/AceBoxIcon@3x.png | Bin 0 -> 17095 bytes .../AppIcon.appiconset/Contents.json | 72 +++ .../first.imageset/Contents.json | 12 + .../Images.xcassets/first.imageset/first.pdf | Bin 0 -> 2465 bytes .../second.imageset/Contents.json | 12 + .../second.imageset/second.pdf | Bin 0 -> 2423 bytes tools/AceBox/AceBox/Info.plist | 57 +++ .../AceBox/AceBox/SecondViewController.swift | 25 + tools/AceBox/AceBoxTests/AceBoxTests.swift | 36 ++ tools/AceBox/AceBoxTests/Info.plist | 24 + tools/comm/dec2hex.py | 13 + 31 files changed, 1166 insertions(+) create mode 100644 learn/swift/.DS_Store create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout create mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 tools/.DS_Store create mode 100644 tools/AceBox/.DS_Store create mode 100644 tools/AceBox/AceBox.xcodeproj/project.pbxproj create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout create mode 100644 tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AceBox.xcscheme create mode 100644 tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 tools/AceBox/AceBox/AppDelegate.swift create mode 100644 tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib create mode 100644 tools/AceBox/AceBox/Base.lproj/Main.storyboard create mode 100644 tools/AceBox/AceBox/FirstViewController.swift create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@2x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@2x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png create mode 100644 tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf create mode 100644 tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json create mode 100644 tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf create mode 100644 tools/AceBox/AceBox/Info.plist create mode 100644 tools/AceBox/AceBox/SecondViewController.swift create mode 100644 tools/AceBox/AceBoxTests/AceBoxTests.swift create mode 100644 tools/AceBox/AceBoxTests/Info.plist create mode 100755 tools/comm/dec2hex.py diff --git a/learn/swift/.DS_Store b/learn/swift/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6ff8adaf05313f183dc84d1017721242953fce99 GIT binary patch literal 6148 zcmeI0y-veG5QJw!ibyncP*BjOLCPCMky9cexzmuN!}y@%`x;)^$;o?dKBMSG%p{IkAT3?RO1PN|Gc=k{knl z(CGS@!AX)_6j~o1d~c6w#4nGwbP#R<2n@Ry<37OrfTTK?R8dk;M;6^ZFr*BNL9-+p zXL8Wxpv%Env>4`tF>_~LC`Ti`%R!qxNs|A_`^x*P|IhLB2_;E#L2y_sikUUte$;E# hPhaA;da!kK*H|m=HUR_wS$NlFqDvKXBakF#!Z+*lHD~|; literal 0 HcmV?d00001 diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata b/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout new file mode 100644 index 0000000..51108a5 --- /dev/null +++ b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 1330DDA2-1B99-4E60-9F3A-B7DE1D7ECB22 + IDESourceControlProjectName + MyPlayground + IDESourceControlProjectOriginsDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + https://github.com/acevest/acecode.git + + IDESourceControlProjectPath + learn/swift/MyPlayground.playground + IDESourceControlProjectRelativeInstallPathDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + ../../.. + + IDESourceControlProjectURL + https://github.com/acevest/acecode.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlWCCName + acecode + + + + diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3b9dccf4c8e5def86e48e57b79dbf41e2e653a4f GIT binary patch literal 7305 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 literal 0 HcmV?d00001 diff --git a/tools/AceBox/.DS_Store b/tools/AceBox/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e25c09b5ad691ba00ec39f5c7ff641b0fb364da6 GIT binary patch literal 6148 zcmeI0&1u6x5QX1!d@$sqV~(jH;0_WYSKtN$l5q$TD?$uDriN7D5?p|rNCzn;yqPum zL15>$kohj7mG-Sh0`1Hb0M?ss4pabU@JJnupwpw5CVBD{0BwzgEpD(yi!`!Oi7599 zcWALf{UiSlD-3u>!sF9=zHC!J_ygVrK>NeB_x8BW@ztYk9fVr|!rExVeSrA^Ni~*KQBqJx7TrBC zOPMVO&5~%I$w8NcE(i0b#cV#P243^CL!lgv#x4i#?m-az=E6@@s{f0xPbdh2e*~w^ qvZ<};j-y(udU~HPs|H&&ca4?eV-qm(pM_V)mFQB%Xas_w5IzCN6FE2l literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox.xcodeproj/project.pbxproj b/tools/AceBox/AceBox.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4d1edc2 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.pbxproj @@ -0,0 +1,432 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 50A4F27B1AF2154100DB7E36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */; }; + 50A4F27D1AF2154100DB7E36 /* FirstViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */; }; + 50A4F27F1AF2154100DB7E36 /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */; }; + 50A4F2821AF2154100DB7E36 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2801AF2154100DB7E36 /* Main.storyboard */; }; + 50A4F2841AF2154100DB7E36 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2831AF2154100DB7E36 /* Images.xcassets */; }; + 50A4F2871AF2154100DB7E36 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */; }; + 50A4F2931AF2154100DB7E36 /* AceBoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 50A4F28D1AF2154100DB7E36 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 50A4F26D1AF2154100DB7E36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 50A4F2741AF2154100DB7E36; + remoteInfo = AceBox; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 50A4F2751AF2154100DB7E36 /* AceBox.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AceBox.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 50A4F2791AF2154100DB7E36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirstViewController.swift; sourceTree = ""; }; + 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = ""; }; + 50A4F2811AF2154100DB7E36 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 50A4F2831AF2154100DB7E36 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 50A4F2861AF2154100DB7E36 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AceBoxTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 50A4F2911AF2154100DB7E36 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AceBoxTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 50A4F2721AF2154100DB7E36 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F2891AF2154100DB7E36 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 50A4F26C1AF2154100DB7E36 = { + isa = PBXGroup; + children = ( + 50A4F2771AF2154100DB7E36 /* AceBox */, + 50A4F28F1AF2154100DB7E36 /* AceBoxTests */, + 50A4F2761AF2154100DB7E36 /* Products */, + ); + sourceTree = ""; + }; + 50A4F2761AF2154100DB7E36 /* Products */ = { + isa = PBXGroup; + children = ( + 50A4F2751AF2154100DB7E36 /* AceBox.app */, + 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 50A4F2771AF2154100DB7E36 /* AceBox */ = { + isa = PBXGroup; + children = ( + 50A4F27A1AF2154100DB7E36 /* AppDelegate.swift */, + 50A4F27C1AF2154100DB7E36 /* FirstViewController.swift */, + 50A4F27E1AF2154100DB7E36 /* SecondViewController.swift */, + 50A4F2801AF2154100DB7E36 /* Main.storyboard */, + 50A4F2831AF2154100DB7E36 /* Images.xcassets */, + 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */, + 50A4F2781AF2154100DB7E36 /* Supporting Files */, + ); + path = AceBox; + sourceTree = ""; + }; + 50A4F2781AF2154100DB7E36 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 50A4F2791AF2154100DB7E36 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 50A4F28F1AF2154100DB7E36 /* AceBoxTests */ = { + isa = PBXGroup; + children = ( + 50A4F2921AF2154100DB7E36 /* AceBoxTests.swift */, + 50A4F2901AF2154100DB7E36 /* Supporting Files */, + ); + path = AceBoxTests; + sourceTree = ""; + }; + 50A4F2901AF2154100DB7E36 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 50A4F2911AF2154100DB7E36 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 50A4F2741AF2154100DB7E36 /* AceBox */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50A4F2961AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBox" */; + buildPhases = ( + 50A4F2711AF2154100DB7E36 /* Sources */, + 50A4F2721AF2154100DB7E36 /* Frameworks */, + 50A4F2731AF2154100DB7E36 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AceBox; + productName = AceBox; + productReference = 50A4F2751AF2154100DB7E36 /* AceBox.app */; + productType = "com.apple.product-type.application"; + }; + 50A4F28B1AF2154100DB7E36 /* AceBoxTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50A4F2991AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBoxTests" */; + buildPhases = ( + 50A4F2881AF2154100DB7E36 /* Sources */, + 50A4F2891AF2154100DB7E36 /* Frameworks */, + 50A4F28A1AF2154100DB7E36 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 50A4F28E1AF2154100DB7E36 /* PBXTargetDependency */, + ); + name = AceBoxTests; + productName = AceBoxTests; + productReference = 50A4F28C1AF2154100DB7E36 /* AceBoxTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 50A4F26D1AF2154100DB7E36 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = Ace; + TargetAttributes = { + 50A4F2741AF2154100DB7E36 = { + CreatedOnToolsVersion = 6.3.1; + }; + 50A4F28B1AF2154100DB7E36 = { + CreatedOnToolsVersion = 6.3.1; + TestTargetID = 50A4F2741AF2154100DB7E36; + }; + }; + }; + buildConfigurationList = 50A4F2701AF2154100DB7E36 /* Build configuration list for PBXProject "AceBox" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 50A4F26C1AF2154100DB7E36; + productRefGroup = 50A4F2761AF2154100DB7E36 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 50A4F2741AF2154100DB7E36 /* AceBox */, + 50A4F28B1AF2154100DB7E36 /* AceBoxTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 50A4F2731AF2154100DB7E36 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F2821AF2154100DB7E36 /* Main.storyboard in Resources */, + 50A4F2871AF2154100DB7E36 /* LaunchScreen.xib in Resources */, + 50A4F2841AF2154100DB7E36 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F28A1AF2154100DB7E36 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 50A4F2711AF2154100DB7E36 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F27F1AF2154100DB7E36 /* SecondViewController.swift in Sources */, + 50A4F27B1AF2154100DB7E36 /* AppDelegate.swift in Sources */, + 50A4F27D1AF2154100DB7E36 /* FirstViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50A4F2881AF2154100DB7E36 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50A4F2931AF2154100DB7E36 /* AceBoxTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 50A4F28E1AF2154100DB7E36 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 50A4F2741AF2154100DB7E36 /* AceBox */; + targetProxy = 50A4F28D1AF2154100DB7E36 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 50A4F2801AF2154100DB7E36 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 50A4F2811AF2154100DB7E36 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 50A4F2851AF2154100DB7E36 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 50A4F2861AF2154100DB7E36 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 50A4F2941AF2154100DB7E36 /* 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-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 50A4F2951AF2154100DB7E36 /* 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 = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 50A4F2971AF2154100DB7E36 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = AceBox/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 50A4F2981AF2154100DB7E36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = AceBox/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 50A4F29A1AF2154100DB7E36 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AceBoxTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AceBox.app/AceBox"; + }; + name = Debug; + }; + 50A4F29B1AF2154100DB7E36 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = AceBoxTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AceBox.app/AceBox"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 50A4F2701AF2154100DB7E36 /* Build configuration list for PBXProject "AceBox" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F2941AF2154100DB7E36 /* Debug */, + 50A4F2951AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 50A4F2961AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBox" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F2971AF2154100DB7E36 /* Debug */, + 50A4F2981AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 50A4F2991AF2154100DB7E36 /* Build configuration list for PBXNativeTarget "AceBoxTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50A4F29A1AF2154100DB7E36 /* Debug */, + 50A4F29B1AF2154100DB7E36 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 50A4F26D1AF2154100DB7E36 /* Project object */; +} diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5765ce0 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout new file mode 100644 index 0000000..97be529 --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcshareddata/AceBox.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + A1372EDB-125D-4A73-9AE8-955FA3D42EAE + IDESourceControlProjectName + project + IDESourceControlProjectOriginsDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + https://github.com/acevest/acecode.git + + IDESourceControlProjectPath + tools/AceBox/AceBox.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + ../../../.. + + IDESourceControlProjectURL + https://github.com/acevest/acecode.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BA634633803B1A00DDD2BCDEF5C645E5844F56E6 + IDESourceControlWCCName + acecode + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/tools/AceBox/AceBox.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..fe879128f2a9d8600de614d95e47d100b789efda GIT binary patch literal 18767 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 literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AceBox.xcscheme b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AceBox.xcscheme new file mode 100644 index 0000000..a6a831d --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AceBox.xcscheme @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..23f7a2e --- /dev/null +++ b/tools/AceBox/AceBox.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + AceBox.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 50A4F2741AF2154100DB7E36 + + primary + + + 50A4F28B1AF2154100DB7E36 + + primary + + + + + diff --git a/tools/AceBox/AceBox/AppDelegate.swift b/tools/AceBox/AceBox/AppDelegate.swift new file mode 100644 index 0000000..5cf83f7 --- /dev/null +++ b/tools/AceBox/AceBox/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +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/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib b/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..8d8db7c --- /dev/null +++ b/tools/AceBox/AceBox/Base.lproj/LaunchScreen.xib @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox/Base.lproj/Main.storyboard b/tools/AceBox/AceBox/Base.lproj/Main.storyboard new file mode 100644 index 0000000..64f32e1 --- /dev/null +++ b/tools/AceBox/AceBox/Base.lproj/Main.storyboard @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/AceBox/AceBox/FirstViewController.swift b/tools/AceBox/AceBox/FirstViewController.swift new file mode 100644 index 0000000..0b17823 --- /dev/null +++ b/tools/AceBox/AceBox/FirstViewController.swift @@ -0,0 +1,25 @@ +// +// FirstViewController.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit + +class FirstViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4b769711daa9c62bbd373e462e8d2fbd982ee2cd GIT binary patch literal 4116 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 Bg|`3z literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@2x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..00859d9a764082cbb920a062325bd2dffffcb48a GIT binary patch literal 19256 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 D5)^(k literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@2x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cab5fe98c4ddbc7bfdaf927c4f9256a14877a5f6 GIT binary patch literal 7213 zcmaKxXE@wZ*Y5v=QAY2g%@8%p7@dqR>L7?@5Mq=;Fh=hTQKO}((IX^8@6kKa6TL)l zK@uWFw45u?`=0ll^X07TT3_yc@87-F{<`Dt8fsHR*dYJ_Q0wYwng9Uc|F6kO0RT|2 zm;DR?0EwfTff@i*CsSTxzyJWi>~u^F03c8R00@x)a1H-0|1b@^F6dT+5n|!=k6wsv3Iw15chY(1OE!?ujucF zcXRN@!2I1@abAl4O1%GZDB`>n|H*J(*nceEE=s&;gS#*dcTWeHjJUM81g|m#27@6z z?Xij`np*#T-P0bc#OvhkjaP)j{rvpI{iMX*Jssf)1qB7Tgd|*2Qq0pHE9Mn|^Tzm# z;k<7C7vz6)G#$L`Je~30&h9waKQ6}B-N##rm-k=L|I~lY>FtdDKS?;R|6a?^-3|Wl z1db4wfd3EsAO4@JXyobafb+)u<0~VO|8f35+JEOD;s3(_uVMac)BmU@np(;bB>aD# zO&Nmf7BmL{c4b{nwR`@cZ`t5y{4$IKUQI3gT;IPpH?=^0o0y|qFlJ2}YfSj2mX?;5 zp0)4ak54L-{|3*0kh`$wZn;=Cd@wqUdNb*)tC(|eda;ui_TsMkqNhz$1DCmi#Ez=) zs_cVElg=W-Vm7gxa_i>^eNdwU*+Q^?5jdR)=S5TZ=TMJQ9K5v6>2$o7%JLA>G^#MM z-6JB_#DvfC${&q+V1XB2mEBRzqOGi3HR*I43zvmjJ9qv6fLc!JNBp{57Z(A4>JwTX zb%Z+CpDB&HhNq`7NvOZ)laI`Qo7vjfaZQel`1_i64d=VC4;EFs6$R>{mdjQN7&+Uo z?05)!({X+NUM1}ENP9Jl?Cj!4hbce3^5^GT?7|7ipM#hLL_c|9lHy~w(6hCxxQhrD ziq=NTmPhWFi+mI>nMk|OL@$31!^O*>p=Uh7$D?vmB9&AF(U=q>N_mgV!h2G=^|J3zgi(>80@mtP3tv=s- zALEd2B|D<@drAE4XaK5Gk3S@Lbf@>Oq^lx{zw1DODo5W`Z~c3H(W5JvlOh>VQj`XX zhqpIbGS5W91T*blNGv!NMj30}=!^RJOR<~0?>>yAf8=l@S*1Cm06nhqH(37nl2^|F zH0bGivdo>W}r9LwkE&EeamL0>8A|AC}}Q2>boT zZ|z&-3Qe-|xs&|)Zeh-L>H}+qgQkrnOhFV21T90zk4kn=O!tFTijF}oYC9|Gv!(Z| zLHvQu-MU;}zOJnrYmFE24>Gt=gs=d

( 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 Pl+(Rqs9B+I6Y;+QWf4Yc literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/AceBoxIcon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3055906dcc5b99232af973ca41a0f51606499f GIT binary patch literal 17095 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 LNkvXXu0mjfat$aV literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9d284b1 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,72 @@ +{ + "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" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AceBoxIcon@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "AceBoxIcon@3x.png", + "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" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AceBoxIcon-76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "AceBoxIcon-76@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json new file mode 100644 index 0000000..33a7451 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/first.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "first.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf b/tools/AceBox/AceBox/Images.xcassets/first.imageset/first.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47d911dea647d55983671ead4d08b6f6b3600715 GIT binary patch literal 2465 zcmai$2~-nz9>*0WV5-uUQ;_8^haeO(laPc2gd&kst^}wQF*_s!gd>4uzzAlG7HffS z5ka?J*rLew5G*Ppmrw*2L;-Q-C?G5zEKpei%gSNj1hTNw_d0Lh%>2Lq-~6tb`TWPk zhvjSuTTzH64bR^^AIqEizP+K5Xbm7B3W*@v*#XjiR2YVZ11f+38<3m@Q5Y%)BJyC**Q6!ouU2oy1>SyNHe%OlU=V}!It@~-1uWZCocH*2k_;ED<`>+rs z0y*BW&O<5pwB{!>`?q**Zu=&QSaB-rxTdkicZMTF#5y)8j*%RDcS_@U^b7ZZW*^tb zY}JkHD1!#~iKvjj90?Wj@dWX#@H2y|P{^xN_d61U0+J6BCO?W%AqFT*Ww23+C{D~n zC4jahIEjQ9D#RoJFP)8-v>XASSG2-MEaGuc3gPk zfWGWtl@FU$K9<|bSPJU}D1hXMw^WE=C?K)WcmWS(yX^hrPM`1}6!rOO*r$ltSG63# z0hg1h_e=aaK^1zs#f=2F%-jigt=!RWbK?;vJ*7ZTrEm0hp?BgjI$?hOr#&0gTv7FeNU*VFWWx5+4n(LRQexJ}y8WV**|r^BXi z+s(%`i&d)#c2(V>q;iD2L8m!$$X}>;*Dy4rtoSq{el$c%k1dDat65!$n;sAT^1$51 z+zQ?uwUhyiw|+G#4o`1Q@0j!`<(5>qAzvuZroZbvsw6e=oh~>n!v-rfZ3bfyjL0d%^blq_oD^! zIom_&&AX#3&(vobv~Il{|HJlHE%(Nb(Oq8@hbDymskd9XGF!X%)aCxpag3mIq}!p2 zNqRxp(HGps4!M2hp35s1%g9U1GUQ2tyX{qdwho$52P*2}ar936 zyvRt0@vU|(gv!~66E%^M*nI5N-}=*{n`ouN#@qF?-6c0H=cCz5wtq=TJ^Mq;WPJT5 zsgeGkgXKySu|Sy5&DZW4w2esK zZhOsGW-hZ>Fq4_eNDKQ@vB0~A3&z1`YBH>p8I`ZAFPn5HmT(dE{?y>`Cy|$_rW~)9 z#1ZZ1S@Tu%KicV)YE*FloS8RLJvqMVZQJGr{c0VISQg=VE79^l8+EMJObC|cl?i~eN4Ni${m5;Hbn-!u`s(B2mOSHj@d9JiwQf6`hsKkF$eEZM#3Xv-aP@DrDl znr+sakDi;+4&SM+PrG7V^QGapuN(*FYWBtVZ;t*Yh;{OPz3o^)cu>B&Y~tgYTHW5S zCcTcnpyZ^f%-pRWetE@pgpk2umJZJ8k9rLEW91#vq+k6XnX+sR=(_K(({*jRhVQjH z&?$$&b+OX5gv3FE^9zQo=?bRdh{ClXKyq_(+KWg~KEN5p2EhswoRbRdtzc9FNS-KP zfb11XK@bEWK*4u82jheofC0%vz?Xm^fK!+af>$vR#?AlVqZ5K5QKGOVLQ9s>yh2_W zUcST33q1_nqLDCkw<0}Qfq64ega^Di-~fOjD;NU4afld806r{dInkxq$}NhL%p9Xo zDPSX^m_V{Jt61{Pykiia06VfWqgZ3iSWGemTSIgTOs0@+sPN|yWC}s1E0(J(6kt&( zke9#)B*!=`TqFka6xaY?NBD6(R1D;0umQ z7%Y!h8YLB@p+pG4G$QoB4bZ4m3KfKcWev8W*#P-05Gpi?3^6{`U@8szP=g>cd5s1$ z;58cA=6C#&scY;gRQiV+Ooi6i!8GeNF<{!-xG)`F8<$RBQwMAV{fl7<5kV9x zmjCx~1PLgBX@JBQi7+64ec6EICJYq;{6XW_ED!|jcyyRShImv490HM1l+2(bs0}5Q k7Xn+;_*5!vPyAz(r7uN-A!1DaFkyy`4bjA8pSLsdH`*hK&;S4c literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json b/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json new file mode 100644 index 0000000..03bd9c9 --- /dev/null +++ b/tools/AceBox/AceBox/Images.xcassets/second.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "second.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf b/tools/AceBox/AceBox/Images.xcassets/second.imageset/second.pdf new file mode 100644 index 0000000000000000000000000000000000000000..401614e288b4b160471c2776bed6f09762af3e1c GIT binary patch literal 2423 zcmai$2~<;88pjn%(9}XlWS8;EA`u7jUiJh8k;o#lB|t^Q%p-X~1QJOe7{N^S6l;N* zQVQB}!zqev2f?BuvI(WYfG8l2ECqxCl>sUvU>RAQ^8zVMGw1Z3cV2S;_q*SAUw$_> z{#Ap0Ycs;3NbO4GSb0S~*P?|N^k)t#RcmlJ-R-a7S!@qt#6);G$_n-v{R zw!3||yKMZj-EQ2lctaJzsj54IT#g8|O`0=@f+XhmEh93@ioZr=kB7+VapmxPeTPf& zGZSH-9h|?MTOquspE9uPZD37`%dF+vEYALn_%oKdB#0Fk^ z2n5Aj1_%Q>Ngc=XKJ=MC8V@IJHM!L>Ycu}WW-HdS_{hy=*NsoT4xYQ+Eqs-c-^>?3 zN1oU1R~B9nT#O5Tk=)-}cId)GEvs}POlpqN8}Cn|B{vIP zdv9J03HWf4a>4OPdh^cM%5(Ku+gkPRCwyz#YP7$xV{FH##Sw{-zw7PRsmwO+{pxCe z=LAMDInnJ>#UZ~SZ0!r{;)UP6_Q2y6muux~WFP*tV87#a|7=QDL$y1@$%fLLeCGRB z1h(|++#J(?f}Q@)rsO|=XIyQc6OilJRC28L@3#)R@O#!TYzr@&fXpKeu9q^qFHLOl zuH)3{=@4bH97DS&O496fm0x_I5y#j6&B7if>5G6zJ+IB)wWTk8ezDYh*Nl~4J4_3m zGyu8=QSr=9=e+1>mkB+m7DDCRqsf}+Xlx;F`Y-)yu}zFpN#ou6x$cr%_6xB*Eyq75 zrk?+{Wh$Y5qr%E!_u=(VY(5&7J`ZW{<@MgWmiw>&oNl+;QRmX^{IIiPsJ(D0XQ@Dv zFUU9U8gx9GZ0dN!T4|@;wMbIhD#?onQn8TxmW$S5=V~$>bl8=ztFPL0CzS{ggZ|X8 zsHf3a>9%~|mZTBm(X554h3}lqOSe=AexI2)Qav@X@on3tMT=?^j97Nm=T4ISzdtac z>Dv&l5S}##{*YXR8HMy+&Ah>5G&gq7Smh-gzC3z9Rl&(lwe?JSo#xljG)&bh&#sy~ zGPk4jhW6}IrUAs^Jdgdu0h?y(@D)y6@V*%$cB#EB>`#P2y&SKignuwv3_s~9DJuinuXh{|jtb2; zP)>e4TWi+)`IPU;7u1|I-P!xq!!NISju0~VoYKL0i!txveyqGhaq8!w$F^L@ZA`QG zH<@OR0?YSC9q6=6$htU%CLwXq;QWFi8dJ?Q98tIy3dmk=ZhH|qDgrp8cpyw|f^$-h zy;Y3L0oex?iIKfh1qg)z1gQ9};$XZ4127-5Fzm6gM$Eu9AF3p#3M2+5%_c6RYX@{ zt4q`+kz8X?1>hkOm{`6#t3Jp`e#a1@7(1~#qdsFuTn+_-X%LeNQ>YXc9X

wh&~y zYPq&TF&2XYRS7&mc8$lPq%xpNfd}w&L=-PXWk6L150KqtD1zYz%csxsSS*!r5ey}& z65s){k5q(@!OD2GQ3@FvL4*LzAVR-ffI+8I=^z5EXfTVy0IFFaQEL#)VE$Tz=`icp z8U#@&8X8PvYiJajrau~ss$oaPOTe$yTwoeQ!w#miHDbUF&A2dwsTr3^(WnDv(*KXf zqOInF$q;c2DpUQN;foVd05brYCzWDA_4@Jv*-H{31^7ne-?<9rZI>%Hv9bCiT?%R+I33+ literal 0 HcmV?d00001 diff --git a/tools/AceBox/AceBox/Info.plist b/tools/AceBox/AceBox/Info.plist new file mode 100644 index 0000000..a8bf772 --- /dev/null +++ b/tools/AceBox/AceBox/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.tencent.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/tools/AceBox/AceBox/SecondViewController.swift b/tools/AceBox/AceBox/SecondViewController.swift new file mode 100644 index 0000000..8b7dd8f --- /dev/null +++ b/tools/AceBox/AceBox/SecondViewController.swift @@ -0,0 +1,25 @@ +// +// SecondViewController.swift +// AceBox +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit + +class SecondViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/tools/AceBox/AceBoxTests/AceBoxTests.swift b/tools/AceBox/AceBoxTests/AceBoxTests.swift new file mode 100644 index 0000000..058e114 --- /dev/null +++ b/tools/AceBox/AceBoxTests/AceBoxTests.swift @@ -0,0 +1,36 @@ +// +// AceBoxTests.swift +// AceBoxTests +// +// Created by Ace on 4/30/15. +// Copyright (c) 2015 Ace. All rights reserved. +// + +import UIKit +import XCTest + +class AceBoxTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + XCTAssert(true, "Pass") + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock() { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/tools/AceBox/AceBoxTests/Info.plist b/tools/AceBox/AceBoxTests/Info.plist new file mode 100644 index 0000000..82c8783 --- /dev/null +++ b/tools/AceBox/AceBoxTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.tencent.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tools/comm/dec2hex.py b/tools/comm/dec2hex.py new file mode 100755 index 0000000..0ce56fc --- /dev/null +++ b/tools/comm/dec2hex.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------ +# File Name: dec2hex.py +# Author: Zhao Yanbai +# Tue Apr 28 15:00:56 2015 +# Description: none +# ------------------------------------------------------------------------ + +while True : + n = raw_input("Input Decimal: ") + hexs = "{0:X}".format(int(n)) + print hexs -- 2.47.0