From 160eed970e78604327daab9bf1a9beff3c999ab3 Mon Sep 17 00:00:00 2001 From: Oleg Bychkov Date: Sun, 6 Jan 2013 21:35:58 +0600 Subject: [PATCH 1/3] =?UTF-8?q?iDNA.=20=D0=A0=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=B2=D1=81=D0=B5=20=D0=B7=D0=B0=D0=BA=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=D0=BC=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20=D1=81=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=BE=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iDNA/.DS_Store | Bin 0 -> 6148 bytes iDNA/iDNA.xcodeproj/project.pbxproj | 356 ++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24929 bytes .../xcdebugger/Expressions.xcexplist | 34 + .../xcdebugger/Breakpoints.xcbkptlist | 122 + .../xcschemes/iDNA.xcscheme | 86 + .../xcschemes/xcschememanagement.plist | 22 + iDNA/iDNA/Cell.h | 29 + iDNA/iDNA/Cell.m | 157 + iDNA/iDNA/Population.h | 24 + iDNA/iDNA/Population.m | 82 + iDNA/iDNA/ResultController.h | 17 + iDNA/iDNA/ResultController.m | 42 + iDNA/iDNA/ResultController.xib | 250 + iDNA/iDNA/en.lproj/Credits.rtf | 29 + iDNA/iDNA/en.lproj/InfoPlist.strings | 2 + iDNA/iDNA/en.lproj/MainMenu.xib | 4562 +++++++++++++++++ iDNA/iDNA/en.lproj/iDNADocument.xib | 2296 +++++++++ iDNA/iDNA/iDNA-Info.plist | 55 + iDNA/iDNA/iDNA-Prefix.pch | 7 + iDNA/iDNA/iDNADocument.h | 44 + iDNA/iDNA/iDNADocument.m | 181 + iDNA/iDNA/main.m | 14 + 24 files changed, 8418 insertions(+) create mode 100644 iDNA/.DS_Store create mode 100644 iDNA/iDNA.xcodeproj/project.pbxproj create mode 100644 iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/xcdebugger/Expressions.xcexplist create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/iDNA.xcscheme create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 iDNA/iDNA/Cell.h create mode 100644 iDNA/iDNA/Cell.m create mode 100644 iDNA/iDNA/Population.h create mode 100644 iDNA/iDNA/Population.m create mode 100644 iDNA/iDNA/ResultController.h create mode 100644 iDNA/iDNA/ResultController.m create mode 100644 iDNA/iDNA/ResultController.xib create mode 100644 iDNA/iDNA/en.lproj/Credits.rtf create mode 100644 iDNA/iDNA/en.lproj/InfoPlist.strings create mode 100644 iDNA/iDNA/en.lproj/MainMenu.xib create mode 100644 iDNA/iDNA/en.lproj/iDNADocument.xib create mode 100644 iDNA/iDNA/iDNA-Info.plist create mode 100644 iDNA/iDNA/iDNA-Prefix.pch create mode 100644 iDNA/iDNA/iDNADocument.h create mode 100644 iDNA/iDNA/iDNADocument.m create mode 100644 iDNA/iDNA/main.m diff --git a/iDNA/.DS_Store b/iDNA/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c43eeaee0675d8062aa125d9db146abd181e9ef4 GIT binary patch literal 6148 zcmeHK%}N6?5dKDcCRT!QF;-P z8A!g#WM($`N;3%nS*)8mFat1UQxsK3M9rg92gP|p6w7gj7u4v`;C3X@Uo`33kMV$v zYn)?y{XL$zlgHKFd|7vG?~8wZ`^mrUa&FeoHSm6Nab;28=5M=ZFaQ32YdxaBTSzbv z3sT`vZ27-ZI1`d5V)B1nO zztZRWsX!9XzZ&lr$NUgiZiRch;(?P;w|Y&UEw>NluDp>Cy^Xr-6~Jx5M$(&v-v ZoUaNFj+#a77EX+dfDsa1Fz^cud;k$mGHn0= literal 0 HcmV?d00001 diff --git a/iDNA/iDNA.xcodeproj/project.pbxproj b/iDNA/iDNA.xcodeproj/project.pbxproj new file mode 100644 index 0000000..39d0496 --- /dev/null +++ b/iDNA/iDNA.xcodeproj/project.pbxproj @@ -0,0 +1,356 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + C3758CB71699CA4900BC8D86 /* ResultController.m in Sources */ = {isa = PBXBuildFile; fileRef = C3758CB51699CA4900BC8D86 /* ResultController.m */; }; + C3758CB81699CA4900BC8D86 /* ResultController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3758CB61699CA4900BC8D86 /* ResultController.xib */; }; + C379CE341698F0D500BA2D06 /* Population.m in Sources */ = {isa = PBXBuildFile; fileRef = C379CE331698F0D500BA2D06 /* Population.m */; }; + C3CD5E3C16977291000FE158 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD5E3B16977291000FE158 /* Cocoa.framework */; }; + C3CD5E4616977291000FE158 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C3CD5E4416977291000FE158 /* InfoPlist.strings */; }; + C3CD5E4816977291000FE158 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C3CD5E4716977291000FE158 /* main.m */; }; + C3CD5E4C16977291000FE158 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = C3CD5E4A16977291000FE158 /* Credits.rtf */; }; + C3CD5E4F16977291000FE158 /* iDNADocument.m in Sources */ = {isa = PBXBuildFile; fileRef = C3CD5E4E16977291000FE158 /* iDNADocument.m */; }; + C3CD5E5216977291000FE158 /* iDNADocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3CD5E5016977291000FE158 /* iDNADocument.xib */; }; + C3CD5E5516977291000FE158 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3CD5E5316977291000FE158 /* MainMenu.xib */; }; + C3CD5E6416977719000FE158 /* Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = C3CD5E6216977719000FE158 /* Cell.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + C3758CB41699CA4800BC8D86 /* ResultController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultController.h; path = iDNA/ResultController.h; sourceTree = ""; }; + C3758CB51699CA4900BC8D86 /* ResultController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultController.m; path = iDNA/ResultController.m; sourceTree = ""; }; + C3758CB61699CA4900BC8D86 /* ResultController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ResultController.xib; path = iDNA/ResultController.xib; sourceTree = ""; }; + C379CE321698F0D500BA2D06 /* Population.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Population.h; sourceTree = ""; }; + C379CE331698F0D500BA2D06 /* Population.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Population.m; sourceTree = ""; }; + C3CD5E3716977291000FE158 /* iDNA.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iDNA.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C3CD5E3B16977291000FE158 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + C3CD5E3E16977291000FE158 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + C3CD5E3F16977291000FE158 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + C3CD5E4016977291000FE158 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + C3CD5E4316977291000FE158 /* iDNA-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iDNA-Info.plist"; sourceTree = ""; }; + C3CD5E4516977291000FE158 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + C3CD5E4716977291000FE158 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + C3CD5E4916977291000FE158 /* iDNA-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iDNA-Prefix.pch"; sourceTree = ""; }; + C3CD5E4B16977291000FE158 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + C3CD5E4D16977291000FE158 /* iDNADocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iDNADocument.h; sourceTree = ""; }; + C3CD5E4E16977291000FE158 /* iDNADocument.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iDNADocument.m; sourceTree = ""; }; + C3CD5E5116977291000FE158 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/iDNADocument.xib; sourceTree = ""; }; + C3CD5E5416977291000FE158 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + C3CD5E6116977719000FE158 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; + C3CD5E6216977719000FE158 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C3CD5E3416977291000FE158 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C3CD5E3C16977291000FE158 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C3758CAE1699BCD600BC8D86 /* ResultController */ = { + isa = PBXGroup; + children = ( + ); + name = ResultController; + sourceTree = ""; + }; + C3CD5E2C16977291000FE158 = { + isa = PBXGroup; + children = ( + C3758CB41699CA4800BC8D86 /* ResultController.h */, + C3758CB51699CA4900BC8D86 /* ResultController.m */, + C3758CB61699CA4900BC8D86 /* ResultController.xib */, + C3CD5E4116977291000FE158 /* iDNA */, + C3CD5E3A16977291000FE158 /* Frameworks */, + C3CD5E3816977291000FE158 /* Products */, + ); + sourceTree = ""; + }; + C3CD5E3816977291000FE158 /* Products */ = { + isa = PBXGroup; + children = ( + C3CD5E3716977291000FE158 /* iDNA.app */, + ); + name = Products; + sourceTree = ""; + }; + C3CD5E3A16977291000FE158 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C3CD5E3B16977291000FE158 /* Cocoa.framework */, + C3CD5E3D16977291000FE158 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + C3CD5E3D16977291000FE158 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + C3CD5E3E16977291000FE158 /* AppKit.framework */, + C3CD5E3F16977291000FE158 /* CoreData.framework */, + C3CD5E4016977291000FE158 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + C3CD5E4116977291000FE158 /* iDNA */ = { + isa = PBXGroup; + children = ( + C3CD5E651697772A000FE158 /* Evolution */, + C3CD5E4D16977291000FE158 /* iDNADocument.h */, + C3CD5E4E16977291000FE158 /* iDNADocument.m */, + C3758CAE1699BCD600BC8D86 /* ResultController */, + C3CD5E5016977291000FE158 /* iDNADocument.xib */, + C3CD5E5316977291000FE158 /* MainMenu.xib */, + C3CD5E4216977291000FE158 /* Supporting Files */, + ); + path = iDNA; + sourceTree = ""; + }; + C3CD5E4216977291000FE158 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C3CD5E4316977291000FE158 /* iDNA-Info.plist */, + C3CD5E4416977291000FE158 /* InfoPlist.strings */, + C3CD5E4716977291000FE158 /* main.m */, + C3CD5E4916977291000FE158 /* iDNA-Prefix.pch */, + C3CD5E4A16977291000FE158 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + C3CD5E651697772A000FE158 /* Evolution */ = { + isa = PBXGroup; + children = ( + C379CE321698F0D500BA2D06 /* Population.h */, + C379CE331698F0D500BA2D06 /* Population.m */, + C3CD5E6116977719000FE158 /* Cell.h */, + C3CD5E6216977719000FE158 /* Cell.m */, + ); + name = Evolution; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C3CD5E3616977291000FE158 /* iDNA */ = { + isa = PBXNativeTarget; + buildConfigurationList = C3CD5E5816977291000FE158 /* Build configuration list for PBXNativeTarget "iDNA" */; + buildPhases = ( + C3CD5E3316977291000FE158 /* Sources */, + C3CD5E3416977291000FE158 /* Frameworks */, + C3CD5E3516977291000FE158 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iDNA; + productName = iDNA; + productReference = C3CD5E3716977291000FE158 /* iDNA.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C3CD5E2E16977291000FE158 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = iDNA; + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "Администратор"; + }; + buildConfigurationList = C3CD5E3116977291000FE158 /* Build configuration list for PBXProject "iDNA" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = C3CD5E2C16977291000FE158; + productRefGroup = C3CD5E3816977291000FE158 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C3CD5E3616977291000FE158 /* iDNA */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C3CD5E3516977291000FE158 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C3CD5E4616977291000FE158 /* InfoPlist.strings in Resources */, + C3CD5E4C16977291000FE158 /* Credits.rtf in Resources */, + C3CD5E5216977291000FE158 /* iDNADocument.xib in Resources */, + C3CD5E5516977291000FE158 /* MainMenu.xib in Resources */, + C3758CB81699CA4900BC8D86 /* ResultController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C3CD5E3316977291000FE158 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C3CD5E4816977291000FE158 /* main.m in Sources */, + C3CD5E4F16977291000FE158 /* iDNADocument.m in Sources */, + C3CD5E6416977719000FE158 /* Cell.m in Sources */, + C379CE341698F0D500BA2D06 /* Population.m in Sources */, + C3758CB71699CA4900BC8D86 /* ResultController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + C3CD5E4416977291000FE158 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + C3CD5E4516977291000FE158 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C3CD5E4A16977291000FE158 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + C3CD5E4B16977291000FE158 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + C3CD5E5016977291000FE158 /* iDNADocument.xib */ = { + isa = PBXVariantGroup; + children = ( + C3CD5E5116977291000FE158 /* en */, + ); + name = iDNADocument.xib; + sourceTree = ""; + }; + C3CD5E5316977291000FE158 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + C3CD5E5416977291000FE158 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C3CD5E5616977291000FE158 /* 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; + }; + C3CD5E5716977291000FE158 /* 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; + }; + C3CD5E5916977291000FE158 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA/iDNA-Prefix.pch"; + INFOPLIST_FILE = "iDNA/iDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C3CD5E5A16977291000FE158 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA/iDNA-Prefix.pch"; + INFOPLIST_FILE = "iDNA/iDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C3CD5E3116977291000FE158 /* Build configuration list for PBXProject "iDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C3CD5E5616977291000FE158 /* Debug */, + C3CD5E5716977291000FE158 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C3CD5E5816977291000FE158 /* Build configuration list for PBXNativeTarget "iDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C3CD5E5916977291000FE158 /* Debug */, + C3CD5E5A16977291000FE158 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C3CD5E2E16977291000FE158 /* Project object */; +} diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2d38afe --- /dev/null +++ b/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7345566c8dad4b330f1c67dd21411d3fd12001af GIT binary patch literal 24929 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 T;c7q-w!flhY=7;aWxf6%)}&D1 literal 0 HcmV?d00001 diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/xcdebugger/Expressions.xcexplist b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/xcdebugger/Expressions.xcexplist new file mode 100644 index 0000000..b39f805 --- /dev/null +++ b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/xcdebugger/Expressions.xcexplist @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..32a5f0e --- /dev/null +++ b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/iDNA.xcscheme b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/iDNA.xcscheme new file mode 100644 index 0000000..b127f5d --- /dev/null +++ b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/iDNA.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..53e1f9b --- /dev/null +++ b/iDNA/iDNA.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + iDNA.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + C3CD5E3616977291000FE158 + + primary + + + + + diff --git a/iDNA/iDNA/Cell.h b/iDNA/iDNA/Cell.h new file mode 100644 index 0000000..85b9124 --- /dev/null +++ b/iDNA/iDNA/Cell.h @@ -0,0 +1,29 @@ +// +// Cell.h +// DNA +// +// Created by Администратор on 10/31/12. +// Copyright (c) 2012 Администратор. All rights reserved. +// + +#import + +#define LETTERS @"ATGC" // возможные значения элемента клетки (использовать uppercase) + +@interface Cell : NSObject + +@property NSMutableArray *DNA; + +- (id) initWithLength: (int) length; +- (id) initWithString: (NSString*) s; + +- (void) changeLength: (int) length; +- (int) hammingDistance: (Cell*) c; // хэммингово расстояние от данной клетки до клетки c ++ (Cell *) Cell1:(Cell*) c1 crossWithCell2:(Cell*) c2; // скрещивание клетки с1 и клетки c2 ++ (NSString*) generateRandomNucletoid; +- (void)mutate: (int) x; // мутирование х% клетки + +- (void) print; +- (NSString*) description; + +@end diff --git a/iDNA/iDNA/Cell.m b/iDNA/iDNA/Cell.m new file mode 100644 index 0000000..87ba527 --- /dev/null +++ b/iDNA/iDNA/Cell.m @@ -0,0 +1,157 @@ +// +// Cell.m +// DNA +// +// Created by Администратор on 10/31/12. +// Copyright (c) 2012 Администратор. All rights reserved. +// + +#import "Cell.h" + +@implementation Cell + +// инициализация клетки случайным образом с заданным размером +-(id) initWithLength: (int) length { + self = [super init]; + + if (self) { + _DNA = [[NSMutableArray alloc] initWithCapacity: length]; + + // random init array from our possible letters + for (int i = 0; i < length; i++) { + [_DNA addObject: [Cell generateRandomNucletoid]]; + } + } + return self; +} + +- (id) initWithString:(NSString *)s { + self = [super init]; + + if (self) { + _DNA = [[NSMutableArray alloc] initWithCapacity: [s length]]; + NSString *c; + // random init array from our possible letters + for (int i = 0; i < [s length]; i++) { + c = [[NSString alloc] initWithFormat:@"%c", [s characterAtIndex:i]]; + [_DNA addObject: c]; + } + } + return self; +} + +// устанавливаем количество нуклеоидов в клетке +- (void) changeLength: (int) length { + if (length > 0) { + int size = (int)[_DNA count]; + if ([_DNA count] < length) { // старая длина меньше новой длины, следовательно добавляем элементы + for (int i = 0; i < (length - size); i++) + [_DNA addObject: [Cell generateRandomNucletoid]]; + } else { + for (int i = 0; i < (size - length); i++) + [_DNA removeLastObject]; + } + } +} + +// хэммингово расстояние междку клетками +-(int) hammingDistance: (Cell *) c { + int distance = 0; + + for (int i = 0; i < [_DNA count]; i++) { + if ([[_DNA objectAtIndex: i] isNotEqualTo: [c.DNA objectAtIndex: i]]) + distance++; + } + return distance; +} + ++ (Cell *) Cell1:(Cell*) c1 crossWithCell2:(Cell*) c2 { + Cell* child = nil; + + if ([c1.DNA count] != [c2.DNA count]) { + // ошибка - клетки не совпадают размером + NSLog(@"Crossing error. Size of cells is not equal."); + } + else { + child = [[Cell alloc] initWithLength: (int)[c1.DNA count]]; + int method = arc4random() % 3; // выбираем один из трех случайных методов скрещивания + if (method == 0) { + // первый метод - 50% + 50% + for (int i = 0; i < [c1.DNA count]; i++) + if (i < [c1.DNA count]/2) + [child.DNA replaceObjectAtIndex:i withObject:[c1.DNA objectAtIndex:i]]; + else + [child.DNA replaceObjectAtIndex:i withObject:[c2.DNA objectAtIndex:i]]; + } else if (method == 1) { + // второй метод - 1 + 1 + ... + 1 + for (int i = 0; i < [c1.DNA count]; i++) + if (i % 2 == 0) + [child.DNA replaceObjectAtIndex:i withObject:[c1.DNA objectAtIndex:i]]; + else + [child.DNA replaceObjectAtIndex:i withObject:[c2.DNA objectAtIndex:i]]; + } else { + // третий метод - 20% + 60% + 20% + for (int i = 0; i < [c1.DNA count]; i++) + if (i <= [c1.DNA count]/5 || i >= 4*[c1.DNA count]/5 ) + [child.DNA replaceObjectAtIndex:i withObject:[c1.DNA objectAtIndex:i]]; + else + [child.DNA replaceObjectAtIndex:i withObject:[c2.DNA objectAtIndex:i]]; + } + } + return child; +} + +// генерирует случ. элемент клетки ++ (NSString*) generateRandomNucletoid { + return [LETTERS substringWithRange: NSMakeRange(arc4random() % LETTERS.length, 1)]; +} + +// Мутация Х% элементов клетки +- (void)mutate: (int) x { + // начальные проверки для входных данных + if (x > 100) x = 100; + if (x < 0) NSLog(@"Inccorect percent for mutation"); + else { // процесс мутации + int shot, count = [self.DNA count] * x / 100; // высчитываем количество клеток для мутации в общем случае + NSString *s; + + // выбираем случайно Х% клеток, заменяем их значение на lowercase (для сохранения буквы, что бы при замене знать на что менять не надо) + for (int i = 0; i < count; i++) { + do { + shot = arc4random() % [self.DNA count]; + s = [self.DNA objectAtIndex: shot]; + } while (islower([s characterAtIndex: 0])); + [self.DNA setObject:[s lowercaseString] atIndexedSubscript: shot]; + } + + // мутируем все клетки с lowercase + for (int i = 0; i < [_DNA count]; i++) + if (islower([[self.DNA objectAtIndex: i] characterAtIndex: 0])) { + do { + s = [Cell generateRandomNucletoid]; + } while ([s isEqual: [[self.DNA objectAtIndex: i] uppercaseString]]); + [self.DNA setObject: s atIndexedSubscript: i]; + } + } +} + +// печатаем клетку в стандартный поток +-(void) print { + NSMutableString *s = [NSMutableString string]; + + for (int i = 0; i < [_DNA count]; i++) + [s appendString:[_DNA objectAtIndex: i]]; + NSLog(@"%@",s); +} + +// описание клетки +-(NSString*) description { + NSMutableString *s = [NSMutableString string]; + + for (int i = 0; i < [_DNA count]; i++) + [s appendString:[_DNA objectAtIndex: i]]; + return s; +} + + +@end diff --git a/iDNA/iDNA/Population.h b/iDNA/iDNA/Population.h new file mode 100644 index 0000000..85af9f7 --- /dev/null +++ b/iDNA/iDNA/Population.h @@ -0,0 +1,24 @@ +// +// Population.h +// iDNA +// +// Created by Администратор on 1/6/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import +#import "Cell.h" + +@interface Population : NSObject { + Cell* goalDNA; +} + +@property NSMutableArray *population; + +- (id) initWithSize:(int)size andDNALength:(int)l andGoalDNA:(Cell*) gDNA; // создание популяции размера size, каждая ДНК состоит из l элементов +- (void) sortToGoalDNA; // сортировка популяции по близости к целевой ДНК +- (void) crossPopulationTopPercent:(int) p; // замена оставшихся (1-p%) особей на результат скрещивания p% лучших особоей +- (void) mutate:(int) x; // мутировать популяцию, каждая ДНК мутируется на х% +- (NSString*) description; + +@end diff --git a/iDNA/iDNA/Population.m b/iDNA/iDNA/Population.m new file mode 100644 index 0000000..f113bb8 --- /dev/null +++ b/iDNA/iDNA/Population.m @@ -0,0 +1,82 @@ +// +// Population.m +// iDNA +// +// Created by Администратор on 1/6/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import "Population.h" + +@implementation Population + +- (id) initWithSize:(int)size andDNALength: (int)l andGoalDNA:(Cell *)gDNA { + if (self = [super init]) { + _population = [[NSMutableArray alloc] initWithCapacity: size]; + goalDNA = gDNA; + for (int i = 0; i < size; i++) { + Cell *c = [[Cell alloc] initWithLength: l]; + [_population addObject: c]; + } + } + return self; +} + +- (void) sortToGoalDNA { + //NSLog(@"Population before sorting: %@", [self description]); + [_population sortUsingComparator:^(Cell *a, Cell *b) { + int d1 = [a hammingDistance: goalDNA]; + int d2 = [b hammingDistance: goalDNA]; + if (d1 > d2) return (NSComparisonResult)NSOrderedDescending; + if (d2 > d1) return (NSComparisonResult)NSOrderedAscending; + return (NSComparisonResult)NSOrderedSame; + }]; + //NSLog(@"Population afther sorting: %@", [self description]); +} + +- (void) crossPopulationTopPercent:(int) p { + if (p < 0 || p > 100) { + NSLog(@"Incorrect percent for population crossing"); + return; + } else { + int cellsCountInBestPart = p * [_population count] / 100; + int cellsCountInWorsePart = (int)[_population count] - cellsCountInBestPart; + + // проверка есть ли в каждой из частей как минимум один член + if (cellsCountInBestPart == 0 || cellsCountInWorsePart == 0) { + NSLog(@"Population is too small for crossing"); + return; + } + + int shot1, shot2; + Cell *c1,*c2; + for (int i = 0; i < cellsCountInWorsePart; i++){ + // берем 2 случайные особи из лучших + shot1 = arc4random() % cellsCountInBestPart; + shot2 = arc4random() % cellsCountInBestPart; + c1 = [_population objectAtIndex:shot1]; + c2 = [_population objectAtIndex:shot2]; + // заменяем особь из худших на результат скрещивания + [_population replaceObjectAtIndex:i + cellsCountInBestPart withObject:[Cell Cell1:c1 crossWithCell2:c2]]; + } + } +} + +- (void) mutate:(int) x { + for (int i = 0; i < [_population count]; i++) { + [[_population objectAtIndex:i] mutate:x]; + } +} + +- (NSString*) description { + NSMutableString *result = [[NSMutableString alloc] init]; + int distance; + + for (int i = 0; i < [_population count]; i++) { + distance = [[_population objectAtIndex:i] hammingDistance:goalDNA]; + [result appendString:[NSString stringWithFormat:@"%i, ", distance]]; + } + return result; +} + +@end diff --git a/iDNA/iDNA/ResultController.h b/iDNA/iDNA/ResultController.h new file mode 100644 index 0000000..d056e48 --- /dev/null +++ b/iDNA/iDNA/ResultController.h @@ -0,0 +1,17 @@ +// +// ResultController.h +// iDNA +// +// Created by Администратор on 1/6/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import + +@interface ResultController : NSWindowController + +@property (weak) IBOutlet NSTextField *generationPassed; + +- (id) initWithGeneration:(int) g; + +@end diff --git a/iDNA/iDNA/ResultController.m b/iDNA/iDNA/ResultController.m new file mode 100644 index 0000000..27c2024 --- /dev/null +++ b/iDNA/iDNA/ResultController.m @@ -0,0 +1,42 @@ +// +// ResultController.m +// iDNA +// +// Created by Администратор on 1/6/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import "ResultController.h" + +@interface ResultController () { + int generationAmount; +} +@end + +@implementation ResultController + +- (id) initWithGeneration:(int) g { + self = [super initWithWindowNibName:@"Result"]; + generationAmount = g; + return self; +} + +- (id)initWithWindow:(NSWindow *)window +{ + self = [super initWithWindow:window]; + if (self) { + // Initialization code here. + } + + return self; +} + +- (void)windowDidLoad +{ + [super windowDidLoad]; + [_generationPassed setStringValue:[NSString stringWithFormat:@"Total amount of generations passed to reach goal DNA - %i", generationAmount]]; + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. +} + + +@end diff --git a/iDNA/iDNA/ResultController.xib b/iDNA/iDNA/ResultController.xib new file mode 100644 index 0000000..c9e6545 --- /dev/null +++ b/iDNA/iDNA/ResultController.xib @@ -0,0 +1,250 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSCustomObject + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + ResultController + + + FirstResponder + + + NSApplication + + + 31 + 2 + {{196, 132}, {323, 196}} + -1535638528 + Window + NSPanel + + + + + 256 + + + + 268 + {{56, 149}, {38, 17}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Label + + LucidaGrande + 13 + 1044 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + {323, 196} + + + _NS:21 + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + YES + + + + + + + window + + + + 14 + + + + generationPassed + + + + 21 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 12 + + + + + + + + 13 + + + + + 3 + 0 + + 3 + 1 + + 30 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 59 + + 1000 + + 3 + 9 + 3 + + + + + + + 17 + + + + + + + + 18 + + + + + 22 + + + + + 23 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 23 + + + 0 + IBCocoaFramework + YES + 3 + YES + + diff --git a/iDNA/iDNA/en.lproj/Credits.rtf b/iDNA/iDNA/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA/iDNA/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/iDNA/iDNA/en.lproj/InfoPlist.strings b/iDNA/iDNA/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA/iDNA/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA/iDNA/en.lproj/MainMenu.xib b/iDNA/iDNA/en.lproj/MainMenu.xib new file mode 100644 index 0000000..b5a73d3 --- /dev/null +++ b/iDNA/iDNA/en.lproj/MainMenu.xib @@ -0,0 +1,4562 @@ + + + + 1080 + 11D50 + 2457 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2457 + + + NSMenu + NSMenuItem + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA + + + + About iDNA + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide iDNA + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit iDNA + 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 + + + + iDNA Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + NSFontManager + + + + + + + terminate: + + + + 448 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + 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: + + + + 371 + + + + openDocument: + + + + 372 + + + + printDocument: + + + + 373 + + + + raiseBaseline: + + + + 425 + + + + lowerBaseline: + + + + 426 + + + + copyFont: + + + + 427 + + + + subscript: + + + + 428 + + + + superscript: + + + + 429 + + + + tightenKerning: + + + + 430 + + + + underline: + + + + 431 + + + + orderFrontColorPanel: + + + + 432 + + + + useAllLigatures: + + + + 433 + + + + loosenKerning: + + + + 434 + + + + pasteFont: + + + + 435 + + + + unscript: + + + + 436 + + + + useStandardKerning: + + + + 437 + + + + useStandardLigatures: + + + + 438 + + + + turnOffLigatures: + + + + 439 + + + + turnOffKerning: + + + + 440 + + + + capitalizeWord: + + + + 454 + + + + lowercaseWord: + + + + 455 + + + + uppercaseWord: + + + + 456 + + + + toggleAutomaticDashSubstitution: + + + + 460 + + + + orderFrontSubstitutionsPanel: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + toggleAutomaticSpellingCorrection: + + + + 466 + + + + performFindPanelAction: + + + + 467 + + + + performFindPanelAction: + + + + 468 + + + + performFindPanelAction: + + + + 469 + + + + pasteAsPlainText: + + + + 471 + + + + showHelp: + + + + 494 + + + + alignCenter: + + + + 517 + + + + pasteRuler: + + + + 518 + + + + toggleRuler: + + + + 519 + + + + alignRight: + + + + 520 + + + + copyRuler: + + + + 521 + + + + alignJustified: + + + + 522 + + + + alignLeft: + + + + 523 + + + + makeBaseWritingDirectionNatural: + + + + 524 + + + + makeBaseWritingDirectionLeftToRight: + + + + 525 + + + + makeBaseWritingDirectionRightToLeft: + + + + 526 + + + + makeTextWritingDirectionNatural: + + + + 527 + + + + makeTextWritingDirectionLeftToRight: + + + + 528 + + + + makeTextWritingDirectionRightToLeft: + + + + 529 + + + + performFindPanelAction: + + + + 533 + + + + addFontTrait: + + + + 420 + + + + addFontTrait: + + + + 421 + + + + modifyFont: + + + + 422 + + + + orderFrontFontPanel: + + + + 423 + + + + modifyFont: + + + + 424 + + + + + + 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 + + + + + 374 + + + + + + + + 375 + + + + + + + + + 376 + + + + + + + + 387 + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + 449 + + + + + + + + 450 + + + + + + + + + + 451 + + + + + 452 + + + + + 453 + + + + + 457 + + + + + 458 + + + + + 459 + + + + + 462 + + + + + 464 + + + + + 465 + + + + + 470 + + + + + 491 + + + + + + + + 492 + + + + + + + + 493 + + + + + 495 + + + + + + + + 496 + + + + + + + + + + + + + + + + + 497 + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + + + + 503 + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + + + + + + + + + + + + 508 + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 532 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 533 + + + + + ABAppCardController + NSWindowController + + id + id + id + id + id + id + id + id + + + + addCardViewField: + id + + + copy: + id + + + cut: + id + + + doDelete: + id + + + find: + id + + + paste: + id + + + saveChanges: + id + + + toggleCardEditingMode: + id + + + + ABCardView + NSButton + NSManagedObjectContext + NSSearchField + NSTextField + NSWindow + + + + mCardView + ABCardView + + + mEditButton + NSButton + + + mManagedObjectContext + NSManagedObjectContext + + + mSearchField + NSSearchField + + + mStatusTextField + NSTextField + + + mWindow + NSWindow + + + + IBProjectSource + ./Classes/ABAppCardController.h + + + + ABCardView + NSView + + id + id + + + + commitAndSave: + id + + + statusImageClicked: + id + + + + NSObjectController + NSImageView + NSView + ABNameFrameView + NSView + NSImage + ABImageView + + + + mBindingsController + NSObjectController + + + mBuddyStatusImage + NSImageView + + + mHeaderView + NSView + + + mNameView + ABNameFrameView + + + mNextKeyView + NSView + + + mUserImage + NSImage + + + mUserImageView + ABImageView + + + + IBProjectSource + ./Classes/ABCardView.h + + + + ABImageView + NSImageView + + id + id + id + id + + + + copy: + id + + + cut: + id + + + delete: + id + + + paste: + id + + + + IBProjectSource + ./Classes/ABImageView.h + + + + DVTBorderedView + DVTLayoutView_ML + + contentView + NSView + + + contentView + + contentView + NSView + + + + IBProjectSource + ./Classes/DVTBorderedView.h + + + + DVTDelayedMenuButton + NSButton + + IBProjectSource + ./Classes/DVTDelayedMenuButton.h + + + + DVTGradientImageButton + NSButton + + IBProjectSource + ./Classes/DVTGradientImageButton.h + + + + DVTImageAndTextCell + NSTextFieldCell + + IBProjectSource + ./Classes/DVTImageAndTextCell.h + + + + DVTImageAndTextColumn + NSTableColumn + + IBProjectSource + ./Classes/DVTImageAndTextColumn.h + + + + DVTLayoutView_ML + NSView + + IBProjectSource + ./Classes/DVTLayoutView_ML.h + + + + DVTOutlineView + NSOutlineView + + IBProjectSource + ./Classes/DVTOutlineView.h + + + + DVTSplitView + NSSplitView + + IBProjectSource + ./Classes/DVTSplitView.h + + + + DVTStackView_ML + DVTLayoutView_ML + + IBProjectSource + ./Classes/DVTStackView_ML.h + + + + DVTTableView + NSTableView + + IBProjectSource + ./Classes/DVTTableView.h + + + + DVTViewController + NSViewController + + IBProjectSource + ./Classes/DVTViewController.h + + + + FirstResponder + + duplicateDocument: + id + + + duplicateDocument: + + duplicateDocument: + id + + + + IBUserSource + + + + + HFController + NSObject + + selectAll: + id + + + selectAll: + + selectAll: + id + + + + IBProjectSource + ./Classes/HFController.h + + + + HFRepresenterTextView + NSView + + selectAll: + id + + + selectAll: + + selectAll: + id + + + + IBProjectSource + ./Classes/HFRepresenterTextView.h + + + + IBEditor + NSObject + + id + id + id + id + id + + + + changeFont: + id + + + performCopy: + id + + + performCut: + id + + + selectAll: + id + + + sizeSelectionToFit: + id + + + + IBProjectSource + ./Classes/IBEditor.h + + + + IDECapsuleListView + DVTStackView_ML + + dataSource + id + + + dataSource + + dataSource + id + + + + IBProjectSource + ./Classes/IDECapsuleListView.h + + + + IDEDMArrayController + NSArrayController + + IBProjectSource + ./Classes/IDEDMArrayController.h + + + + IDEDMEditor + IDEEditor + + DVTBorderedView + NSView + IDEDMEditorSourceListController + DVTSplitView + + + + bottomToolbarBorderView + DVTBorderedView + + + sourceListSplitViewPane + NSView + + + sourceListViewController + IDEDMEditorSourceListController + + + splitView + DVTSplitView + + + + IBProjectSource + ./Classes/IDEDMEditor.h + + + + IDEDMEditorController + IDEViewController + + IBProjectSource + ./Classes/IDEDMEditorController.h + + + + IDEDMEditorSourceListController + IDEDMEditorController + + DVTBorderedView + IDEDMEditor + DVTImageAndTextColumn + DVTOutlineView + NSTreeController + + + + borderedView + DVTBorderedView + + + parentEditor + IDEDMEditor + + + primaryColumn + DVTImageAndTextColumn + + + sourceListOutlineView + DVTOutlineView + + + sourceListTreeController + NSTreeController + + + + IBProjectSource + ./Classes/IDEDMEditorSourceListController.h + + + + IDEDMHighlightImageAndTextCell + DVTImageAndTextCell + + IBProjectSource + ./Classes/IDEDMHighlightImageAndTextCell.h + + + + IDEDataModelBrowserEditor + IDEDMEditorController + + IDEDataModelPropertiesTableController + IDECapsuleListView + NSArrayController + IDEDataModelPropertiesTableController + IDEDataModelEntityContentsEditor + IDEDataModelPropertiesTableController + + + + attributesTableViewController + IDEDataModelPropertiesTableController + + + capsuleView + IDECapsuleListView + + + entityArrayController + NSArrayController + + + fetchedPropertiesTableViewController + IDEDataModelPropertiesTableController + + + parentEditor + IDEDataModelEntityContentsEditor + + + relationshipsTableViewController + IDEDataModelPropertiesTableController + + + + IBProjectSource + ./Classes/IDEDataModelBrowserEditor.h + + + + IDEDataModelConfigurationEditor + IDEDMEditorController + + IDECapsuleListView + IDEDataModelEditor + IDEDataModelConfigurationTableController + + + + capsuleListView + IDECapsuleListView + + + parentEditor + IDEDataModelEditor + + + tableController + IDEDataModelConfigurationTableController + + + + IBProjectSource + ./Classes/IDEDataModelConfigurationEditor.h + + + + IDEDataModelConfigurationTableController + IDEDMEditorController + + NSArrayController + NSArrayController + IDEDataModelConfigurationEditor + XDTableView + + + + configurationsArrayController + NSArrayController + + + entitiesArrayController + NSArrayController + + + parentEditor + IDEDataModelConfigurationEditor + + + tableView + XDTableView + + + + IBProjectSource + ./Classes/IDEDataModelConfigurationTableController.h + + + + IDEDataModelDiagramEditor + IDEDMEditorController + + XDDiagramView + IDEDataModelEntityContentsEditor + + + + diagramView + XDDiagramView + + + parentEditor + IDEDataModelEntityContentsEditor + + + + IBProjectSource + ./Classes/IDEDataModelDiagramEditor.h + + + + IDEDataModelEditor + IDEDMEditor + + DVTDelayedMenuButton + DVTDelayedMenuButton + NSSegmentedControl + IDEDataModelConfigurationEditor + IDEDataModelEntityContentsEditor + IDEDataModelFetchRequestEditor + NSSegmentedControl + NSTabView + + + + addEntityButton + DVTDelayedMenuButton + + + addPropertyButton + DVTDelayedMenuButton + + + browserDiagramSegmentControl + NSSegmentedControl + + + configurationViewController + IDEDataModelConfigurationEditor + + + entityContentsViewController + IDEDataModelEntityContentsEditor + + + fetchRequestViewController + IDEDataModelFetchRequestEditor + + + hierarchySegmentControl + NSSegmentedControl + + + tabView + NSTabView + + + + IBProjectSource + ./Classes/IDEDataModelEditor.h + + + + IDEDataModelEntityContentsEditor + IDEDMEditorController + + IDEDataModelBrowserEditor + IDEDataModelDiagramEditor + IDEDataModelEditor + NSTabView + + + + browserViewController + IDEDataModelBrowserEditor + + + diagramViewController + IDEDataModelDiagramEditor + + + parentEditor + IDEDataModelEditor + + + tabView + NSTabView + + + + IBProjectSource + ./Classes/IDEDataModelEntityContentsEditor.h + + + + IDEDataModelFetchRequestEditor + IDEDMEditorController + + NSArrayController + IDEDataModelEditor + IDECapsuleListView + + + + entityController + NSArrayController + + + parentEditor + IDEDataModelEditor + + + tableView + IDECapsuleListView + + + + IBProjectSource + ./Classes/IDEDataModelFetchRequestEditor.h + + + + IDEDataModelPropertiesTableController + IDEDMEditorController + + IDEDMArrayController + NSTableColumn + NSArrayController + IDEDataModelBrowserEditor + IDEDMHighlightImageAndTextCell + XDTableView + + + + arrayController + IDEDMArrayController + + + entitiesColumn + NSTableColumn + + + entityArrayController + NSArrayController + + + parentEditor + IDEDataModelBrowserEditor + + + propertyNameAndImageCell + IDEDMHighlightImageAndTextCell + + + tableView + XDTableView + + + + IBProjectSource + ./Classes/IDEDataModelPropertiesTableController.h + + + + IDEDocDownloadsTableViewController + NSObject + + NSButtonCell + DVTTableView + IDEDocViewingPrefPaneController + + + + _downloadButtonCell + NSButtonCell + + + _tableView + DVTTableView + + + prefPaneController + IDEDocViewingPrefPaneController + + + + IBProjectSource + ./Classes/IDEDocDownloadsTableViewController.h + + + + IDEDocViewingPrefPaneController + IDEViewController + + id + id + id + id + id + id + id + id + id + id + id + + + + addSubscription: + id + + + checkForAndInstallUpdatesNow: + id + + + deleteDocSet: + id + + + downloadAction: + id + + + minimumFontSizeComboBoxAction: + id + + + minimumFontSizeEnabledAction: + id + + + showHelp: + id + + + showSubscriptionSheet: + id + + + subscriptionCancelAction: + id + + + toggleAutoCheckForAndInstallUpdates: + id + + + toggleDocSetInfo: + id + + + + DVTGradientImageButton + DVTGradientImageButton + DVTGradientImageButton + NSSplitView + NSView + NSView + DVTBorderedView + DVTBorderedView + NSButton + NSTextView + IDEDocDownloadsTableViewController + NSComboBox + NSTextField + NSButton + NSTextField + NSWindow + NSButton + + + + _addButton + DVTGradientImageButton + + + _deleteButton + DVTGradientImageButton + + + _showInfoAreaButton + DVTGradientImageButton + + + _splitView + NSSplitView + + + _splitViewDocSetInfoSubview + NSView + + + _splitViewDocSetsListSubview + NSView + + + borderedViewAroundSplitView + DVTBorderedView + + + borderedViewBelowTable + DVTBorderedView + + + checkAndInstallNowButton + NSButton + + + docSetInfoTextView + NSTextView + + + downloadsTableViewController + IDEDocDownloadsTableViewController + + + minimumFontSizeControl + NSComboBox + + + noUpdatesAvailableMessage + NSTextField + + + showInfoButton + NSButton + + + subscriptionTextField + NSTextField + + + subscriptionWindow + NSWindow + + + validateAddSubscriptionButton + NSButton + + + + IBProjectSource + ./Classes/IDEDocViewingPrefPaneController.h + + + + IDEEditor + IDEViewController + + IBProjectSource + ./Classes/IDEEditor.h + + + + IDEViewController + DVTViewController + + IBProjectSource + ./Classes/IDEViewController.h + + + + IKImageView + + id + id + id + id + + + + copy: + id + + + crop: + id + + + cut: + id + + + paste: + id + + + + IBProjectSource + ./Classes/IKImageView.h + + + + NSDocument + + id + id + id + id + id + id + + + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + IBProjectSource + ./Classes/NSDocument.h + + + + NSDocumentController + + _openRecentDocument: + id + + + _openRecentDocument: + + _openRecentDocument: + id + + + + IBProjectSource + ./Classes/NSDocumentController.h + + + + NSResponder + + _insertFindPattern: + id + + + _insertFindPattern: + + _insertFindPattern: + id + + + + IBProjectSource + ./Classes/NSResponder.h + + + + QLPreviewBubble + NSObject + + id + id + + + + hide: + id + + + show: + id + + + + parentWindow + NSWindow + + + parentWindow + + parentWindow + NSWindow + + + + IBProjectSource + ./Classes/QLPreviewBubble.h + + + + QTMovieView + + id + id + id + id + id + + + + showAll: + id + + + showCustomButton: + id + + + toggleLoops: + id + + + zoomIn: + id + + + zoomOut: + id + + + + IBProjectSource + ./Classes/QTMovieView.h + + + + WebView + + id + id + id + id + + + + reloadFromOrigin: + id + + + resetPageZoom: + id + + + zoomPageIn: + id + + + zoomPageOut: + id + + + + IBProjectSource + ./Classes/WebView.h + + + + XDDiagramView + NSView + + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + _graphLayouterMenuItemAction: + id + + + _zoomPopUpButtonAction: + id + + + alignBottomEdges: + id + + + alignCentersHorizontallyInContainer: + id + + + alignCentersVerticallyInContainer: + id + + + alignHorizontalCenters: + id + + + alignLeftEdges: + id + + + alignRightEdges: + id + + + alignTopEdges: + id + + + alignVerticalCenters: + id + + + bringToFront: + id + + + collapseAllCompartments: + id + + + copy: + id + + + cut: + id + + + delete: + id + + + deleteBackward: + id + + + deleteForward: + id + + + deselectAll: + id + + + diagramZoomIn: + id + + + diagramZoomOut: + id + + + expandAllCompartments: + id + + + flipHorizontally: + id + + + flipVertically: + id + + + layoutGraphicsConcentrically: + id + + + layoutGraphicsHierarchically: + id + + + lock: + id + + + makeSameHeight: + id + + + makeSameWidth: + id + + + moveDown: + id + + + moveDownAndModifySelection: + id + + + moveLeft: + id + + + moveLeftAndModifySelection: + id + + + moveRight: + id + + + moveRightAndModifySelection: + id + + + moveUp: + id + + + moveUpAndModifySelection: + id + + + paste: + id + + + rollDownAllCompartments: + id + + + rollUpAllCompartments: + id + + + selectAll: + id + + + sendToBack: + id + + + sizeToFit: + id + + + toggleGridShown: + id + + + toggleHiddenGraphicsShown: + id + + + togglePageBreaksShown: + id + + + toggleRuler: + id + + + toggleSnapsToGrid: + id + + + unlock: + id + + + + _diagramController + IDEDataModelDiagramEditor + + + _diagramController + + _diagramController + IDEDataModelDiagramEditor + + + + IBProjectSource + ./Classes/XDDiagramView.h + + + + XDTableView + NSTableView + + showAllTableColumns: + id + + + showAllTableColumns: + + showAllTableColumns: + id + + + + IBProjectSource + ./Classes/XDTableView.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/iDNA/iDNA/en.lproj/iDNADocument.xib b/iDNA/iDNA/en.lproj/iDNADocument.xib new file mode 100644 index 0000000..fa36ac6 --- /dev/null +++ b/iDNA/iDNA/en.lproj/iDNADocument.xib @@ -0,0 +1,2296 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSCustomObject + NSNumberFormatter + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + iDNADocument + + + FirstResponder + + + 15 + 2 + {{630, 465}, {507, 357}} + 1886912512 + iDNA + NSWindow + View + + {94, 86} + + + 256 + + + + 268 + {{26, 320}, {93, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Poplation size + + LucidaGrande + 13 + 1044 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{42, 288}, {77, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + DNA length + + _NS:1535 + + + + + NO + + + + 268 + {{17, 256}, {102, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Mutation rate % + + _NS:1535 + + + + + NO + + + + 268 + {{200, 254}, {289, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 0.0 + 50 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{200, 318}, {289, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 10000 + 1 + 1 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{200, 286}, {289, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 1 + 50 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{14, 13}, {132, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Start evolution + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{146, 13}, {77, 32}} + + + + _NS:9 + YES + + 603979776 + 134217728 + Pause + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{359, 13}, {134, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Load goal DNA + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{17, 170}, {297, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Current generation best individual match - 0% + + _NS:1535 + + + + + NO + + + + 268 + {{18, 49}, {469, 103}} + + + + _NS:9 + YES + + -2074083327 + 272629760 + + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{124, 251}, {62, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{124, 283}, {62, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{124, 315}, {62, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{17, 223}, {103, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Generation - 1 + + LucidaGrande-Bold + 13 + 2072 + + _NS:1535 + + + + + NO + + + + 268 + {{17, 198}, {221, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Overall best individual match - 0% + + _NS:1535 + + + + + NO + + + {507, 357} + + + + + {{0, 0}, {1920, 1178}} + {94, 108} + {10000000000000, 10000000000000} + YES + + + NSApplication + + + YES + + + + + + + window + + + + 18 + + + + goalDNAText + + + + 100338 + + + + startEvolutionClicked: + + + + 100353 + + + + pauseClicked: + + + + 100355 + + + + populationSizeText + + + + 100357 + + + + DNALengthText + + + + 100358 + + + + mutationRateText + + + + 100359 + + + + populationSizeSlider + + + + 100360 + + + + DNALengthSlider + + + + 100361 + + + + mutationRateSlider + + + + 100362 + + + + startEvolution + + + + 100363 + + + + pause + + + + 100364 + + + + populationPropertiesText + + + + 100365 + + + + populationPropertiesSlider + + + + 100366 + + + + loadGoalDNA + + + + 100367 + + + + generation + + + + 100384 + + + + overallBestMatch + + + + 100407 + + + + bestMatch + + + + 100408 + + + + loadGoalDNAClicked: + + + + 100410 + + + + delegate + + + + 17 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 100325 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + + NSValidatesImmediately + + + 2 + + + 100321 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 100328 + + + + value: self.goalDNA.description + + + + + + value: self.goalDNA.description + value + self.goalDNA.description + 2 + + + 100337 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 100331 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 100334 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + + NSValidatesImmediately + + + 2 + + + 100322 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + + + + Window + + + 6 + + + + + 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 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 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 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 5 + 22 + 2 + + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 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 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 117 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + + -3 + + + Application + + + 100029 + + + + + + + + 100030 + + + + + 100032 + + + + + 100033 + + + + + + + + 100034 + + + + + 100037 + + + + + + + + 100038 + + + + + 100057 + + + + + + + + 100058 + + + + + 100064 + + + + + + 7 + 0 + + 0 + 1 + + 285 + + 1000 + + 3 + 9 + 1 + + + + + + 100065 + + + + + 100069 + + + + + + + + 100071 + + + + + 100108 + + + + + 100112 + + + + + 100113 + + + + + 100116 + + + + + 100118 + + + + + 100120 + + + + + 100121 + + + + + + + + 100122 + + + + + 100125 + + + + + + + + 100126 + + + + + 100129 + + + + + + + + 100130 + + + + + 100133 + + + + + + + + 100134 + + + + + 100166 + + + + + + 8 + 0 + + 0 + 1 + + 103 + + 1000 + + 3 + 9 + 1 + + + + 7 + 0 + + 0 + 1 + + 469 + + 1000 + + 3 + 9 + 1 + + + + + + 100167 + + + + + 100192 + + + + + 100200 + + + + + 100202 + + + + + 100203 + + + + + 100229 + + + + + 100231 + + + + + 100235 + + + + + 100236 + + + + + 100237 + + + + + 100243 + + + + + 100258 + + + + + + + + 100259 + + + + + + + + 100260 + + + + + 100262 + + + + + 100265 + + + + + 100269 + + + + + + + + 100271 + + + + + + + + 100272 + + + + + 100273 + + + + + 100274 + + + + + 100275 + + + + + 100276 + + + + + 100278 + + + + + + 7 + 0 + + 0 + 1 + + 62 + + 1000 + + 3 + 9 + 1 + + + + + + 100279 + + + + + + + + 100281 + + + + + 100282 + + + + + 100283 + + + + + 100284 + + + + + 100285 + + + + + 100286 + + + + + 100287 + + + + + 100350 + + + + + 100351 + + + + + 100352 + + + + + 100369 + + + + + 100370 + + + + + 100371 + + + + + + + + 100372 + + + + + 100386 + + + + + + + + 100387 + + + + + 100389 + + + + + 100392 + + + + + 100393 + + + + + 100395 + + + + + 100402 + + + + + 100404 + + + + + 100405 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{133, 170}, {507, 413}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 100410 + + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + iDNADocument + NSDocument + + NSButton + NSButton + NSButton + + + + loadGoalDNAClicked: + NSButton + + + pauseClicked: + NSButton + + + startEvolutionClicked: + NSButton + + + + NSSlider + NSTextField + NSTextField + NSTextField + NSTextField + NSButton + NSSlider + NSTextField + NSTextField + NSButton + NSSlider + NSTextField + NSSlider + NSTextField + NSButton + + + + DNALengthSlider + NSSlider + + + DNALengthText + NSTextField + + + bestMatch + NSTextField + + + generation + NSTextField + + + goalDNAText + NSTextField + + + loadGoalDNA + NSButton + + + mutationRateSlider + NSSlider + + + mutationRateText + NSTextField + + + overallBestMatch + NSTextField + + + pause + NSButton + + + populationPropertiesSlider + NSSlider + + + populationPropertiesText + NSTextField + + + populationSizeSlider + NSSlider + + + populationSizeText + NSTextField + + + startEvolution + NSButton + + + + IBProjectSource + ./Classes/iDNADocument.h + + + + + 0 + IBCocoaFramework + YES + 3 + YES + + diff --git a/iDNA/iDNA/iDNA-Info.plist b/iDNA/iDNA/iDNA-Info.plist new file mode 100644 index 0000000..1655557 --- /dev/null +++ b/iDNA/iDNA/iDNA-Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + dna + + CFBundleTypeIconFile + + CFBundleTypeName + DocumentType + CFBundleTypeOSTypes + + ???? + + CFBundleTypeRole + Editor + NSDocumentClass + iDNADocument + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + ac1d.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2013 Администратор. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/iDNA/iDNA/iDNA-Prefix.pch b/iDNA/iDNA/iDNA-Prefix.pch new file mode 100644 index 0000000..41eaf80 --- /dev/null +++ b/iDNA/iDNA/iDNA-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'iDNA' target in the 'iDNA' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/iDNA/iDNA/iDNADocument.h b/iDNA/iDNA/iDNADocument.h new file mode 100644 index 0000000..6f89173 --- /dev/null +++ b/iDNA/iDNA/iDNADocument.h @@ -0,0 +1,44 @@ +// +// iDNADocument.h +// iDNA +// +// Created by Администратор on 1/5/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import +#import "Cell.h" +#import "Population.h" + +@interface iDNADocument : NSDocument { + Cell *goalDNA; + Population *p; + + int populationSize; + int DNALength; + int mutationRate; +} + +@property (weak) IBOutlet NSTextField *populationSizeText; +@property (weak) IBOutlet NSTextField *DNALengthText; +@property (weak) IBOutlet NSTextField *mutationRateText; + +@property (weak) IBOutlet NSSlider *populationSizeSlider; +@property (weak) IBOutlet NSSlider *DNALengthSlider; +@property (weak) IBOutlet NSSlider *mutationRateSlider; + +@property (weak) IBOutlet NSTextField *generation; +@property (weak) IBOutlet NSTextField *overallBestMatch; +@property (weak) IBOutlet NSTextField *bestMatch; + +@property (weak) IBOutlet NSTextField *goalDNAText; + +@property (weak) IBOutlet NSButton *startEvolution; +@property (weak) IBOutlet NSButton *pause; +@property (weak) IBOutlet NSButton *loadGoalDNA; + +- (IBAction)startEvolutionClicked:(NSButton *)sender; +- (IBAction)pauseClicked:(NSButton *)sender; +- (IBAction)loadGoalDNAClicked:(NSButton *)sender; + +@end diff --git a/iDNA/iDNA/iDNADocument.m b/iDNA/iDNA/iDNADocument.m new file mode 100644 index 0000000..1c0e53d --- /dev/null +++ b/iDNA/iDNA/iDNADocument.m @@ -0,0 +1,181 @@ +// +// iDNADocument.m +// iDNA +// +// Created by Администратор on 1/5/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import "iDNADocument.h" +#import "ResultController.h" + +@implementation iDNADocument { + BOOL paused; +} + +@synthesize goalDNAText = _goalDNAText; + +- (id)init +{ + self = [super init]; + if (self) { + populationSize = 1000; + DNALength = 30; + mutationRate = 5; + + goalDNA = [[Cell alloc] initWithLength: DNALength]; + [_goalDNAText setStringValue: [goalDNA description]]; + + [self addObserver:self forKeyPath:@"DNALength" options:NSKeyValueObservingOptionOld context:@"DNALengthChanged"]; + } + return self; +} + +- (void)dealloc { + [self removeObserver:self forKeyPath:@"DNALength"]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if (context == @"DNALengthChanged") { // изменился размер целевой ДНК - перегенерируем новую + [goalDNA changeLength: DNALength]; + [_goalDNAText setStringValue: [goalDNA description]]; + } +} + +- (NSString *)windowNibName +{ + // Override returning the nib file name of the document + // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. + return @"iDNADocument"; +} + +- (void)windowControllerDidLoadNib:(NSWindowController *)aController +{ + [super windowControllerDidLoadNib:aController]; + // Add any code here that needs to be executed once the windowController has loaded the document's window. + +} + ++ (BOOL)autosavesInPlace +{ + return YES; +} + +- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError +{ + return [[_goalDNAText stringValue] dataUsingEncoding: NSUTF8StringEncoding]; +} + +- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError +{ +// NSString *s = nil; +// @try { +// s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +// } +// @catch (NSException *e) { +// if (outError) { +// NSDictionary *d = [NSDictionary dictionaryWithObject:@"The file is invalid" forKey:NSLocalizedFailureReasonErrorKey]; +// *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:d]; +// return NO; +// } +// } +// if ([s length] != DNALength) { +// NSAlert *alert = [NSAlert alertWithMessageText:@"Error" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"Length of loaded GoalDNA must be %i elements", DNALength]; +// [alert beginSheetModalForWindow:[self windowForSheet] modalDelegate:self didEndSelector:nil contextInfo:NULL]; +// return NO; +// } +// goalDNA = [[Cell alloc] initWithString: s]; +// [_goalDNAText setStringValue:s]; + return YES; +} + +- (void) evolution { + int bestMatch = 0, overallBestMatch = 0, bestDistance = 0, generation = 0; + BOOL found = NO; + + while (!found) { + if (!paused) { + generation++; + + [p sortToGoalDNA]; + + bestDistance = [[p.population objectAtIndex: 0] hammingDistance:goalDNA]; + bestMatch = 100 - 100 * bestDistance / DNALength; + + if (bestMatch > overallBestMatch) { + overallBestMatch = bestMatch; + [_overallBestMatch setStringValue: [NSString stringWithFormat:@"Overall best individual match - %i%%", overallBestMatch]]; + } + + [_generation setStringValue: [NSString stringWithFormat:@"Generation - %i", generation]]; + [_bestMatch setStringValue: [NSString stringWithFormat:@"Current generation best individual match - %i%%", bestMatch]]; + + [p crossPopulationTopPercent:50]; + [p mutate:mutationRate]; + + if (bestDistance == 0) found = YES; + } + } + // вышли из цикла - приводим контролы в прежнее положенее + [_populationSizeText setEnabled:YES]; + [_populationSizeSlider setEnabled:YES]; + [_DNALengthText setEnabled:YES]; + [_DNALengthSlider setEnabled:YES]; + [_mutationRateText setEnabled:YES]; + [_mutationRateSlider setEnabled:YES]; + + [_startEvolution setEnabled:YES]; + [_loadGoalDNA setEnabled:YES]; + [_pause setEnabled:NO]; + + // показываем панель с ркзультатом + ResultController *rc = [[ResultController alloc] initWithGeneration:generation]; + [rc showWindow: self]; +} + +- (IBAction)startEvolutionClicked:(NSButton *)sender { + p = [[Population alloc] initWithSize:populationSize andDNALength:DNALength andGoalDNA:goalDNA]; + + [_populationSizeText setEnabled:NO]; + [_populationSizeSlider setEnabled:NO]; + [_DNALengthText setEnabled:NO]; + [_DNALengthSlider setEnabled:NO]; + [_mutationRateText setEnabled:NO]; + [_mutationRateSlider setEnabled:NO]; + + [_startEvolution setEnabled:NO]; + [_loadGoalDNA setEnabled:NO]; + [_pause setEnabled:YES]; + + paused = NO; + + //ResultController *rc = [[ResultController alloc] initWithGeneration:0]; + //[rc showWindow: self]; + + //NSThread *evolutionThread = [[NSThread alloc] initWithTarget:self selector:@selector(evolution) object:nil]; + //[evolutionThread start]; + [self performSelectorInBackground:@selector(evolution) withObject:nil]; +} + +- (IBAction)pauseClicked:(NSButton *)sender { + paused = !paused; + if (paused) [_pause setTitle:@"Continue"]; + else [_pause setTitle:@"Pause"]; +} + +- (IBAction)loadGoalDNAClicked:(NSButton *)sender { + NSOpenPanel *goalDNAOpenPanel = [NSOpenPanel openPanel]; + NSInteger result = [goalDNAOpenPanel runModal]; + if (result == NSOKButton) { + NSString *s = [NSString stringWithContentsOfURL:[goalDNAOpenPanel URL] encoding:NSUTF8StringEncoding error:nil]; + if ([s length] != DNALength) { + NSAlert *alert = [NSAlert alertWithMessageText:@"Error" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"Length of goal DNA must be equal %i elements", DNALength]; + [alert beginSheetModalForWindow:[self windowForSheet] modalDelegate:self didEndSelector:nil contextInfo:NULL]; + } + else { + goalDNA = [[Cell alloc] initWithString: s]; + [_goalDNAText setStringValue:s]; + } + } +} +@end diff --git a/iDNA/iDNA/main.m b/iDNA/iDNA/main.m new file mode 100644 index 0000000..815292a --- /dev/null +++ b/iDNA/iDNA/main.m @@ -0,0 +1,14 @@ +// +// main.m +// iDNA +// +// Created by Администратор on 1/5/13. +// Copyright (c) 2013 Администратор. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} From ca719e277c047f3a7dcaa0a0f37c9487a61f86fb Mon Sep 17 00:00:00 2001 From: Oleg Bychkov Date: Sun, 6 Jan 2013 21:55:30 +0600 Subject: [PATCH 2/3] iDNA. --- .DS_Store | Bin 0 -> 6148 bytes .../UserInterfaceState.xcuserstate | Bin 24929 -> 27079 bytes iDNA/iDNA/ResultController.m | 2 +- iDNA/iDNA/ResultController.xib | 249 ++++++++++++++++-- iDNA/iDNA/iDNADocument.m | 15 +- 5 files changed, 228 insertions(+), 38 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0885a14a422bf9b9771f8ca31867cf1eae7908a9 GIT binary patch literal 6148 zcmeH~K}*9h6vvaTYKscJ2s;MPMdlov2M@JO@FYS9J2=sniYt_Mterc|YVqW^@!R-$ zd@o7G>CPhZ0?Gd+@4ck?!Ip$E#=UuT$e7I-Gohk#G}aUxUh8V;U{sECgo}I{CRqsm zH|_iDg5Peim<`wkJN^3o;WUZ!qTPPyji#}&xn)|GxicQcX_PIzY@SB>l|RWAejMF} z!R%VvMNrIhFPKTsWl&7OBkf_9C18(r^eB#s$&KAwE<3%hBRai)>4;^&-*!az=(sE` z)3oeYb8r9P;>ZEBEW283c>&{d8xQ_0O|tYJ#_ISwj+6)x0U|&Ih(LWf znA^mH2oM1x@Qnao9tBiXS8JtI-YcQO>ofWdR4icQTLM*Rb+uMX!2^Y>R8W=5^%H}u zbQl*p&ed8eRq2e&m0=#ea{YMWa&;INGMsT&DYZm^2&@uls;-Ua{~7#b);{uAQ>aG- zh`>K1z>R@F@L*H=Z2hr4JZlBiTc}ttu0jI}*ejO+=-~fIOFETbpbc@Z)=DYPg5xqB Plr91i2sK3D7YKX+(l|!3 literal 0 HcmV?d00001 diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate index 7345566c8dad4b330f1c67dd21411d3fd12001af..6ef362265290fec54b38affc00f72399b78cf310 100644 GIT binary patch literal 27079 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 T;c7q-w!flhY=7;aWxf6%)}&D1 diff --git a/iDNA/iDNA/ResultController.m b/iDNA/iDNA/ResultController.m index 27c2024..968bca9 100644 --- a/iDNA/iDNA/ResultController.m +++ b/iDNA/iDNA/ResultController.m @@ -16,7 +16,7 @@ @interface ResultController () { @implementation ResultController - (id) initWithGeneration:(int) g { - self = [super initWithWindowNibName:@"Result"]; + self = [super initWithWindowNibName:@"ResultController"]; generationAmount = g; return self; } diff --git a/iDNA/iDNA/ResultController.xib b/iDNA/iDNA/ResultController.xib index c9e6545..ee4833a 100644 --- a/iDNA/iDNA/ResultController.xib +++ b/iDNA/iDNA/ResultController.xib @@ -38,9 +38,9 @@ 31 2 - {{196, 132}, {323, 196}} + {{196, 132}, {323, 155}} -1535638528 - Window + Results NSPanel @@ -51,23 +51,24 @@ 268 - {{56, 149}, {38, 17}} + {{17, 79}, {289, 63}} - + + _NS:1535 YES - 68157504 - 272630784 - Label - + 67108864 + 138412032 + Total amount of generations passed to reach goal DNA - 0 + LucidaGrande 13 1044 _NS:1535 - + 6 System controlColor @@ -76,7 +77,7 @@ MC42NjY2NjY2NjY3AA - + 6 System controlTextColor @@ -88,9 +89,31 @@ NO + + + 268 + {{20, 31}, {286, 17}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Press ESC to close + + _NS:1535 + + + + + NO + - {323, 196} + {323, 155} + _NS:21 @@ -156,15 +179,31 @@ 13 - - - 3 + + + 6 0 - - 3 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 1 - 30 + 31 1000 @@ -172,15 +211,47 @@ 9 3 - + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + 5 0 5 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 - 59 + 13 1000 @@ -189,6 +260,7 @@ 3 + @@ -197,6 +269,22 @@ + + + 8 + 0 + + 0 + 1 + + 63 + + 1000 + + 3 + 9 + 1 + @@ -206,41 +294,144 @@ - 22 - + 26 + + + + + 27 + - 23 - + 29 + + + 30 + + + + + 31 + + + + + + 7 + 0 + + 0 + 1 + + 280 + + 1000 + + 3 + 9 + 1 + + + + + + 32 + + + + + 34 + + + + + 35 + + + + + 36 + + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin - - + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 23 + 36 + + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + ResultController + NSWindowController + + generationPassed + NSTextField + + + generationPassed + + generationPassed + NSTextField + + + + IBProjectSource + ./Classes/ResultController.h + + + - 0 IBCocoaFramework YES diff --git a/iDNA/iDNA/iDNADocument.m b/iDNA/iDNA/iDNADocument.m index 1c0e53d..03ec085 100644 --- a/iDNA/iDNA/iDNADocument.m +++ b/iDNA/iDNA/iDNADocument.m @@ -11,6 +11,8 @@ @implementation iDNADocument { BOOL paused; + ResultController *rc; + NSThread *evolutionThread; } @synthesize goalDNAText = _goalDNAText; @@ -129,7 +131,7 @@ - (void) evolution { [_pause setEnabled:NO]; // показываем панель с ркзультатом - ResultController *rc = [[ResultController alloc] initWithGeneration:generation]; + rc = [[ResultController alloc] initWithGeneration:generation]; [rc showWindow: self]; } @@ -148,13 +150,10 @@ - (IBAction)startEvolutionClicked:(NSButton *)sender { [_pause setEnabled:YES]; paused = NO; - - //ResultController *rc = [[ResultController alloc] initWithGeneration:0]; - //[rc showWindow: self]; - - //NSThread *evolutionThread = [[NSThread alloc] initWithTarget:self selector:@selector(evolution) object:nil]; - //[evolutionThread start]; - [self performSelectorInBackground:@selector(evolution) withObject:nil]; + + evolutionThread = [[NSThread alloc] initWithTarget:self selector:@selector(evolution) object:nil]; + [evolutionThread start]; + //[self performSelectorInBackground:@selector(evolution) withObject:nil]; } - (IBAction)pauseClicked:(NSButton *)sender { From 470663d87890a4c1543138f96f8da42df1a3013c Mon Sep 17 00:00:00 2001 From: Oleg Bychkov Date: Sun, 6 Jan 2013 22:06:16 +0600 Subject: [PATCH 3/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BD=D0=BB=D1=8C=D1=8E=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes .../UserInterfaceState.xcuserstate | Bin 27079 -> 28016 bytes .../xcdebugger/Breakpoints.xcbkptlist | 18 +++++++++--------- iDNA/iDNA/Population.h | 1 + iDNA/iDNA/Population.m | 4 ++++ iDNA/iDNA/iDNADocument.m | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.DS_Store b/.DS_Store index 0885a14a422bf9b9771f8ca31867cf1eae7908a9..d2f1b484fc49c74162d7f9197bfb5562569dc31f 100644 GIT binary patch delta 21 ccmZoMXffE(#mHf9W~!rLWM;H^5@V4V07ei70ssI2 delta 21 ccmZoMXffE(#mHe~W}>5DWM;m35@V4V07c>k0RR91 diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate index 6ef362265290fec54b38affc00f72399b78cf310..f22220b971097f62d13312ea438f4146d0aa91bb 100644 GIT binary patch delta 14378 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�;{TXzC^4L)Y9xk1EVq#u0Wtjt)dOL(Cm)FA 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 delta 13936 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 @@ -47,11 +47,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "iDNA/Population.m" - timestampString = "379134285.092039" + timestampString = "379181133.058709" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "76" - endingLineNumber = "76" + startingLineNumber = "80" + endingLineNumber = "80" landmarkName = "-description" landmarkType = "5"> @@ -60,11 +60,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "iDNA/Population.m" - timestampString = "379134285.092039" + timestampString = "379181133.058709" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "42" - endingLineNumber = "42" + startingLineNumber = "46" + endingLineNumber = "46" landmarkName = "-crossPopulationTopPercent:" landmarkType = "5"> diff --git a/iDNA/iDNA/Population.h b/iDNA/iDNA/Population.h index 85af9f7..e2ccfea 100644 --- a/iDNA/iDNA/Population.h +++ b/iDNA/iDNA/Population.h @@ -16,6 +16,7 @@ @property NSMutableArray *population; - (id) initWithSize:(int)size andDNALength:(int)l andGoalDNA:(Cell*) gDNA; // создание популяции размера size, каждая ДНК состоит из l элементов +- (void) removeAllPopulation; - (void) sortToGoalDNA; // сортировка популяции по близости к целевой ДНК - (void) crossPopulationTopPercent:(int) p; // замена оставшихся (1-p%) особей на результат скрещивания p% лучших особоей - (void) mutate:(int) x; // мутировать популяцию, каждая ДНК мутируется на х% diff --git a/iDNA/iDNA/Population.m b/iDNA/iDNA/Population.m index f113bb8..738ee2c 100644 --- a/iDNA/iDNA/Population.m +++ b/iDNA/iDNA/Population.m @@ -22,6 +22,10 @@ - (id) initWithSize:(int)size andDNALength: (int)l andGoalDNA:(Cell *)gDNA { return self; } +- (void) removeAllPopulation { + [_population removeAllObjects]; +} + - (void) sortToGoalDNA { //NSLog(@"Population before sorting: %@", [self description]); [_population sortUsingComparator:^(Cell *a, Cell *b) { diff --git a/iDNA/iDNA/iDNADocument.m b/iDNA/iDNA/iDNADocument.m index 03ec085..ad108e9 100644 --- a/iDNA/iDNA/iDNADocument.m +++ b/iDNA/iDNA/iDNADocument.m @@ -135,7 +135,7 @@ - (void) evolution { [rc showWindow: self]; } -- (IBAction)startEvolutionClicked:(NSButton *)sender { +- (IBAction)startEvolutionClicked:(NSButton *)sender { p = [[Population alloc] initWithSize:populationSize andDNALength:DNALength andGoalDNA:goalDNA]; [_populationSizeText setEnabled:NO];