diff --git a/Xmod/Xmod.applescript b/Xmod/Xmod.applescript index c5714e21..736d7854 100644 --- a/Xmod/Xmod.applescript +++ b/Xmod/Xmod.applescript @@ -12,26 +12,35 @@ on updateProjectXmod(_project) tell application "Xcode" -- Iterate over every .xcdatamodel in the project. set modelList to every file reference of _project whose file kind is "wrapper.xcdatamodel" - repeat with modelIt in modelList - if comments of modelIt contains "xmod" then - set modelSrcDir to my modelSrcDirPath(full path of modelIt) - set targetList to my everyTargetWithBuildFilePath(_project, full path of modelIt) + repeat with modelItr in modelList + if comments of modelItr contains "xmod" then + set modelInfo to my getModelInfo(full path of modelItr) + + -- Figure out the model's parent group. + -- Unversioned models are simple files so their group is the answer. + -- Version models are bundles, which are represented as pseudo-groups in Xcode. You can't ask a pseudo-group for its parent group, + -- so we discover it by querying project-wide all groups that contain the pseudo-group and using the first result. + set modelItemRef to item 1 of (every item reference of _project whose full path is (full path of modelItr)) + set modelGroupRef to group of modelItemRef + if isBundle of modelInfo then + set modelGroupRef to item 1 of (every group of _project whose groups contains modelGroupRef) + end if -- Create the .xcdatamodel related source group if necessary. - if not (exists (every item reference of group of modelIt whose full path is modelSrcDir)) then - tell group of modelIt - make new group with properties {full path:modelSrcDir, name:text 1 thru -13 of ((name of modelIt) as string)} + if not (exists (every item reference of modelGroupRef whose full path is (srcDirPath of modelInfo))) then + tell modelGroupRef + make new group with properties {full path:(srcDirPath of modelInfo), name:(name of modelInfo)} end tell end if - set modelSrcGroup to item 1 of (every item reference of group of modelIt whose full path is modelSrcDir) + set modelSrcGroup to item 1 of (every item reference of modelGroupRef whose full path is (srcDirPath of modelInfo)) tell modelSrcGroup to delete every item reference -- clear it out for population in case we didn't just create it -- Meat. - do shell script "/usr/bin/mogenerator --model '" & full path of modelIt & "' --output-dir '" & modelSrcDir & "'" + do shell script "/usr/bin/mogenerator --model '" & full path of modelItr & "' --output-dir '" & (srcDirPath of modelInfo) & "'" -- Build a list of resulting source files. tell application "System Events" - set modelSrcDirAlias to POSIX file modelSrcDir as alias + set modelSrcDirAlias to POSIX file (srcDirPath of modelInfo) as alias set humanHeaderFileList to (every file of modelSrcDirAlias whose name ends with ".h" and name does not start with "_") set humanSourceFileList to (every file of modelSrcDirAlias whose (name ends with ".m" or name ends with ".mm") and name does not start with "_") set machineHeaderFileList to (every file of modelSrcDirAlias whose name ends with ".h" and name starts with "_") @@ -44,12 +53,13 @@ on updateProjectXmod(_project) end tell -- Add the source files to the model's source group and the model's targets. - repeat with pathIt in pathList + set targetList to my everyTargetWithBuildFilePath(_project, full path of modelItr) + repeat with pathItr in pathList tell modelSrcGroup - set modelSrcFileRef to make new file reference with properties {full path:pathIt, name:name of (info for POSIX file pathIt)} + set modelSrcFileRef to make new file reference with properties {full path:pathItr, name:name of (info for POSIX file pathItr)} repeat with targetIndex from 1 to (count of targetList) - set targetIt to item targetIndex of targetList - add modelSrcFileRef to targetIt + set targetItr to item targetIndex of targetList + add modelSrcFileRef to targetItr end repeat end tell end repeat @@ -61,30 +71,44 @@ end updateProjectXmod on everyTargetWithBuildFilePath(_project, _buildFilePath) set theResult to {} tell application "Xcode" - repeat with targetIt in (every target of _project) - repeat with buildFileIt in build files of targetIt - if full path of file reference of buildFileIt is _buildFilePath then set theResult to theResult & {(targetIt as anything)} + repeat with targetItr in (every target of _project) + repeat with buildFileItr in build files of targetItr + if full path of file reference of buildFileItr is _buildFilePath then set theResult to theResult & {(targetItr as anything)} end repeat end repeat end tell return theResult end everyTargetWithBuildFilePath -on modelSrcDirPath(modelFileUnixPath) +on getModelInfo(modelFileUnixPath) set modelFilePosixRef to POSIX file modelFileUnixPath set modelFileAlias to modelFilePosixRef as alias tell application "Finder" set modelFileFolder to folder of modelFileAlias + + set isModelBundle to name of modelFileFolder ends with ".xcdatamodeld" + if isModelBundle then + set modelFileAlias to (folder of modelFileAlias) as alias -- it's a bundle, go up one folder + set modelFileFolder to folder of modelFileAlias + end if + set modelFileName to name of modelFileAlias - set modelSrcFolderName to text 1 thru -13 of modelFileName -- pull off the .xcdatamodel extension - if not (exists folder modelSrcFolderName of modelFileFolder) then - make folder at modelFileFolder with properties {name:modelSrcFolderName} + if isModelBundle then + set extensionLength to length of ".xcdatamodeld" + else + set extensionLength to length of ".xcdatamodel" + end if + + set modelName to text 1 thru -(extensionLength + 1) of modelFileName -- pull off the extension + if not (exists folder modelName of modelFileFolder) then + make folder at modelFileFolder with properties {name:modelName} end if - set modelSrcFolder to folder modelSrcFolderName of modelFileFolder + set modelSrcFolder to folder modelName of modelFileFolder end tell - return text 1 thru -2 of (POSIX path of (modelSrcFolder as alias)) -- kill the trailing slash -end modelSrcDirPath + set srcDirPath to text 1 thru -2 of (POSIX path of (modelSrcFolder as alias)) -- kill the trailing slash + return {name:modelName, isBundle:isModelBundle, srcDirPath:srcDirPath} +end getModelInfo on logger(msg) do shell script "logger '" & msg & "'" diff --git a/mogenerator.m b/mogenerator.m index ef890b4d..c8452e64 100644 --- a/mogenerator.m +++ b/mogenerator.m @@ -19,8 +19,7 @@ - (NSDictionary *)fetchedPropertiesByName { NSMutableDictionary *fetchedPropertiesByName = [NSMutableDictionary dictionary]; - for (NSPropertyDescription *property in [self properties]) - { + nsenumerate ([self properties], NSPropertyDescription, property) { if([property isKindOfClass:[NSFetchedPropertyDescription class]]) [fetchedPropertiesByName setObject:property forKey:[property name]]; } @@ -405,7 +404,7 @@ - (int) application: (DDCliApplication *) app } if (_version) { - printf("mogenerator 1.17. By Jonathan 'Wolf' Rentzsch + friends.\n"); + printf("mogenerator 1.18. By Jonathan 'Wolf' Rentzsch + friends.\n"); return EXIT_SUCCESS; } diff --git a/mogenerator.xcodeproj/wolf.mode1 b/mogenerator.xcodeproj/wolf.mode1 deleted file mode 100644 index 65ea8ca2..00000000 --- a/mogenerator.xcodeproj/wolf.mode1 +++ /dev/null @@ -1,1325 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXRunSessionModule - Name - Run Log - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1 - FavBarConfig - - PBXProjectModuleGUID - 79D2BF110ACFAF4A00F3F141 - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1 - MajorVersion - 31 - MinorVersion - 1 - Name - Default - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-target-popup - active-buildstyle-popup - NSToolbarFlexibleSpaceItem - buildOrClean - build-and-runOrDebug - com.apple.ide.PBXToolbarStopButton - get-info - toggle-editor - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - BecomeActive - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 292 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - 08FB7795FE84155DC02AAC07 - 1AB674ADFE9D54B511CA2CBB - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 2 - 1 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {292, 338}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {309, 356}} - GroupTreeTableConfiguration - - MainColumn - 292 - - RubberWindowFrame - 1664 1033 690 397 0 0 2560 1578 - - Module - PBXSmartGroupTreeModule - Proportion - 309pt - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - MyNewFile14.java - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - MyNewFile14.java - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {376, 0}} - RubberWindowFrame - 1664 1033 690 397 0 0 2560 1578 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 5}, {376, 351}} - RubberWindowFrame - 1664 1033 690 397 0 0 2560 1578 - - Module - XCDetailModule - Proportion - 351pt - - - Proportion - 376pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - 792983FB0C8FF2C100EFBBFE - 1CE0B1FE06471DED0097A5F4 - 792983FC0C8FF2C100EFBBFE - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.short - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarDisplayMode - 2 - ToolbarIsVisible - - ToolbarSizeMode - 2 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - /Users/wolf/code/sf/redshed/cocoa/mogenerator/mogenerator.xcodeproj - - WindowString - 1664 1033 690 397 0 0 2560 1578 - WindowTools - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - <No Editor> - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {500, 218}} - RubberWindowFrame - 45 495 500 500 0 0 1680 1028 - - Module - PBXNavigatorGroup - Proportion - 218pt - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{0, 223}, {500, 236}} - RubberWindowFrame - 45 495 500 500 0 0 1680 1028 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 459pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - 79D2BF1B0ACFAF4A00F3F141 - 793FF9660C43E7F400E68F6D - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.build - WindowString - 45 495 500 500 0 0 1680 1028 - WindowToolGUID - 79D2BF1B0ACFAF4A00F3F141 - WindowToolIsVisible - - - - Identifier - windowTool.debugger - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {317, 164}} - {{317, 0}, {377, 164}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 164}} - {{0, 164}, {694, 216}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleDrawerSize - {100, 120} - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 380}} - RubberWindowFrame - 321 238 694 422 0 0 1440 878 - - Module - PBXDebugSessionModule - Proportion - 100% - - - Proportion - 100% - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CD10A99069EF8BA00B06720 - 1C0AD2AB069F1E9B00FABCE6 - 1C162984064C10D400B95A72 - 1C0AD2AC069F1E9B00FABCE6 - - ToolbarConfiguration - xcode.toolbar.config.debug - WindowString - 321 238 694 422 0 0 1440 878 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - 0 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.find - IsVertical - - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - FoundationAdditions.h - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {781, 212}} - RubberWindowFrame - 221 918 781 470 0 0 2560 1578 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 212pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{0, 217}, {781, 212}} - RubberWindowFrame - 221 918 781 470 0 0 2560 1578 - - Module - PBXProjectFindModule - Proportion - 212pt - - - Proportion - 429pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - - TableOfContents - - 1C530D57069F1CE1000CFCEE - 79F178EE0AD2D4DF004B4D0B - 79F178EF0AD2D4DF004B4D0B - 1CDD528C0622207200134675 - 1CD0528E0623707200166675 - - WindowString - 221 918 781 470 0 0 2560 1578 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - - - - Identifier - MENUSEPARATOR - - - Identifier - windowTool.debuggerConsole - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {440, 358}} - RubberWindowFrame - 650 41 440 400 0 0 1280 1002 - - Module - PBXDebugCLIModule - Proportion - 358pt - - - Proportion - 358pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAAD065D492600B07095 - 1C78EAAE065D492600B07095 - 1C78EAAC065D492600B07095 - - WindowString - 650 41 440 400 0 0 1280 1002 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.run - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - LauncherConfigVersion - 3 - PBXProjectModuleGUID - 1CD0528B0623707200166675 - PBXProjectModuleLabel - Run - Runner - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {493, 167}} - {{0, 176}, {493, 267}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {405, 443}} - {{414, 0}, {514, 443}} - - - - - GeometryConfiguration - - Frame - {{0, 0}, {459, 159}} - RubberWindowFrame - 360 655 459 200 0 0 1440 878 - - Module - PBXRunSessionModule - Proportion - 159pt - - - Proportion - 159pt - - - Name - Run Log - ServiceClasses - - PBXRunSessionModule - - StatusbarIsVisible - - TableOfContents - - 1C0AD2B3069F1EA900FABCE6 - 79812D360B05042100DF4429 - 1CD0528B0623707200166675 - 79812D370B05042100DF4429 - - ToolbarConfiguration - xcode.toolbar.config.run - WindowString - 360 655 459 200 0 0 1440 878 - WindowToolGUID - 1C0AD2B3069F1EA900FABCE6 - WindowToolIsVisible - - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.09500122070312 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 2 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpoints - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimator - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.classBrowser - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - OptionsSetName - Flat, project classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {378, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 332}} - MembersFrame - {{0, 101}, {378, 231}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 101 - PBXMemberBookColumnIdentifier - 22 - - RubberWindowFrame - 144 445 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 79812DA20B050A7B00DF4429 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 144 445 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - - - - -