diff --git a/Alpha.jpg b/Alpha.jpg new file mode 100644 index 0000000..841ab83 Binary files /dev/null and b/Alpha.jpg differ diff --git a/Alpha/Alpha.xcodeproj/project.pbxproj b/Alpha/Alpha.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2975f51 --- /dev/null +++ b/Alpha/Alpha.xcodeproj/project.pbxproj @@ -0,0 +1,304 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4DDC7350166AC3FD00F34A88 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DDC734F166AC3FD00F34A88 /* Cocoa.framework */; }; + 4DDC735A166AC3FD00F34A88 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4DDC7358166AC3FD00F34A88 /* InfoPlist.strings */; }; + 4DDC735C166AC3FD00F34A88 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DDC735B166AC3FD00F34A88 /* main.m */; }; + 4DDC7360166AC3FD00F34A88 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4DDC735E166AC3FD00F34A88 /* Credits.rtf */; }; + 4DDC7363166AC3FD00F34A88 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DDC7362166AC3FD00F34A88 /* AppDelegate.m */; }; + 4DDC7366166AC3FD00F34A88 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4DDC7364166AC3FD00F34A88 /* MainMenu.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 4DDC734B166AC3FD00F34A88 /* Alpha.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Alpha.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4DDC734F166AC3FD00F34A88 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 4DDC7352166AC3FD00F34A88 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 4DDC7353166AC3FD00F34A88 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 4DDC7354166AC3FD00F34A88 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 4DDC7357166AC3FD00F34A88 /* Alpha-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Alpha-Info.plist"; sourceTree = ""; }; + 4DDC7359166AC3FD00F34A88 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 4DDC735B166AC3FD00F34A88 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 4DDC735D166AC3FD00F34A88 /* Alpha-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Alpha-Prefix.pch"; sourceTree = ""; }; + 4DDC735F166AC3FD00F34A88 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 4DDC7361166AC3FD00F34A88 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 4DDC7362166AC3FD00F34A88 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 4DDC7365166AC3FD00F34A88 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4DDC7348166AC3FD00F34A88 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4DDC7350166AC3FD00F34A88 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4DDC7340166AC3FD00F34A88 = { + isa = PBXGroup; + children = ( + 4DDC7355166AC3FD00F34A88 /* Alpha */, + 4DDC734E166AC3FD00F34A88 /* Frameworks */, + 4DDC734C166AC3FD00F34A88 /* Products */, + ); + sourceTree = ""; + }; + 4DDC734C166AC3FD00F34A88 /* Products */ = { + isa = PBXGroup; + children = ( + 4DDC734B166AC3FD00F34A88 /* Alpha.app */, + ); + name = Products; + sourceTree = ""; + }; + 4DDC734E166AC3FD00F34A88 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4DDC734F166AC3FD00F34A88 /* Cocoa.framework */, + 4DDC7351166AC3FD00F34A88 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4DDC7351166AC3FD00F34A88 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 4DDC7352166AC3FD00F34A88 /* AppKit.framework */, + 4DDC7353166AC3FD00F34A88 /* CoreData.framework */, + 4DDC7354166AC3FD00F34A88 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 4DDC7355166AC3FD00F34A88 /* Alpha */ = { + isa = PBXGroup; + children = ( + 4DDC7361166AC3FD00F34A88 /* AppDelegate.h */, + 4DDC7362166AC3FD00F34A88 /* AppDelegate.m */, + 4DDC7364166AC3FD00F34A88 /* MainMenu.xib */, + 4DDC7356166AC3FD00F34A88 /* Supporting Files */, + ); + path = Alpha; + sourceTree = ""; + }; + 4DDC7356166AC3FD00F34A88 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 4DDC7357166AC3FD00F34A88 /* Alpha-Info.plist */, + 4DDC7358166AC3FD00F34A88 /* InfoPlist.strings */, + 4DDC735B166AC3FD00F34A88 /* main.m */, + 4DDC735D166AC3FD00F34A88 /* Alpha-Prefix.pch */, + 4DDC735E166AC3FD00F34A88 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4DDC734A166AC3FD00F34A88 /* Alpha */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4DDC7369166AC3FD00F34A88 /* Build configuration list for PBXNativeTarget "Alpha" */; + buildPhases = ( + 4DDC7347166AC3FD00F34A88 /* Sources */, + 4DDC7348166AC3FD00F34A88 /* Frameworks */, + 4DDC7349166AC3FD00F34A88 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Alpha; + productName = Alpha; + productReference = 4DDC734B166AC3FD00F34A88 /* Alpha.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4DDC7342166AC3FD00F34A88 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = Eraser; + }; + buildConfigurationList = 4DDC7345166AC3FD00F34A88 /* Build configuration list for PBXProject "Alpha" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 4DDC7340166AC3FD00F34A88; + productRefGroup = 4DDC734C166AC3FD00F34A88 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4DDC734A166AC3FD00F34A88 /* Alpha */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4DDC7349166AC3FD00F34A88 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4DDC735A166AC3FD00F34A88 /* InfoPlist.strings in Resources */, + 4DDC7360166AC3FD00F34A88 /* Credits.rtf in Resources */, + 4DDC7366166AC3FD00F34A88 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4DDC7347166AC3FD00F34A88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4DDC735C166AC3FD00F34A88 /* main.m in Sources */, + 4DDC7363166AC3FD00F34A88 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4DDC7358166AC3FD00F34A88 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 4DDC7359166AC3FD00F34A88 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 4DDC735E166AC3FD00F34A88 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 4DDC735F166AC3FD00F34A88 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 4DDC7364166AC3FD00F34A88 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 4DDC7365166AC3FD00F34A88 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4DDC7367166AC3FD00F34A88 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = 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; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 4DDC7368166AC3FD00F34A88 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + 4DDC736A166AC3FD00F34A88 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Alpha/Alpha-Prefix.pch"; + INFOPLIST_FILE = "Alpha/Alpha-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 4DDC736B166AC3FD00F34A88 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Alpha/Alpha-Prefix.pch"; + INFOPLIST_FILE = "Alpha/Alpha-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4DDC7345166AC3FD00F34A88 /* Build configuration list for PBXProject "Alpha" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4DDC7367166AC3FD00F34A88 /* Debug */, + 4DDC7368166AC3FD00F34A88 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4DDC7369166AC3FD00F34A88 /* Build configuration list for PBXNativeTarget "Alpha" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4DDC736A166AC3FD00F34A88 /* Debug */, + 4DDC736B166AC3FD00F34A88 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4DDC7342166AC3FD00F34A88 /* Project object */; +} diff --git a/Alpha/Alpha.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Alpha/Alpha.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b69208d --- /dev/null +++ b/Alpha/Alpha.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Alpha/Alpha.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate b/Alpha/Alpha.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..c41d1d4 Binary files /dev/null and b/Alpha/Alpha.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/Alpha.xcscheme b/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/Alpha.xcscheme new file mode 100644 index 0000000..17e9818 --- /dev/null +++ b/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/Alpha.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist b/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..682ecbf --- /dev/null +++ b/Alpha/Alpha.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Alpha.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 4DDC734A166AC3FD00F34A88 + + primary + + + + + diff --git a/Alpha/Alpha/Alpha-Info.plist b/Alpha/Alpha/Alpha-Info.plist new file mode 100644 index 0000000..fdbac6c --- /dev/null +++ b/Alpha/Alpha/Alpha-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + OmniProjects.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 Eraser. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Alpha/Alpha/Alpha-Prefix.pch b/Alpha/Alpha/Alpha-Prefix.pch new file mode 100644 index 0000000..07a5886 --- /dev/null +++ b/Alpha/Alpha/Alpha-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Alpha' target in the 'Alpha' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Alpha/Alpha/AppDelegate.h b/Alpha/Alpha/AppDelegate.h new file mode 100644 index 0000000..77bc192 --- /dev/null +++ b/Alpha/Alpha/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// Alpha +// +// Created by Eraser on 12/2/12. +// Copyright (c) 2012 Eraser. All rights reserved. +// + +#import + +@interface AppDelegate : NSObject + +@property (assign) IBOutlet NSWindow *window; + +@end diff --git a/Alpha/Alpha/AppDelegate.m b/Alpha/Alpha/AppDelegate.m new file mode 100644 index 0000000..471a06f --- /dev/null +++ b/Alpha/Alpha/AppDelegate.m @@ -0,0 +1,18 @@ +// +// AppDelegate.m +// Alpha +// +// Created by Eraser on 12/2/12. +// Copyright (c) 2012 Eraser. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + // Insert code here to initialize your application +} + +@end diff --git a/Alpha/Alpha/en.lproj/Credits.rtf b/Alpha/Alpha/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/Alpha/Alpha/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/Alpha/Alpha/en.lproj/InfoPlist.strings b/Alpha/Alpha/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Alpha/Alpha/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Alpha/Alpha/en.lproj/MainMenu.xib b/Alpha/Alpha/en.lproj/MainMenu.xib new file mode 100644 index 0000000..8bc8345 --- /dev/null +++ b/Alpha/Alpha/en.lproj/MainMenu.xib @@ -0,0 +1,1545 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSCustomObject + NSCustomView + NSMenu + NSMenuItem + NSPopover + NSSearchField + NSSearchFieldCell + NSTextField + NSTextFieldCell + NSViewController + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + Alpha + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Alpha + + + + About Alpha + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Alpha + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + YES + YES + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + Alpha Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + AppDelegate + + + NSFontManager + + + + 268 + + + + 268 + {{444, 9}, {41, 19}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Alpha + + Arial-BoldItalicMT + 13 + 16 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 1 + MSAwLjUgMAA + + + NO + + + + 268 + {{486, 4}, {30, 19}} + + + + _NS:1535 + YES + + 68157504 + 4195328 + Client + + ArialMT + 10 + 16 + + _NS:1535 + + + + 6 + System + controlDarkShadowColor + + 3 + MAA + + + + NO + + + + 268 + {{391, 9}, {58, 19}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Wolfram + + Arial-BoldMT + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{20, 40}, {510, 22}} + + + + _NS:9 + YES + + 342884416 + 268436544 + + + LucidaGrande + 13 + 1044 + + _NS:9 + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + controlTextColor + + + + 0 + 0 + search + + _searchFieldSearch: + + 138690560 + 0 + + 400 + 75 + + + 0 + 0 + clear + + + cancel + + + + + _searchFieldCancel: + + 138690560 + 0 + + 400 + 75 + + 255 + + NO + + + {550, 82} + + + + _NS:9 + NSView + + + + + 0 + 0 + 0.0 + 0.0 + YES + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + showHelp: + + + + 493 + + + + contentViewController + + + + 603 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + 78 + + + + + 77 + + + + + 205 + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 57 + + + + + + + + + + 58 + + + + + 136 + + + + + 149 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 465 + + + + + 466 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 536 + + + + + + 6 + 0 + + 6 + 1 + + 37 + + 1000 + + 3 + 9 + 3 + + + + 4 + 0 + + 4 + 1 + + 4 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 68 + + 1000 + + 3 + 9 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 104 + + 1000 + + 3 + 9 + 3 + + + + 4 + 0 + + 4 + 1 + + 9 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + 537 + + + + + + + + 538 + + + + + 539 + + + + + 540 + + + + + 544 + + + + + 545 + + + + + + 7 + 0 + + 0 + 1 + + 52 + + 1000 + + 3 + 9 + 1 + + + + + + 546 + + + + + 552 + + + + + 554 + + + + + + 8 + 0 + + 0 + 1 + + 19 + + 1000 + + 3 + 9 + 1 + + + + + + 557 + + + + + 561 + + + + + + + + 562 + + + + + 566 + + + + + 569 + + + + + 578 + + + + + 600 + + + + + 601 + + + Popover View Controller + + + 602 + + + + + 621 + + + + + 626 + + + + + 627 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 627 + + + + + AppDelegate + NSObject + + window + NSWindow + + + window + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/Alpha/Alpha/main.m b/Alpha/Alpha/main.m new file mode 100644 index 0000000..e7df24b --- /dev/null +++ b/Alpha/Alpha/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Alpha +// +// Created by Eraser on 12/2/12. +// Copyright (c) 2012 Eraser. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/README.md b/README.md index 630317e..cce0811 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,21 @@ Проект 2. Идея и интерфейс приложения ============= -Придумайте приложение для OS X, разработайте графический интерфейс и сдайте: +Приложение - клиент для WolframAlpha (http://www.wolframalpha.com). +Вызывается нажатием на соответствующую пиктограмму на StatusBar'е (см. Alpha.jpg), +после чего можно вводить свой вопрос в поле поиска. Вопрос может состоять как из ключевых +слов так и из математических выражений (более детально: http://www.wolframalpha.com/examples/) +Приложение после получения и обработки данных от WolframAlpha выводит информацию в том же +окне (см. Alpha.jpg) +Сценарий работы программы: +- обработка вопроса пользователя, формирование и передача запроса на www.wolframalpha.com; +- получение ответа в виде XML документа и его парсинг; +- подгрузка результатов поиска согласно полученному XML документу; +- вывод результатов поиска. +Так как WolframAlpha берет и обрабатывает информацию из разных источников (таких как +Wikipedia.org) и подает ее в сжатом виде, то, приложение (клиент для WolframAlpha), +которое, находится всегда под рукой будет интересно многим людям от школьника и до +пенсионера, которые ищут информацию в Интернете. -1. Подробное описание в README.md или PDF. Описание должно включать: - * Проблему, которую решает приложение - * Аудитория приложения - * Пример сценария использования приложения - * Описание поведения (что происходит при загрузке, что происходит при нажатии на кнопку Х, и так далее). -2. Вся папка с проектом, в которой обязательно должен быть .xib-файл с графическим интерфейсом. - -[Сдать работу](https://u.hexlet.org/courses/4/assignments/6) \ No newline at end of file +Проект 3. iDNA (Просто нехватило времени на проект "Alpha") +============= \ No newline at end of file diff --git a/iDNA3/iDNA.icns b/iDNA3/iDNA.icns new file mode 100644 index 0000000..e3e8c4d Binary files /dev/null and b/iDNA3/iDNA.icns differ diff --git a/iDNA3/iDNA3.xcodeproj/project.pbxproj b/iDNA3/iDNA3.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7904b24 --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.pbxproj @@ -0,0 +1,325 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4D1C5EC4167E6573001365B4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D1C5EC3167E6573001365B4 /* Cocoa.framework */; }; + 4D1C5ECE167E6573001365B4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */; }; + 4D1C5ED0167E6573001365B4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5ECF167E6573001365B4 /* main.m */; }; + 4D1C5ED4167E6574001365B4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED2167E6574001365B4 /* Credits.rtf */; }; + 4D1C5ED7167E6574001365B4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED6167E6574001365B4 /* AppDelegate.m */; }; + 4D1C5EDA167E6574001365B4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D1C5ED8167E6574001365B4 /* MainMenu.xib */; }; + 4D1C5EE4167E8DA3001365B4 /* Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C5EE3167E8DA3001365B4 /* Cell.m */; }; + 4D52D1F21687257C00B579EA /* iDNA.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4D52D1F11687257C00B579EA /* iDNA.icns */; }; + 4DB5AC2916878E640043316A /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DB5AC2816878E640043316A /* PreferencesController.m */; }; + 4DB5AC2D1687BE700043316A /* iDNABar.png in Resources */ = {isa = PBXBuildFile; fileRef = 4DB5AC2C1687BE700043316A /* iDNABar.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 4D1C5EBF167E6573001365B4 /* iDNA3.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iDNA3.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D1C5EC3167E6573001365B4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 4D1C5EC6167E6573001365B4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 4D1C5EC7167E6573001365B4 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 4D1C5EC8167E6573001365B4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 4D1C5ECB167E6573001365B4 /* iDNA3-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iDNA3-Info.plist"; sourceTree = ""; }; + 4D1C5ECD167E6573001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 4D1C5ECF167E6573001365B4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 4D1C5ED1167E6573001365B4 /* iDNA3-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iDNA3-Prefix.pch"; sourceTree = ""; }; + 4D1C5ED3167E6574001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 4D1C5ED5167E6574001365B4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 4D1C5ED6167E6574001365B4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 4D1C5ED9167E6574001365B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 4D1C5EE2167E8DA3001365B4 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; + 4D1C5EE3167E8DA3001365B4 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; + 4D52D1F11687257C00B579EA /* iDNA.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = iDNA.icns; sourceTree = ""; }; + 4DB5AC2716878E640043316A /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = ""; }; + 4DB5AC2816878E640043316A /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = ""; }; + 4DB5AC2C1687BE700043316A /* iDNABar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iDNABar.png; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D1C5EBC167E6573001365B4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5EC4167E6573001365B4 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4D1C5EB4167E6573001365B4 = { + isa = PBXGroup; + children = ( + 4DB5AC2C1687BE700043316A /* iDNABar.png */, + 4D52D1F11687257C00B579EA /* iDNA.icns */, + 4D1C5EC9167E6573001365B4 /* iDNA3 */, + 4D1C5EC2167E6573001365B4 /* Frameworks */, + 4D1C5EC0167E6573001365B4 /* Products */, + ); + sourceTree = ""; + }; + 4D1C5EC0167E6573001365B4 /* Products */ = { + isa = PBXGroup; + children = ( + 4D1C5EBF167E6573001365B4 /* iDNA3.app */, + ); + name = Products; + sourceTree = ""; + }; + 4D1C5EC2167E6573001365B4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4D1C5EC3167E6573001365B4 /* Cocoa.framework */, + 4D1C5EC5167E6573001365B4 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4D1C5EC5167E6573001365B4 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 4D1C5EC6167E6573001365B4 /* AppKit.framework */, + 4D1C5EC7167E6573001365B4 /* CoreData.framework */, + 4D1C5EC8167E6573001365B4 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 4D1C5EC9167E6573001365B4 /* iDNA3 */ = { + isa = PBXGroup; + children = ( + 4D1C5ED5167E6574001365B4 /* AppDelegate.h */, + 4D1C5ED6167E6574001365B4 /* AppDelegate.m */, + 4D1C5EE2167E8DA3001365B4 /* Cell.h */, + 4D1C5EE3167E8DA3001365B4 /* Cell.m */, + 4DB5AC2716878E640043316A /* PreferencesController.h */, + 4DB5AC2816878E640043316A /* PreferencesController.m */, + 4D1C5ED8167E6574001365B4 /* MainMenu.xib */, + 4D1C5ECA167E6573001365B4 /* Supporting Files */, + ); + path = iDNA3; + sourceTree = ""; + }; + 4D1C5ECA167E6573001365B4 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 4D1C5ECB167E6573001365B4 /* iDNA3-Info.plist */, + 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */, + 4D1C5ECF167E6573001365B4 /* main.m */, + 4D1C5ED1167E6573001365B4 /* iDNA3-Prefix.pch */, + 4D1C5ED2167E6574001365B4 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4D1C5EBE167E6573001365B4 /* iDNA3 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4D1C5EDD167E6574001365B4 /* Build configuration list for PBXNativeTarget "iDNA3" */; + buildPhases = ( + 4D1C5EBB167E6573001365B4 /* Sources */, + 4D1C5EBC167E6573001365B4 /* Frameworks */, + 4D1C5EBD167E6573001365B4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iDNA3; + productName = iDNA3; + productReference = 4D1C5EBF167E6573001365B4 /* iDNA3.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4D1C5EB6167E6573001365B4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = Eraser; + }; + buildConfigurationList = 4D1C5EB9167E6573001365B4 /* Build configuration list for PBXProject "iDNA3" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 4D1C5EB4167E6573001365B4; + productRefGroup = 4D1C5EC0167E6573001365B4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4D1C5EBE167E6573001365B4 /* iDNA3 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4D1C5EBD167E6573001365B4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5ECE167E6573001365B4 /* InfoPlist.strings in Resources */, + 4D1C5ED4167E6574001365B4 /* Credits.rtf in Resources */, + 4D1C5EDA167E6574001365B4 /* MainMenu.xib in Resources */, + 4D52D1F21687257C00B579EA /* iDNA.icns in Resources */, + 4DB5AC2D1687BE700043316A /* iDNABar.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4D1C5EBB167E6573001365B4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D1C5ED0167E6573001365B4 /* main.m in Sources */, + 4D1C5ED7167E6574001365B4 /* AppDelegate.m in Sources */, + 4D1C5EE4167E8DA3001365B4 /* Cell.m in Sources */, + 4DB5AC2916878E640043316A /* PreferencesController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4D1C5ECC167E6573001365B4 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ECD167E6573001365B4 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 4D1C5ED2167E6574001365B4 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ED3167E6574001365B4 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 4D1C5ED8167E6574001365B4 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 4D1C5ED9167E6574001365B4 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4D1C5EDB167E6574001365B4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = 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; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 4D1C5EDC167E6574001365B4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + 4D1C5EDE167E6574001365B4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA3/iDNA3-Prefix.pch"; + INFOPLIST_FILE = "iDNA3/iDNA3-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 4D1C5EDF167E6574001365B4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA3/iDNA3-Prefix.pch"; + INFOPLIST_FILE = "iDNA3/iDNA3-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4D1C5EB9167E6573001365B4 /* Build configuration list for PBXProject "iDNA3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D1C5EDB167E6574001365B4 /* Debug */, + 4D1C5EDC167E6574001365B4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4D1C5EDD167E6574001365B4 /* Build configuration list for PBXNativeTarget "iDNA3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D1C5EDE167E6574001365B4 /* Debug */, + 4D1C5EDF167E6574001365B4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4D1C5EB6167E6573001365B4 /* Project object */; +} diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..65970d9 --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..42c1a1f Binary files /dev/null and b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..659c876 --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/project.xcworkspace/xcuserdata/Eraser.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..05301bc --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme new file mode 100644 index 0000000..a6c742c --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/iDNA3.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9f02d9d --- /dev/null +++ b/iDNA3/iDNA3.xcodeproj/xcuserdata/Eraser.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + iDNA3.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 4D1C5EBE167E6573001365B4 + + primary + + + + + diff --git a/iDNA3/iDNA3/AppDelegate.h b/iDNA3/iDNA3/AppDelegate.h new file mode 100644 index 0000000..2203b61 --- /dev/null +++ b/iDNA3/iDNA3/AppDelegate.h @@ -0,0 +1,63 @@ +// +// AppDelegate.h +// iDNA3 +// + +#import +#import "Cell.h" +#import "PreferencesController.h" + +@interface AppDelegate : NSObject +{ + BOOL start; + BOOL done; + NSInteger generation; + NSInteger smallestDistance; + NSMutableArray *population; + NSString *nucleoString; +} + +@property (assign) IBOutlet NSWindow *window; + +@property (weak) IBOutlet NSTextField *currentGeneration; +@property (weak) IBOutlet NSTextField *bestMatch; + +@property (weak) IBOutlet NSLevelIndicator *matchIndicator; +@property (weak) IBOutlet NSLevelIndicatorCell *indicatorCell; + +@property (weak) IBOutlet NSScrollView *viewGoalDNA; +@property (unsafe_unretained) IBOutlet NSTextView *textViewGoalDNA; + +@property (weak) IBOutlet NSButton *startEvolution; +@property (weak) IBOutlet NSButton *pause; +@property (weak) IBOutlet NSButton *loadGoalDNA; + +@property (weak) IBOutlet NSTextField *populationField; +@property (weak) IBOutlet NSTextField *lenthField; +@property (weak) IBOutlet NSTextField *rateField; + +@property (weak) IBOutlet NSSlider *populationSlider; +@property (weak) IBOutlet NSSlider *lenthSlider; +@property (weak) IBOutlet NSSlider *rateSlider; + +@property NSInteger populationSize; +@property NSInteger DNALength; +@property NSInteger mutationRate; +@property Cell *goalDNA; + +- (void)setPopulationSize:(NSInteger)size DNALength:(NSInteger)length andMutationRate:(NSInteger)rate; +- (void)changePopulationnSize:(NSInteger)size orDNAString:(NSString *)string orMutationRate:(NSInteger)rate; +- (void)setSmallestDistance:(NSInteger)distance; +- (void)setGeneration:(NSInteger)gen; + +- (IBAction)startEvolution:(id)sender; +- (IBAction)pause:(id)sender; +- (IBAction)loadGoal:(id)sender; + +- (void)performEvolutionInBackground; +- (void)mainThreadAlert; +- (void)loadAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context; + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context; + +@end diff --git a/iDNA3/iDNA3/AppDelegate.m b/iDNA3/iDNA3/AppDelegate.m new file mode 100644 index 0000000..c70e53d --- /dev/null +++ b/iDNA3/iDNA3/AppDelegate.m @@ -0,0 +1,289 @@ +// +// AppDelegate.m +// iDNA3 +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +@synthesize window; +//NSTextField +@synthesize currentGeneration; +@synthesize bestMatch; +//NSLevelIndicator +@synthesize matchIndicator; +@synthesize indicatorCell; +//NSScrollView +@synthesize viewGoalDNA; +@synthesize textViewGoalDNA; +//NSButton +@synthesize startEvolution; +@synthesize pause; +@synthesize loadGoalDNA; +//NSTextField +@synthesize populationField; +@synthesize lenthField; +@synthesize rateField; +//NSSlider +@synthesize populationSlider; +@synthesize lenthSlider; +@synthesize rateSlider; +// +@synthesize populationSize; +@synthesize DNALength; +@synthesize mutationRate; +@synthesize goalDNA; + + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + + [self setPopulationSize:[PreferencesController preferencesPopulationSize] + DNALength:[[PreferencesController preferencesDNAString] length] + andMutationRate:[PreferencesController preferencesMutateRate]]; + + [self addObserver:self forKeyPath:@"DNALength" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"populationSize" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"mutationRate" options:NSKeyValueObservingOptionNew context:nil]; + + [self pause:self]; // [pause setEnabled: NO]; + [window makeFirstResponder: nil]; // disable focus + + +} + + +- (void)setPopulationSize:(NSInteger)size DNALength:(NSInteger)length andMutationRate:(NSInteger)rate +{ + start = NO; + done = YES; + + size = size >= 4 ? size : 4; + length = length >= 5 ? length : 5; + rate = rate > 0 ? rate : 1; + + [self setValue:[NSNumber numberWithInteger:size] forKey: @"populationSize"]; + [self setValue:[NSNumber numberWithInteger:length] forKey: @"DNALength"]; + [self setValue:[NSNumber numberWithInteger: rate] forKey: @"mutationRate"]; + + population = [NSMutableArray arrayWithCapacity:size]; + + [self setSmallestDistance: DNALength]; + [self setGeneration: 1]; + + goalDNA = [[Cell alloc] initWithDNALength:length]; + + [textViewGoalDNA setString:goalDNA.nucleo]; +} + + +- (void)changePopulationnSize:(NSInteger)size orDNAString:(NSString *)string orMutationRate:(NSInteger)rate +{ + start = NO; + done = YES; + + [self setValue:[NSNumber numberWithInteger:size] forKey: @"populationSize"]; + [self setValue:[NSNumber numberWithInteger:[string length]] forKey: @"DNALength"]; + [self setValue:[NSNumber numberWithInteger: rate] forKey: @"mutationRate"]; + + population = [NSMutableArray arrayWithCapacity:size]; + + [self setSmallestDistance: DNALength]; + [self setGeneration: 1]; + + [goalDNA changeDNAString:string]; + + [textViewGoalDNA setString:goalDNA.nucleo]; +} + + +- (void)setSmallestDistance:(NSInteger)distance +{ + NSInteger percent = (DNALength - distance) *100 / DNALength; + + [bestMatch setStringValue:[NSString stringWithFormat: @"Best individual match - %ld%%", percent]]; + [matchIndicator setIntegerValue: percent]; + smallestDistance = distance; +} + + +- (void)setGeneration:(NSInteger)gen +{ + [currentGeneration setStringValue:[NSString stringWithFormat: @"Generation: %ld", gen]]; + generation = gen; +} + + +- (IBAction)startEvolution:(id)sender +{ + [self performSelectorInBackground:@selector(performEvolutionInBackground) withObject:nil]; +} + + +- (IBAction)pause:(id)sender +{ + start = NO; + + [pause setEnabled: NO]; + [startEvolution setEnabled: YES]; + [loadGoalDNA setEnabled: YES]; + + [populationField setEnabled: YES]; + [lenthField setEnabled: YES]; + [rateField setEnabled: YES]; + + [populationSlider setEnabled: YES]; + [lenthSlider setEnabled: YES]; + [rateSlider setEnabled: YES]; +} + + +- (IBAction)loadGoal:(id)sender +{ + NSString *string = [PreferencesController preferencesDNAString]; + if ([[goalDNA DNAString] length] != [string length]) + { + NSAlert *alert = [[NSAlert alloc] init]; + [alert addButtonWithTitle:@"Proceed"]; + [alert addButtonWithTitle:@"Cancel"]; + [alert setMessageText:@"New DNA has different size!"]; + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:@selector(loadAlert:returnCode:contextInfo:) contextInfo:nil]; + } + else + { + [self changePopulationnSize:[PreferencesController preferencesPopulationSize] + orDNAString:[PreferencesController preferencesDNAString] + orMutationRate:[PreferencesController preferencesMutateRate]]; + } +} + + +- (void)performEvolutionInBackground +{ + start = YES; + + [pause setEnabled: YES]; + [startEvolution setEnabled: NO]; + [loadGoalDNA setEnabled: NO]; + + [populationField setEnabled: NO]; + [lenthField setEnabled: NO]; + [rateField setEnabled: NO]; + + [populationSlider setEnabled: NO]; + [lenthSlider setEnabled: NO]; + [rateSlider setEnabled: NO]; + + if (generation == 1 || done == YES) + { + done = NO; + [self setGeneration:1]; + + for (int i = 0; i < populationSize; i++) population[i] = [[Cell alloc] initWithBaseCell:goalDNA andMutationPercents:mutationRate]; + } + + [self setSmallestDistance:[population[0] humming]]; + + while (start) + { + population = [Cell sort:population]; + + [self setSmallestDistance:[population[0] humming]]; + + if ([population[0] humming] == 0) + { + done = YES; + break; + } + + int i = populationSize / 2; + + do + { + int indexA = arc4random() % (populationSize / 2); + int indexB; + + while ((indexB = arc4random() % (populationSize / 2)) == indexA); + + [population[i] matingWithParrentA:population[indexA] andParrentB:population[indexB]]; + } + while (start && [population[i] hummingDistance:goalDNA] != 0 && ++i < populationSize); + + + if (start) [self setGeneration:++generation]; + } + + start = NO; + + [self performSelectorOnMainThread:@selector(mainThreadAlert) withObject:nil waitUntilDone:NO]; +} + + +- (void)mainThreadAlert +{ + [self pause:self]; + + if (done) + { + NSString *info; + NSAlert *alert = [[NSAlert alloc] init]; + + switch (generation) + { + case 1: info = @"1th"; + break; + + case 2: info = @"2nd"; + break; + + case 3: info = @"3rd"; + break; + + default: info = [NSString stringWithFormat:@"%ldth", generation]; + } + + [alert addButtonWithTitle:@"Ok"]; + [alert setMessageText:[NSString stringWithFormat:@"Total match reached at %@ generation", info]]; + [alert beginSheetModalForWindow:window modalDelegate:self didEndSelector:nil contextInfo:nil]; + } +} + + +- (void)loadAlert:(NSAlert *)alert returnCode:(int)button contextInfo:(void *)context +{ + if (button == NSAlertFirstButtonReturn) // Proceed + { + [self changePopulationnSize:[PreferencesController preferencesPopulationSize] + orDNAString:[PreferencesController preferencesDNAString] + orMutationRate:[PreferencesController preferencesMutateRate]]; + } +} + + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if ([keyPath compare:@"DNALength"] == NSOrderedSame) + { + [goalDNA changeDNALength:DNALength]; + [textViewGoalDNA setString:goalDNA.nucleo]; + } + + done = YES; +} + + +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication +{ + return YES; +} + + +- (void)applicationWillTerminate:(NSNotification *)aNotification +{ + [PreferencesController setPreferencesDNAString:[goalDNA DNAString]]; + [PreferencesController setPreferencesMutateRate:mutationRate]; + [PreferencesController setPreferencesPopulationSize:populationSize]; +} + +@end diff --git a/iDNA3/iDNA3/Cell.h b/iDNA3/iDNA3/Cell.h new file mode 100644 index 0000000..c4204aa --- /dev/null +++ b/iDNA3/iDNA3/Cell.h @@ -0,0 +1,29 @@ +// +// Cell.h +// iDNA3 +// + +#import + +@interface Cell : NSObject +{ + NSInteger previousLength; + +} + +@property NSMutableString *nucleo; +@property int humming; + +- (Cell *)initWithDNALength:(NSInteger)length; +- (Cell *)initWithDNAString:(NSString *)string; +- (Cell *)initWithBaseCell:(Cell *)base andMutationPercents:(int)percents; +- (void)changeDNALength:(NSInteger)length; +- (void)changeDNAString:(NSString *)string; +- (NSString *) DNAString; +- (void)mutateWithBaseCell:(Cell *)base andMutationPercents:(int)percents; +- (void)mutateWithPercents:(int)percents; +- (void)matingWithParrentA:(Cell *)parentA andParrentB:(Cell *)parentB; ++ (NSMutableArray *)sort:(NSMutableArray *)array; +- (int)hummingDistance:(Cell *)base; + +@end diff --git a/iDNA3/iDNA3/Cell.m b/iDNA3/iDNA3/Cell.m new file mode 100644 index 0000000..da95cdc --- /dev/null +++ b/iDNA3/iDNA3/Cell.m @@ -0,0 +1,194 @@ +// +// Cell.m +// iDNA3 +// + +#import "Cell.h" + +@implementation Cell + +@synthesize nucleo; +@synthesize humming; + +char nucleoBase[] = {'A', 'C', 'G', 'T'}; + +- (Cell *)initWithDNALength:(NSInteger)length +{ + if (self = [super init]) + { + previousLength = 0; + + [self changeDNALength:length]; + } + + return self; +} + +- (Cell *)initWithBaseCell:(Cell *)base andMutationPercents:(int)percents +{ + if (self = [super init]) + { + const char *DNAArray = [[base DNAString] UTF8String]; + int DNALength = (int)[[base DNAString] length]; + char temp[DNALength]; + BOOL mut[DNALength]; + BOOL fill; + int i, j; + char n; + + if (percents <= 0) return [NSMutableString stringWithUTF8String:DNAArray]; + + percents = percents > 100 ? 100 : percents; + + if (percents > 50) + { + fill = TRUE; + percents = 100 - percents; + } + else fill = FALSE; + + for (i = 0; i < DNALength; i++) mut[i] = fill; + + i = 0; + + while (i < (int)round(DNALength * percents /100.0)) + { + j = arc4random() % DNALength; + + if (mut[j] == fill) + { + mut[j] = !fill; + i++; + } + } + + for (i = 0; i < DNALength; i++) + { + n = DNAArray[i]; + + if (mut[i]) + { + do + n = nucleoBase[arc4random() % 4]; + while (n == DNAArray[i]); + } + + temp[i] = n; + } + + temp[DNALength] = '\0'; + + nucleo = [NSMutableString stringWithUTF8String:temp]; + humming = [self hummingDistance:base]; + + } + + return self; +} + +- (Cell *)initWithDNAString:(NSString *)string +{ + if (self = [super init]) nucleo = [NSMutableString stringWithString:string]; + + return self; +} + +- (void)changeDNALength:(NSInteger)length +{ + if (previousLength != length) + { + if (previousLength < length) + { + char temp[(unsigned)(length - previousLength)]; + + for (unsigned i = 0; i < length - previousLength; temp[i++] = nucleoBase[arc4random() % 4]) + + temp[(unsigned)(length - previousLength)]='\0'; + + if (previousLength == 0) nucleo = [NSMutableString stringWithUTF8String:temp]; + else [nucleo appendString:[NSMutableString stringWithUTF8String:temp]]; + } + else + { + [nucleo setString:[nucleo substringToIndex:length]]; + } + + previousLength = length; + + } +} + +- (void)changeDNAString:(NSString *)string +{ + [nucleo setString:string]; + +} + +- (NSString *) DNAString +{ + return [self nucleo]; +} + +- (void)mutateWithBaseCell:(Cell *)base andMutationPercents:(int)percents +{ + +} + +- (void)mutateWithPercents:(int)percents +{ + +} + +- (void)matingWithParrentA:(Cell *)parentA andParrentB:(Cell *)parentB +{ + const char *arrayA = [[parentA DNAString] UTF8String]; + const char *arrayB = [[parentB DNAString] UTF8String]; + + int DNALength = (int)[[parentA DNAString] length]; + + char child[DNALength]; + + int matingCase = arc4random() % 3; + + switch (matingCase) + { + case 0: for(int i = 0; i < DNALength; i++) child[i] = i < DNALength / 2 ? arrayA[i] : arrayB[i]; + break; + + case 1: for(int i = 0; i < DNALength; i++) child[i] = i % 2 ? arrayA[i] : arrayB[i]; + break; + + case 2: for(int i = 0; i < DNALength; i++) child[i] = (i > 0.2 * DNALength && i < 0.8 * DNALength) ? arrayB[i] : arrayA[i]; + break; + } + + child[DNALength] = '\0'; + + nucleo = [NSMutableString stringWithUTF8String:child]; +} + ++ (NSMutableArray *)sort:(NSMutableArray *)array +{ + + NSArray *sortedArray; + sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) + { + int first = [(Cell *)a humming]; + int second = [(Cell *)b humming]; + return first > second; + }]; + + return [NSMutableArray arrayWithArray:sortedArray]; +} + +-(int)hummingDistance:(Cell *)base +{ + humming = 0; + NSString *DNA = [base DNAString]; + + for (int i = 0; i < ([nucleo length] <= [DNA length] ? [nucleo length] : [DNA length]); i++) if ([nucleo characterAtIndex:i] != [DNA characterAtIndex:i]) humming++; + + return humming; +} + +@end diff --git a/iDNA3/iDNA3/PreferencesController.h b/iDNA3/iDNA3/PreferencesController.h new file mode 100644 index 0000000..26c10d9 --- /dev/null +++ b/iDNA3/iDNA3/PreferencesController.h @@ -0,0 +1,22 @@ +// +// PreferencesController.h +// iDNA3 +// + +#import + + +#define iDNAstring @"nucleoString" +#define iDNARate @"mutationRate" +#define iDNAPopulation @"populationSize" + +@interface PreferencesController : NSWindowController + ++ (NSString *)preferencesDNAString; ++ (void)setPreferencesDNAString:(NSString *)string; ++ (NSInteger)preferencesMutateRate; ++ (void)setPreferencesMutateRate:(NSInteger)rate; ++ (NSInteger)preferencesPopulationSize; ++ (void)setPreferencesPopulationSize:(NSInteger)size; + +@end diff --git a/iDNA3/iDNA3/PreferencesController.m b/iDNA3/iDNA3/PreferencesController.m new file mode 100644 index 0000000..42ecf35 --- /dev/null +++ b/iDNA3/iDNA3/PreferencesController.m @@ -0,0 +1,75 @@ +// +// PreferencesController.m +// iDNA3 +// + +#import "PreferencesController.h" + +@interface PreferencesController () + +@end + +@implementation PreferencesController + ++ (void)initialize +{ + NSMutableDictionary *defaultsValues = [NSMutableDictionary dictionary]; + NSInteger rate = 20; + NSInteger population = 4000; + NSString *DNA = @"CCAGTCCCGCTGGCATTAATCCATACCGTACCAAAGTTCCCATGGCATTGCGCGCGGACACTGAATACCTGGGCGCTGTAGTTGCTGGACCTTCGTTGTT"; + + [defaultsValues setObject:DNA forKey:iDNAstring]; + [defaultsValues setObject:[NSNumber numberWithInteger:rate] forKey:iDNARate]; + [defaultsValues setObject:[NSNumber numberWithInteger:population] forKey:iDNAPopulation]; + + [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsValues]; +} + ++ (NSString *)preferencesDNAString +{ + return [[NSUserDefaults standardUserDefaults] objectForKey:iDNAstring]; +} + ++ (void)setPreferencesDNAString:(NSString *)string +{ + [[NSUserDefaults standardUserDefaults] setObject:string forKey:iDNAstring]; +} + ++ (NSInteger)preferencesMutateRate +{ + return [[[NSUserDefaults standardUserDefaults] objectForKey:iDNARate] integerValue]; +} + ++ (void)setPreferencesMutateRate:(NSInteger)rate +{ + [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:rate] forKey:iDNARate]; +} + ++ (NSInteger)preferencesPopulationSize +{ + return [[[NSUserDefaults standardUserDefaults] objectForKey:iDNAPopulation] integerValue]; +} + ++ (void)setPreferencesPopulationSize:(NSInteger)size +{ + [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:size] forKey:iDNAPopulation]; +} + +- (id)initWithWindow:(NSWindow *)window +{ + if (self = [super initWithWindow:window]) + { + // Initialization code here. + } + + return self; +} + +- (void)windowDidLoad +{ + [super windowDidLoad]; + + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. +} + +@end diff --git a/iDNA3/iDNA3/en.lproj/Credits.rtf b/iDNA3/iDNA3/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/iDNA3/iDNA3/en.lproj/InfoPlist.strings b/iDNA3/iDNA3/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA3/iDNA3/en.lproj/MainMenu.xib b/iDNA3/iDNA3/en.lproj/MainMenu.xib new file mode 100644 index 0000000..30a1c78 --- /dev/null +++ b/iDNA3/iDNA3/en.lproj/MainMenu.xib @@ -0,0 +1,6047 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSLevelIndicator + NSLevelIndicatorCell + NSMenu + NSMenuItem + NSNumberFormatter + NSScrollView + NSScroller + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSTextView + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA3 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA3 + + + + About iDNA3 + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide iDNA3 + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit iDNA3 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + iDNA3 Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 271 + 2 + {{335, 390}, {500, 420}} + 1954021376 + iDNA + NSWindow + + + {345, 282} + + + 256 + + + + 268 + {{20, 18}, {114, 25}} + + + + _NS:22 + YES + + -2080374784 + 134217728 + Start evolution + + LucidaGrande + 13 + 1044 + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{364, 18}, {116, 25}} + + + + _NS:22 + YES + + -2080374784 + 134217728 + Load goal DNA + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{142, 18}, {59, 25}} + + + + _NS:22 + YES + + -2080374784 + 134217728 + Pause + + _NS:22 + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + 268 + {{17, 378}, {101, 22}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Population size + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{17, 348}, {80, 22}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + DNA Length + + _NS:1535 + + + + + NO + + + + 268 + {{17, 318}, {102, 22}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Mutation rate % + + _NS:1535 + + + + + NO + + + + 268 + {{130, 378}, {71, 22}} + + + + _NS:9 + YES + + -1804599231 + 71337024 + + + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{130, 348}, {71, 22}} + + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{130, 318}, {71, 22}} + + + + _NS:9 + YES + + -1804599231 + 71336960 + + + + + + + + + -∞ + + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + 1 + + + + NO + + + + 268 + {{207, 379}, {275, 21}} + + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 10000 + 4 + 3000 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{207, 349}, {275, 21}} + + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 1000 + 5 + 820.46113742618104 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{207, 319}, {275, 21}} + + + + _NS:9 + YES + + -2080112384 + 32768 + + _NS:9 + + 100 + 1 + 20 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{17, 293}, {466, 17}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Generation: 1 + + LucidaGrande-Bold + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{17, 268}, {466, 17}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Best individual match - 0% + + LucidaGrande + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{20, 244}, {460, 16}} + + + + _NS:9 + YES + + 524288 + 131072 + _NS:9 + + 100 + 100 + 1 + + NO + + + + 12 + + + + 274 + + + + 268 + {{14, 150}, {434, 17}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Goal DNA + + _NS:1535 + + + + + NO + + + + 256 + + + + 2304 + + + + 2322 + {436, 127} + + + + _NS:13 + + + + + + + + + + + + 166 + + + + 436 + 1 + + + 67119173 + 0 + + + + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + 1 + + 6 + {463, 10000000} + + + + {{1, 1}, {436, 127}} + + + + _NS:11 + + + + {4, 5} + + 12582912 + + + + + + TU0AKgAAEAj///8A////qwAAAP8AAAD/AwMD/BYWFtIFBQVuAAAABv///wD///8E6+vrTGhoaLYtLS3p +BAQE/QAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/AAAA/wAAAP8EBATSX19fK9HR0ZciIiLv +AAAA/wAAAP8AAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////CsPDw0CRkZG1FxcX9AAAAP8bGxvr +ICAg8AAAAP8ICAjlFRUVVQAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wrm5uab +FxcX9AAAAP8AAAD/AQEB3wAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///zaXl5fGAAAA/wAAAP8AAABR////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///80mpqaxQAAAP8AAAD/AAAATv///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CuXl5ZYeHh7xAAAA/wAAAP8CAgLXAAAAD////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////EKurq0mOjo63FxcX9AAAAP8bGxvrICAg8AAAAP8ICAjlHh4eXAAAABj///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE1V9fXyvS0tKZICAg8AAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/FBQU1AUFBXEAAAAG////AP///wTr6+tO +ZWVluC4uLuoAAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8AABABAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA +EM4BAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE +AAABFgADAAAAAQAgAAABFwAEAAAAAQAAEAABGgAFAAAAAQAAENYBGwAFAAAAAQAAEN4BHAADAAAAAQAB +AAABKAADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAAEOYAAAAAAAgACAAIAAgSAAAAACAAABIA +AAAAIAAAAAEAAQABAAE + + + + + + + + TU0AKgAABAj///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+qAAAA/////6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+q +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6oAAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8AAA4BAAADAAAAAQAQAAABAQADAAAAAQAQAAABAgADAAAABAAABLYBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQAQ +AAABFwAEAAAAAQAABAABHAADAAAAAQABAAABUgADAAAAAQACAAABUwADAAAABAAABL6HcwAHAAAHqAAA +BMYAAAAAAAgACAAIAAgAAQABAAEAAQAAB6hhcHBsAiAAAG1udHJSR0IgWFlaIAfZAAIAGQALABoAC2Fj +c3BBUFBMAAAAAGFwcGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20AAAF4AAAFbGNw +cnQAAAbkAAAAOHd0cHQAAAccAAAAFHJYWVoAAAcwAAAAFGdYWVoAAAdEAAAAFGJYWVoAAAdYAAAAFHJU +UkMAAAdsAAAADmNoYWQAAAd8AAAALGJUUkMAAAdsAAAADmdUUkMAAAdsAAAADmRlc2MAAAAAAAAAFEdl +bmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAA +ACgAAAF4aHJIUgAAACgAAAGgY2FFUwAAACQAAAHIcHRCUgAAACYAAAHsdWtVQQAAACoAAAISZnJGVQAA +ACgAAAI8emhUVwAAABYAAAJkaXRJVAAAACgAAAJ6bmJOTwAAACYAAAKia29LUgAAABYAAALIY3NDWgAA +ACIAAALeaGVJTAAAAB4AAAMAZGVERQAAACwAAAMeaHVIVQAAACgAAANKc3ZTRQAAACYAAAKiemhDTgAA +ABYAAANyamFKUAAAABoAAAOIcm9STwAAACQAAAOiZWxHUgAAACIAAAPGcHRQTwAAACYAAAPobmxOTAAA +ACgAAAQOZXNFUwAAACYAAAPodGhUSAAAACQAAAQ2dHJUUgAAACIAAARaZmlGSQAAACgAAAR8cGxQTAAA +ACwAAASkcnVSVQAAACIAAATQYXJFRwAAACYAAATyZW5VUwAAACYAAAUYZGFESwAAAC4AAAU+AFYBYQBl +AG8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQENAGsAaQAgAFIARwBC +ACAAcAByAG8AZgBpAGwAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOgAcgBpAGMAUABlAHIAZgBp +AGwAIABSAEcAQgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9BDgEOQAgBD8EQAQ+BEQEMAQ5 +BDsAIABSAEcAQgBQAHIAbwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBH +AEIAIIJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBl +AHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIAZQBj +AG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF3AXcBdkAQQBs +AGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwAdABhAGwA4QBuAG8AcwAg +AFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Blh072TgCCLAAgAFIARwBCACAw1zDt +MNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPA +A8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBs +AGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAg +DhcOMQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBu +ACAAUgBHAEIALQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBp +AGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK +BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABl +AEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJp +Z2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNSAAEAAAAB +Fs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAA +uDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAA +wGw + + + + + + 3 + MCAwAA + + + + 2 + + + + -2147483392 + {{412, 1}, {15, 128}} + + + + _NS:83 + NO + + _doScroller: + 1 + 0.85256409645080566 + 2 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + + + _NS:33 + NO + 1 + + _doScroller: + 1 + 0.94565218687057495 + 2 + + + {{12, 13}, {438, 129}} + + + + _NS:9 + 133650 + + + + 2 + 0.25 + 4 + 1 + + + {{2, 2}, {462, 174}} + + + + _NS:11 + + + {{17, 60}, {466, 178}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Box + + LucidaGrande + 11 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 3 + 0 + 0 + NO + + + {500, 420} + + + + + {{0, 0}, {1920, 1058}} + {345, 304} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + startEvolution: + + + + 699 + + + + pause: + + + + 700 + + + + loadGoal: + + + + 701 + + + + currentGeneration + + + + 702 + + + + bestMatch + + + + 703 + + + + viewGoalDNA + + + + 704 + + + + matchIndicator + + + + 705 + + + + startEvolution + + + + 721 + + + + pause + + + + 722 + + + + loadGoalDNA + + + + 723 + + + + populationField + + + + 724 + + + + lenthField + + + + 725 + + + + rateField + + + + 726 + + + + populationSlider + + + + 727 + + + + lenthSlider + + + + 728 + + + + rateSlider + + + + 729 + + + + indicatorCell + + + + 732 + + + + textViewGoalDNA + + + + 768 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 709 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 788 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 720 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 707 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 786 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 718 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 64 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 130 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 536 + + + + + + + + 537 + + + + + 539 + + + + + 540 + + + + + 542 + + + + + + + + 543 + + + + + 544 + + + + + 545 + + + + + 546 + + + + + + + + 547 + + + + + 548 + + + + + 549 + + + + + 550 + + + + + + + + 551 + + + + + 554 + + + + + + + + 555 + + + + + 559 + + + + + + + + 560 + + + + + 563 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 564 + + + + + + + + 567 + + + + + 568 + + + + + 569 + + + + + 584 + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + + 585 + + + + + 586 + + + + + + + + 588 + + + + + 589 + + + + + + 7 + 0 + + 0 + 1 + + 71 + + 1000 + + 9 + 40 + 1 + + + + + + 590 + + + + + + + + 591 + + + + + 593 + + + + + 596 + + + + + 599 + + + + + 602 + + + + + 603 + + + + + 606 + + + + + 608 + + + + + 609 + + + + + + + + 610 + + + + + 614 + + + + + 615 + + + + + 616 + + + + + 617 + + + + + 618 + + + + + + + + 619 + + + + + 620 + + + + + 621 + + + + + 624 + + + + + 625 + + + + + 626 + + + + + + + + 627 + + + + + 628 + + + + + 629 + + + + + 631 + + + + + 633 + + + + + 634 + + + + + + + + 635 + + + + + 637 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + 643 + + + + + 644 + + + + + + + + 645 + + + + + 646 + + + + + 647 + + + + + 648 + + + + + 649 + + + + + + + + 650 + + + + + 652 + + + + + 653 + + + + + 654 + + + + + 655 + + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 11 + + 1000 + + 9 + 40 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 7 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + + 656 + + + + + 658 + + + + + 659 + + + + + 660 + + + + + 662 + + + + + 663 + + + + + 664 + + + + + 669 + + + + + + + + 670 + + + + + 674 + + + + + 676 + + + + + 679 + + + + + 682 + + + + + + + + + + 683 + + + + + 684 + + + + + 685 + + + + + 686 + + + + + 688 + + + + + 690 + + + + + 691 + + + + + 696 + + + + + 697 + + + + + 698 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 789 + + + + + AppDelegate + NSObject + + id + id + id + + + + loadGoal: + id + + + pause: + id + + + startEvolution: + id + + + + NSTextField + NSTextField + NSLevelIndicatorCell + NSTextField + NSSlider + NSButton + NSLevelIndicator + NSButton + NSTextField + NSSlider + NSTextField + NSSlider + NSButton + NSTextView + NSScrollView + NSWindow + + + + bestMatch + NSTextField + + + currentGeneration + NSTextField + + + indicatorCell + NSLevelIndicatorCell + + + lenthField + NSTextField + + + lenthSlider + NSSlider + + + loadGoalDNA + NSButton + + + matchIndicator + NSLevelIndicator + + + pause + NSButton + + + populationField + NSTextField + + + populationSlider + NSSlider + + + rateField + NSTextField + + + rateSlider + NSSlider + + + startEvolution + NSButton + + + textViewGoalDNA + NSTextView + + + viewGoalDNA + NSScrollView + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/iDNA3/iDNA3/iDNA3-Info.plist b/iDNA3/iDNA3/iDNA3-Info.plist new file mode 100644 index 0000000..1117072 --- /dev/null +++ b/iDNA3/iDNA3/iDNA3-Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + iDNA + CFBundleIdentifier + OmniProjects.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.education + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 Eraser. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/iDNA3/iDNA3/iDNA3-Prefix.pch b/iDNA3/iDNA3/iDNA3-Prefix.pch new file mode 100644 index 0000000..cfa6e41 --- /dev/null +++ b/iDNA3/iDNA3/iDNA3-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'iDNA3' target in the 'iDNA3' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/iDNA3/iDNA3/main.m b/iDNA3/iDNA3/main.m new file mode 100644 index 0000000..1a10712 --- /dev/null +++ b/iDNA3/iDNA3/main.m @@ -0,0 +1,14 @@ +// +// main.m +// iDNA3 +// +// Created by Eraser on 12/16/12. +// Copyright (c) 2012 Eraser. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/iDNA3/iDNABar.png b/iDNA3/iDNABar.png new file mode 100644 index 0000000..1468d3f Binary files /dev/null and b/iDNA3/iDNABar.png differ